如何在wms服务器或任何其他地图服务器中保存图层或图像?

时间:2013-01-17 11:53:42

标签: openlayers wms

我一直在关注我的webgis项目的openlayers beginner'g指南。我有一个疑问: 假设openlayers map client向wms服务器发出'basic'类型层请求,并在所有缩放级别显示。所以,在每个缩放级别不同的没有。产生了瓦片并且也没有损失图像的分辨率。所以这里我的问题是“在wms服务器中,这些图像是如何呈现的......它是根据我们的要求从单个高分辨率图像生成图块还是在服务器中预先设置了具有不同分辨率的图块? 我希望你理解我的问题......谢谢你!

2 个答案:

答案 0 :(得分:0)

在WMS中,瓷砖或多或少预先保存在服务器上。您当然可以从一个高分辨率图像计算图块金字塔,但这些图块会保存到服务器(如cached map service中所示)。我认为出于性能原因,在服务器上预呈现了切片,请参见示例Bing Maps

每次请求生成磁贴都需要花费太多时间。如果您有高分辨率光栅图像,请尝试使用gdal2tiles为TMS(平铺地图服务)创建自己的平铺金字塔,并查看这需要多长时间。

答案 1 :(得分:0)

OGC WMS (Web Map Service)是一种服务,可以根据客户端的请求提供地图,例如使用OpenLayers构建的客户端。用作源的数据可以是光栅或矢量或某种组合。虽然一些WMS也提供缓存,但重要的是要注意,在标准配置中,WMS生成根据请求发送的映射。这与OGC WMTS (Web Map Tile Service)或TMS不同。

WMS的动态特性可以在对GetCapabilities请求的响应中看到,例如:

http://ogc.bgs.ac.uk/cgi-bin/BGS_BGS-HPA_Radon_Potential/wms?service=WMS&request=GetCapabilities&

看看这部分,我们可以看到:

您可以申请多种地图图片格式

<GetMap>
    <Format>image/png</Format>
    <Format>image/jpeg</Format>
    <Format>image/png; mode=8bit</Format>
    <Format>application/x-pdf</Format>
    <Format>image/svg+xml</Format>
    <Format>image/tiff</Format>
    <Format>application/vnd.google-earth.kml+xml</Format>
    <Format>application/vnd.google-earth.kmz</Format>

您可以在多个不同的投影中请求图层:

<CRS>CRS:84</CRS>
<CRS>EPSG:27700</CRS>
<CRS>EPSG:3034</CRS>
<CRS>EPSG:3413</CRS>
<CRS>EPSG:3857</CRS>
<CRS>EPSG:4258</CRS>
<CRS>EPSG:4326</CRS>
<CRS>EPSG:900913</CRS>

并且您还可以通过SLD提供自己的样式来更改默认符号:

<sld:UserDefinedSymbolization SupportSLD="1" UserLayer="0" UserStyle="1" RemoteWFS="0" InlineFeature="0" RemoteWCS="0"/>

考虑这个例子:

通过某个客户端请求映射,客户端生成一个GetMap请求,如:

http://ogc.bgs.ac.uk/digmap625k_gsml_insp_gs/ows?SERVICE=WMS&LAYERS=gsmlp:GBR_BGS_625k_BA_INSP&TRANSPARENT=TRUE&VERSION=1.3.0&REQUEST=GetMap&STYLES=&EXCEPTIONS=INIMAGE&FORMAT=image/png&CRS=EPSG%3A4326&BBOX=50.00684534493684,-11.167749816795403,57.790615226828315,7.44692466819312&WIDTH=1234&HEIGHT=516&

给出:

GetMap with default style

在客户端中,单击某个点位置以获取有关创建地图的数据的信息,如:

http://ogc.bgs.ac.uk/digmap625k_gsml_insp_gs/ows?SERVICE=WMS&LAYERS=gsmlp:GBR_BGS_625k_BA_INSP&TRANSPARENT=TRUE&VERSION=1.3.0&REQUEST=GetFeatureInfo&STYLES=&EXCEPTIONS=XML&FORMAT=image/png&CRS=EPSG:4326&BBOX=50.006845,-11.16775,57.790615,7.446925&I=673&J=288&INFO_FORMAT=text/html&QUERY_LAYERS=gsmlp:GBR_BGS_625k_BA_INSP&WIDTH=1234&HEIGHT=516&FEATURE_COUNT=10&

通过此,您可以看到基础数据(在此案例中,数据库中保存的案例矢量数据集)具有包含地质历史值的属性。

我们想知道地图中的其他区域来自三叠纪,因此我们创建了一个根据查询为地图着色的SLD,并将该SLD作为GetMap请求的一部分发送回服务器,如:

生成的SLD:

http://portal.onegeology.org/OnegeologyGlobal/slds/20170312_1489310445593_OpenLayers.Layer.WMS_1173.sld

完整的GetMap请求:

http://ogc.bgs.ac.uk/digmap625k_gsml_insp_gs/ows?SERVICE=WMS&LAYERS=gsmlp:GBR_BGS_625k_BA_INSP&TRANSPARENT=TRUE&VERSION=1.3.0&REQUEST=GetMap&STYLES=onegeosld&EXCEPTIONS=INIMAGE&FORMAT=image/png&CRS=EPSG%3A4326&SLD=http%3A%2F%2Fportal.onegeology.org%2FOnegeologyGlobal%2Fslds%2F20170312_1489310445593_OpenLayers.Layer.WMS_1173.sld&BBOX=50.00684534493684,-11.167749816795403,57.790615226828315,7.44692466819312&WIDTH=1234&HEIGHT=516&

给出:

GetMap with custom Style