日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python调用arcpy函数_AGS Python开发-ArcPy开发基础

發(fā)布時間:2023/12/10 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python调用arcpy函数_AGS Python开发-ArcPy开发基础 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉自

AGS Python開發(fā)-ArcPy開發(fā)基礎

1、Python與ArcGIS關系

ArcGIS提供了ArcPy包,Python是通過該ArcPy包來操作ArcGIS中的功能。ArcPy可以理解為ArcGIS針對Python語言提供的開發(fā)API。

2、導入ArcPy與模塊搜索路徑

(1)導入ArcPy

示例1:import arcpy

示例2:import arcpy.mapping

示例3:from arcpy import env

示例4:from arcpy import env as ENV

(2)模塊搜索路徑

導入ArcPy時,會先搜索PYTHONPATH環(huán)境變量。如何未定義環(huán)境變量,則搜索sys.path定義的路徑:Python27\ArcGIS10.5\Lib\site-packages和Python27\ArcGISx6410.5\Lib\site-packages。ArcGIS在安裝Python時,會在這兩個目錄下創(chuàng)建Desktop10.5.pth和Server10.5.pth。這兩個文件記錄了ArcPy需要的路徑:

*C:\arcgis\Desktop10.5\bin

C:\arcgis\Desktop10.5\ArcPy

C:\arcgis\Desktop10.5\ArcToolBox\Scripts

?

如果出現(xiàn)提示找不到ArcPy模塊的錯誤,可以手動創(chuàng)建該文件并添加上面的路徑。

3、調用地理處理工具和地理處理服務

3.1、調用地理處理工具

所有工具可以ArcPy函數(shù)方式調用,也可以工具箱別名的模塊調用。

函數(shù)方式:arcpy.GetCount_management(features)

工具箱模塊方式:arcpy.management.GetCount(features)

3.2、調用自定義地理處理工具

建議在ImportToolbox()中定義自定義工具箱的別名,ArcPy使用arcpy._方式調用。

arcpy.ImportToolbox("c:/mytools/geometrytools.tbx", "mytools")

arcpy.CreateRegularPolygons_mytools(params)

3.3、調用地理處理服務

地理處理服務器名稱和工具箱名稱使用分號隔開。

arcpy.ImportToolbox("http://flame7/arcgis/services;GP/BufferByVal","mytools")

arcpy.BufferPoints_mytools(inFeatureSet, "5 km")

3.4、調用地理處理工具的技巧

技巧1:調用ArcGIS自帶的地理處理工具

ArcGIS提供了數(shù)量眾多的地理處理工具,這些工具都可以通過ArcPy來調用。在調用地理處理工具時,需要清楚工具的處理流程,以及輸入輸出參數(shù)等信息。為了方便調用與調試,可按如下步驟進行:

1.在桌面軟件中運行地理處理工具

在工具運行窗口中可以查看工具說明,以及相關參數(shù)設置要求。同時還可以測試輸入?yún)?shù)與輸出結果。

2.查看地理處理工具調用方式

方式1:在桌面軟件中,工具拖拉到Python命令行窗口,即可查看到工具調用名稱,以及相關參數(shù)設置要求。

方式2:調用help()方法查看工具調用文檔。在桌面軟件或者IDE環(huán)境中的Python命令行中,輸入help(arcpy.toolname)查詢。

方式3:直接查看桌面軟件幫助中的工具參考。在參考中還包含了示例代碼。

3.在Python中調用地理處理工具

根據(jù)地理處理工具調用要求,編寫Python調用代碼。

技巧2:調用自定義的地理處理模型

對于自定義的地理處理模型,在Python中可以使用兩種調用方式:

1.直接調用

直接調用是將自定義處理模型當作整理看待,調用方式:

arcpy.importToolbox("toolbox_path", "mytoolbox")

arcpy.Mytool_mytoolbox("params")

1.將模型導出為Python腳本,再復用腳本內容

ArcGIS提供了自定義地理處理模型導出為Python腳本的功能,導出的腳本可以直接在python中使用,也可以在其上修改增加自定義的功能。

