地图管理语言

地图标记语言(MapML)是一种基于文本的格式,它允许地图作者将地图信息编码为在Web的统一界面上交换的超文本文档。格式定义仍然是mapsforhtmlw3c社区组正在进行的工作,但是使用该格式的各种工具已经存在,包括基于传单的地图查看器。有关MapML的更多信息,请参阅 Maps for HTML Community Group .

geoserver的mapml模块添加了新的mapml资源以访问在geoserver中配置的WMS和WFS服务。MAPML模块包括对WMS层的样式、瓦片、查询、切分和维度选项的支持,还为WMS GetFeatureInfo和WFS GetFeatures请求提供MAPML输出格式。有关安装和配置MAPML模块的信息,请参阅下文。

安装

  1. nightly GeoServer community module builds .

    警告

    确保将扩展的版本与geoserver实例的版本匹配。

  2. 将存档的内容提取到 WEB-INF/lib 地理服务器安装目录。

配置

可以使用geoserver管理员GUI进行配置。MAPML配置可在 MAPML设置 下一节 发布 正在配置的层或层组的层或层组配置页的选项卡。下面是mapml设置部分,其中填写了一些示例值:

../../_images/mapml_config_ui.png

许可证信息

将这两个属性放在一起,所有管理员都可以定义 <link rel=license> MapML头中的元素。下面是生成的XML的一个示例:

<link href=“https://creativecommons.org/licenses/by/4.0/”rel=“license”title=“attribution 4.0 international(cc by 4.0)”/>

许可证名称

许可证标题将作为 title 的属性 <link rel=license> MapML头中的元素。

许可证链接

许可证链接将作为 href 的属性 <link rel=license> 元素,并且应该是引用许可证文档的有效URL。

瓦片设置

使用瓦片访问层可以提高Web地图的性能。如果在geoserver和浏览器客户端之间使用了tile缓存机制,则情况尤其如此。

使用瓦片

如果选中“使用图块”复选框,默认情况下,输出mapml将定义对WMS服务器的基于图块的引用。否则,将使用基于图像的引用。如果图层或图层组在其“图块缓存”配置文件中引用了一个或多个MAPML定义的网格集,则geoserver将生成图块引用,而不是在MAPML文档体中生成WMS GetMap URL。

瓦片缓存

在“编辑层”或“编辑层”组页面的“瓦片缓存”选项卡面板中,在页面底部,您将看到分配给层或层组的网格集表。值“wgs84”和“osmtile”等同于epsg:4326和epsg:900913内置的geoWebcache网格集。但是,为了让mapml模块识别这些网格集,必须选择并使用mapml名称。对于新图层或图层组,或新创建的图层或图层组的网格子集,默认情况下会选择MAPML值。对于希望通过MAPML服务启用缓存图块引用的现有层,必须从可用网格集的下拉列表中选择并添加希望支持的值。MAPML的识别值集为“wgs84”(相当于epsg:4326)、“osmtile”(相当于epsg:900913)、“cbmtile”(加拿大地图)和“apstile”(阿拉斯加极地立体图)。

../../_images/mapml_tile_caching_panel_ui.png

切分配置

sharding配置选项旨在允许通过不同的服务器名称并行访问tiles。必须在DNS中配置实际服务器名称,以引用相同服务器或具有相同GESServer层配置的不同服务器。在上面的示例中,mapml客户机将在服务器a.geoserver.org、b.geoserver.org和c.geoserver.org之间交替访问地图图像。上面示例中的值将产生以下mapml:

<input name="s" type="hidden" shard="true" list="servers" min="0.0" max="0.0"/>
<datalist id="servers">
    <option value="a"/>
    <option value="b"/>
    <option value="c"/>
</datalist>
<link tref="http://{s}.geoserver.org:8080/geoserver/test/wms?version=1.3.0&amp;service=WMS&amp;request=GetMap&amp;crs=EPSG:3857&amp;layers=cntry00&amp;styles=&amp;bbox={xmin},{ymin},{xmax},{ymax}&amp;format=image/png&amp;transparent=false&amp;width={w}&amp;height={h}" rel="image"/>
启用分片

