(二)arcpy開發&arcpy中利用不規則向量面在arcgis中批量裁剪影像
使用clip工具來裁剪圖形一般是規則多邊形,即一個範圍裁剪是以最左點,最上點,最右點,最下點來確定範圍線。如下圖所示是一個範圍線,該範圍線是不規則的。
以及疊加上影像,按理來說應該是範圍線內的部分。
下面我們來使用arcgis工具來裁剪一下影像。注意沒有勾選【Use Input Features for Clipping Geometry(option)】
最後的裁決效果如下圖所示。
而如果我們勾選了上面的選項,則最後的裁剪結果則是我們需要的。
而我現在需要做的工作是利用圖幅結合表shapefile裡面的資料,遍歷其中每一條記錄然後和影像進行裁剪,根據圖幅分幅來說,矩形框並不是嚴格的長方形,而是梯形,因此我們這裡需要使用多邊形裁剪。按照網路的相關資料,可以使用ExtractByMask函式進行裁剪。但是在使用該函式的時候多次遇到拼接引數出現了問題,無奈只好使用了clip_Manager函式來裁剪。首先,在函式的開頭遍歷了所有的向量面記錄,然後使用向量面去和影像進行裁剪,將影像按照FID作為裁剪後的名稱儲存。具體可以檢視一下程式碼。
功能實現程式碼:
# coding:utf-8
import arcpy
import os
from arcpy.sa import *
def do(shpPathJHTB,importtif,resultPathTif):
with arcpy.da.SearchCursor(shpPathJHTB, ['FID', 'SHAPE@']) as cursor:
for row in cursor:
mask = row[1]
extent = str(mask.extent.XMin) + " " + str(mask.extent.YMin) + " " + str(mask.extent.XMax) + " " + str(mask.extent.YMax)
#outPath = outworkspace + "\\" + str(row.getValue(field) + outtype)
outPath=os.path.join(resultPathTif,str(row[0]) + ".img");
arcpy.Clip_management(importtif, extent, outPath, mask, "0", "ClippingGeometry")
打包程式碼:
# coding:gbk
import arcpy
#http://pro.arcgis.com/zh-cn/pro-app/arcpy/geoprocessing_and_python/defining-parameter-data-types-in-a-python-toolbox.htm
from PLiangClip import do
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 = "批量按照結合圖表裁剪img"
self.description = "批量按照結合圖表裁剪img"
self.canRunInBackground = False
def getParameterInfo(self):
"""Define parameter definitions"""
shpPathJHTB = arcpy.Parameter(
displayName="結合圖表shp面資料",
name="shpPathJHTB",
datatype="GPFeatureLayer",
parameterType="Required",
direction="Input"
)
tifPath = arcpy.Parameter(
displayName="img影像",
name="tifPath",
datatype="DERasterDataset",
parameterType="Required",
direction="Input"
)
resultFolder = arcpy.Parameter(
displayName="最終處理結果",
name="resultFolder",
datatype="Folder",
parameterType="Required",
direction="Input"
)
#params = None
params = [shpPathJHTB, tifPath, resultFolder]
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."""
shpPathJHTB= parameters[0].valueAsText
tifPath= parameters[1].valueAsText
resultFolder= parameters[2].valueAsText
do(shpPathJHTB,tifPath,resultFolder)
return
最後開發的工具如下圖所示:
更多內容,請關注公眾號
相關文章
- (三)arcpy開發&利用arcpy實現接邊處理(arcgis要素建立、更新、圖層選擇)
- ArcGIS批量裁剪遙感影像
- ArcPy批量選擇指定屬性的要素
- Python ArcPy批次拼接長時間序列柵格影像Python
- HDF格式遙感影像批次轉為TIFF格式:ArcPy實現
- Python基於Excel生成向量圖層及屬性表資訊:ArcPyPythonExcel
- Arcpy多執行緒熱力圖執行緒
- Python arcpy建立柵格、批次拼接柵格Python
- ArcGIS Pro釋出地圖服務(影像、向量)地圖
- Python ArcPy批次計算多時相遙感影像的各項元平均值Python
- h5在移動開發中的準則H5移動開發
- 在軟體開發中應用80:20原則
- 在Linux中,如何設定防火牆規則?Linux防火牆
- ArcPy自動繪製大量地圖並設定地圖要素:Python地圖Python
- 正規表示式在iOS開發中的應用iOS
- 混合APP開發的套路(四):在html頁面中開啟專案中的ActivityAPPHTML
- 庫存批量規則(原創)
- MySQL中的排序規則MySql排序
- 在 Linux 中如何編寫基本的 udev 規則Linuxdev
- 在Linux中,如何配置防火牆和安全規則?Linux防火牆
- ArcGis api配合vue開發入門系列(二)距離以及面積的測量APIVue
- 開發 eslint 規則EsLint
- 開發60條規則
- Domino Web開發規則Web
- Redis中PipeLine使用(二)---批量get與批量setRedis
- 【java規則引擎】規則引擎RuleBase中利用觀察者模式Java模式
- JS中this的繫結規則JS
- JavaScript中this的繫結規則JavaScript
- web前端中的命名規則Web前端
- jQuery中$符號規則(7)jQuery符號
- JS中的"=="轉換規則JS
- ETL中如何自定義規則
- react中的 Hook 使用規則ReactHook
- iOS 開發中的『庫』(二)iOS
- 【java規則引擎】java規則引擎搭建開發環境Java開發環境
- opencv中的SVM影像分類(二)OpenCV
- Java遊戲開發規則Java遊戲開發
- 基於ArcGIS ModelBuilder的GDB批量分割槽裁剪——可保留原始GDB要素集要素類結構UI