1. 程式人生 > >ArcGIS Python 操作地圖的基礎入門筆記

ArcGIS Python 操作地圖的基礎入門筆記

前沿:首先需要確保你的ArcGIS 安裝成功,ArcPy 也會預設安裝成功,本文只對軟體內帶有的Python模組操作。

(1)開啟ArcMap 隨便載入一個已有的地圖檔案,我這裡是“林地面積指標完成情況.mxd”,你可以開啟自己的地圖。

(2)在Desktop 介面上找到Python的按鈕,開啟IDE介面,如下圖:

(3)開始寫程式碼了,注意啊,敲黑板了:

#  匯入地圖模組, 列印地圖示題
import arcpy.mapping as mapping
print mxd.title

輸出結果:林地面積指標完成情況

# 可以將地圖儲存到指定路徑下
mxd.saveACopy("D:/test.mxd")

可以到指定路徑下檢視是否儲存。

# 獲取地圖中包含的圖層資訊列表
layer = mapping.ListLayers(mxd)
>>> for lyr in layer:
        print(lyr.name) # 列印每個圖層的名稱

輸出結果:

research_2017_Union
research_2017
tree_area_2015
landuse_map_2015

#  如果想要獲取帶有條件約束的圖層,則加上名稱正則
layer_1 = mapping.ListLayers(mxd,'research_2017_U*',frames)
for ly in layer_1:
     print(ly.name)

輸出結果:

research_2017_Union

#  將地圖匯出為圖片,有各種支援的格式.jpg  .png  .tif等
 data = mapping.ExportToJPEG(mxd,'D:/mxd_output_jpg.jpg')

可以到制定的路徑下去檢視是否成功

(4)獲取地圖裡的資料:

實際上某圖層內包含的資料屬性資訊如下圖

import arcpy.da
with arcpy.da.SearchCursor("DLTB_土地利用現狀_耕地",("Name")) as cursor:
        for row in sorted(cursor):
            print(row)

輸出結果:

這是為什麼呢?為什麼呢?資料呢?

應該是編碼問題,度娘查了一下,應該修改一下編碼方式;

with arcpy.da.SearchCursor("DLTB_土地利用現狀_耕地",("Name")) as cursor:
...     for row in sorted(cursor):
...          str = row[0].encode("gb2312").decode("gb2312")
...          print(str)

輸出結果:

耕地

耕地

大功告成!此處有掌聲~~~~~

要想一次讀取不止一個屬性欄位,就要修改一點點

with arcpy.da.SearchCursor("DLTB_土地利用現狀_耕地",("Name","XING_ZHENG_QU_HUA")) as cursor:
...     for row in sorted(cursor):
...          str = row[1].encode("gb2312").decode("gb2312")
...          print(str)
輸出結果:    
包頭市
包頭市
包頭市
包頭市

好了,今天就先這樣吧,吃飯去了