# -*- 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)
ArcPy实现批量处理excel/csv中的X、Y坐标值,转为点shp文件
于 2024-08-15 14:45:21 首次发布