基於Arcpy根據屬性表XY座標生成點要素檔案

2021-10-04 18:58:53 字數 1778 閱讀 7202

這是一次在執行近鄰分析後發生的故事

在專案實施過程中,如果執行近鄰分析,會在原有資料屬性表的基礎上,獲得近鄰要素的座標資訊。這時若需要將這些近鄰要素進行匯出,並生成新的要素類,當前arcgis軟體的操作較為複雜。因此,通過編寫arcpy指令碼,建立「根據屬性表xy座標生成點要素檔案」工具

① 先執行近鄰分析

② 再匯出或複製近鄰分析屬性表(a表)

③ 接著重新匯入a表

④ 將近鄰分析結果的xy座標(nearx, neary)展開到地圖上

⑤ 最後再匯出為要素類資料。

五步法過程,繁瑣複雜,往往需要經歷好幾步,且中間涉及了圖形展示等,在資料量較大時,等待的時間往往較長。

反正我是苦於此方法已久,現在正好想到辦法解決他。

利用arcpy指令碼,編寫工具,實現工具操作,一步完成。

(1) 應用原資料檔案座標系統資訊

(2)由使用者選擇xy欄位

(3)由使用者指定路徑生成新的點要素檔案

函式用法詳情請參考arcgis幫助文件,裡面有詳細具體的介紹。

下面單拎了幾個主要的實現函式

下面放上我自己的親測**,該**已實現工具化,不信你就試試吧

# -*- coding:gbk -*- 

# 引數:

# 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

defmain()

: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)

arcpy.copyfeatures_management(pointgeometrylist,newpoint)

message = arcpy.getmessages(

)

arcpy.addmessage(message)

main(

)

執行工具前的屬性表

執行工具後得到要素類的屬性表

arcpy 讀寫csv 字段屬性輸出到csv文件

coding gbk import csvimport arcpy defmain 讀取 csv path r e 2 learning course arcpy高階 arcpy 4 文字讀寫 csv test.csv csv file open csv path,r csv reader csv....

基於ArcPy實現批量備份及刪除SDE資料表

1 批量的操作sde資料庫表 2 保險起見操作前先備份 3 操作遵循一定的規則 1 查詢sde資料庫中表名的以sde.hb 01 sde.hb 02開頭的表 2 將查詢到的表備份為shp檔案 3 查詢每給表中滿足固定條件的行,然後刪除 4 如果有異常,輸出異常資訊 import arcpy impo...

基於arcpy實現空間資料聚類,kmeans

並不能直接進行空間資料的聚類,原理是讀取要素的x,y座標來進行聚類,然後將聚類中心儲存為空間資料以達到效果 encoding utf 8 from sklearn.cluster import kmeans import numpy as np import arcpy import pandas ...