Geoserver Openlayers 加载数据总结
2018-01-21 16:17
501 查看
经过一段时间的踩坑,现在总结一下利用Openlayers加载地图数据方法。
OpenLayers 3加载百度地图
注意其中的‘’确定服务地址‘’部分,在浏览器中F12查看Network,可以清楚地看到每一个地图数据的加载过程和服务器地址,更具这些就可以确定如何使用openlayers加载数据。
天地图数据是一个切片数据,可以使用XYZ切片坐标来定位。其中Z表示切片的层级(zoom),类似于影像金字塔的层级;X表示切片的行号;Y表示切片的列号。
1. WMS方法
WMS方法返回的是PNG或者是TIF格式的图片。调用方法如下:
优点:加载的是切片数据,加载速度很快。
缺点: 由于返回的是图片,不能对矢量数据设置Style从而改变颜色等等
2. WFS方法
WFS方法返回的是矢量数据,在Geoserver的WFS列表中可以看到有GML、KML、CSV、GeoJSON、Shapefile(Openlayers不支持解析该类型数据),这里以返回GeoJSON格式为例。在Geoserver中以GeoJSON格式打开可以发现服务器的地址为:
所以可以使用改地址来获取WFS数据。调用代码如下:
该代码使用的是带有外部边界范围的方式,也就是每次只向服务器请求范围内的数据。使用ol.format.GeoJSON格式来解析返回的数据。最后使用Style来设置矢量数据的显示样式。
优点:可以返回矢量数据。
缺点:每次返回的数据量有点大,因为他返回了范围内部的所有矢量数据。
3. WMTS
GIS数据与OGC标准地图服务和矢量切片
GIS 矢量切片(Vector Tile)
在GeoServer中,默认使用了image/jpeg和image/png格式来对矢量、栅格数据进行切片处理,切片得到的是图片数据,这也就是为什么我们采用TileWMS方式加载数据比较快的原理。但是我们需要返回的是矢量数据,这里就需要对矢量数据进行切片处理。安装切片插件之后,GeoServer支持四种切片方式,这里以
其中url的地址还可以设置成:
注意:第一个url的行号为y,第二个是-y。第一个使用的是wmts服务,第二个使用的是tms服务。其中
优点:速度快,每次只加载部分数据
缺点:在Geoserver中需要配置
一 加载天地图、百度地图数据
openlayers3加载天地图数据OpenLayers 3加载百度地图
注意其中的‘’确定服务地址‘’部分,在浏览器中F12查看Network,可以清楚地看到每一个地图数据的加载过程和服务器地址,更具这些就可以确定如何使用openlayers加载数据。
天地图数据是一个切片数据,可以使用XYZ切片坐标来定位。其中Z表示切片的层级(zoom),类似于影像金字塔的层级;X表示切片的行号;Y表示切片的列号。
二 加载矢量数据
加载矢量数据目前我知道的方法有WMS、WFS、WMTS三种方法。1. WMS方法
WMS方法返回的是PNG或者是TIF格式的图片。调用方法如下:
var layer = new ol.layer.Tile({ source: new ol.source.TileWMS({ url: 'https://ahocevar.com/geoserver/wms', params: {'LAYERS': 'topp:states'}, serverType: 'geoserver' }) });
优点:加载的是切片数据,加载速度很快。
缺点: 由于返回的是图片,不能对矢量数据设置Style从而改变颜色等等
2. WFS方法
WFS方法返回的是矢量数据,在Geoserver的WFS列表中可以看到有GML、KML、CSV、GeoJSON、Shapefile(Openlayers不支持解析该类型数据),这里以返回GeoJSON格式为例。在Geoserver中以GeoJSON格式打开可以发现服务器的地址为:
http://localhost:8080/geoserver/sf/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=sf:roads&maxFeatures=50&outputFormat=application/json
所以可以使用改地址来获取WFS数据。调用代码如下:
var layer = new ol.layer.Vector({ source: new ol.source.Vector({ format: new ol.format.GeoJSON(), url: function (extent) { return 'http://localhost:8080/geoserver/LuoYuanCity/ows?service=WFS&' + 'version=1.1.0&request=GetFeature&typename=topp:states&' + 'outputFormat=application/json&srsname=EPSG:3857&' + 'bbox=' + extent.join(',') + ',EPSG:3857'; }, strategy: ol.loadingstrategy.bbox }), style: new ol.style.Style({ fill: new ol.style.Fill({ color: 'rgba(0, 0, 255, 1.0)', }) }) });
该代码使用的是带有外部边界范围的方式,也就是每次只向服务器请求范围内的数据。使用ol.format.GeoJSON格式来解析返回的数据。最后使用Style来设置矢量数据的显示样式。
优点:可以返回矢量数据。
缺点:每次返回的数据量有点大,因为他返回了范围内部的所有矢量数据。
3. WMTS
GIS数据与OGC标准地图服务和矢量切片
GIS 矢量切片(Vector Tile)
在GeoServer中,默认使用了image/jpeg和image/png格式来对矢量、栅格数据进行切片处理,切片得到的是图片数据,这也就是为什么我们采用TileWMS方式加载数据比较快的原理。但是我们需要返回的是矢量数据,这里就需要对矢量数据进行切片处理。安装切片插件之后,GeoServer支持四种切片方式,这里以
application/x-pro 9c22 tobuf;type=mapbox-vector为例,因为openlayers的ol.format.MVT处理矢量数据更加高效。调用代码如下:
var layer = new ol.layer.VectorTile({ source: new ol.source.VectorTile({ format: new ol.format.MVT(), tileGrid: ol.tilegrid.createXYZ({ maxZoom: 21 }), tilePixelRatio: 1, url: "http://localhost:8080/geoserver/gwc/service/wmts?REQUEST=GetTile&" + "SERVICE=WMTS&VERSION=1.0.0&LAYER=topp:states&STYLE=&" + "TILEMATRIX=EPSG:900913:{z}&TILEMATRIXSET=EPSG:900913&" + "FORMAT=application/x-protobuf;type=mapbox-vector&TILECOL={x}&TILEROW={y}" }), style: new ol.style.Style({ fill: new ol.style.Fill({ color: 'rgba(255,0,0,1.0)' }) }) })
其中url的地址还可以设置成:
'http://localhost:8080/geoserver/gwc/service/tms/1.0.0/topp:states@EPSG%3A900913@pbf/{z}/{x}/{-y}.pbf'
注意:第一个url的行号为y,第二个是-y。第一个使用的是wmts服务,第二个使用的是tms服务。其中
maxZoom: 21指的是最大的切片层级是22,这个可以在Geoserver中查看。具体函数的说明请参考官方文档。
优点:速度快,每次只加载部分数据
缺点:在Geoserver中需要配置
三 加载栅格数据
—-未完待续—-相关文章推荐
- PostGIS+QGIS+GeoServer+OpenLayers实现数据的存储、服务的发布以及地图的显示
- PostGIS+QGIS+GeoServer+OpenLayers实现数据的存储、服务的发布以及地图的显示
- Openlayers+Geoserver(一):项目介绍以及地图加载
- WebGIS(PostgreSQL+GeoServer+OpenLayers)之二 GeoServer安装与数据配置
- WebGIS(PostgreSQL+GeoServer+OpenLayers)之三 OpenLayers客户端数据显示
- WebGIS(PostgreSQL+GeoServer+OpenLayers)之二 GeoServer安装与数据配置
- 使用geoserver+openLayers加载google地图
- (转)PostGIS+QGIS+GeoServer+OpenLayers实现数据的存储、服务的发布以及地图的显示
- 使用geoserver+openLayers加载google地图
- 使用geoserver+openLayers加载google地图
- WebGIS(PostgreSQL+GeoServer+OpenLayers)之三 OpenLayers客户端数据显示
- 中科燕园GIS外包 讲解2---使用geoserver+openLayers加载google地图
- 地图的开发研究--基于openlayers+geoserver+tomcat的离线地图--postgis空间数据库
- 地图的开发研究--基于openlayers+geoserver+tomcat的离线地图--postgis空间数据库
- WebGIS课程:GIS基础入门配项目(专题图制作及openlayers+geoserver+udig搭建地图网站)
- WebGIS(PostgreSQL+GeoServer+OpenLayers)之一 PostgreSQL安装及地理空间数据库实现
- GeoServer+OpenLayers发布下载的Google卫星影像
- 地图的开发研究--基于openlayers+geoserver+tomcat的离线地图--本地.shp地图
- postGIS+pgrouting+geoserver+openlayers实现最短路径分析
- geoserver && openlayers