上次修改日期: 19 Oct 2023
环境
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 文件是您可以在文本编辑器中创建的简单文本文件。
-
打开文本编辑器。
-
将以下 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> -
替换
<boolean>
、<server-url>
和<url-format>
变量,如本文内的 TMS 文件中的所需变量部分中所述。 -
将具有 .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
-
-
打开 Tableau Desktop。
-
连接到包含位置信息的工作簿。
-
选择“地图”>“背景地图”,然后选择您在 TMS 文件中配置的地图服务器上的背景地图。
-
(可选)如果您将 TMS 文件添加到 Tableau Server 中的 Mapsources 文件夹,则将工作簿发布到 Tableau Server 并查看您在 TMS 文件中配置的背景地图。
TMS 文件中的所需变量
只能在 XML 中更改以下变量:
<boolean>
:将<boolean>
替换为true
或false
值。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-stretch
和 min-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>