在Mathematica中处理KMZ

Ron*_*Ron 4 wolfram-mathematica rules kmz mathematica-8

我坚持转换.

我有一个带有一些坐标的KMZ文件.我读了这样的文件:

m=Import["~/Desktop/locations.kmz","Data"]
Run Code Online (Sandbox Code Playgroud)

我得到这样的东西:

{{LayerName->Point Features,
  Geometry->{
    Point[{-120.934,49.3321,372}],
    Point[{-120.935,49.3275,375}],
    Point[{-120.935,49.323,371}]},
  Labels->{},LabeledData->{},ExtendedData->{},
  PlacemarkNames->{1,2,3},
  Overlays->{},NetworkLinks->{}
}}
Run Code Online (Sandbox Code Playgroud)

我想从每个点以及与点相关联的地标名称{1,2,3}中提取{x,y,z}.即使我可以从几何中得到分数 - > {}也没关系,因为我可以将它们提取到List @@@的列表中,但是我在基本部分丢失了,我无法提取几何"规则".

谢谢你的帮助,

罗恩

Mar*_*ure 5

虽然Leonid的答案是正确的,但您可能会发现它不适用于您的代码.原因是Import命令的输出包含字符串,例如"LayerNames",而不是符号,例如LayerNames.我已将KML文件上传到我的网站空间,因此我们可以使用实际Import命令进行尝试.尝试以下内容:

in = Import["http://facstaff.unca.edu/mcmcclur/my.kml", "Data"];
pointList = "Geometry" /.  
    Cases[in, Verbatim[Rule]["Geometry", _], Infinity];
pointList /. Point[stuff_] -> stuff
Run Code Online (Sandbox Code Playgroud)

再次注意,这"Geometry"是一个字符串.事实上,内容in看起来像这样(in InputForm):

{{"LayerName" -> "Waypoints", 
  "Geometry" -> {Point[{-82.5, 32.5, 0}]}, 
  "Labels" -> {}, "LabeledData" -> {}, 
  "ExtendedData" -> {}, "PlacemarkNames" -> {"asheville"}, 
  "Overlays" -> {}, "NetworkLinks" -> {}}}
Run Code Online (Sandbox Code Playgroud)

上下文:KML指的是Keyhole标记语言.Keyhole是一家开发工具的公司,这些工具在被谷歌收购后最终成为谷歌地球.KMZ是KML的压缩版本.