這種方式可以看作是可視化編碼方式,可以減少調用系統(tǒng)地理處理工具的復雜度。

4、ArcPy中的OMD

ArcPy由三大部分組成:ArcPy函數(shù)、ArcPy類、ArcPy模塊。

(1)ArcPy函數(shù)

ArcPy函數(shù)用于執(zhí)行特定的任務,方便執(zhí)行地理處理工作流。ArcPy中的函數(shù)分為兩種:地理處理函數(shù)和非地理處理函數(shù)。所有地理處理工具都以地理處理函數(shù)提供。

(2)ArcPy類

ArcPy類存儲地理對象相關的信息,通常用于解析地理數(shù)據(jù),或者作為地理處理工具的參數(shù)。

(3)ArcPy模塊

ArcPy模塊是將共性的功能以模塊方式提供,方便調用。ArcPy模塊包括數(shù)據(jù)訪問模塊(arcpy.da)、制圖模塊(arcpy.mapping)、空間分析擴展模塊(arcpy.sa)、網(wǎng)絡分析擴展模塊(arcpy.na)。以及工具類模塊:時間模塊(arcpy.time)。

4.1、ArcPy中的函數(shù)

ArcPy中的函數(shù)主要包括了:描述數(shù)據(jù)的函數(shù)(Describe)、判斷數(shù)據(jù)是否存在的函數(shù)(Exists)、數(shù)據(jù)迭代相關的函數(shù)(如:ListFields)、外部輸入?yún)?shù)相關的函數(shù)(如GetParameterAsText)、許可檢查相關的函數(shù)(如CheckExtension)、環(huán)境設置相關的函數(shù)(如GetSystemEnvironment)、消息錯誤處理相關的函數(shù)(如GetMessage)

詳情參見:http://desktop.arcgis.com/zh-cn/arcmap/latest/analyze/arcpy-functions/alphabetical-list-of-arcpy-functions.htm

4.2、ArcPy中的類

分類主要類說明

要素類或表、柵格類FeatureSet、RecordSet、Raster代表要素圖層或者表、柵格圖層

要素數(shù)據(jù)內容相關類Cursor、Row代表要素圖層或者表中記錄的每行數(shù)據(jù)

要素圖層字段相關類Field、FieldInfo代表要素圖層或表的字段信息

幾何類型與空間參考Point、Multipoint、PointGeometry、Polyline、Polygon、Extent、SpatialReference

圖表類Graph、GraphTemplate如:氣泡圖、直方圖、餅圖等

ToolValidator相關類Filter、Parameter、Schema、Value自定義Python工具箱所需要的參數(shù)類

異常類ExecuteError、ExecuteWarning

其他核心類環(huán)境設置類:env;地理處理結果類:Result;索引類(空間索引和屬性索引):Index;多值參數(shù)類:ValueTable;SDE SQL操作類:ArcSDESQLExecute;輔助類:Array、RandomNumberGenerator

4.3、ArcPy中的模塊

模塊名稱主要功能

arcpy.da數(shù)據(jù)訪問模塊。提供了增、刪、查、改數(shù)據(jù)的類和函數(shù)。

arcpy.mapping地圖制圖模塊。提供了操作mxd文檔、地圖渲染、地圖打印輸出、地圖服務發(fā)布等功能。

arcpy.na網(wǎng)絡分析擴展模塊。用于訪問網(wǎng)絡分析地理處理工具。

arcpy.sa柵格分析模塊。用于訪問空間分析地理處理工具。

5、描述數(shù)據(jù)的函數(shù)

通過Describe函數(shù)可以查詢所有類型數(shù)據(jù)的屬性信息。如:數(shù)據(jù)幾何類型、字段、索引等。不同的數(shù)據(jù)類型可查詢的屬性信息不同。

ftClass="D:/mapdata/test/china/chinamap.gdb/citiesbuffer"

ftDesc = arcpy.Describe(ftClass)

print(ftDesc.shapeType)

print(ftDesc.featureType)

print(ftDesc.shapeFieldName)

print(ftDesc.OIDFieldName)

print(len(ftDesc.fields))

print(ftDesc.spatialReference.name)

