【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 创建完成,包含所有属性信息。")
相关推荐
平常心的技术小牛1 小时前
Qt-快速上手-QMenuBar
开发语言·qt
青 春 记 忆2 小时前
零基础入门Python11|Git实战:为任务管理器建立版本历史
开发语言·git·vscode·python·python3.11
Python私教2 小时前
多个项目怎么安全合并?先适配,再切换
后端·python·架构
余额瞒着我当琳4 小时前
C++--深拷贝三件套 + swap + 写时拷贝 + vector 扩容 + reserve
java·开发语言·c++
坐吃山猪4 小时前
WebClient内存配置解析
开发语言·springboot·webflux
北斗落凡尘4 小时前
LangGraph 入门实战(12)--使用MCP
后端·python·langchain
jdksjw4 小时前
同步与异步、阻塞与非阻塞、多线程、协程超详细讲解(Python并发编程从入门到精通)
开发语言·python
Zach_菠萝侠4 小时前
【DeepSeek Harness 研究】进化方向4:安全加固 思考、设计与实现
开发语言·安全·deepseek
Mike_Zhang5 小时前
使用python统计FreeSWITCH呼叫并发
python·freeswitch
SL-staff5 小时前
技术实践:HR如何用JVS-Logic可视化编排实现考勤数据同步(含节点配置与异常处理)
开发语言·python·低代码·钉钉·可视化编排·jvs-logic·hr技术