wolfram-mathematica - Mathematica 北美 map

标签 wolfram-mathematica mapping visualization gis

您将如何在 Mathematica 中渲染这样的 map ? (例如,美国各州和加拿大各省可分别着色?)http://upload.wikimedia.org/wikipedia/commons/archive/1/18/20071029031002%21North_America_map_coloured.svg

我尝试导入 SVG 路径并构建多边形(使用基于 http://mathgis.blogspot.com/2009/11/make-us-county-thematic-map-using.html 的方法),但它们看起来不如链接的 SVG 中的曲线好看。内置数据库似乎没有美国各州和加拿大各省的形状:只有国家。

谢谢!

PS:这样做的目的是能够为州/省数据制作等值线图(即根据与该州/省相关的一些数据为州/省着色)

最佳答案

您可以使用 .kml 或 .kmz 文件来获取州/省和多边形的轮廓列表。例如,对于美国,您可以使用 this file .要提取多边形,您可以执行以下操作

usa = Import["http://code.google.com/apis/kml/documentation/us_states.kml", 
  "Data"];

transform[s_] := StringTrim[s, Whitespace ~~ "(" ~~ ___ ~~ ")"]

polygons = Thread[transform["PlacemarkNames" /. usa[[1]]] -> 
  ("Geometry" /. usa[[1]])];
stateNames = polygons[[All, 1]];

然后多边形将是一个包含元素的列表 "state name" -> Polygon[points] .函数transform只是一个辅助函数,用于以所需格式从 .kml 文件中获取 PlacemarkNames(在这种情况下,从名称末尾去除“(年)”)。

使用这些多边形,您可以使用 FaceForm[]为各个多边形着色。假设我们有一个形式为 "state" -> value 的数据列表,例如
data = Thread[regionNames -> RandomReal[{0, 1}, Length[regionNames]]];

然后我们可以根据
colourf = ColorData["Temperature"];
element[value_, poly_] := GraphicsGroup[{EdgeForm[Black], FaceForm[colourf[value]], poly}]

Graphics[{element @@@ Transpose[regionNames /. {data, polygons}]}]

看起来像

Mathematica graphics

关于wolfram-mathematica - Mathematica 北美 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8957067/

相关文章:

symfony - 如何配置 Doctrine 以在 Symfony 4 上使用 yaml 映射

apache-spark-sql - 如何在 zeppelin 中自动更新 %spark.sql 结果以进行结构化流查询

python - 可视化代码覆盖率结果的好方法

wolfram-mathematica - 面向对象数学编程

function - 生成局部变量(作为常量)时出错

vim - 为什么我的 vim 映射不起作用?

hibernate - 为什么 hibernate/jpa 在删除映射列表中的已删除元素之前将 @OrderColumn 字段设置为 null?

python - 如何在 pandas 中保存 lmplot

wolfram-mathematica - 在 Mathematica 和 MIDI 踏板事件中叠加音乐轨道

save - 如何在不保存辅助定义的情况下保存与 Mathematica 中符号关联的 [] 定义?