久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

【干貨】ArcGIS使用Python腳本批量裁剪影像的方法

 gfergfer 2022-11-06 發(fā)布于遼寧

功能描述

對于含有多個要素的矢量文件shp,、柵格影像raster,按照shp中的各要素范圍,逐個對raster進(jìn)行提取,并保存到文件夾中

效果如圖所示:

圖片

主要思路

(1)獲取矢量圖層、柵格圖層

(2)遍歷矢量圖層中的要素

(3)按要素裁剪柵格

(有 Spatial Analysis-ExtractByMask,;Clip_management 兩種方法)

注意

在裁剪影像時,可能出現(xiàn)柵格范圍小于矢量范圍的情況(如果shp200*200,,柵格只有200*199)

方法1,,Spatial Analysis-ExtractByMask,雖慢,,但是十分穩(wěn)定,,在可以按矢量范圍裁剪,得到200*200

方法2,,Clip_management雖快(約方法10倍速度),,但是不太穩(wěn)定,柵格缺失部分可能無法裁剪,,得到200*199

根據(jù)個人對數(shù)據(jù)精度,、速度要求,在代碼中選擇對應(yīng)方法

代碼

# -*- coding: utf-8 -*- # @Time : 2020/1/8 15:04 # @Author : Zhao HL# @File : extract by mask.pyimport arcpyimport os,time
shp_path = r'E:\rs\sample_extent.shp'img_path = r'E:\rs\m08.tif'save_path = r'E:\rs\test'
arcpy.CheckOutExtension('Spatial')def clear_folder(root_path): ''' clear all files in root_path(include files in subfolders, but not folders) :param root_path: :return: ''' files_list = os.listdir(root_path) for f in files_list: file_path = os.path.join(root_path,f) if os.path.isdir(file_path): clear_folder(file_path) else: os.remove(file_path)
print('clear ' root_path)
def clip_img(in_raster, clip_shp, workspace): ''' according to features in the Shp, extract the raters one by one; all result rasters are saved at wordspace according to the FID field in Shp :param in_raster: :param clip_shp: :param workspace: :return: ''' if arcpy.GetParameterAsText(0) != '': in_raster = arcpy.GetParameterAsText(0) if arcpy.GetParameterAsText(1) != '': clip_shp = arcpy.GetParameterAsText(1) if arcpy.GetParameterAsText(2) != '': workspace = arcpy.GetParameterAsText(2)
clear_folder(workspace) arcpy.env.workspace = workspace
t1 = time.time() for row in arcpy.SearchCursor(clip_shp): mask = row.getValue('Shape') FID = int(row.getValue('FID')) FID_name = str(FID).zfill(5) '.tif' img_8_path = os.path.join(workspace, FID_name)
#region method 1: slow but steady mask_raster = arcpy.sa.ExtractByMask(in_raster, mask) arcpy.CopyRaster_management(in_raster=mask_raster, out_rasterdataset=img_8_path, config_keyword='DEFAULTS', background_value=255, nodata_value=255, onebit_to_eightbit='', colormap_to_RGB='', pixel_type='8_BIT_UNSIGNED', scale_pixel_value=None, RGB_to_Colormap=None) #endregion
#region method 2: fast but probably get null result #arcpy.Clip_management(in_raster, '#', img_8_path, mask, 0, 'ClippingGeometry') # endregion
t2 = time.time() - t1 arcpy.AddMessage (FID_name ' is generated successfully, total time:' str(round(t2,2)))
if __name__ == '__main__': pass clip_img(img_path, shp_path, save_path)

實(shí)施細(xì)節(jié)

(1)裁剪出的文件名可以與已有文件重復(fù),,考慮到可能多次裁剪重復(fù)試驗(yàn),,

因此調(diào)用clear_folder函數(shù)清除保留路徑下的所有文件(根據(jù)情況自行使用)

(2)Clip_management 可能出現(xiàn)空結(jié)果(可能是路徑等問題),但比ExtractByMask快數(shù)倍

因此建議調(diào)試成功后使用Clip_management 方法

(3)在arcmap中添加腳本

右擊my toolbox-new-tool box,,新建工具箱

右擊新建的工具箱-add-script,;第一頁設(shè)置默認(rèn),;第二頁設(shè)置在script file中選擇python腳本文件、其余默認(rèn),;第三頁可以設(shè)置輸入?yún)?shù)(可以跳過,,進(jìn)行默認(rèn)參數(shù)訓(xùn)練,也可以按照4)進(jìn)行設(shè)置,。

(4)輸入?yún)?shù)設(shè)置

可以直接在腳本中修改,,在arcmap中跳過、不設(shè)置參數(shù),。

也可以在arcmap中按下圖將3個參數(shù)均設(shè)置為可選選項(xiàng),,方便重復(fù)使用

圖片

本文來源CSDN作者:GISer_Lin 版權(quán)歸作者所有

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章