我有一个使用pykml的kml解析中的lxml.objectify.StringElement。 分析如下:
with open('btgdbgdgnh.kml') as f:
documento = parser.parse(f).getroot().Document
d = {}
for p in documento.Folder:
d[p.name] = {}
for place in p.Placemark:
d[p.name][place.name] = []
for pol in place.MultiGeometry.Polygon:
d[p.name[place.name].append(pol.outerBoundaryIs.LinearRing.coordinates)
这种解析的输出如下:
'\n -0.458304,38.368177,0\n -0.458486,38.368272,0\n -0.458679,38.36836,0\n
在与几个kml库进行了斗争之后,我决定采用黑客方法,并尝试自己对其进行格式化,以便为其提供数据,从而创建形状优美的多边形,如下所示:
s='\n -0.458304,38.368177,0\n -0.458486,38.368272,0\n -0.458679,38.36836,0\n
s = s.replace('0\n','0)|(')
s = s.replace('\n','(')
s = " ".join(s.split())
s = s.split('|')
这将呈现此输出:
['( -0.458304,38.368177,0)',
'( -0.458486,38.368272,0)',
'( -0.465878,38.368924,0)',
'( -0.468405,38.368941,0)',
'( -0.472423,38.369025,0)']
我不能把里面的东西转换成简单的元组。我尝试了ast库,但似乎不推荐(?),numpy数组,它似乎是最“pythonic”的,如下所示:
results = np.fromstring(s, dtype=int, sep='|')
但是返回了一个空数组。从一开始我的解决方案似乎不是很好,但这是我第一次使用pykml,所以这是我唯一可以思考的方法,现在我迷路了。 任何帮助都将不胜感激,谢谢
使用列表理解结束:
相关问题 更多 >
编程相关推荐