這是一次在執行近鄰分析後發生的故事
在專案實施過程中,如果執行近鄰分析,會在原有資料屬性表的基礎上,獲得近鄰要素的座標資訊。這時若需要將這些近鄰要素進行匯出,並生成新的要素類,當前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 ...