Python 2.7 解析包含大量多边形的单个kml文件中的坐标
我有一个kml文件,一个很长的文件,我设法从一个多边形获得坐标。但我的循环似乎没有转移到下一个多边形。有没有办法“指向”下一个多边形,这样我就可以从中获得坐标?谢谢 另外,我从stackoverflow中某个问题的代码中提取了部分代码Python 2.7 解析包含大量多边形的单个kml文件中的坐标,python-2.7,kml,pykml,Python 2.7,Kml,Pykml,我有一个kml文件,一个很长的文件,我设法从一个多边形获得坐标。但我的循环似乎没有转移到下一个多边形。有没有办法“指向”下一个多边形,这样我就可以从中获得坐标?谢谢 另外,我从stackoverflow中某个问题的代码中提取了部分代码 from pykml import parser import os, zipfile, os.path from zipfile import ZipFile as zip mapCoords = [[]] def extractAll(zipName):
from pykml import parser
import os, zipfile, os.path
from zipfile import ZipFile as zip
mapCoords = [[]]
def extractAll(zipName):
z = zip(zipName)
for f in z.namelist():
if f.endswith('/'):
os.makedirs(f)
else:
z.extract(f)
return f
doc = parser.parse(extractAll("temp_kmz")).getroot()
for Polygon in doc.Document.Folder.Placemark.MultiGeometry:
a = 0
mapCoords[a].append(doc.Document.Folder.Placemark.MultiGeometry.Polygon.outerBoundaryIs.LinearRing.coordinates)
a+=1
print mapCoords
这是kml文件的一个剪辑
<MultiGeometry>
<Polygon>
<outerBoundaryIs><LinearRing><coordinates> 121.077285,14.626314 121.077006,14.626312 121.077009,14.626040 121.077287,14.626043 121.077285,14.626314</coordinates></LinearRing></outerBoundaryIs>
</Polygon>
<Polygon>
<outerBoundaryIs><LinearRing><coordinates> 121.077285,14.626314 121.077563,14.626316 121.077561,14.626587 121.077282,14.626585 121.077285,14.626314</coordinates></LinearRing></outerBoundaryIs>
</Polygon>
<Polygon>
<outerBoundaryIs><LinearRing><coordinates> 121.079236,14.626059 121.079234,14.626330 121.079512,14.626332 121.079510,14.626603 121.079231,14.626601 121.078953,14.626599 121.078955,14.626328 121.078958,14.626057 121.079236,14.626059</coordinates></LinearRing></outerBoundaryIs>
</Polygon>
<Polygon>
<outerBoundaryIs><LinearRing><coordinates> 121.077561,14.626587 121.077839,14.626590 121.077837,14.626861 121.077834,14.627132 121.077556,14.627129 121.077558,14.626858 121.077561,14.626587</coordinates></LinearRing></outerBoundaryIs>
</Polygon>
<Polygon>
<outerBoundaryIs><LinearRing><coordinates> 121.125000,14.627245 121.125000,14.627516 121.124887,14.627515 121.124890,14.627244 121.125000,14.627245</coordinates></LinearRing></outerBoundaryIs>
</Polygon>
121.077285,14.626314 121.077006,14.626312 121.077009,14.626040 121.077287,14.626043 121.077285,14.626314
121.077285,14.626314 121.077563,14.626316 121.077561,14.626587 121.077282,14.626585 121.077285,14.626314
121.079236,14.626059 121.079234,14.626330 121.079512,14.626332 121.079510,14.626603 121.079231,14.626601 121.078953,14.626599 121.078955,14.626328 121.078958,14.626057 121.079236,14.626059
121.077561,14.626587 121.077839,14.626590 121.077837,14.626861 121.077834,14.627132 121.077556,14.627129 121.077558,14.626858 121.077561,14.626587
121.125000,14.627245 121.125000,14.627516 121.124887,14.627515 121.124890,14.627244 121.125000,14.627245
问题在于如何调用有关多重几何体的属性,您必须按如下方式调用:
for Poly in doc.Document.Folder.Placemark.MultiGeometry.Polygon:
mapCoords[a].append(Poly.outerBoundaryIs.LinearRing.coordinates)
使用“多边形”有人能回答我的问题吗(