Kar*_* W. 6 wolfram-mathematica geospatial
Mathematica中一个等值线图的最小例子是什么样的?
我可以使用ESRI Shapefile读取Import,但不知道如何使用导入的结果.
Graphics[
{
ColorData["ThermometerColors"][
Rescale[CountryData[#, "GDPPerCapita"], {100, 50000}]
] /. HoldPattern[Blend[___]] -> Yellow,
CountryData[#, "Polygon"]
} & /@
CountryData[]
]
Run Code Online (Sandbox Code Playgroud)

为什么更换?如果给定国家/地区没有所需类型的数据,则CountryData返回Missing ["NotAvailable"],导致ColorData及其基础Blend函数不返回特定的RGB值.我用Blend黄色替换了这个没有评价的颜色.
仅供参考,这里有一些使用ESRI Shapefiles的技巧.CountryData不提供德国的县级数据(行政单位称为"Kreis"),这就是我编写自己的KreisData功能的原因.我使用的形状文件可以免费下载,但是有一些使用条款需要考虑.
KreisData然后按如下方式创建该函数:
shp = Import["C:/TEMP/map/VG2500/vg2500_krs.shp", "Data"];
polys = "Geometry" /. First[shp];
ags = "RS" /. ("LabeledData" /. First[shp]);
names = "GEN" /. ("LabeledData" /. First[shp]);
area = "SHAPE_AREA" /. ("LabeledData" /. First[shp]);
KreisDataRules =
Dispatch[MapThread[
Rule[#1, #2] &, {ags, Transpose[{polys, area, names}]}]];
KreisData[tag_String, "Polygon"] := First[tag /. KreisDataRules];
KreisData[tag_String, "Area"] := Part[tag /. KreisDataRules, 2];
KreisData[tag_String, "Name"] := Last[tag /. KreisDataRules];
KreisData[] := ags;
Run Code Online (Sandbox Code Playgroud)
通过此函数以及Sjoerd C. de Vries的示例代码,可以创建德国地图:
renderMap[scheme_String] :=
Graphics[{ColorData[scheme][
Rescale[KreisData[#, "Area"], {3.63067036816521*10^7,
3.08469540395003*10^9}]] /.
HoldPattern[Blend[___]] -> Yellow, KreisData[#, "Polygon"]} & /@
KreisData[]];
Manipulate[renderMap[s], {s, ColorData["Gradients"]}]
Run Code Online (Sandbox Code Playgroud)
