【问题标题】:How are layers or images saved in wms server or any other map server?图层或图像如何保存在 wms 服务器或任何其他地图服务器中?
【发布时间】:2017-03-12 18:08:01
【问题描述】:

我一直在关注我的 webgis 项目的 openlayers 初学者指南。我有一个疑问: 假设 openlayers 地图客户端向 wms 服务器发出“基本”类型图层的请求,该请求将在所有缩放级别显示。因此,在每个缩放级别都不同。生成瓷砖,并且不会损失图像的分辨率。所以这里我的问题是“在 wms 服务器中,这些图像是如何呈现的???...它是根据我们的请求从单个高分辨率图像中生成切片还是在服务器中预先保存具有不同分辨率的切片?? 我希望你能理解我的问题..谢谢!

【问题讨论】:

    标签: openlayers wms


    【解决方案1】:

    在 WMS 中,图块或多或少地预先保存在服务器上。您当然可以从一张高分辨率图像计算平铺金字塔,但这些平铺随后会保存到服务器(如cached map service 中)。我认为出于性能原因,这些图块是在服务器上预渲染的,请参见示例Bing Maps

    每次请求生成图块会花费太多时间。如果您有高分辨率光栅图像,请尝试使用 gdal2tiles 为 TMS(Tile Map Service)创建您自己的切片金字塔,看看这需要多长时间。

    【讨论】:

    • 这不正确。 WMS 根据请求创建图像。
    • @user27874 这是正确的,例如使用谷歌地图,他们不需要为每个请求创建图像,而是将它们缓存在内存中,然后只返回 WMS GetMap 请求的结果。
    【解决方案2】:

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

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

    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&

    给予:

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

    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&

    给予:

    【讨论】:

      猜你喜欢
      • 2019-12-07
      • 2016-12-19
      • 2015-05-15
      • 1970-01-01
      • 1970-01-01
      • 2011-09-21
      • 2015-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多