ArcGIS + Python 批量裁剪、添加X/Y座標指令碼

來源:互聯網
上載者:User

標籤:join   縮小   pat   問題   append   text   glob   lis   except   

前言


前一段時間,同事拿來的資料範圍太大,用不了那麼多(只需要一個鄉鎮的,結果拿來區縣的),太多了載入也是問題。所以就讓我給處理下。

由於檔案較多,手動裁剪的話,我一個一個用ArcGIS工具箱中的工具進行裁剪,總體下來用了3個小時左右。後面由於需要再次縮小範圍,這次再一個一個手動的話那就太坑了。我想到可以用Python寫指令碼來批量處理。

本文

在安裝ArcGIS軟體的時候是預設安裝了Python的環境的,並且安裝了arcpy庫。但是,這個Python是2.7的,我以前學習的是用Python3.X的,我本來想著直接用3.X,但是在“import arcpy”的地方一直有問題,找了一些方法還是不行,最後只能用2.7的了。

下面是批量裁剪的 Python 指令碼:

import arcpyimport globimport os arcpy.CheckOutExtension(‘Spatial‘) # 指定裁剪前的目錄inws = r"D:\PythonClip\oldData" # 指定裁剪後的存放目錄outws = r"D:\PythonClip\Newdata" #指定shp範圍邊界檔案,即目的地區域的邊界mask = r"D:\PythonClip\panhuo.shp"cluster_tolerance="0.0000001 DecimalDegrees" #利用glob包,將inws下的所有shp檔案讀存放到shps 中shps = glob.glob(os.path.join(inws, "*.shp")) #迴圈shps 中的所有影像,進行按掩模提取操作for shp in shps:    outname = os.path.join(outws, os.path.basename(shp))  #指定輸出檔案的命名方式    print outname    try:        arcpy.Clip_analysis(shp,mask,outname)    except Exception as e:        print e.message

由於檔案較多,所以是迴圈指定目錄下的shp檔案,一個一個裁剪並輸出儲存。

在裁剪後,又需要把檔案的X/Y座標添加到屬性列表裡。我想這個也用指令碼來寫吧,好沒問題下面也順利完成:

import arcpydef CalcXY():    try:        print "Set Env"        arcpy.env.workspace = "D:\\PythonClip\\Newdata"        print "Start AddField And Calculate centroid"        shps = arcpy.ListFiles("*.shp")        for shp in shps:            fieldList = arcpy.ListFields(shp,"","Double")            fieldNames = []            for field in fieldList:                fieldNames.append(field.name)            if "X" not in fieldNames:                arcpy.AddField_management(shp,"X","DOUBLE",20,4)                arcpy.AddField_management(shp,"Y","DOUBLE",20,4)                arcpy.CalculateField_management(shp, "X", "!SHAPE.CENTROID.X!","PYTHON_9.3")                arcpy.CalculateField_management(shp, "Y", "!SHAPE.CENTROID.Y!","PYTHON_9.3")                print shp        print "AddField And Calculate centroid End"    except Exception as e:        print e.message        CalcXY()CalcXY()

以上是添加X、Y的代碼。

這些簡單的指令碼,在ArcGIS的協助文檔中都可以找到,而且每一個都有完整的例子。有一些Python基礎的都可以實現。

ArcGIS + Python 批量裁剪、添加X/Y座標指令碼

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.