3个arcpy代码示例,助您提高工作效率

GIS 数据栈

d32a0e45c3f01965a040b4335e277045.png

4e77678239f5dc1e7d8c7564e0d77e0b.png

Python 处理地理数据的优势

0d5624890d80fd4118c20765dad8ed21.png

Python 作为一种强大而灵活的编程语言,在地理信息处理领域具有显著的优势。以下是 Python 处理地理数据的主要优势:

语法简洁易读

GIS 数据栈

a4f3ef4409219f3d14ab38b4ae23a4f9.png

Python 的语法清晰明了,易于学习和理解,即使是初学者也能快速上手。

丰富的库支持

GIS 数据栈

62a6bf00fd114dee3fe1518d6d25293e.png

Python 拥有大量的第三方库,如 NumPy、Pandas、Geopandas 等,这些库为地理数据处理提供了强大的支持。

跨平台兼容性

GIS 数据栈

740ca7a2fa369590577c1eae9fe57365.png

Python 代码可以在不同的操作系统上运行,无需进行修改,这大大增强了其灵活性和实用性。

强大的数据处理能力

GIS 数据栈

8f21089db414586988631790a1881cee.png

Python 能够高效地处理大量地理数据,包括空间数据的导入、导出、查询、分析和可视化等。

易于集成和扩展

GIS 数据栈

6ee422561107ac17dedb54a1f797ec27.png

Python 可以与其他编程语言或软件(如 ArcGIS)进行集成,扩展其功能和应用范围。

GIS 数据栈

52164d22159eba9fff73e8387f7a8b2f.png

dab24871bc707cef3853b50266200c45.png

arcpy 对于日常工作的重要意义

751a9c0fe16ac0141b676857d58f3de5.png

arcpy 是 ArcGIS Desktop 的 Python 站点包,它提供了一组用于与 ArcGIS Geoprocessing Framework 交互的函数和类。arcpy 对于地理信息行业日常工作的重要意义主要体现在以下几个方面:

自动化工作流程

GIS 数据栈

147a12760914ddf5a0505bcc7e374e69.png

arcpy 可以编写脚本来自动化重复性的地理处理任务,提高工作效率。

批量处理

GIS 数据栈

0b421c88134c4c2b876e4eb3ebff8fa4.png

通过 arcpy 编写脚本,可以轻松实现地理数据的批量处理,如批量裁剪、合并、重投影等。

扩展 ArcGIS 功能*

GIS 数据栈

6c272fd57c6116da889469b5916e5678.png

arcpy 可以调用 ArcGIS 的地理处理工具,实现 ArcGIS 本身不具备的功能,扩展其应用范围。

自定义工具

GIS 数据栈

7373e4c9553996e03a522cf3368bbcb3.png

利用 arcpy,用户可以开发自定义的地理处理工具,满足特定的业务需求。

源码下载地址(点击下方小程序):

GIS 数据栈

fae337a6db7be4ead607cd940750c83b.png

47715b8af9747e2df9d5965126e7cad1.png

arcpy 代码片段示例

c199d60a23a17fbb0ac1fd5ec09ae8f4.png

示例 1:批量裁剪栅格数据
 
 
import arcpy
import os

# 设置工作空间和输入栅格数据集文件夹
arcpy.env.workspace = "C:/data/rasters"
raster_folder = "C:/data/rasters"
clip_shape = "C:/data/clip_area.shp"
output_folder = "C:/data/clipped_rasters"

# 如果输出文件夹不存在,则创建它
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# 遍历文件夹中的所有栅格数据集
for raster in arcpy.ListRasters():
    # 构建输出栅格的名称
    output_raster = os.path.join(output_folder, raster)

    # 使用Clip工具裁剪栅格数据
    arcpy.Clip_management(raster, "", output_raster, clip_shape, "", "ClippingGeometry")

print("所有栅格数据已裁剪完成!")
示例 2:批量转换 CAD 文件到 Shapefile
 
 
import arcpy
import os

# 设置CAD文件夹和输出Shapefile文件夹
cad_folder = "C:/data/cad_files"
output_folder = "C:/data/shapefiles"

# 如果输出文件夹不存在,则创建它
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# 遍历CAD文件夹中的所有CAD文件
for cad_file in os.listdir(cad_folder):
    if cad_file.lower().endswith(('.dxf', '.dwg')):
        # 构建CAD文件的完整路径和输出Shapefile的名称
        cad_path = os.path.join(cad_folder, cad_file)
        output_name = os.path.splitext(cad_file)[0]
        output_shapefile = os.path.join(output_folder, output_name + ".shp")

        # 使用FeatureDatasetToGeodatabase_conversion工具转换CAD文件到Shapefile
        arcpy.FeatureDatasetToGeodatabase_conversion(cad_path, output_folder)

        # 重命名输出的FeatureDataset为Shapefile
        arcpy.Rename_management(os.path.join(output_folder, "CAD_Features"), output_shapefile)

print("所有CAD文件已转换为Shapefile!")
示例 3:计算矢量数据的几何属性并导出到 CSV
 
 
import arcpy
import os
import csv

# 设置矢量数据集和输出CSV文件
vector_data = "C:/data/vector.shp"
output_csv = "C:/data/attributes.csv"

# 创建一个空列表来存储几何属性数据
data_list = []

# 使用SearchCursor遍历矢量数据集的每一行
with arcpy.da.SearchCursor(vector_data, ["SHAPE@", "OtherField"]) as cursor:
    for row in cursor:
        # 获取当前行的几何对象和其他字段值
        geometry = row[0]
        other_field = row[1]

        # 计算几何对象的面积或长度(根据几何类型选择)
        if geometry.type == "Polygon":
            area = geometry.area
        elif geometry.type == "Polyline":
            length = geometry.length
        else:
            area = None
            length = None

        # 将计算结果和其他字段值添加到列表中
        data_list.append([other_field, area, length])

# 将列表数据写入CSV文件
with open(output_csv, 'w', newline='') as csvfile:
    fieldnames = ["OtherField", "Area", "Length"]
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writeheader()
    for row in data_list:
        writer.writerow({"OtherField": row[0], "Area": row[1], "Length": row[2]})

print("矢量数据的几何属性已导出到CSV文件!")


本公众号只做干货,分享实际项目中的点点滴滴

希望您阅读后有所收获

同时,也希望您能在下方给个赞赏

您的赞赏

是我持续创作的最大动力!

非常感谢!

1b849e826a098ed1b7bd0a01f84873fd.gif

1、集齐49款GIS常用软件,总有一款是你需要的!

2、ArcGIS Pro中常用的空间分析功能

3、开源 Web GIS 制作3D建筑

4、ArcGIS Pro 和 ChatGPT集成思路

5、Segment Anything 模型的 3 个地理空间和遥感用例

6、Segment Anything模型用于地理空间数据

7、卫星基础知识&&遥感卫星

8、市面上10款GIS软件优劣性比较

8dee7895a4d6b8088224400427ed1c97.gif

0328d90e5ccb912ce4a9b7bf3040ff33.gif

点分享

4cac280d229cb2096394db7f5c362fed.gif

点点赞

8a126438896f2b562fae2230804afd9c.gif

点在看

  • 18
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GIS 数据栈

谢谢打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值