【Python】Arcpy将excel点生成shp文件

根据excel点经纬度数据,生成shp,参考博主的代码,进行了修改,在属性表中保留excel中的数据。

参考资料:http://t.csdnimg.cn/OleyT

注意修改以下两句中的数字。

python 复制代码
latitude = float(row[1])
longitude = float(row[2])
python 复制代码
import xlrd
import arcpy

# 设置参数
arcpy.env.workspace = r"E:\data\shp"  # 工作空间
excelPath = ur"E:\data\shp\采样点.xlsx"  # Excel 文件路径
excelTableIndex = 0  # Excel 表索引
outName = r"采样点.shp"  # 输出文件名

# 读取 Excel 文件
excel = xlrd.open_workbook(excelPath)
table = excel.sheet_by_index(excelTableIndex)
nrows = table.nrows  # 表的行数
ncols = table.ncols  # 表的列数

# 定义空间参考
spRef = arcpy.SpatialReference(4326) # WGS-1984

# 创建空的 shapefile
arcpy.CreateFeatureclass_management(arcpy.env.workspace, outName, "POINT", spatial_reference=spRef)

# 获取字段名称列表
field_names = [table.cell(0, i).value for i in range(ncols)]

# 为 shapefile 添加字段
for field_name in field_names:
    if field_name:  # 确保字段名不为空
        arcpy.AddField_management(outName, field_name, "TEXT")

# 获取游标以便插入数据
with arcpy.da.InsertCursor(outName, ["SHAPE@XY"] + field_names) as cursor:
    for i in range(1, nrows):
        row = table.row_values(i, 0, ncols)  # 读取整行数据
        # 假设原数据第二列是纬度,第三列是经度
        latitude = float(row[1])
        longitude = float(row[2])
        point = arcpy.Point(longitude, latitude)  # 创建点对象
        cursor.insertRow([(point.X, point.Y)] + row)

print("Shapefile 创建完成,包含所有属性信息。")
相关推荐
CodeCraft Studio3 小时前
Excel处理控件Aspose.Cells教程:使用 C# 从 Excel 进行邮件合并
开发语言·c#·excel
小超爱编程3 小时前
纯前端做图片压缩
开发语言·前端·javascript
小艳加油3 小时前
GIS应用攻略:全面涵盖GIS基础、ArcGIS操作、数据制备、空间分析、地图制作、三维建模与多领域实战应用,助力科研与行业实践!
arcgis·gis·空间分析·数据制备
亚林瓜子4 小时前
AWS中国云的定时任务(AWS EventBridge+AWS Lambda)
python·云计算·aws·lambda·定时任务·event·cron
新中地GIS开发老师4 小时前
三维GIS开发cesium智慧地铁教程(4)城市白模加载与样式控制
学习·arcgis·智慧城市·webgl·gis开发·webgis·地理信息科学
摆渡搜不到你5 小时前
某腾X视频下载器2.1
python·音视频
科雷软件测试5 小时前
Python格式化:让数据输出更优雅
python
非小号5 小时前
多模态分类案例实现
python·分类·数据挖掘
Mi Manchi265 小时前
力扣热题100之二叉树的层序遍历
python·算法·leetcode
花酒锄作田5 小时前
[python]requests VS httpx VS aiohttp
python