[ArcPy] Excel转shp文件 | ArcPy与要素类
目录
涉及Python读取excel,ArcPy创建要素类,并保存(要素仅有空间坐标,不保存其他属性)
若需要写入要素的其他属性,可以参考shp文件创建与写入数据:http://blog.csdn.net/summer_dew/article/details/78072870
ArcPy创建多边行并保存成shp文件
其他类型一样操作
先创建ArcPy要素类的变量:①面:arcpy.Polygon②线:Polyline③点:Point
类型说明查文档:ArcPy–>几何
保存数据到文件:arcpy.CopyFeatures_management(变量,路径)
# 存放多边形的 点集
polygonGeometryList = []
# 遍历行(第一行->最后一行)
for i in range(1,nrows):
# 取出第i行,第5列的值
str = table.cell(i,5).value
# ;分隔
points = str.split(u';')
# 字符串转成坐标
for j in points:
xy = j.split(',')
# 创点类型
point.X = float(xy[0]);point.Y = float(xy[1])
array.add(point)
# 创面类型
polygon = arcpy.Polygon(array)
polygonGeometryList.append(polygon)
array.removeAll()
# 保存数据
arcpy.CopyFeatures_management(polygonGeometryList, "d:\\polygon.shp")
完整代码
excel表:
代码:
import xlrd # must init xlrd
import arcpy
# param
arcpy.env.workspace = r"F:\note\python\ArcPy" #workspace
excelPath = r"test.xlsx" # excel file path
excelTableIndex = 0 # excel's table index
outName = r"point.shp" # out file
excel = xlrd.open_workbook('test.xlsx') # get excel
table = excel.sheets()[0] # get table by sheets index
nrows = table.nrows # number of table's row
# get data
pointGeometryList = [] # a list to hold the PointGeometry objects
point = arcpy.Point() #create an empty Point object
spRef = arcpy.SpatialReference('WGS84 ARC System Zone 18')
for i in range(1,nrows): # get row once
x = table.cell(i,0).value
y = table.cell(i,1).value
point.X = float(x)
point.Y = float(y)
pointGeometry = arcpy.PointGeometry(point,spRef)
pointGeometryList.append(pointGeometry)
arcpy.CopyFeatures_management(pointGeometryList,outName) # save the shape file
结果:
创建工具箱
转载自:https://blog.csdn.net/summer_dew/article/details/78116722