6、環(huán)境設置類

ArcPy中環(huán)境設置定義在env類中。

(1)環(huán)境設置讀取和更改

arcpy.env.scratchWorkspace = "c:/mapdata"

arcpy.env.workspace = "c:/mapdata"

arcpy.env.XYTolerance = 2.5

workspace = arcpy.env.scratchGDB

(2)檢查環(huán)境變量名稱

arcpy.ListEnvironments()

(3)重設環(huán)境設置

arcpy.ResetEnvironments()

arcpy.ClearEnvironment("workspace")

7、消息處理

(1)讀取消息

在地理處理工具執(zhí)行過程中,會輸出處理消息,消息內容包括:時間、參數(shù)、錯誤等。可通過如下方式獲取:

方式1:直接讀取

result=arcpy.GetCount_management("D:/mapdata/test/worldshp/cities.shp")

print(arcpy.GetMessageCount())

print(arcpy.GetMessages())

print(arcpy.GetMessage(0))

方式2:從result中讀取

result=arcpy.GetCount_management("D:/mapdata/test/worldshp/cities.shp")

print(result.messageCount)

print(result.getMessage(0))

print(result.getMessages(2))

(2)自定義消息

如果是控制臺輸出,可以直接使用print語句,也可以使用ArcPy提供的消息函數(shù):

arcpy.AddMessage("info")

arcpy.AddWarning("warning")

arcpy.AddError("error")

8、錯誤處理

(1)ExecuteError類

地理處理工具失敗時會拋出arcpy.ExecuteError類。其他的異常可以使用sys.exc_info()獲取。

import arcpy

import sys

try:

result = arcpy.GetCount_management("c:/erro.shp")

except arcpy.ExecuteError:

arcpy.AddError(arcpy.GetMessages(2))

except:

e = sys.exc_info()[1]

print(e.args[0])

(2)錯誤跟蹤

在較大復雜的腳本中,可結合sys和traceback模塊來查找跟蹤錯誤。

import arcpy

import sys

import traceback

arcpy.env.workspace = "C:/Data/myData.gdb"

try:

arcpy.CreateSpatialReference_management()

except arcpy.ExecuteError:

msgs = arcpy.GetMessages(2)

print(msgs)

except:

# Get the traceback object

#

tb = sys.exc_info()[2]

tbinfo = traceback.format_tb(tb)[0]

pymsg = "PYTHON ERRORS:\nTraceback info:\n" + tbinfo + "\nError Info:\n" + str(sys.exc_info()[1])

msgs = "ArcPy ERRORS:\n" + arcpy.GetMessages(2) + "\n"

print(pymsg)

print(msgs)

(3)Result對象中獲取錯誤消息

result = arcpy.Clip_analysis("roads", "urban_area", "urban_roads")

消息總數(shù):result.messageCount

按索引號獲取消息:result.getMessage(index)

按類型獲取消息:result.getMessages(severity)

消息類型分:0(消息)、1(警告)、2(錯誤)

9、許可檢查

使用arcpy.CheckExtension("3D")和arcpy.CheckOutExtension("3D")檢查許可。

import arcpy

try:

if arcpy.CheckExtension("3D") == "Available":

arcpy.CheckOutExtension("3D")

else:

print("license error")

arcpy.env.workspace = "D:/GrosMorne"

arcpy.HillShade_3d("WesternBrook", "westbrook_hill", 300)

arcpy.Aspect_3d("WesternBrook", "westbrook_aspect")

except arcpy.ExecuteError:

print(arcpy.GetMessages(2))

finally:

arcpy.CheckInExtension("3D")

10、地理數(shù)據(jù)路徑設置與中文處理

(1)路徑設置

在訪問本地數(shù)據(jù)時,常需要設置數(shù)據(jù)存放路徑,設置方式有兩種:

方式1:絕對路徑。

直接將絕對路徑傳入地理處理工具函數(shù)中。

arcpy.GetCount_management(r"c:\temp\streams.shp")

總結

以上是生活随笔為你收集整理的python调用arcpy函数_AGS Python开发-ArcPy开发基础的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。