使用 Power BI 自定义形状地图

Using a Power BI Custom Shape Map

我一直在尝试在 Power BI 中使用自定义形状图,但无法正常工作。 这一切背后的想法是从 .shp 文件、.dbf 文件和 .prj 文件开始,并将其导出到实际在 Power BI 中工作的 TopoJson 文件,以便通过颜色饱和度显示县之间的差异。

为此,我一直在使用 https://mapshaper.org 网站。

这是我开始使用的文件:

https://drive.google.com/open?id=17EtWd5YqEV4k5ctuJIFI9JDJIK8joCnG

这就是我希望它在 Power BI 中使用的内容:

Map Shaper .shp file without .dbf file

我找到了这些信息,如果我能理解的话可能对我有所帮助

Power BI. Using custom map as base map

https://moriartynaps.org/

使用 mapshaper 后,您应该会得到一个拓扑 json 文件,这个 json 文件我假设您已经在形状地图可视化中导入 Power BI。

在 topojson 文件中,地图的每个单独部分 "should" 都被分配了一个 ID 或标识符。因此,在 text/scripting 编辑器中查看 json 文件以识别这些文件。

将您的数据集导入 Power BI,然后您需要将每个数据值映射到标识符。显然,如何执行此操作取决于您...如果愿意,您可以编写一个巨大的 "if/else" dax 公式,但关键是导入数据的每一行都有另一列,该列具有等效的 ID json 文件。

您可以直接从 json 文件中获取形状映射键。这是一个例子:NZ.json

let
    Source = Json.Document(File.Contents("C:\NZ.json")),
    #"Converted to Table" = Record.ToTable(Source),
    Value1 = #"Converted to Table"{3}[Value],
    #"Converted to Table1" = Record.ToTable(Value1),
    Value2 = #"Converted to Table1"{0}[Value],
    geometries = Value2[geometries],
    #"Converted to Table2" = Table.FromList(geometries, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table2", "Column1", {"arcs", "type", "properties"}, {"arcs", "type", "properties"}),
    #"Removed Other Columns" = Table.SelectColumns(#"Expanded Column1",{"properties"}),
    ColumnNames = Record.FieldNames(#"Removed Other Columns"[properties]{0}),
    ExpandProperties = Table.ExpandRecordColumn(#"Removed Other Columns", "properties", ColumnNames, ColumnNames)
in 
    ExpandProperties