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 @@@的列表中,但是我在基本部分丢失了,我无法提取几何"规则".
谢谢你的帮助,
罗恩
虽然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的压缩版本.