ArcGIS Python編程案例(0)-前言

||| 第一章 Python語言基礎


說明

該系列是自己前兩年無聊的時候翻譯的Eric Pimpler的《Programming ArcGIS 10.1 with Python Cookbook》。
原書的代碼還是有不少錯誤的,這次在簡書上面的整理稿又把所有的代碼逐一驗證修復,竭力保證代碼的正確性,減少讀者學習過程中不必要的受挫感。
本書作為入門教程,以經典案例的形式分專題講解,向讀者介紹如何在ArcGIS環境下使用Python語言來編寫腳本以實現地理處理任務。

按照以下步驟來學習如何限制返回的地圖文檔中的圖層列表內容:
1.在ArcMap中打開c:\ArcpyBook\Ch3\Crime_Ch3.mxd文件。
2.點擊ArcMap主工具欄上的Python窗口按鈕。
3.導入arcpy.mapping模塊:

import arcpy.mapping as mapping

4.引用當前活動的地圖文檔(Crime_Ch3.mxd)并將該引用賦值給變量:

mxd = mapping.MapDocument("CURRENT")

5.獲取地圖文檔中的數據框列表并查找一個名稱Crime的數據框。注意文本字符串一定要包含在單引號或者雙引號之內:

for df in mapping.ListDataFrames(mxd):
    if (df.name == 'Crime'):

6.調用ListLayers()函數并將地圖文檔的引用參數,用于限制查找范圍的通配符參數以及數據框參數傳遞給該函數,其中數據框參數在本案例中位上一步指定的數據框。ListLayers()函數一定要在上一步的if語句的縮進范圍內:

layers = mapping.ListLayers(mxd,'Burg*',df)

7.使用for循環語句打印輸出返回的每一個圖層名稱:

for layer in layers:
    print layer.name

8.完整代碼如下:

import arcpy.mapping as mapping
mxd = mapping.MapDocument("CURRENT")
for df in mapping.ListDataFrames(mxd):
    if (df.name == 'Crime'):
        layers = mapping.ListLayers(mxd,'Burg*',df)
        for layer in layers:
            print layer.name

9.運行腳本將看到如下結果顯示:

Burglaries in 2009

另外除了詳細的代碼介紹,還會就每個案例分析代碼背后的GIS邏輯,向讀者解釋了要怎么做(How to do..),為什么這么做(How it works...),還可以怎么做(There is more...)。

主要內容

