Создание множественной полилинии из CSV-файла python - PullRequest
0 голосов
/ 21 апреля 2020

Я хочу создать множественную полилинию из файла 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) 
...