編輯推薦
適讀人群 :學生、設計師 基於ArcGIS的地理信息係統可以輔助規劃師從地理信息角度解決相關的規劃設計問題,例如從信息化角度智能化管理城市信息數據,進行相關的空間分析、網絡分析、地統計以及輔助製圖。然而規劃師的欲望是無止境的,尋求更自由的計算機輔助規劃設計的技術,以及獲得更強解決問題的能力,就需要具備編程設計的知識。基於ArcGIS的Python腳本語言正是可以輔助規劃師得以自由解決問題的一個途徑。
具有編程能力的規劃設計師將具有更強解決問題的能力以及拓展無限的創造力,自身的專業知識為如何編寫程序解決問題提供瞭最為直接的基礎,這是專業開發人員力所不能及。針對Python 編寫程序處理地理信息係統不僅提高瞭處理地理信息數據的效率,更是可以針對需要解決的問題構建處理問題的程序,從程序編寫的角度思考解決問題的方法。
《麵嚮設計師的編程設計知識係統PADKS:ArcGIS下的Python編程》為規劃師提供瞭學習基於ArcGIS的腳本語言Python教材,將對Python語言的講述與ArcGIS的模塊ArcPy相結閤,並通過實際案例探討“自然村落選址因子權重評定的遺傳算法”、“基於景觀感知敏感度的生態旅遊地觀光綫路自動選址”和“解讀蟻群算法與TSP 問題”,理解編程規劃設計的方法。
內容簡介
《麵嚮設計師的編程設計知識係統PADKS:ArcGIS下的Python編程》對於ArcGIS 下Python 腳本使用方法的闡述是從Python 語言本身和基於ArcGIS的Python 兩個方麵同時著手,因此在閱讀本書時不需要預先具備Python 基礎知識。本書包括七個部分,Python 與ArcGIS,ArcGIS 下的地理數據與Python 數據結構,Python 的基本語句與使用Python 訪問地理數據,創建函數與使用Python 處理柵格數據,創建類與網絡分析,異常與錯誤,以及程序的魅力。主要闡述的邏輯綫存在並行的兩條綫,一個是針對Python 的,從對於Python 介紹、數據結構、基本語句到創建函數、創建類和異常;另一個是針對ArcGIS 下的Python ,從ArcPy 站點包、訪問以及管理地理信息數據的方法、處理要素類、處理柵格數據到網絡分析和與地理處理模型的結閤方法。兩條綫同時推進闡述,互相支持印證,並結閤實際解決問題的應用方法,例如如何轉化KML 文件和.dwg 格式文件並增加字段數據,以及適宜性分析柵格計算重分類的方法和尋找最近設施點的網絡分析,遺傳算法應用等。
最後一部分則通過具體的案例來闡述應用ArcGIS下Python編程規劃的方法,初步包括三個課題的探討:
“課題探討_A_ 自然村落選址因子權重評定的遺傳算法”,村落選址受製於山水,如何在復雜的地形中謀得棲身之所,避免自然災害的侵擾並具有舒適宜人的小氣候是人類不斷探索的課題。根據假定既有村落選址的特點反推權重設置具有一定的閤理性,並根據反推的權重應用於影響因子計算新的地塊獲取選址。在這個過程中,使用優化算法中的遺傳算法求解;
“課題探討_B_ 基於景觀感知敏感度的生態旅遊地觀光綫路自動選址”,根據《基於景觀感知敏感度的生態旅遊地觀光綫路自動選址》的研究,將計算模型程序化,不僅提升模型計算的效率,更有利於不斷修正研究過程中齣現的問題以及加入更多不同類型影響因子後,進行綜閤性評價分析,並為類似的研究提供基礎性程序片斷;
“課題探討_C_ 解讀蟻群算法與TSP 問題”,蟻群算法(Ant Colony Optimization, ACO),又稱螞蟻算法,是一種用來在圖中尋找優化路徑的機率型算法。本案例將蟻群算法在ArcGIS的Python腳本中實現。
作者簡介
包瑞清,西安建築科技大學建築學院講師
城市規劃與設計專業博士,任教於西安建築科技大學建築學院,主攻計算機輔助設計應用研究,從作為設計者的角度尋找和融閤編程與建築、風景園林、城鄉規劃等設計規劃學科之間的關聯,建立麵嚮設計師的編程設計知識係統,力圖使編程設計成為設計領域的基礎環節,探索未來設計的方法。
2012年,作為caDesign設計創始人之一,以“編程讓設計更具創造力!”的信念為指引,分享研究成果,發展麵嚮設計師的編程設計知識係統網絡服務體係。
內頁插圖
目錄
9 Python 與ArcGIS
10 1 Python
12 2 將地理信息係統作為過程的空間分析
12 2.1 區位與網絡結構
14 2.2 調研者路綫
16 2.3 場地現狀信息錄入與基本分析
18 2.4 基礎的數據地理信息化輔助規劃設計分析
21 2.5 專題地圖疊閤的方法
21 2.6 作為過程的空間分析
23 3 Python 與ArcGIS
25 3.1 .kml 文件格式
41 3.2 通過Python 使用工具箱裏的工具
44 3.3 通過Python 使用環境設置
46 3.4 通過Python 使用函數
47 3.5 通過Python 使用類
51 3.5 獲取和設置參數
57 ArcGIS 下的地理數據與Python 數據結構
58 1 ArcGIS 下的地理數據
62 1.1 文件地理數據庫和個人地理數據庫
62 1.2 ArcSDE 地理數據庫
67 1.3 創建地理數據列錶
74 2 Python 數據結構-List 列錶、Tuple 元組與Dictionary 字典
75 2.1 列錶(List)
85 2.2 元組(Tuple)
85 2.3 字典(Dictionary)
94 3 Python 數據結構-String 字符串
94 3.1 字符串格式化
96 3.2 re(regular expression) 正則錶達式
109 Python 的基本語句與使用Python 訪問地理數據
110 1 描述數據
112 2 Python 的基本語句
112 2.1 print() 與import
113 2.2 賦值的方法
114 2.3 循環語句
117 2.4 條件語句
119 3 Table 屬性錶與Cursor 遊標
123 3.1 讀取幾何、寫入幾何與幾何標記(geometry tokens)
126 3.2 遊標和鎖定
127 3.3 在Python 腳本中使用SQL 結構化查詢語
129 3.4 數據存在判斷與在Python 腳本中驗證錶和字段名稱
135 創建函數與使用Python 處理柵格數據
136 1 創建函數
145 2 形式參數的傳遞
147 3 Raster 柵格數據
148 3.1 柵格數據(Mesh 麵Quad 類型)
148 3.2 專題數據
148 3.3 影像數據
152 3.4 柵格函數
153 3.5 TIN 錶麵模型(Mesh 麵Triangle 類型)
155 4 使用Python 處理柵格數據
155 4.1 柵格計算(地圖代數運算)
159 4.2 重分類
171 4.3 條件分析工具集
175 創建類與網絡分析
177 1 創建類
179 2 網絡分析
180 2.1 從GoogleEarth 中調入路徑以及服務設施和源點
185 2.2 建立文件地理數據庫、要素數據集並導入用於網絡分析的基礎數據
187 2.3 最近設施點分析
193 異常與錯誤
194 1 異常
196 1.1 Python 內置異常
197 2 錯誤
201 程序的魅力
201 1 課題探討_A_ 自然村落選址因子權重評定的遺傳算法
204 1.1 準備數據
204 1.2 確定研究區域
205 1.3 確定影響因子
209 1.4 假設權重,疊閤相加各個影響因子的成本柵格
211 1.5 遺傳算法
218 1.6 將計算結果應用於類似場地
219 2 課題探討_B_ 基於景觀感知敏感度的生態旅遊地觀光綫路自動選址
220 2.1 技術綫路與基礎數據
223 2.2 視域感知因子_ 可視區域計算
231 2.3 視域感知因子_ 最佳觀賞距離計算
242 2.4 視域感知因子_ 最佳觀賞方位
249 2.5 視域感知因子_ 柵格疊加求和
249 2.6 生態感知因子_ 景觀類型
251 2.7 生態感知因子_ 資源價值
252 2.8 生態感知因子_ 柵格疊加求和
252 2.9 景觀感知敏感度
254 2.10 地形因子
256 2.11 觀光綫路適宜性成本柵格計算
257 2.12 觀光綫路自動獲取
260 3 課題探討_C_ 解讀蟻群算法與TSP 問題
260 3.1 蟻群算法與TSP 問題概述
263 3.2 蟻群算法程序解讀
271 3.3 蟻群算法在ArcGIS 下的應用
274 4 分享程序
精彩書摘
GIS 輔助規劃設計無限拓展的途徑
GIS(Geographic Information System) 地理信息係統在城市規劃、生態規劃、風景園林規劃行業中具有舉足輕重的價值。但是GIS 應用領域的廣泛性與無限拓展的知識領域使得規劃設計者在開始地理信息領域探索時總是無所適從,往往被淹沒在浩瀚的知識領域中。實際上對於不同的專業領域,在使用GIS 協助規劃設計時,會根據自身的需求選擇適閤的知識方嚮和內容,從而找對方嚮點便於順利切入。GIS 技術不應該僅僅成為專業GIS 開發者的工具,更應該是規劃設計者需要掌握的基礎知識。在實際規劃設計過程中,將傳統的規劃設計方法嚮地理信息係統方嚮轉化,從地理信息的角度管理、分析、研究、規劃設計項目,在一定程度上地理信息係統成為規劃整個流程的基礎框架,所有的規劃內容從地理信息數據的錄入與管理、對於地理信息數據的分析研究開始,從基於數據的本質內容規劃。
從地理信息係統角度切入規劃設計的方法主流是使用ArcGIS,由ESRI 齣品的一個地理信息係統係列軟件的總稱。ArcGIS 提供瞭豐富的地理信息數據管理和分析的工具,同時在不斷地拓展,並可以在地理處理中構建地理處理信息模型,流程化處理地理信息數據,然而當需要批處理地理信息數據,或者現有的ArcGIS 中的地理處理工具不能夠滿足分析研究的需求時,最直接的方式是使用程序語言自行編寫工具達到分析研究的目的。ArcGIS 已經開始支持並不斷拓展Python 支持的力度,從Python 語言自身發展的曆程和針對建築、規劃設計行業三維軟件平颱越來越多的支持,Python 必然成為針對規劃設計者的程序語言。ArcGIS 逐步地發展瞭ArcPy 站點包,提供使用Python 語言操作所有地理處理工具(包括擴展模塊)的入口,並提供多種有用的函數和類,以用於處理和詢問GIS 數據。使用 Python 和ArcPy,可以開發齣大量用於處理地理數據的實用程序。
程序語言在輔助規劃設計領域的優勢逐漸凸顯,對於規劃設計方法更高級技術的追求必然對規劃設計者提齣新的具有挑戰性的要求。編程語言的逐步發展和成熟為相關專業學科的發展奠定瞭堅實的基礎,然而由於編程語言發展階段的曆史原因,大部分規劃設計專業的院校並沒有開設編程語言課程和針對規劃設計領域的編程語言課程,因此大部分規劃設計者並不具有通過編程處理問題的能力。具備編程能力並不隻是針對專業開發人員的基本要求,規劃設計者應該成為具有編程能力的規劃設計者,從而更加自由並從全新的視角審視與解決問題,而不必求助於專業開發人員。具有編程能力的規劃設計者將具有更強解決問題的能力以及拓展無限的創造力,自身的專業知識為如何編寫程序解決問題提供瞭最為直接的基礎,這是專業開發人員力所不能及。針對Python 編寫程序處理地理信息係統不僅提高瞭處理地理信息數據的效率,更是可以針對需要解決的問題構建處理問題的程序,從程序編寫的角度思考解決問題的方法。
本書對於ArcGIS 下Python 腳本使用方法的闡述是從Python 語言本身和基於ArcGIS的Python 兩個方麵同時著手,因此在閱讀本書時不需要預先具備Python 基礎知識。本書包括七個部分,Python 與ArcGIS,ArcGIS 下的地理數據與Python 數據結構,Python 的基本語句與使用Python 訪問地理數據,創建函數與使用Python 處理柵格數據,創建類與網絡分析,異常與錯誤,以及程序的魅力。主要闡述的邏輯綫存在並行的兩條綫,一個是針對Python 的,從對於Python 介紹、數據結構、基本語句到創建函數、創建類和異常;另一個是針對ArcGIS 下的Python ,從ArcPy 站點包、訪問以及管理地理信息數據的方法、處理要素類、處理柵格數據到網絡分析和與地理處理模型的結閤方法。兩條綫同時推進闡述,互相支持印證,並結閤實際解決問題的應用方法,例如如何轉化KML 文件和.dwg 格式文件並增加字段數據,以及適宜性分析柵格計算重分類的方法和尋找最近設施點的網絡分析,遺傳算法應用等。
結閤規劃設計專業闡述ArcGIS 下Python 編寫處理地理信息數據方法的專著也許本書是國內第一本,難免存在不妥之處,敬請批評指正,從而逐步修正和完善。
……
前言/序言
麵嚮設計師的編程設計知識係統PADKS:ArcGIS下的Python編程 數字時代的設計師,您是否渴望在空間數據處理與可視化領域擁有更強大的掌控力?是否希望將創意構想高效轉化為精準的空間分析成果?《麵嚮設計師的編程設計知識係統PADKS:ArcGIS下的Python編程》將是您開啓這一旅程的理想指南。 本書並非一本枯燥的技術手冊,而是專為渴望在GIS(地理信息係統)領域深化設計能力的設計師量身打造的實用知識體係。我們深知,優秀的設計不僅僅是美學的呈現,更是對數據邏輯的深刻理解和對工具的靈活運用。在當今數字化浪潮席捲的背景下,掌握編程能力已成為提升設計效率、拓展設計邊界的必然選擇。而ArcGIS作為行業內領先的GIS平颱,其強大的功能與Python語言的靈活性相結閤,為設計師帶來瞭前所未有的創作可能。 為何設計師需要學習Python編程與ArcGIS? 在傳統設計流程中,設計師常常依賴手動操作完成大量重復性的空間數據處理任務,這不僅耗時耗力,也容易引入錯誤。而Python作為一門易學易用的編程語言,其簡潔的語法和豐富的庫,能幫助您自動化繁瑣的數據準備、分析和製圖流程。結閤ArcGIS強大的空間分析功能,您將能: 告彆重復勞動,擁抱高效工作流: 通過編寫Python腳本,您可以輕鬆實現批量數據裁剪、重投影、屬性字段更新、空間連接等操作,將原本需要數小時甚至數天的工作量縮短至幾分鍾。想象一下,當您需要處理成百上韆個地塊的屬性信息時,一個簡單的腳本就能瞬間完成,讓您有更多精力投入到核心的設計構思中。 實現定製化分析,挖掘數據深層價值: ArcGIS提供瞭豐富的分析工具,但有時您可能需要進行更復雜、更具針對性的分析。Python的靈活性允許您調用ArcGIS的分析函數,並結閤其強大的數據處理能力,構建齣滿足您特定設計需求的定製化分析模型。例如,您可以開發腳本來模擬不同開發情景下的交通流量影響,或者評估不同區域的景觀敏感度。 精細化數據可視化,提升設計錶達力: 數據可視化是設計師傳達信息、呈現方案的關鍵。Python不僅能與ArcGIS的製圖功能無縫集成,還能利用matplotlib、seaborn等庫創造齣更為豐富、動態和交互式的數據可視化圖錶。您可以生成基於地理空間的數據熱力圖、密度圖、網絡分析可視化圖,將復雜的數據關係以直觀、引人入勝的方式呈現給客戶和團隊。 拓展設計邊界,探索新的設計可能: 掌握編程能力,意味著您不再僅僅是工具的使用者,更能成為工具的創造者。您可以開發自己的ArcGIS工具箱,定製化的插件,甚至構建Web GIS應用,將您的設計成果以更具互動性和可訪問性的方式呈現。這意味著您的設計將不再局限於靜態的圖紙,而是可以演變為動態的、可交互的數字體驗。 本書內容亮點與價值 《麵嚮設計師的編程設計知識係統PADKS:ArcGIS下的Python編程》旨在為您構建一個完整、係統的設計編程知識框架,讓您從零基礎快速上手,並逐步深入掌握ArcGIS與Python的結閤應用。本書的獨特之處在於: 以設計思維驅動學習: 不同於純粹的技術教程,本書始終將設計師的需求和工作流程置於核心。我們從設計師最常遇到的問題和最感興趣的應用場景齣發,引導您學習相關的Python編程概念和ArcGIS功能。例如,在講解數據連接時,我們會結閤實際的城市規劃設計案例,展示如何通過編程快速整閤多源異構的地理空間數據。 由淺入深,循序漸進的學習路徑: 無論您是否具備編程經驗,本書都為您設計瞭清晰的學習脈絡。從Python基礎語法、數據結構,到ArcGIS的Python API(ArcPy)入門,再到具體的空間數據處理、空間分析、地圖製圖與數據可視化,每一個章節都建立在前一章知識的基礎上,確保您能夠穩步提升。 豐富的實戰案例,直觀的學習體驗: 理論結閤實踐是本書的核心教學理念。我們精心設計瞭大量貼近實際設計工作的案例,涵蓋城市規劃、景觀設計、環境評估、交通分析等多個領域。您將跟隨案例一步步學習如何運用Python解決真實的設計問題,例如: 自動化地塊分析: 編寫腳本批量計算地塊的麵積、坡度、日照時長等,為方案選擇提供數據支持。 優化交通網絡設計: 利用ArcGIS的路徑分析和網絡分析工具,通過Python腳本模擬和評估不同道路布局對交通流量的影響。 創建交互式地圖報告: 學習如何使用Python生成包含空間數據和圖錶的報告,並考慮如何進一步將其轉化為Web端的交互式應用。 空間統計與模式識彆: 探索如何使用Python進行空間自相關分析、聚類分析,以發現隱藏在地理空間數據中的設計洞察。 自動化地形與地貌可視化: 學習如何利用DEM(數字高程模型)數據,通過Python腳本生成三維地形圖、等高綫圖,為景觀設計提供基礎。 深入講解ArcPy API,解鎖ArcGIS全部潛能: ArcPy是ArcGIS平颱的Python接口,它使得您能夠通過Python腳本調用ArcGIS中的幾乎所有工具和功能。本書將係統地介紹ArcPy的核心模塊,包括數據訪問、地理處理工具、空間分析、地圖自動化等,讓您能夠充分利用ArcGIS強大的空間處理能力。 精通數據錶達與可視化,讓設計更具說服力: 好的設計需要清晰有效的傳達。本書將引導您學習如何利用Python和ArcGIS的製圖功能,創建專業、美觀且信息豐富的地圖。從基礎的符號係統設置、標注樣式,到高級的地圖布局設計、圖層管理,再到動態可視化的探索,您將掌握將數據轉化為引人入勝視覺敘事的所有技巧。 培養麵嚮未來的設計思維: 在這個快速變化的時代,持續學習和適應新技術是設計師不可或缺的能力。《麵嚮設計師的編程設計知識係統PADKS:ArcGIS下的Python編程》不僅教會您一項技能,更是為您打開瞭一扇通往更廣闊設計可能的大門,幫助您建立麵嚮未來的設計思維模式,成為具備復閤型能力的設計領軍者。 您將收獲什麼? 通過學習本書,您將能夠: 顯著提高工作效率,節省寶貴的設計時間。 深入理解空間數據,挖掘設計背後的邏輯。 掌握強大的空間分析技能,為決策提供科學依據。 創作更具創意和錶現力的地理空間可視化作品。 提升在團隊中的競爭力,成為更具價值的設計師。 為未來數字化設計領域的發展奠定堅實的基礎。 本書適閤誰? 城市規劃師、景觀設計師、建築師: 希望通過編程提升空間數據處理、分析和可視化能力。 GIS從業者: 希望在設計應用方麵深化Python技能,將其與ArcGIS結閤。 對空間信息和數據分析感興趣的設計領域學生: 希望掌握一項能夠顯著提升設計能力的硬技能。 任何希望在空間數據領域實現自動化、定製化工作流程的設計專業人士。 現在,是時候擁抱技術,革新您的設計方式瞭!《麵嚮設計師的編程設計知識係統PADKS:ArcGIS下的Python編程》將是您在這個數字化時代脫穎而齣的最佳夥伴。讓我們一起,用代碼賦能設計,用數據驅動創意,開啓無限可能!