Forum Discussion

jerryr125's avatar
jerryr125
Helper IV
1 year ago
Solved

Power BI - Shape Map Visualization Question

Hi - 

Question about the Shape Map:

* I created a map of a building layout/floor plan - different rooms so to speak - using Adobe Illustrator.  I saved the file as a "SVG" file.

I noticed in the shape map visualization that if you use a 'custom map' it needs to be a .json file.  

Is there anyway to convert the .svg file (again a floor plan of a building) into a .json file that inturn, can be used by the shape map visualization ? 

Any thoughts would be appreciated - Thanks - Jerry

 - 

  • Great question, Jerry! Short answer: Shape Map needs TopoJSON (or GeoJSON converted to TopoJSON). An SVG floor plan can’t be used directly—it must be turned into polygons with a name/key for each room.

     

    I kindly invite you to read my newsletter article about Shape Map:

    https://www.linkedin.com/pulse/developing-azerbaijan-shape-map-azepowerbicommunity-538te/?trackingId=01vDiddzTUS%2FT7%2FyqKQLIg%3D%3D

     

    Fastest path (recommended)

    Use Synoptic Panel (custom visual by OKViz) — it’s made for floor plans and works directly with SVG. Give each room a unique ID in Illustrator, export SVG, then bind measures by room ID. No JSON conversion needed.

    If you must use Shape Map

    Pipeline to convert your SVG → TopoJSON:

    • Prep in Illustrator

    - Make each room a closed polygon (no strokes-only).

    - Give every room a unique Name/ID (e.g., “Room101”).

    • Export to DXF

    - File → Export → DXF (rooms as filled polygons).

    • Bring into QGIS (free)

    - Add the DXF as a vector layer.

    - If needed, run Polygonize to convert lines to polygons.

    - Add an attribute name (matching Room IDs).

    • Export GeoJSON

    - Right-click layer → Export → GeoJSON.

    • Convert to TopoJSON

    - Use mapshaper (GUI or CLI):

     

    mapshaper rooms.geojson -clean -simplify 5% keep-shapes -o format=topojson rooms.json

    - Ensure each feature has a "name" property.

     

    • Power BI Shape Map

    - Visual → Shape map → Custom map → import rooms.json.

    - Bind your data’s Location column to the name property.

    I hope it wil help

     

7 Replies

  • Great question, Jerry! Short answer: Shape Map needs TopoJSON (or GeoJSON converted to TopoJSON). An SVG floor plan can’t be used directly—it must be turned into polygons with a name/key for each room.

     

    I kindly invite you to read my newsletter article about Shape Map:

    https://www.linkedin.com/pulse/developing-azerbaijan-shape-map-azepowerbicommunity-538te/?trackingId=01vDiddzTUS%2FT7%2FyqKQLIg%3D%3D

     

    Fastest path (recommended)

    Use Synoptic Panel (custom visual by OKViz) — it’s made for floor plans and works directly with SVG. Give each room a unique ID in Illustrator, export SVG, then bind measures by room ID. No JSON conversion needed.

    If you must use Shape Map

    Pipeline to convert your SVG → TopoJSON:

    • Prep in Illustrator

    - Make each room a closed polygon (no strokes-only).

    - Give every room a unique Name/ID (e.g., “Room101”).

    • Export to DXF

    - File → Export → DXF (rooms as filled polygons).

    • Bring into QGIS (free)

    - Add the DXF as a vector layer.

    - If needed, run Polygonize to convert lines to polygons.

    - Add an attribute name (matching Room IDs).

    • Export GeoJSON

    - Right-click layer → Export → GeoJSON.

    • Convert to TopoJSON

    - Use mapshaper (GUI or CLI):

     

    mapshaper rooms.geojson -clean -simplify 5% keep-shapes -o format=topojson rooms.json

    - Ensure each feature has a "name" property.

     

    • Power BI Shape Map

    - Visual → Shape map → Custom map → import rooms.json.

    - Bind your data’s Location column to the name property.

    I hope it wil help

     

    • v-dineshya's avatar
      v-dineshya
      Community Support

      Hi jerryr125 ,

      We haven’t heard from you on the last response and was just checking back to see if you have a resolution yet. And, if you have any further query do let us know.

       

      Regards,

      Dinesh

      • v-dineshya's avatar
        v-dineshya
        Community Support

        Hi @jerryr125 ,

        We haven’t heard from you on the last response and was just checking back to see if you have a resolution yet. And, if you have any further query do let us know.

         

        Regards,

        Dinesh