如果选中启用切分,并为切分列表和切分服务器模式字段提供值,则MAPML中将包含隐藏的切分列表输入。

碎片列表

如果选中启用碎片,则碎片列表应填充以逗号分隔的碎片名称列表,该列表将用于填充碎片数据列表元素。

碎片服务器模式

shard服务器模式应该是一个有效的dns名称,包括特殊的占位符字符串s,该字符串将替换为对服务器的请求中shard列表中的shard名称。此模式不应包括任何斜杠、协议字符串(http://)或端口号(:80),因为这些都是从用于访问MAPML资源的URL自动确定的。

维度配置

Dimension

所选维度(如果有)在mapml中作为具有适当值选项或范围的输入进行播发,如在 尺寸 层配置页的选项卡。仅在中启用维度 尺寸 选项卡可用作选项。

MAPML资源

将为任何已发布的WMS层发布MAPML资源。MAPML资源将在以下位置提供:

http://{serverName}/geoserver/mapml/{layerName}/{projectionName}?style={styleName}&transparent={true|false}&format={wmsFormat}

这个 {{layerName}} 是WMS层名称,以及 {{serverName}} 运行Geoserver的服务器的名称或IP地址。这个 {{projectionName}} 必须是MapML支持的投影之一:

  • OSMTILE

  • CBMTILE

  • APSTILE

  • WGS84

每个URL查询字符串参数都是可选的,但如果提供了这些参数,它们将有效地传递给底层的WMS服务调用。以下是有关参数的一些详细信息:

style

如果提供,指定的 {{styleName}} 必须与用于图层的可用WMS样式相对应。

transparent

如果提供,必须是 truefalse . 相同的值传递给基础的WMS服务。如果未提供,则默认为与“不透明”WMS发布层设置相反。

format

如果提供,则必须是有效的WMS格式说明符。如果未提供,则默认为 image/png .

MAPML可视化

安装了MAPML社区模块后,将修改geoserver层预览页面,为每个层和层组添加到MAPML资源的链接。MAPML模块截获的图层预览表中的MAPML链接和一个HTML Web地图页是动态创建的,它引用了MAPML资源:

../../_images/mapml_preview_ui.png

您可以根据需要向地图添加图层,方法是从图层预览表中拖动链接URL并将其放到另一个图层的mapml预览中。如果一切顺利,您应该可以在地图和图层控件中看到层叠的图层。

目前唯一能够显示MapML的工具是基于传单的MapML客户端。您可以使用npm“bower”包管理工具获得自己的客户机副本。一旦安装了bower,就可以通过在该目录中运行“bower install web map”命令,在您选择的目录中安装web地图客户端。这将在执行命令的目录中创建一个“bower_components”目录。此客户端可以导入到具有 <map><layer> 元素来引用上面定义的MapML资源。下面是这样一个简单的、自包含的HTML页面示例:

<html>
    <head>
        <title>MapML Test Map</title>
        <meta charset="utf-8" />
        <script src="./bower_components/webcomponentsjs/webcomponents-lite.min.js"></script>
        <link rel="import" href="./bower_components/web-map/web-map.html">
        <style>
            /* make the map fullscreen */
            html, body {
                height: 100%;
                width: 100%;
                overflow: hidden;
            }
            body {
                padding: 0;
                margin: 0;
            }
            map {
                height: 100%;
                width: 100%;
            }
        </style>
    </head>
    <body>
        <map is="web-map" projection="osmtile" zoom="2" lat="61.209125" lon="-90.850837" controls>
            <layer- label="US States" src="http://localhost:8080/geoserver/mapml/topp:states/osmtile?style=population" checked></layer->
        </map>
    </body>
</html>

在上面的例子中,占位符 topp:stateslocalhost:8080osmtilepopulation 将需要替换为适当的值,和/或 style 如果不需要,可以从URL中完全删除参数。您还可以在预览页面上“查看源”,查看任何层的标记外观。这段代码可以复制和粘贴而不会造成伤害,您应该尝试一下,看看哪些是有效的,哪些是限制。有关MapML和HTML社区组的Maps的更多信息,请访问http://maps4html.org。