[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

You may also like...

退出移动版