0

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

4

2 回答 2

0

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

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

于 2013-01-18T20:19:21.647 回答
0

OGC WMS(Web 地图服务)是一种服务,可根据客户端的请求提供地图,例如使用 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&宽度=1234&高度=516&

给出:

具有默认样式的 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=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&S 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

于 2017-03-12T09:14:25.720 回答