Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.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将XY坐标写入CSV文件_Python_Csv_Arcgis - Fatal编程技术网

使用Python将XY坐标写入CSV文件

使用Python将XY坐标写入CSV文件,python,csv,arcgis,Python,Csv,Arcgis,我是python编程新手,我有一个相当简单的项目,但有一些困难。我想(a)提取形状文件(多边形)顶点的XY坐标,(2)将所有坐标写入csv文件,其中第一列具有X坐标,第二列具有Y坐标。到目前为止,我编写的代码将顶点坐标写入csv文件,但坐标的每个数字都放在不同的列中 以下是我目前的代码: import arcpy, os, csv from arcpy import env workspace = "J:/Folder/" arcpy.env.overwriteOutput = True myP

我是python编程新手,我有一个相当简单的项目,但有一些困难。我想(a)提取形状文件(多边形)顶点的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()
writerow
需要一个iterable,每个元素表示一个列条目。您给它一个字符串,因此它将其解释为一个iterable,每个字符是一个元素,因此是一列

而是使用:

writer.writerow([vertex.X, vertex.Y])
writer.writerow([vertex.X, vertex.Y])
此外,您正在为关闭
内部的文件,因此您可以在文件关闭后尝试写新行

writerow
需要一个iterable,每个元素表示一个列条目。您给它一个字符串,因此它将其解释为一个iterable,每个字符是一个元素,因此是一列

而是使用:

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

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

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


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