【问题标题】:Writing XY coordinates to CSV file using Python使用 Python 将 XY 坐标写入 CSV 文件
【发布时间】:2014-01-07 14:10:38
【问题描述】:

我是 python 编程的新手,我有一个相当简单的项目,但遇到了一些困难。我想(a)提取 shapefile(多边形)顶点的 XY 坐标,(2)将所有坐标写入 csv 文件,其中第一列具有 X 坐标,第二列具有 Y 坐标。到目前为止,我编写的代码将顶点坐标写入 csv 文件,但坐标的每个数字都放在不同的列中。

到目前为止,这是我的代码:

import arcpy, os, csv
from arcpy import env
workspace = "J:/Folder/"
arcpy.env.overwriteOutput = True
myPath = workspace
oFile = open(myPath + "xyCoord.csv", "w")
polygon = myPath + "Polygon2.shp" 
writer = csv.writer(oFile, delimiter = ',', dialect = 'excel', lineterminator = '\n')
writer.writerow(['X', 'Y'])

for row in arcpy.da.SearchCursor(polygon, ["OID@", "SHAPE@"]):
    print ("Feature {0}:".format(row[0]))
    partnum = 0 # Prints the current multipont's ID

    for part in row[1]:
        print ("Part {0}:".format(partnum)) # Prints the part number

        for vertex in part:
            print ("{0}, {1}".format(vertex.X, vertex.Y))
            writer.writerow(str(vertex.X) + str(vertex.Y))
        partnum += 1
        oFile.close()

【问题讨论】:

    标签: python csv arcgis


    【解决方案1】:

    您必须向writerow 传递一个事物列表,其中列表中的每个元素在您的输出中都是一个单独的列:

    writer.writerow([vertex.X, vertex.Y])
    

    【讨论】:

      【解决方案2】:
      writer.writerow(str(vertex.X) + str(vertex.Y))
      

      writerow 需要一个可迭代的,每个元素代表一个列条目。你给它一个字符串,所以它把它解释为一个可迭代的,每个字符是一个元素,因此是一列。

      改为使用:

      writer.writerow([vertex.X, vertex.Y])
      

      此外,您正在关闭for 内部的文件,因此您可以在文件关闭后尝试编写新行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-12
        相关资源
        最近更新 更多