基于Arcpy根据属性表XY坐标生成点要素文件

基于Arcpy根据属性表XY坐标生成点要素文件

转载自:https://www.sircourse.com/72.html

尊重原创,转载时请注明来源

一、需求描述

这是一次在执行近邻分析后发生的故事

在项目实施过程中,如果执行近邻分析,会在原有数据属性表的基础上,获得近邻要素的坐标信息。这时若需要将这些近邻要素进行导出,并生成新的要素类,当前arcgis软件的操作较为复杂。因此,通过编写arcpy脚本,创建“根据属性表XY坐标生成点要素文件”工具

二、传统方式

目前,我已知的方式的就是:(如果还有其他方式麻烦留言告诉我,我是真的想不到其他方法了!!!)

arcgis工具箱

① 先执行近邻分析

② 再导出或复制近邻分析属性表(A表)

③ 接着重新导入A表

④ 将近邻分析结果的XY坐标(nearX, nearY)展开到地图上

⑤ 最后再导出为要素类数据。

五步法过程,繁琐复杂,往往需要经历好几步,且中间涉及了图形展示等,在数据量较大时,等待的时间往往较长。

反正我是苦于此方法已久,现在正好想到办法解决他。

三、解决思路

利用arcpy脚本,编写工具,实现工具操作,一步完成。

四、脚本代码介绍

主要思路

  • 读取近邻分析结果要素文件
  • 借助点几何列表对象,逐条记录读取坐标,生成新的点记录,并生成要素文件

包含功能

(1) 应用原数据文件坐标系统信息

(2)由用户选择XY字段

(3)由用户指定路径生成新的点要素文件

arcpy函数

函数用法详情请参考ArcGIS帮助文档,里面有详细具体的介绍。

https://desktop.arcgis.com/zh-cn/arcmap/10.3/analyze/arcpy/what-is-arcpy-.htm

下面单拎了几个主要的实现函数

  • arcpy.PointGeometry()
  • pointGeometryList.append()
  • arcpy.CopyFeatures_management()

五、代码演示

下面放上我自己的亲测代码,该代码已实现工具化,不信你就试试吧

界面

arcgis工具界面

代码块

# -*- coding:gbk -*- 
#@author:GIS公寓​#Copyright © GIS公寓(​www.sircourse.com) 
# 介绍:根据要素数据属性表中的XY坐标数据,生成点要素。 坐标参考跟要素数据保持一致。 
# 参数: 
# 1)输入源数据 
# 2)生成新的点要素文件 
# 3)选择X坐标字段 
# 4)选择Y坐标字段 
import arcpy 
import os 
# ----输入内容 
# ----有XY信息的要素数据 
oldpoint = arcpy.GetParameterAsText(0) 
# ----根据XY生成的新要素数据 
newpoint = arcpy.GetParameterAsText(1) 
# ----输入坐标 
x_zb = arcpy.GetParameterAsText(2) 
y_zb = arcpy.GetParameterAsText(3) 
# 确定生成的要素类型为点 
# 确定生成的要素投影坐标
get data pointGeometryList = [] 
# 创建一个点要素对象列表 
point = arcpy.Point()
# 坐标系须修改与输入一致
spRef = arcpy.Describe(oldpoint).spatialReference  
def main():
   with arcpy.da.SearchCursor(oldpoint, (x_zb, y_zb)) as cursor:
     for row in cursor:
            point.X = float(row[0])
            point.Y = float(row[1])
            pointGeometry = arcpy.PointGeometry(point, spRef) 	                   
            pointGeometryList.append(pointGeometry)          
            arcpy.CopyFeatures_management(pointGeometryList,newpoint)     
    message = arcpy.GetMessages()     
    arcpy.AddMessage(message)
main()

成果演示

运行工具前的属性表

运行工具后得到要素类的属性表

arcgis属性表

写在最后

工具的构思是源于实际项目需求,如果有相关的需求,欢迎留言探讨。

第一次尝试转载文章,碎石转载,原创还是自己的,哈哈哈

因为这次从自己个人网站转载过来的,感谢阅读,有什么问题欢迎留言评论

更多文章请登录:www.sircourse.com,或者公众号:“GIS公寓”

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值