Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 解析包含大量多边形的单个kml文件中的坐标_Python 2.7_Kml_Pykml - Fatal编程技术网

Python 2.7 解析包含大量多边形的单个kml文件中的坐标

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):

我有一个kml文件,一个很长的文件,我设法从一个多边形获得坐标。但我的循环似乎没有转移到下一个多边形。有没有办法“指向”下一个多边形,这样我就可以从中获得坐标?谢谢

另外,我从stackoverflow中某个问题的代码中提取了部分代码

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)

使用“多边形”

有人能回答我的问题吗(