ArcPy常用基礎功能

2021-09-24 11:28:04 字數 3839 閱讀 9311

先來一段簡單的arcpy指令碼:

# -*-coding:utf-8-*-

import arcpy

try:

source_path_name = r"f:/gis測試資料/測試.gdb"

source_name = "dltb"

target_name = "target_copy"

arcpy.env.workspace = source_path_name

# 覆蓋已存在資料

arcpy.env.overwriteoutput = true

print "copy to ".format(source_name, target_name)

arcpy.copy_management(source_name, target_name)

except arcpy.executeerror:

print arcpy.getmessages()

except exception as e:

print e.message

1.1、設定當前工作空間,將指定的工作空間用作地理處理工具輸入和輸出的預設位置。

arcpy.env.workspace = r"f:/gis測試資料/測試.gdb"
1.2、覆蓋任何現有輸出。設定為 true 時,工具將執行並覆蓋輸出資料集。設定為 false 時,將不會覆蓋現有輸出,工具將返回錯誤。

arcpy.env.overwriteoutput = true
1.2、設定xy容差

arcpy.env.xytolerance = "0.01 meters"

print "存在資料集 ".format(arcpy.listdatasets('*'))
2.2、listfeatureclasses:列出工作空間中的要素類,受名稱、要素型別和可選要素資料集的限制。

print "存在要素類 ".format(arcpy.listfeatureclasses(feature_type="point"))
2.3、listtables:按名稱和表型別列出工作空間中的表

print "存在表 ".format(arcpy.listtables())
2.4、listrasters:按名稱和柵格型別返回工作空間中的柵格列表。

print "存在柵格資料 ".format(arcpy.listrasters())
for field in arcpy.listfields("f:/gis測試資料/測試.gdb/dltb"):

print " is a type of with a length of ".format(field.name, field.type, field.length)

ftdesc = arcpy.describe(source_name)
3.1、獲取要素類屬性

print "要素類的要素型別 ".format(ftdesc.featuretype)

print "是否有z值 ".format(ftdesc.hasz)

print "是否有m值 ".format(ftdesc.hasm)

print "指示要素類是否具有空間索引 ".format(ftdesc.hasspatialindex)

print "shape 欄位的名稱 ".format(ftdesc.shapefieldname)

print "幾何形狀型別 ".format(ftdesc.shapetype)

3.2、資料集屬性

print "空間座標系名稱 ".format(ftdesc.spatialreference.name)

4.1、查詢游標(searchcursor):

從表中檢索的每一行都會作為一組字段值而返回。會按照提供給游標的 field_names 引數的相同順序返回這些值。游標的 fields 屬性也可用於確定字段值的順序。

with arcpy.da.searchcursor(r"f:\gis測試資料\測試.gdb\xzq", ["oid@"]) as cursor:

for row in cursor:

print "oid:".format(row[0])

通過以下方式獲取記錄數: 

# 方式一

count = len([feature[0] for feature in arcpy.da.searchcursor(source_name, "oid@")])

# 方式二

count = int(arcpy.getcount_management(source_name).getoutput(0))

4.2、更新游標(updatecursor) 

# 刪除地類編碼為0101的記錄

with arcpy.da.updatecursor(r'f:\gis測試資料\測試.gdb\ybh', ['oid@'], "dlbm = '0101'") as cursor:

for row in cursor:

cursor.deleterow()

# 將面積值賦值給new_area

with arcpy.da.updatecursor(r"f:\gis測試資料\測試.gdb\xzq", ["new_area", "shape@area"]) as cursor:

for row in cursor:

row[0] = row[1]

cursor.updaterow(row)

4.3、插入游標(insertrow)

cursor = arcpy.da.insertcursor("c:/base/data.gdb/roads_lut", ["roadid", "distance"])

# create 25 new rows. set the initial row id and distance values

for i in range(0, 25):

cursor.insertrow([i, 100])

del cursor

令牌是字段的一種快捷訪問方式。常用令牌:

objectid欄位的令牌:oid@

shape欄位的令牌:shape@

要素質心的令牌:shape@xy

x、y座標的令牌:shape@x、shape@y

座標json字串的令牌:shape@json

面積和長度的令牌:shape@area、shape@length

with arcpy.da.searchcursor(r"f:\gis測試資料\測試.gdb\xzq",

["oid@", "shape@", "shape@xy", "shape@x", "shape@y", "shape@area", "shape@length",

"shape@json"], "objectid=1") as cursor:

for row in cursor:

print "oid:;feature:;質心:;x座標:;y座標:;面積:;長度:;" \

"座標json字串:".format(row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7])

ArcPy基礎之列表(一)

arcgis10.2 python 2.7.3 32 bit 編譯器 visual studio code 如下 示例 coding utf 8 列表alist abc 12 12abc 12.32 通過編號索引列表元素,編號從0開始 print alist 1 列印第二個元素 print alis...

iOS基礎整理 常用小功能

出來上班這麼久了,發現之前好多東西都忘記了,現在開始重新整理一下!方法1 最簡單最粗暴的方法 直接跳轉到撥號介面 nsurl url nsurl urlwithstring tel 10000 缺點 不會自動返回到聯絡歷史介面 方法2 會詢問使用者是否撥打 結束之後會返回到之前介面 nsurl ur...

SciPy 基礎功能

預設情況下,所有numpy函式都可以在scipy 命名空間 中使用。當匯入scipy時,不需要顯式地匯入numpy函式。numpy的主要物件是n次多維陣列ndarray,scipy構建在ndarray陣列之上,ndarray是儲存單一資料型別的多維陣列。在numpy中,維度稱為軸,座標軸的數量稱為秩...