在实际科研生活中,通常我们需要吧我们的采样数据导入到arcgis,当采样点只有一批时,我们可以通过使用arcgis软件,添加采样数据(csv格式)--display xy--导出为点shp文件。
但是当我们想要批量将采样数据转化为点shp时,上述方法过于笨重。
下面我们介绍通过批处理的方法,批量将点数据转为shp点文件。
主要思想,我们首先建立一个空的点shp文件--添加字段--使用游标逐行插入的方法实现单个采样点到点shp文件的转化。
表格主要内容如下:
表格如以下形式。
代码如下:我们这里添加了name,lat,lon,hour四个字段。
import arcpy, sys
import os
def point2shp(save_path,out_name,csv):
outputname = out_name
spatRef = arcpy.SpatialReference(4326)
createFC=arcpy.CreateFeatureclass_management(save_path, outputname, "POINT", "","","", spatRef)
fileds=["NAME", 'lat','lon']
for filed in fileds:
arcpy.AddField_management(save_path+"\\"+outputname, filed, "TEXT", 50)
arcpy.AddField_management(save_path+"\\"+outputname, 'hour', "FLOAT", 50)
iflds = ["NAME", "SHAPE@XY",'lat','lon','hour']
print('done')
iCur = arcpy.da.InsertCursor(save_path+"\\"+outputname, iflds)
count = 1
for ln in open(csv, 'r').readlines():
lnstrip = ln.strip()
if count > 1:
dataList = ln.split(",")
lat = dataList[3]
lon = dataList[4]
id = dataList[1]
ivals = [id,(float(lon), float(lat)),float(lat),float(lon),dataList[2]]
iCur.insertRow(ivals)
count += 1
del iCur
save_path=r'baocunlujing'
path=r'csv的路径'
for f in os.listdir(path):
if f.endswith('.csv'):
print(f)
csv=os.path.join(path,f)
out_name=f[:-4]+'.shp'
point2shp(save_path,out_name,csv)
结果如下: