程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

ArcGIS 中創建自定義python工具箱

編輯:Python

如果你覺得使用ArcGIS的Model Builder還無法滿足你定制化的處理流程,可以考慮以下使用ArcGIS中帶的python工具箱。通過它可以python代碼的形式,調用ArcGIS 工具箱中的東西,也就是ArcPy,對於特殊的應用場景十分方便。開發人員可以將自己的邏輯,封裝為一個工具,直接提供其他電腦上安裝ArcGIS的人員使用。

創建Python工具箱

  1. 在ArcCatalog中我的工具箱上右鍵,選擇新建——python工具箱
  2. 在創建的工具箱上右鍵,選擇編輯,在彈出的編輯框中,就可以輸入編寫代碼了

Python工具箱代碼

先提供一個案例

import arcpy
import os
class Toolbox(object):
def __init__(self):
"""Define the toolbox (the name of the toolbox is the name of the .pyt file)."""
self.label = "Toolbox"
self.alias = ""
# List of tool classes associated with this toolbox
self.tools = [Tool]
class Tool(object):
def __init__(self):
"""Define the tool (tool name is the name of the class)."""
self.label = "驗標出圖工具"
self.description = "驗標出圖工具"
self.canRunInBackground = False
def getParameterInfo(self):
"""Define parameter definitions"""
# 定義工具面板上的參數形式
param0 = arcpy.Parameter(displayName=u"地圖模版",
name="mxd_path",
datatype="DEMapDocument",
parameterType="Required",
direction="Input")
param1 = arcpy.Parameter(displayName=u"地塊Shp文件",
name="dk_layer",
datatype="GPFeatureLayer",
parameterType="Required",
direction="Input")
param2 = arcpy.Parameter(displayName=u"農戶點Shp",
name="nhd_layer",
datatype="GPFeatureLayer",
parameterType="Required",
direction="Input")
param3 = arcpy.Parameter(displayName=u"年份",
name="nf",
datatype="GPString",
parameterType="Required",
direction="Input")
param3.filter.type = "ValueList"
param3.filter.list = [
'2018', '2019', '2020', '2021', '2022', '2023', '2024'
]
param4 = arcpy.Parameter(displayName=u"結果輸出目錄",
name="dst_dir",
datatype="DEFolder",
parameterType="Required",
direction="Input")
params = [param0, param1, param2, param3, param4]
return params
def isLicensed(self):
"""Set whether tool is licensed to execute."""
return True
def updateParameters(self, parameters):
"""Modify the values and properties of parameters before internal validation is performed. This method is called whenever a parameter has been changed."""
return
def updateMessages(self, parameters):
"""Modify the messages created by internal validation for each tool parameter. This method is called after internal validation."""
return
def execute(self, parameters, messages):
"""The source code of the tool."""
# 取參數
arcpy.env.workspace = r"in_memory"
arcpy.env.scratchWorkspace = r"in_memory"
arcpy.env.overwriteOutput = True
mxd_path = parameters[0].valueAsText
dk_layer_path = parameters[1].valueAsText
nhd_layer_path = parameters[2].valueAsText
nf = parameters[3].valueAsText
dst_dir = parameters[4].valueAsText
# 執行邏輯
arcpy.AddMessage("all success")
arcpy.AddMessage(mxd_path)
arcpy.AddMessage(nf)
arcpy.AddMessage(dst_dir)
except arcpy.ExecuteError:
arcpy.AddError(messages)
except Exception:
arcpy.AddError(messages)
return

注意:

  1. getParameterInfo 中主要是用來定義面板的參數,
  2. execute中主要是,點擊確定後的執行邏輯
  3. arcpy.AddMessagearcpy.AddError可以進行日志的打印

參數類型

