可怜的我周六还在工作,已经很久没更新过博客了,今天正好有空就和大家分享一下。今天给大家带来的是使用Python将包含多个面要素/线要素的矢量批量导出单个要素的矢量,即一个要素一个矢量文件。之前写过多个矢量文件合并成一个矢量文件的博文,大家如果感兴趣可以看下:【Python&GIS】基于Python批量合并矢量数据。
原创作者:RS迷途小书童
博客地址:https://blog.csdn.net/m0_56729804?type=blog
1.环境配置
之前发过很多文章都没有提到过环境配置,因为直接默认大家会使用Python了,今天这个博文加这个模块主要是因为我们使用的Python2.7!很多小伙伴已经反应过来了,Python2.7正是ArcGIS的环境。今天我们使用ArcMap自带的arcpy库实现批量导出面矢量要素。
针对这个环境也不多说,你只要安装了ArcGIS就会有Python2.7,只要在Pycharm中将Python2.7的解释器加入到环境中即可。
2.完整代码
代码比较简单,我这里就不做过多的介绍了。代码中有详细的注释。变量就3个,第一个是arcpy的工作空间(没啥用),第二个就是想要拆分的矢量文件目录,第三个是输出矢量文件的文件夹。程序默认是通过FID去批量导出,也可以自己修改。
# -*- coding: utf-8 -*-
"""
@Time : 2024/3/18 17:37
@Auth : RS迷途小书童
@File :Vector Features For Shps.py
@IDE :PyCharm
@Purpose:矢量数据按要素批量导出shp
@Web:博客地址:https://blog.csdn.net/m0_56729804
"""
import os
import arcpy
from arcpy import env
def Save_shps(work_path, shp, shps_path):
env.workspace = work_path # 工作空间
with arcpy.da.SearchCursor(shp, ["SHAPE@", 'FID'],) as cursor:
# query = """"AREA" > 0""" # 满足的输出文件的条件,没有的话可以不要
# SHAPE@指代单个要素,FID是一个字段,query是条件
for row in cursor:
out_name = str(row[1]) + '.shp' # 输出文件名
arcpy.FeatureClassToFeatureClass_conversion(row[0], shps_path, out_name)
if __name__ == "__main__":
work = "G:/彭俊喜/" # 工作空间
shp_file = r"G:\彭俊喜/88.shp"
out_path = r"Z:\彭俊喜/"
Save_shps(work, shp_file, out_path)
3.总结
arcpy这个库可以说是非常的强大,它就是ArcMap,ArcMap就是它,只要是ArcMap能实现的操作它都可以实现。但是由于它的环境是Python2.7,所以有一定的局限性只能对地理数据自动化处理,无法和现在的一些新库相融合。这也是为什么我很少分享arcpy代码的原因,我平时宁愿直接用ArcMap,也懒得去编arcpy的代码。
本文章主要是分享个人在学习Python过程中写过的一些代码。有些部分借鉴了前人以及官网的教程,如有侵权请联系作者删除,大家有问题可以随时留言交流,博主会及时回复。