arcpy批量提取面状水系中间线

这篇具有很好参考价值的文章主要介绍了arcpy批量提取面状水系中间线。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

由于面状水系可能存在多条中间线,因此批量提取时需要使用 ArcGIS 中的 Feature To Line 工具结合 Python 循环和游标来完成。

以下是代码:


import arcpy
import os

# 设置输入输出路径和文件名
input_folder = r"C:\data\river_polygons"
output_folder = r"C:\data\river_midlines"

# 创建输出文件夹
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# 遍历输入文件夹中所有 Shapefile 文件
for _, _, files in os.walk(input_folder):
    for file in files:
        if file.lower().endswith(".shp"):
            # 获取当前文件路径和名称
            input_shapefile = os.path.join(input_folder, file)

            # 在提取线之前,删除现有的缓存文件 (如果已存在)
            arcpy.Delete_management("in_memory")

            # 根据面状水系区域生成几何网络
            arcpy.Create geometric network(流体模拟)
            network_path = "in_memory/network"
            arcpy.FeatureClassToFeatureClass_conversion(input_shapefile, "in_memory", "polygons_for_network")
            arcpy.CreateGeometricNetwork_management(network_path, "River", "SIMPLE_JUNCTION", "#", "#", "#", "#")
            arcpy.AddFeatureClassToGeometricNetwork_management(network_path, "River", "polygons_for_network", "#", "#")
            arcpy.BuildGeometricNetwork_management(network_path)

            # 取得面状水系中心线
            centerlines = []
            with arcpy.da.SearchCursor(input_shapefile, ["OID@", "SHAPE@"]) as cursor:
                for row in cursor:
                    # 使用 Feature To Line 工具计算中心线
                    input_polyline_feature = "in_memory/polyline_feature"
                    arcpy.FeatureToLine_management(row[1], input_polyline_feature, "#", "NO_ATTRIBUTES")
                    arcpy.MergeDividedRoads_cartography(input_polyline_feature, "#", input_polyline_feature + "_merged")
                    # 向列表追加中心线
                    centerlines.append((row[0], input_polyline_feature + "_merged"))
            del cursor

            # 将所有中心线融合成一个图层并保存到输出文件夹中
            output_shapefile = os.path.join(output_folder, "midlines_" + file)
            arcpy.Merge_management([i[1] for i in centerlines], output_shapefile)
            with arcpy.da.UpdateCursor(output_shapefile, ["PolyID"]) as cursor:
                for row in cursor:
                    # 更新新的线性要素 ID 与原始面状水系多边形相关
                    row[0] = [i[0] for i in centerlines if i[1].endswith("_" + str(row[0]))][0]
                    cursor.updateRow(row)
            del cursor
 

上述代码假设输入为包含多个面状水系区文章来源地址https://www.toymoban.com/news/detail-495553.html

到了这里,关于arcpy批量提取面状水系中间线的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python ArcPy批量计算多时相遥感影像的各项元平均值

      本文介绍基于 Python 中 ArcPy 模块,对大量 长时间序列 栅格遥感影像文件的 每一个像元 进行 多时序平均值 的求取。   在遥感应用中,我们经常需要对 某一景 遥感影像中的 全部像元的像素值 进行平均值求取——这一操作很好实现,基于 ArcMap 软件或者简单的 Python 代

    2023年04月18日
    浏览(33)
  • arcpy基于excel中表格字段批量给矢量要素添加对应字段

    将Excel表格中的字段批量添加到矢量要素并将对应内容填写到要素属性表是可以使用Arcpy实现的。以下是一个简单代码,假设有一个包含字段和数据的Excel表格以及要进行批量添加的矢量要素图层: import arcpy import xlrd # 设置输入数据路径 excel_file = r\\\"C:dataattributes.xlsx\\\"  # 包含字

    2024年02月10日
    浏览(39)
  • Argis通过Python的Arcpy第三方库进行字段计算、批量将mxd导出为jpg图片、合并数据库

    前言   近来公司有开发Arcgis脚本工具的需求,我就去学了一下用Arcpy来操作Arcgis的数据,今天学习了字段计算,将学习成果记录如下。   arcpy帮助文档传送门:https://resources.arcgis.com/zh-cn/help/main/10.2/ 一、字段计算 1、以python函数的形式进行字段计算   我们打开字段计算

    2024年02月11日
    浏览(30)
  • 怎么一键提取网页图片-批量提取网页的软件

    怎么一键提取网页图片,日常工作和生活中我们都是离不开图片的,我们经常会在网络上存储大量的图片,以便后续在工作中或生活中使用。特别是表情包,产品图等等。都是几十上百张的保存。 接下来的文章将会给大家介绍如何快速地一键提取网页链接以及一键下载图片,

    2024年02月11日
    浏览(33)
  • 批量提取文件名到excel,详细的提取步骤

        如何批量提取文件名到excel?我们的电脑中可能存储着数量非常多的电子文件,现在需要快速将这些文件的名称全部提取到Excel中。虽然少量数据可以通过复制粘贴的方式轻松完成,但是对于上万个数据而言,复制粘贴都是行不通的,可能会消耗你大量的时间。键盘按到天

    2024年02月13日
    浏览(34)
  • Unity中从3D模型资产中批量提取材质

    如何使用 只需在“项目”窗口中创建一个名为“编辑器”的文件夹,然后在其中添加此脚本即可。然后,打开Window-Batch Extract Materials,配置参数并点击“ Extract! ”。 在Unity 2019.1+上,可以将默认材质重映射条件配置为自动检测模型资源中嵌入的重复材质并为它们提取单个材

    2024年02月04日
    浏览(40)
  • 【EXCEL】快速填充数据,批量提取与组合数据

    目录 0.环境 1.简要介绍功能 2.具体实际应用 1)提取括号中的内容 2)拆分重组--重组“姓”和“职位” 3)数据拆分 windows + office2021 注意: 此功能可能需 excel 2013版本及以上 使用 在excel中,有没有遇到过以下情况,有一列是邮箱(名字+@qq.com组成),我希望提取所有的用户名

    2024年02月11日
    浏览(53)
  • 如何批量提取pdf文件名到excel?

    nbsp; nbsp; 如何批量提取pdf文件名到excel?在大家整理PDF文档的时候会不会遇到下面这些问题,首先PDF过多,每个PDF文件都有自己的名字,我们想要分类排放的话非常麻烦,不仅耗费时间而且带来的收益非常低,然后即使我们整理好了PDF文档,后续想要寻找这些PDF文档的话也是

    2024年02月03日
    浏览(38)
  • mac批量提取文件夹的名称,怎么操作?

        mac批量提取文件夹的名称,怎么操作?很多小伙伴想知道在mac电脑上可以一键快速批量的将大量文件夹的名提取出来,而不是采用一个一个名称提取的方法,这是一个有利于提高工作效率的办法,这一项技能在网上几乎找不到解决办法,不过经过小编的多方打听,还是给

    2024年02月16日
    浏览(37)
  • Stable Diffusion 模特换装 蒙版一键批量提取

    有没有想过可以使用算法批量提取图片中模特的服装,然后通过SD进行换装。 一个一个的PS抠图是不是太累,可以使用算法批量提取。相对于 Segment Anything 方法这个比较简单。

    2024年02月13日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包