數據類型datatype 關鍵字描述地址定位器DEAddressLocator用於地理編碼的數據集,存儲地址屬性、關聯的索引以及用於定義將地點的非空間描述轉換為空間數據這一過程的規則。地址定位器樣式GPAddressLocatorStyle用於創建新地址定位器的模板。分析像元大小analysis_cell_size柵格工具使用的像元大小。任何值GPType接受任何值的數據類型。ArcMap 文檔DEMapDocument包含一個地圖、它的布局以及它的關聯圖層、表格、圖表和報表的文件。面積單位GPArealUnit面積單位類型和值,例如平方米或英畝。布爾型GPBoolean布爾值。CAD 工程圖數據集DECadDrawingDataset包含多種要素類型和符號系統的矢量數據源。此數據集不適用於基於要素類的查詢或分析。計算器表達式GPCalculatorExpression計算器表達式。目錄根DECatalogRoot目錄樹中的頂級結點。像元大小GPSACellSizeArcGIS Spatial Analyst 擴展模塊 使用的像元大小。像元大小 XYGPCellSizeXY定義柵格像元的兩側。復合圖層GPCompositeLayer對多個子圖層的引用,包括符號系統和渲染屬性。壓縮GPSAGDBEnvCompression指定用於柵格的壓縮類型。坐標系GPCoordinateSystem參考框架,例如 UTM 系統,由一組點、線和/或面,以及一組用於定義二維和三維空間中點的位置的規則組成。坐標系文件夾DESpatialReferencesFolder磁盤上用於存儲坐標系的文件夾。覆蓋范圍DECoveragecoverage 數據集,用於存儲地理要素,如點、弧線和面以及相關要素屬性表的專有數據模型。Coverage 要素類DECoverageFeatureClassescoverage 要素類,例如點、弧線、節點、路線、路線系統、弧段、面和區域。數據元素DETypeArcCatalog 中可見的數據集。數據文件GPDataFile數據文件。數據庫連接DERemoteDatabaseFolderArcCatalog 中的數據庫連接文件夾。數據集DEDatasetType相關數據的集合,通常被分組或存儲在一起。日期GPDate日期值。dBase 表DEDbaseTable以 dBASE 格式存儲的屬性數據。抽取GP3DADecimate指定 TIN 的節點子集,以創建該 TIN 的概化版本。磁盤連接DEDiskConnection數據存儲設備的訪問路徑。雙精度GPDouble所有浮點數將被存儲為雙精度 64 位值。加密字符串GPEncryptedString密碼加密的字符串。EnvelopeGPEnvelope定義數據源所在的最小外接矩形的坐標對。評估級別GPEvaluationScale加權疊加操作中應用於輸入值的級別值范圍和增量值。范圍GPExtent指定定義數據源的最小外接矩形的坐標對(x 最小值、y 最小值、x 最大值、y 最大值)。所有數據源的坐標都在此邊界內。提取值GPSAExtractValues提取值參數。要素類DEFeatureClass形狀類型相同的空間數據的集合:點、多點、折線和面。要素數據集DEFeatureDataset共享公共的地理區域和相同的空間參考系統的要素類集合。要素圖層GPFeatureLayer對要素類的引用,包括符號系統和渲染屬性。要素集GPFeatureRecordSetLayer交互式要素;工具運行時繪制要素。字段字段表中的列,用於存儲單個屬性的值。字段信息GPFieldInfoFieldMap 中字段的詳細信息。字段映射GPFieldMapping一個或多個輸入表中的字段集合。文件DEFile磁盤上的文件。文件夾DEFolder指定數據在磁盤上的存儲位置。格式化柵格GPRasterFormulated柵格表面,其像元值由公式或常量表示。模糊函數GPSAFuzzyFunction模糊函數。地理數據集DEGeodatasetType地理數據庫中具有共同主題的數據集合。GeoDataServerDEGeoDataServer引用地理數據庫的粗粒度對象。幾何網絡DEGeometricNetwork由拓撲連接的邊和交匯點要素表示的線狀網絡。要素連通性以它們的幾何重疊為基礎。地統計圖層GPGALayer對地理統計數據源的引用,包括符號系統和渲染屬性。地理統計搜索鄰域GPGASearchNeighborhood定義地統計圖層的搜索鄰域參數。地理統計值表GPGALayer定義地統計圖層的數據源和字段的集合。GlobeServerDEGlobeServerGlobe 服務器。GPServerDEGPServer地理處理服務器。圖表GPGraph圖表。圖表數據表GPGraphDataTable圖表數據表。圖層組GPGroupLayer顯示為單個圖層,並按照單個圖層處理的圖層集合。圖層組使組織地圖、指定高級繪制順序選項和分享圖層以用於其他地圖變得更加容易。水平系數GPSAHorizontalFactor水平成本系數和水平相對移動角度之間的關系。影像服務DEImageServer影像服務。索引索引用於加快在地理數據集和數據庫中搜索記錄的速度的數據結構。INFO 表達式GPINFOExpression定義和操縱 INFO 表中數據的語法。INFO 項目GPArcInfoItemINFO 表中的項目。INFO 表DEArcInfoTableINFO 數據庫中的表格。LAS 數據集DELasDatasetLAS 數據集存儲對磁盤上一個或多個 LAS 文件以及其他表面要素的引用。LAS 文件是一個二進制文件,專門用來存儲機載激光雷達數據。LAS 數據集圖層GPLasDatasetLayer引用磁盤上的 LAS 數據集的圖層。此圖層可將過濾器應用於 LAS 數據集引用的雷達文件和表面約束。LayerGPLayer對數據源的引用,例如 shapefile、coverage、地理數據庫要素類或柵格,包括符號系統和渲染屬性。圖層文件DELayer用於存儲圖層定義,包括符號系統和渲染屬性,擴展名為 .lyr 的文件。線GPLine由一系列相連的唯一 x,y 坐標對定義的直的或彎曲的形狀。線性單位GPLinearUnit線性單位類型和值,例如米或英尺。經度GPLong一個整數值。M 值域GPMDomainM 坐標的最低和最高可能值的范圍。MapServerDEMapServer地圖服務器。鑲嵌數據集DEMosaicDataset柵格和影像數據的集合,可以存儲、查看和查詢數據。鑲嵌數據集是地理數據庫中的數據模型,用於管理一組以目錄形式存儲並以鑲嵌影像方式查看的柵格數據集(影像)。鑲嵌圖層GPMosaicLayer引用鑲嵌數據集的圖層。鄰近地區GPSANeighborhood用於計算統計數據的各像元周圍區域的形狀。網絡分析類 FieldMapNAClassFieldMap在網絡分析圖層(如中轉點、設施點和事故點)和點要素類中的位置屬性之間建立映射。網絡分析等級設置GPNAHierarchySettings使用兩個整數將網絡數據集的等級值分成三組的等級屬性。第一個整數,high_rank_ends,設置第一組的結束值;第二個數值,low_rank_begin,設置第三組的起始值。網絡分析圖層GPNALayer用於表達和解決網絡路徑問題的特殊圖層組。Network Analyst 圖層中存儲的各子圖層代表路徑問題和解決方案的某些方面。網絡數據集DENetworkDataset拓撲連接網絡元素的集合(邊、交匯點和轉彎),源於網絡源並與網絡屬性的集合相關聯。網絡數據集圖層GPNetworkDatasetLayer對網絡數據集的引用,包括符號系統和渲染屬性。宗地結構DECadastralFabric宗地結構是存儲、維護和編輯相連宗地或宗地網絡的連續表面的數據集。宗地結構圖層GPCadastralFabricLayer引用磁盤上宗地結構的圖層。此圖層作為圖層組,將一組相關圖層組織到單個圖層下。點GPPointx,y 坐標對。面GPPolygon一系列相連的 x,y 坐標對,其中,第一個坐標對和最後一個坐標對相同。投影文件DEPrjFile存儲空間數據的坐標系統信息的文件。金字塔GPSAGDBEnvPyramid構建金字塔時指定。半徑GPSARadius指定用於插值的周圍點。隨機數生成器GPRandomNumberGenerator指定創建隨機值時使用的種子和生成器。柵格波段DERasterBand柵格數據集中的圖層。柵格計算器表達式GPRasterCalculatorExpression柵格計算器表達式。柵格目錄DERasterCatalog在表中定義的柵格數據集的集合;每個表記錄定義目錄中的一個單獨柵格數據集。柵格目錄圖層GPRasterCatalogLayer對柵格目錄的引用,包括符號系統和渲染屬性。柵格數據圖層GPRasterDataLayer柵格數據圖層。柵格數據集DERasterDataset根據一個或多個柵格構建的單個數據集。柵格圖層GPRasterLayer對柵格的引用,包括符號系統和渲染屬性。柵格統計GPSAGDBEnvStatistics構建柵格統計時指定。柵格數據類型GPRasterBuilder柵格數據是通過指定柵格類型的方式添加到鑲嵌數據集中的。柵格類型可與柵格格式一起識別元數據,例如地理配准、采集日期和傳感器類型。記錄集GPRecordSet交互表;工具運行時輸入表值。關系類DERelationshipClass地理數據庫中對象間關系的詳細信息。重映射GPSARemap定義柵格像元值重分類方法的表。路徑測量事件屬性GPRouteMeasureEventProperties在表中指定一個字段來描述由線性參考路徑系統測量的事件。邏輯示意圖數據集DESchematicDataset邏輯示意圖數據集中包含同一應用領域(例如水網或電網)中的邏輯示意圖模板和邏輯示意圖要素類的集合。邏輯示意圖數據集可位於個人地理數據庫、文件地理數據庫或 ArcSDE 地理數據庫中。邏輯示意圖DESchematicDiagram邏輯示意圖。邏輯示意圖文件夾/Schematic 文件夾DESchematicFolder邏輯示意圖文件夾。邏輯示意圖圖層GPSchematicLayer邏輯示意圖圖層是復合圖層,由基於與創建邏輯示意圖時使用的模板相關聯的邏輯示意圖要素類的要素圖層組成。半變異函數GPSASemiVariogram指定用於量化自相關的兩個地點的距離和方向。ServerConnectionDEServerConnection服務器連接。ShapefileDEShapefileshapefile 格式的空間數據。空間參考GPSpatialReference用於存儲空間數據集(包括空間域)的坐標系。SQL 表達式GPSQLExpression定義和操縱關系數據庫中的數據的語法。字符串GPString文本值。表DETable表格數據。表視圖GPTableView用於查看和編輯的表格數據表現形式,存儲在內存或磁盤中。Terrain 圖層GPTerrainLayer對 terrain 的引用,包括符號系統和渲染屬性。它用於繪制 terrain。文本文件DETextfile以 ASCII 格式存儲的數據。分塊大小GPSAGDBEnvTileSize指定存儲在塊中的數據的寬度和高度。時間配置GPSATimeConfiguration指定用於計算特定位置太陽輻射的時間段。TINDETin一種將地理空間分割為連續的不重疊三角形的矢量數據結構。每個三角形的折點都是具有 x、y 和 z 值的采樣數據點。TIN 圖層GPTinLayer對 TIN 的引用,包括拓撲關系、符號系統和渲染屬性。工具DETool地理處理工具。toolboxDEToolbox地理處理工具箱。拓撲要素GPSATopoFeatures輸入到插值中的要素。拓撲DETopology定義並強制空間數據的完整性規則的拓撲。拓撲圖層GPTopologyLayer對拓撲的引用,包括符號系統和渲染屬性。值表GPValueTable值列的集合。變量GPVariant可以包含任意基本類型的數據值:布爾型、日期型、雙精度型、長整型和字符串型。垂直系數GPSAVerticalFactor指定垂直成本系數和垂直相對移動角度之間的關系。VPF CoverageDEVPFCoverage以矢量產品格式存儲的空間數據。VPF 表DEVPFTable以矢量產品格式存儲的屬性數據。WCS CoverageDEWCSCoverage網絡覆蓋服務 (WCS) 是網絡上共享柵格數據集的開放式規范。加權疊加表GPSAWeightedOverlay 表包含數據的表,可以通過對每一個柵格值使用同一測量尺度並根據其重要性對其進行加權來合並多個柵格。加權總和GPSAWeightedSum指定用於通過將柵格各自乘以指定的權重並合計在一起來疊加多個柵格的數據。WMS 地圖DEWMSMapWMS 地圖。工作空間DEWorkspace容器,例如地理數據庫或文件夾。XY 值域GPXYDomainx,y 坐標的最低和最高可能值的范圍。Z 值域GPZDomainz 坐標的最低和最高可能值的范圍。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved