Я хочу создать множественную полилинию из файла CSV. А вот пример записей в файле CSV: время, круг, GPS_Update, GPS_Delay, точность (м), широта, долгота, высота (м), скорость (км / ч), курс, ускорение, X, ускорение Y, ускорение Z.
308.016,1,0,0.000,3,0, -34,8403140,149,6853022,672,138,6,17,3, -0,11,0.03,0.02
Круг 1: 00: 01: 24,259
308,044,2,1,0.000,3,0, -34,8399724,149,6854243,672,143,1,17,1, -0,11,06, -0,00
У меня 7 рядов кругов. Поэтому я пытаюсь получить один шейп-файл с несколькими полилиниями для каждого круга. Но мой код создает только одну ломаную линию. Вы, геи, знаете, что я делаю не так?
enimport csv
import arcpy
arcpy.env.overwriteOutput = True
arcpy.env.workspace = r"C:\PSUGIS\GEOG485\Lesson4\ProjectL4"
lineFC = "Car_path1.shp"
out_sr = arcpy.SpatialReference("WGS 1984")
arcpy.CreateFeatureclass_management(arcpy.env.workspace,lineFC, "POLYLINE", spatial_reference=out_sr)
def addPolyline(cursor, array, out_sr):
polyline = arcpy.Polyline(array, out_sr)
cursor.insertRow((polyline,))
array.removeAll()
def decomment(csvfile):
for row in csvfile:
raw = (row.split('#')[0].strip())
if raw: yield row
with open("C:\\PSUGIS\\GEOG485\\Lesson4\\ProjectL4\\WakefieldParkRaceway_20160421.txt", "r") as
gpsTrack:
csvReader = csv.reader(decomment(gpsTrack))
header = next(csvReader)
latIndex = header.index("Latitude")
lonIndex = header.index("Longitude")
timeIndex = header.index("Time")
# Write the array to the feature class as a polyline feature
with arcpy.da.InsertCursor(lineFC, ("SHAPE@")) as cursor:
# Create an empty array object
vertexArray = arcpy.Array()
# Loop through the lines in the file and get each coordinate
for row in csvReader:
time = row[timeIndex].upper()
if time [0] == '#':
if vertexArray.count > 0:
addPolyline(cursor, vertexArray, out_sr)
lat = float (row[latIndex])
lon = float (row[lonIndex])
vertex = arcpy.Point(lon,lat)
vertexArray.add(vertex)
addPolyline(cursor, vertexArray, out_sr)