Mathematica中一个等值线图的最小例子是什么样的?

Kar*_* W. 6 wolfram-mathematica geospatial

Mathematica中一个等值线图的最小例子是什么样的?

我可以使用ESRI Shapefile读取Import,但不知道如何使用导入的结果.

Sjo*_*ies 7

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黄色替换了这个没有评价的颜色.


Kar*_* W. 5

仅供参考,这里有一些使用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)

使用