cesium加载WFS服务(GeoServer发布)

摘要:
工具:GeoServer2.6.4,cesium,思路有了就开始找资料写代码,cesium有接口可以加载WMS服务,但是加载的WMS服务获取到的是切片,不可能将获取到的要素进行渲染。于是想通过WFS服务来渲染数据,但是cesium没有提供可用的接口,通过google,找到了一个比较靠谱的思路:geoserver的地图服务支持很多格式,其中就可以显示GeoJson数据,然后通过AJAX获取geoserver服务中的GeoJson数据,在通过cesium的GeoJsonDataSource进行数据的加载,然后渲染就好说了。这里假设geoserver的WFS服务已经发布好了。

需求:

为了便于前端渲染数据,自定义图层渲染。

思路:

获取地图服务中的要素进行渲染。

工具:

GeoServer 2.6.4,cesium,

思路有了就开始找资料写代码,cesium有接口可以加载WMS服务,但是加载的WMS服务获取到的是切片,不可能将获取到的要素进行渲染。于是想通过WFS服务来渲染数据,但是cesium没有提供可用的接口,通过google,找到了一个比较靠谱的思路:geoserver的地图服务支持很多格式,其中就可以显示GeoJson数据,然后通过AJAX获取geoserver服务中的GeoJson数据,在通过cesium的GeoJsonDataSource进行数据的加载,然后渲染就好说了。

这里假设geoserver的WFS服务已经发布好了。

1、获取服务地址

在GeoServer的LayerPreview图层列表中的目标图层后面,再select on中选择GeoJson,如下图所示。

cesium加载WFS服务(GeoServer发布)第1张

这个时候页面中会以GeoJson格式显示该图层的数据,然后地址栏中的链接就是我们需要的地址,如下图所示。

cesium加载WFS服务(GeoServer发布)第2张

2、使用AJAX获取GeoJson数据

    var viewer = new Cesium.Viewer('cesiumContainer');
    $.ajax({
            url:"http://localhost:8082/geoserver/mytest/ows?service=WFS&request=GetFeature&typeName=mytest:river4&outputFormat=application/json",
            cache: false,
            async: true,
            success: function(data) {
                 var datasource=Cesium.GeoJsonDataSource.load(data);
                viewer.dataSources.add(datasource);
            },
            error: function(data) {
                console.log("error");
            }
    });

这样数据就被加载到cesium中了,然后使用dataSource.entities.values,就可以对图层进行渲染了,代码如下:

        var entities =dataSource.entities.values;for (var i = 0; i < entities.length; i++) {
            var entity =entities[i];
            var polylineVolume ={
                            positions:entity.polyline._positions,
                            shape:computeCircle(50.0),
                            material:Cesium.Color.RED
                        }
            entity.polylineVolume=polylineVolume;
            entity.polyline=null;
        }

PS:这里还要解决跨域问题,否则ajax获取不到GeoJson数据,解决方法:http://pan.baidu.com/s/1cpGg1o

效果图:

cesium加载WFS服务(GeoServer发布)第3张

免责声明:文章转载自《cesium加载WFS服务(GeoServer发布)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[转贴]彻底解决 CrystalReports 登录失败问题。C# WebBrowser下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

GeoServer源码解析和扩展 (二)注册服务

先上源码下载 上一章我们介绍了GeoServer源码分析的必要性(这个就见仁见智了)以及诸项准备工作,并且在最后还给出了OWS请求处理流程的伪代码。 这一章我们来看看要注册自己的服务需要做哪些工作。假设我们要为一个物流公司GOODS开发系统,有一个功能是给定起点和终点的城市名称以及包裹的重量返回运费,运费的计算公式如下: 运费(¥) = 距离(千米)...

echarts地图扩展文件使用geoJson格式。

echarts地图扩展文件使用geoJson格式。 1、在线生成 http://ecomfe.github.io/echarts-map-tool/ 这里可以生成省市区的json,但是最多生成到”区县”粒度 2、用arcmap生成 - 基于arcmap做好地图,并存为EsriJSON格式 - 然后到 http://esritogeo.herokuapp.c...

Eclipse下建立geoserver源码工程

摘要:本文详细阐述,如何基于geoserver源码构建eclipse工程文件,操作过程中除用到jdk、eclipse以外,还有git和maven,操作系统为windows8。 1安装Git       从(http://git-scm.com/download/win),下载得到Git-1.9.0-preview2014021 7.exe文件,直接安装即可...

(九)WebGIS中的矢量查询(针对AGS和GeoServer)

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/。 1.前言 在第七章里我们知道了WebGIS中要素的本质是UIComponent,而矢量图层的本质是包含了n(n>=0)个UIComponent的Canvas。我们在UIComponent的graphics中,根据矢量数据画...

基于geowebcache切片服务的发布

接着上一篇文章,如何将JPG格式的图片转化为带地理坐标的TIFF格式里提及的最近的一个项目,数据源是一张高分辨率的2.5维图片,现在已经成功转化成了带有地理坐标的TIFF格式。下面将介绍借助GeoServer如何将这个TIFF格式的数据以TMS(Tiled Map Service)的形式发布出去。此前笔者利用商业软件ArcGIS Server发布地图服务...

使用geoserver发布arcgis切片

arcgis map 版本:10.1,10.2,10.3均可 jre:7或者8 geoserver:2.8.2以上 切片:松散型,256*256  ,png 1:安装geoserver并独立部署geowebcache   安装方法:将下载的geowebcache独立部署包解压到geoserver的webapp目录下  例如:webapp/geowebcac...