ArcGIS是由ESRI公司推出的行業標準級別的地理信息系統(Geographic information system)軟件。
該系列將介紹如何在ArcGIS桌面環境中使用Python編程語言來創建地理處理腳本(geoprocessing scripts),工具(tools)以及快捷菜單(shortcuts)。
你還將在本系列內容中了解ArcGIS腳本的相關專題內容,這些內容有助于提高使用ArcGIS軟件的工作效率。這些專題包括地圖文檔文件管理,地圖制圖和打印的自動化處理,損壞數據源的查找和修復,自定義地處理工具的創建,要素類和表單數據的處理以及其他。
該系列將會有14個專題內容(包含兩個附錄):

  1. 第一章 Python語言基礎
    本章主要包括Python語言的基礎介紹。熟悉Python的同學可以跳過該部分。你會首先了解到如何創建一個新的Python腳本以及編輯已有腳本。在此之后,你將會了解Python的語言特性(features),比如注釋,變量以及內置的自動補齊功能(built-in typing system)等。之后我們將會介紹Python支持的數據類型,比如字符(string),數值(number),列表(list)和字典(dictionary)。除此之外,我們還將介紹決策支持語句和循環語句的內容。

  2. 第二章 使用ArcPy編寫地理處理腳本
    本章將會講解針對ArcGIS開發的Python站點包--ArcPy的基本概念,包括基本的模塊,函數和類。你可以在Python中調用ArcPy包來編寫地理處理腳本。

  3. 第三章 管理地圖文檔和圖層
    本章將會介紹使用ArcPy的制圖模塊(mapping modlule)來管理地圖文檔和圖層文件。你將會學習如何在地圖文檔中刪除圖層,插入圖層以及移動圖層。另外,你還會了解到如何更改圖層屬性和符號化系統。

  4. 第四章 查找和修復數據源
    本章將會介紹如何獲取地圖文檔中損壞的數據源列表并使用ArcPy的制圖功能來修復這些數據源。你會學習到如何在多個地圖文檔中自動化完成修復數據源處理任務。

  5. 第五章 自動化地圖生產和打印
    本章將會介紹如何自動化實現高質量地圖的生產。這些地圖將會以圖片文件格式或者以PDF地圖冊格式輸出打印。

  6. 第六章 使用腳本執行地理處理工具
    本章將會介紹如何在腳本中訪問執行ArcGIS中提供的地理處理工具。

  7. 第七章 創建自定義的地理處理工具
    本章將會介紹如何創建自定義的地理處理工具,這些工具可以添加到ArcGIS中,也可以分發給其他用戶使用。Python編寫的自定義的地理處理工具可用于處理和分析地理數據。

  8. 第八章 數據查詢和選擇
    本章將會介紹如何在腳本中調用按屬性選擇工具(Select by Attribute)和按位置選擇工具(Select by Location)來選擇要素和記錄。你可以了解到如何在按屬性選擇工具中where條件語句選項來構建查詢條件語句。本章還將介紹要素類和表視圖用作臨時數據集的相關內容。

  9. 第九章 [ArcPy數據訪問模塊] (http://www.lxweimin.com/p/3898f35a1085)
    本章將會介紹如何創建地理處理腳本來執行地理數據圖層和表數據的選擇,插入和更新等操作。通過使用ArcGIS10.1新引入的數據訪問模塊,地理處理腳本就可以從要素類和表數據中創建游標內存對象。你將會學習如何創建搜索游標,插入游標和更新游標等不同的游標對象。

  10. 第十章 獲取GIS數據列表和描述性信息
    本章將會介紹如何使用ArcPy的Describe()函數來獲取地理數據集的描述性信息。地理處理腳本的第一步通常是獲取地理數據列表,這些列表可通過不同操作來獲取。

  11. 第十一章 使用加載項(Add-ins)自定義ArcGIS界面
    本章將會介紹如何創建Python加載項來自定義ArcGIS界面。加載項是通過一組設計好的模塊化代碼庫向ArcGIS桌面軟件中添加用戶界面組件的方式來執行特定操作。界面組件包括按鈕,工具,工具條,菜單,組合框,工具選項板以及應用程序擴展。使用Python創建加載項,使用xml文件來定義用戶界面的外觀顯示。

  12. 第十二章 異常和錯誤處理
    本章將會介紹如何更好地處理地理處理腳本執行過程中出現的錯誤和異常。使用Python的try/except語句可以捕獲Arcpy和Python返回的錯誤并做相應地處理。

  13. 附錄A 自動執行Python腳本
    本章將會介紹如何設置在指定時間執行地理處理腳本的任務計劃。許多地理處理腳本運行時間較長并且需要定期地在非工時間執行。你將會學習如何創建包含地理處理腳本和執行時間的批處理文件。

  14. 附錄B 五個常用Python處理任務
    本章將會介紹如何使用Python腳本來完成一些常用處理任務,比如讀寫分隔符文本文件,發送電子郵件,訪問FTP服務器,創建壓縮文件以及讀寫JSON和XML文件等。GIS程序員都應當了解如何編寫Python腳本來完成上述工作。

代碼運行環境說明

書中案例運行環境需要安裝ArcGIS 10.x版本的桌面軟件。

工程文件和數據

百度云盤鏈接: https://pan.baidu.com/s/1ht2v7U0 密碼: pypy


||| 第一章 Python語言基礎

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,619評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,155評論 3 425
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,635評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,539評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,255評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,646評論 1 326
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,655評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,838評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,399評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,146評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,338評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,893評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,565評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,983評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,257評論 1 292
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,059評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,296評論 2 376

推薦閱讀更多精彩內容