先來一段簡單的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中,維度稱為軸,座標軸的數量稱為秩...