-
Notifications
You must be signed in to change notification settings - Fork 1
/
csv_to_shp.py
44 lines (36 loc) · 1.38 KB
/
csv_to_shp.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
"""Script to create a feature class of points or line
from csv or text file
"""
import arcpy
import csv
input_table = arcpy.GetParameterAsText(0)
output_fc = arcpy.GetParameterAsText(1)
lat = arcpy.GetParameterAsText(2)
lon = arcpy.GetParameterAsText(3)
# spatial reference
# spat_ref = arcpy.GetParameterAsText(4) # spatial reference setting in script
# determine if fc will be points or lines
feature_type = arcpy.GetParameterAsText(4) # domain: 'Points', 'Line'
if feature_type == 'Points':
# Easier, just make xy layer
try:
# make xy event layer
arcpy.MakeXYEventLayer_management(input_table, lat, lon, output_fc, spat_ref)
except:
print(arcpy.GetMessages())
else:
try:
gps_tracks = []
with open(input_table) as csvfile:
gps_track = csv.DictReader(csvfile) # delimeter arg might not be valid
rows = list(gps_track)
for row in rows[1:]:
gps_tracks.append((row[lat], row[lon]))
# create polyline geometry
array = arcpy.Array([arcpy.Point(row[0], row[1]) for row in gps_tracks])
polyline = arcpy.Polyline(array)
with arcpy.da.InsertCursor(output_fc, ("SHAPE@")) as cursor:
cursor.insertRow((polyline,))
except:
print(arcpy.GetMessages())
print(arcpy.AddMessage("Finished creating feature class"))