【Arcpy】将包含坐标的CSV文件批量转为矢量点

1. Tips

ArcGIS中以文件中的经纬度字段转化为矢量点的操作为:

(1)文件-添加数据-添加XY数据

(2)右键导出数据成矢量

在这里我们用代码的方式实现批量转换。

2. 实例

import arcpy
import os

# 设置环境
arcpy.env.workspace = r"G:\2001_2020\PlantYearCSV"
out_workspace = r"G:\2001_2020\PlantYearSHP"

# 列出所有的csv文件
csv_files = arcpy.ListFiles("*.csv")

# 遍历所有csv文件
for csv_file in csv_files:
    # 清洁文件名,替换破折号为下划线
    clean_name = os.path.splitext(csv_file)[0].replace("-", "_")#这里是根据我的文件命名方式来获取文件名,请自行更改
    # 构建输出shapefile的名称
    out_shp = os.path.join(out_workspace, clean_name)

    in_x_field = "longitude"
    in_y_field = "latitude"

    # 设置输入坐标系为WGS 1984
    spRef = arcpy.SpatialReference(4326)  # 4326 是 WGS 1984 的 EPSG 代码

    # 创建临时的XY事件图层
    tempLayer = "tempLayer"
    arcpy.MakeXYEventLayer_management(csv_file, in_x_field, in_y_field
### ArcGIS 中批量导入 CSV 文件中的位方法 当遇到无法识别 CSV 表头的问题时,可能是因为文件编码或分隔符设置不当所致[^1]。为了确保 GIS 系统能够正确解析 CSV 数据,在准备数据阶段需要注意以下几: #### 准备 CSV 文件 确保 CSV 文件遵循标准格式,特别是对于包含地理坐标的文件: - 使用逗号作为默认分隔符; - 首行为表头,明确标注各列含义(如 `X`, `Y` 或者 `经度`, `纬度`); - 坐标值应采用十进制表示法。 ```plaintext ID,Name,X,Y 1,Alice,116.4074,39.9042 2,Bob,116.4185,39.9159 ... ``` #### 设置环境变量与参数配置 在 ArcPy 脚本中处理 CSV 文件前,建议先设定好工作空间以及输入输出路径,并指定合适的坐标参照系 (Coordinate Reference System),这有助于后续操作顺利进行。 ```python import arcpy # 定义工作目录和CSV文件夹位置 workspace = r"C:\path\to\your\folder" arcpy.env.workspace = workspace # 设定目标投影系统 spatial_reference = arcpy.SpatialReference(4326) # WGS_1984 Web Mercator Auxiliary Sphere ``` #### 创建事件图层并转换为 Shapefile 通过 Python 编写脚本来实现自动化流程,下面是一个简单的例子来展示如何创建临时事件图层并将这些要素保存成永久性的 shapefile 文件。 ```python from os import listdir for file_name in listdir(workspace): if file_name.endswith(".csv"): full_path = f"{workspace}\\{file_name}" # 构建事件图层名称 layer_name = "temp_layer_" + file_name[:-4] # 添加XY事件图层 arcpy.MakeXYEventLayer_management( table=full_path, in_x_field="X", in_y_field="Y", out_layer=layer_name, spatial_reference=spatial_reference) output_feature_class = f"{workspace}\\{file_name[:-4]}.shp" # 将事件图层转储到磁盘上的shapefile arcpy.FeatureClassToFeatureClass_conversion(layer_name, workspace, output_feature_class) ``` 此段代码遍历指定的工作区内的所有 CSV 文件,针对每一个符合条件的文件执行相同的操作序列:构建 XY 事件图层 -> 输出至本地存储器形成新的 shapefile 形式的矢量数据集[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值