IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python(arcpy)对矢量线进行批量计算长度和筛选(按属性筛选,查找最大最小值,选出最长线) -> 正文阅读

[Python知识库]python(arcpy)对矢量线进行批量计算长度和筛选(按属性筛选,查找最大最小值,选出最长线)

如果不想批量处理,直接把dataname替换成需要处理的数据,把遍历的循环删掉。
需要替换的参数较多,没有写成函数…初学,写的不太好,供参考。

整体的思路,就是挑选出属性符合的线,计算这些线的长度,然后查询最大最小值,当满足长度等于最大值时,被挑选出来。最终的结果呢就是:选出符合条件的线里的最长的那个

# -*- coding: utf-8 -*-
import os
import arcpy
import np
from arcpy import env
from arcpy.sa import *


#按属性选择800mm
arcpy.env.workspace =""#这里填入矢量数据所在的文件夹
path = ""#矢量数据位置
datanames = os.listdir(path)
for dataname in datanames:
    if dataname.endswith(".shp"):
        outpolyline = ""#输出位置及文件名.shp
        print(dataname+"_800mmTABLE SQL")
        arcpy.Select_analysis(dataname, outpolyline,'"CONTOUR" = 800')#这里的参数可以修改

#添加字段并计算长度
arcpy.env.workspace =""#这里填入矢量数据所在的文件夹
path =""#矢量数据位置
datanames = os.listdir(path)
for dataname in datanames:
    if dataname.endswith(".shp"):
        arcpy.AddField_management(dataname, "length", "SHORT", "", "", "#", "#", "#", "#")
        print(dataname[-8:-4] + "_ADD_FIELD")
        arcpy.CalculateField_management(dataname, "length", "!shape.geodesicLength@KILOMETERS!", "PYTHON_9.3")

#查找属性中的最大值最小值
field = "length"
max_value = []; k = 0
datanames = os.listdir(path)#注意path,如果路径有变需要重新定义
for dataname in datanames:
    if dataname.endswith(".shp"):
        datapath = path + "/" + dataname
        valuelist = []; i = 0
        for row in arcpy.da.SearchCursor(datapath, "length"):
            valuelist.append(row)
        max_value.append(max(valuelist))
        k += 1
max_value =np.array(max_value, dtype=int)
max_value = str([int(x) for item in max_value for x in item])
max_value = max_value[1:-1].split(',', k)
for i in range(20):
    max_value[i]=max_value[i].strip()
print(max_value,len(max_value))

#按属性选择最长线
arcpy.env.workspace =""#这里填入矢量数据所在的文件夹
path = ""#矢量数据位置
i=0
datanames = os.listdir(path)
for dataname in datanames:
    if dataname.endswith(".shp"):
        outpolyline = ""#输出位置及文件名.shp
        print(dataname[-8:-4]+"_MAXTABLE SQL")
        arcpy.Select_analysis(dataname, outpolyline,'"length"='+ max_value[i])
        os.remove(""+dataname)#这一步是把原数据删除,不需要该操作可以删掉
        i+=1


print ("成功")

以以上!OwO

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-11-19 17:35:18  更:2021-11-19 17:37:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 0:23:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码