2014-01-07 5 views
1

Я новичок в программировании на питоне, и у меня есть довольно простой проект, но у меня есть некоторые трудности. Я хотел бы (a) извлечь XY-координаты вершин шейп-файла (многоугольник) и (2) записать все координаты в файл csv, где первый столбец имеет координаты X, а второй столбец имеет координаты Y. Код, который я написал до сих пор, записывает координаты вершин в файл csv, но каждая цифра координаты помещается в другой столбец.Запись координат XY в файл CSV с использованием Python

Вот мой код до сих пор:

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, ["[email protected]", "[email protected]"]): 
    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() 

ответ

2
writer.writerow(str(vertex.X) + str(vertex.Y)) 

writerow ожидает итерацию, каждый элемент, представляющий собой запись столбца. Вы даете ему строку, поэтому она интерпретирует ее как итерируемую, причем каждый символ является одним элементом и, следовательно, одним столбцом.

Вместо этого используйте:

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

Также вы закрываете файл в внутренней части for и, таким образом, вы можете попробовать писать новые строки после того, как файл был закрыт.

2

Вы должны пройти writerow список вещей, где каждый элемент в списке представляет собой отдельный столбец в вашем выводе:

writer.writerow([vertex.X, vertex.Y]) 
Смежные вопросы