ArcPy实现批量处理excel/csv中的X、Y坐标值,转为点shp文件

# -*- coding: utf-8 -*-
import arcpy
import os

def XY2POINT(in_Table, saved_Layer, layer_name):
    try:
        print('执行xy转要素点')
        print('导入表: %s' % in_Table)
        x_coords = "longitude"
        y_coords = "latitude"
        print('输出表: %s' % layer_name)
    
        # 设置空间参考为 WGS 1984
        spRef = arcpy.SpatialReference(4326)
        print('"x字段":%s,"y字段":%s,空间参考:%s' % (x_coords, y_coords, spRef.name))
    
        # 如果图层名称已存在,先删除它
        if arcpy.Exists(layer_name):
            arcpy.Delete_management(layer_name)
        
        # Make the XY event layer...  xy转事件
        arcpy.MakeXYEventLayer_management(in_Table, x_coords, y_coords, layer_name, spRef)
        num = arcpy.GetCount_management(layer_name)
        print('表内要素个数: %s' % num)
    
        # 要素转点 创建包含从输入要素的代表位置生成的点的要素类
        arcpy.FeatureToPoint_management(layer_name, saved_Layer)
        print('输出点要素: %s' % saved_Layer)

    except arcpy.ExecuteError:
        print(arcpy.GetMessages(2))

    except Exception as e:
        print("Unexpected error:", str(e))

# 定义输入文件夹和输出文件夹路径
input_folder = u"E:\\CSVs"
output_folder = u"E:\\shps"
 
# 检查输出文件夹是否存在,如果不存在则创建
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# 遍历CSV文件夹中的所有CSV文件
for file_name in os.listdir(input_folder):
    if file_name.endswith('.csv'):
        in_Table = os.path.join(input_folder, file_name)
        # 生成与原文件名相同的 Shapefile 名称
        output_name = os.path.splitext(file_name)[0] + ".shp"
        saved_Layer = os.path.join(output_folder, output_name)
        layer_name = os.path.splitext(file_name)[0] + "_layer"  # 为每个文件生成唯一的图层名称
        
        print('正在处理文件: %s' % in_Table)
        XY2POINT(in_Table, saved_Layer, layer_name)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值