知識庫

建立自訂對應連線


發佈時間 : 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>

這篇文章是否解決了問題?