How can i use Onemap on tableau?

Is there a way for me to link Onemap to tableau for data visualisation?

@Bosco_Kor Do you mean by adding OneMap Basemap to Tableau as a WMTS Layer?

Hello Kyros!

Yes, Is that possible? Sorry i am a real beginner and got very lost when i was looking through all the html/https/json codes.

I have already added MapBox Map as an alternative but being able to include OneMap Map would be great. As seen in the screenshot, I am trying to avoid using the WMS Server option.

Should I import/add any of OneMap files/directory to make it possible that it still works even without an internet connection?

Thank you for your time

@Bosco_Kor

Our OneMap Basemaps needs Internet Connection. To use locally in your on-premise, you need to purchase our OneMap Basemaps Technology Stack for your usage. Let me know so that I can direct to our respective team for this on-premise purchase.

This is a workaround (I am not sure if the XML’s “server” tag needs to specify as “http” or “https” since the port is on 443, you can try this) by creating a XML document using your preferred text editor like Notepad or Notepad++:

<?xml version="1.0" encoding="utf-8"?>
<mapsource inline="true" version="8.1">
<connection class="OpenStreetMap" port="443" server="https://maps-all.onemap.sg" url-format="/v3/Default/{Z}/{X}/{Y}.png"/>
<layers>
<layer display-name='Base' name='base' show-ui='false' type='features' request-string='/'/>
</layers>
</mapsource>

*Note: Please modify the “Default” in the XML with other OneMap 2.0 Basemap name (case-sensitive):

  • Default
  • Grey
  • Night
  • Original

If you want to use “Default” mapstyle then save the file as OneMap-Default.tms in UTF-8 encoding. [Source: https://kb.tableau.com/articles/howto/creating-a-custom-map-connection?lang=en-us]

To import this custom map connection (.tms) into Tableau as a MapSource: https://onlinehelp.tableau.com/current/pro/desktop/en-us/maps_mapsources_import.htm

Do let me know if this works for you.

Hello Kyros,

Thank you for the prompt and detailed reply, I executed your steps and got an HTTP bad requrest error when I was importing the file I think it has something to do with this,

When I changed “http” to “https” it worked. However, when i zoom in to the street level, the details of the map seem to stop updating itself. Is this because its the free version?

Thank you for your time!

@Bosco_Kor

Thanks for your testing on your Tableau’s side. I have noted on the changes for https part.

The basemap is supposed to load when zoomed in to specified levels.

But we only have tiles information from Zoom 10 to Zoom 19. You will see pixelated as you are exceeding the Zoom 19 layer.

Alright, Thank You Kyros for that information. Is it that why the level of detail of the streets are also chopped up halfway/seem incomplete in certain areas?

For your testing purpose: Try not to zoom into the max level and span around. See if the tiles are loading.

Hello Kyros,

Sorry for the late response. The tiles are loading when not zoomed in to max level and spanned around but is this normal?

It just seems like the roads been cut off and incomplete

As long as the tiles are loading when not zoomed in.

Maybe you can compare the differences with our https://docs.onemap.sg/maps with your TMS layer.

WMS/WMTS/TMS layer doesn’t cache in the client side.

Here’s our version from the mentioned URL:

Thank You Kyros for your time!

Hello Kyros, Sorry to disturb reopen this thread again.

With regards to the TMS layer on the client side not having as detailed information as https://docs.onemap.sg/maps, when zoomed in due to caching.

Will the said purchasable OneMap Basemaps Technology Stack resolve the issue and allow me to have a detailed map when zoomed in? If it does, is there a trial version where I can implement it with my tableau project for me to consider?

Thank you for your time

The TMS section that you have seen in https://docs.onemap.sg/maps is used for ArcGIS Desktop which is not suitable for Tableau. The XML file (.tms file based) that I have structured earlier in this thread is for Tableau purpose which is their own data/reading structure.

However you can modify your .tms file for that:

<?xml version="1.0" encoding="utf-8"?>
<mapsource inline="true" version="8.1">
<connection class="OpenStreetMap" port="443" server="https://mapservices.onemap.sg" url-format="/mapproxy/tms/1.0.0/Default/EPSG3857/{Z}/{X}/{Y}.png"/>
<layers>
<layer display-name='Base' name='base' show-ui='false' type='features' request-string='/'/>
</layers>
</mapsource>

Having OneMap Basemaps Technology Stack deployed in localhost environment, this can be used as offline. The .tms (for Tableau) has to be modified to that localhost environment.

Hello Kyros,

Thank you for your detailed explanation. From what I understand, please correct me if I am wrong,

The XML file (.tms file based) used in tableau has its own data structure that does not include fine details, like the buildings when zoomed in, as seen in https://docs.onemap.sg/maps used for ArcGIS Desktop.

By modify, are you referring to this?
When i imported the latest .tms file you shared i got an error

does it have to do with this line in the .tms file,
server=“https://mapservices.onemap.sg” url-format="/mapproxy/tms/1.0.0/Default/EPSG3857/{Z}/{X}/{Y}.png" ?

My main concern is getting the buildings to be shown when i zoom in to an appropriate level

Really sorry for bugging you, thank you for your time

@Bosco_Kor,

Let me know your Tableau version so I can ask around if there’s any version installed or similar. Let me get back to you as I need to check on this and doing this test.

Hello Kyros,

I am on Tableau 2019.2

Thank You.

@Bosco_Kor

The earlier XML only works with older Tableau version, v8.1.

I have experimented this workaround with adding WMS Service with Tableau 2019.2 (v18.1):

Please view this:

Using: https://mapservices.onemap.sg/mapproxy/service?

You can save these codes as OneMap-Default.tms as the same setting in the attached screenshot:

<?xml version='1.0' encoding='utf-8' ?>

<!-- build 20192.19.0515.1630                               -->
<mapsource inline='true' source-platform='win' version='18.1' xmlns:user='http://www.tableausoftware.com/xml/user'>
  <connection class='OGC-WMS' description='https://mapservices.onemap.sg/mapproxy/service?' full-url='https://mapservices.onemap.sg/mapproxy/service?' inline='true' offline='' port='443' server='mapservices.onemap.sg' service='https' tileset='US\normal' url='/mapproxy/service?' use-tiled-maps='false' />
  <languages />
  <properties />
  <map-styles />
  <mapsource-defaults version='18.1'>
    <style>
      <style-rule element='map-layer'>
        <format attr='enabled' id='Default' value='true' />
      </style-rule>
    </style>
  </mapsource-defaults>
</mapsource>

You may change in BOLD:
format attr=‘enabled’ id=‘Default’ value=‘true’
to other basemaps as per mentioned earlier.

My Zoomed In Result with the above settings, now the basemap looks more crisp:





Hope that this helps.

Hello Kyros,

Thanks for the prompt reply. Unfortunately, i am still unable to get the same level of crisp detail when i zoom in after trying both methods out
image

and replacing “OneMap-Default.tms” with the mentioned code.

Do you think it is because I am missing the “Geometry” Measures to get the full detail of the buildings? This is my “Ang Mo Kio Ave 3 & 6 Junction”

Did you untick that “Use tiled maps (recommended)”?

I don’t think that is the issue on that missing Geometry.