知识库

创建自定义地图连接


发布时间: 14 Apr 2017
上次修改日期: 19 Oct 2023

问题

如何使用 Tableau Desktop 连接到自定义地图。

环境

Tableau Desktop

答案

在 Tableau 中使用自己的地图的最简单方法是连接到 WMS 服务器或 MapBox 地图。有关详细信息,请参阅使用 WMS(Web 地图服务)服务器使用 Mapbox 地图

如果地图服务器不支持 WMS 标准并且地图不是 Mapbox 地图,则您仍然可以通过从 Tableau 地图服务 (TMS) 创建连接来连接到地图服务器。要连接到 TMS,请创建 .tms 文件。

注意:虽然 .tms 文件可能有助于连接到地图服务器,但 Tableau 不会测试或支持 .tms 文件,并且成功可能会有所不同。

TMS 连接的要求

要使用 .tms 连接到地图服务器,地图服务器必须具有以下功能:

  • 将地图作为图块的集合返回
  • 图块位于 Web Mercator 投影中
  • 可以使用与常用 Web 地图服务相同的编号方案通过 URL 对图块进行寻址。有关详细信息,请参阅 TMS 文件中的变量下的 <url-format> 部分。

创建简单的 TMS 文件

.tms 文件是您可以在文本编辑器中创建的简单文本文件。

  1. 打开文本编辑器。

  2. 将以下 XML 复制并粘贴到文本编辑器中。

    <?xml version="1.0" encoding="utf-8"?>
    <mapsource inline="<boolean>" version="8.1">
    <connection class="OpenStreetMap" port="80" server="<server-url>" url-format="<url-format>" />
    <layers>
    <layer display-name='Base' name='base' show-ui='false' type='features' request-string='/' />
    </layers>
    </mapsource>

  3. 替换 <boolean><server-url><url-format> 变量,如本文内的 TMS 文件中的所需变量部分中所述。

  4. 将具有 .tms 扩展名的 TMS 文件保存到 Tableau Desktop 或 Tableau Server 的 Mapsources 文件夹。

    Mapsources 文件夹的默认位置为:

    • 对于 Mac 上的 Tableau Desktop - /Users/<user>/Documents/My Tableau Repository/Mapsources

    • 对于 Windows 上的 Tableau Desktop - C:\Users\<user>\Documents\My Tableau Repository\Mapsources

    • 对于 Tableau Server - C:\Program Files\Tableau\Tableau Server\<version>\vizqlserver\mapsources

  5. 打开 Tableau Desktop。

  6. 连接到包含位置信息的工作簿。

  7. 选择“地图”>“背景地图”,然后选择您在 TMS 文件中配置的地图服务器上的背景地图。

  8. (可选)如果您将 TMS 文件添加到 Tableau Server 中的 Mapsources 文件夹,则将工作簿发布到 Tableau Server 并查看您在 TMS 文件中配置的背景地图。

TMS 文件中的所需变量

只能在 XML 中更改以下变量:

  • <boolean>:将 <boolean> 替换为 truefalse 值。
    • true 值允许 Tableau Desktop 将在 TMS 文件中指定的配置与工作簿保存在一起。如果将工作簿发布到 Tableau Cloud 或 Tableau Public,则使用此值。
    • false 值要求 Tableau Desktop 或 Tableau Server 能够访问保存在 Mapsources 文件夹中的 TMS 文件,以显示地图服务器中的地图。
  • <server-url>:将 <server-url> 替换为地图服务器的 URL。
  • <url-format>:将 <url-format> 替换为地图服务器所需的额外 URL 片段。这可能包括以下标记:
    • {Z}{Z} 标记指示缩放级别。缩放级别为 0 将在一个地图图块中显示整个世界。TMS 将会获取一直到级别 16 的地图图块。
    • {X}{Y}{X}{Y} 标记指示地图图块坐标。有关地图图块的详细信息,请参阅以下网页:

示例 XML

假设您要连接到由 OpenStreetMaps 提供的示例地图服务器。TMS 文件可能类似以下所示:

<?xml version="1.0" encoding="utf-8"?>
<mapsource inline="true" version="8.1">
<connection class="OpenStreetMap" port="80" server="http://a.tile.openstreetmap.org" url-format="/{Z}/{X}/{Y}.png" />
<layers>
<layer display-name='Base' name='base' show-ui='false' type='features' request-string='/' />
</layers>
</mapsource>

高级 TMS 设置

您可以使用高级 TMS 文件格式执行 API 按键的特殊处理,以及控制地图图块的拉伸、收缩和冲蚀。

注意: 在 Mapsources 文件夹中,您将会找到 Tableau Desktop 和 Tableau Server 附带的 TMS 文件。不支持利用在这些文件中配置的设置来连接到其他地图服务器。

API 按键

如果地图服务器要求在服务器 URL 中包含 API 按键,则您可以在连接元素的 <url-format> 部分中使用 {K} 标记。

您也可以在字符串中使用 {K} 标记,并将 API 按键放在用户名属性中,以将 API 按键与 <url-format> 字符串分开。

下例演示如何将 {K} 标记与用户名属性中的 API 按键一起使用。

<?xml version="1.0" encoding="utf-8"?> 
<mapsource inline="true" version="8.1"> 
<connection class="OpenStreetMap" port="80" server="http://a.tile.mapbox.com" url-format="/v4/base.mapbox-streets+bg-e8e0d8_landuse_water_buildings_streets/{Z}/{X}/{Y}.png?access_token={K}" username="<your-api-key>"/> 
<layers> 
<layer display-name='Base' name='base' show-ui='false' type='features' request-string='/' /> 
</layers> 
</mapsource>

最大拉伸和最小收缩

默认情况下,Tableau 将获取它从地图服务器收到的地图图块,并拉伸这些地图图块以匹配您的数据。如果您需要对如何显示地图图块进行更多控制,则可以在连接元素中设置最大拉伸 (max-stretch) 和最小收缩 (min-shrink) 属性。

如果将最大拉伸和最小收缩均设置为 1,则 Tableau 不会拉伸或收缩地图图块。Tableau 而是会将地图缩放对齐到图块。您也可以将最大拉伸和最小收缩属性设置为接近 1 的值,以允许一定程度的拉伸或收缩和对齐(取决于具体的缩放)。

下例演示如何使用 max-stretchmin-shrink 属性。

<?xml version="1.0" encoding="utf-8"?> 
<mapsource inline="true" version="8.1"> 
<connection class="OpenStreetMap" port="80" server="http://a.tile.openstreetmap.org" url-format="/{Z}/{X}/{Y}.png" max-stretch="1.2" min-shrink="0.667"/> 
<layers> 
<layer display-name='Base' name='base' show-ui='false' type='features' request-string='/' /> 
</layers> 
</mapsource>

冲蚀

默认情况下,Tableau 将会轻微冲蚀它从地图服务器收到的地图图块,以便突出显示数据。要控制地图图块的冲蚀程度,请将以下 XML 部分直接添加到根元素的结束标记 </mapsource> 之前。可以将冲蚀值更改为 0.0 和 1.0 之间的任何数字。

以下 XML 是可以放在根元素的结束标记 </mapsource> 之前的示例。

<mapsource-defaults version="8.1"> 
<style> 
<style-rule element="map"> 
<format attr="washout" value="0.0"/> 
</style-rule> 
</style> 
</mapsource-defaults>

此文章是否已解决问题?