會想去碰觸這個主題,是因為有一次和Marr無意間聊起Python對於GIS的影響。在尋找相關的資料時,受到James Fee的二篇文章”2011 — the Year Python Takes Over GIS” 和”2011 Was the Year of Python“的感召,加上「那些年」熱潮下,定了這個名字,如果你是因為這個keyword,不小心走進來的,跟你說聲「歹勢啦!」。
事實上,近年來我們觀察到Python在GIS領域所佔的比重有逐漸增加,無論是Open sources, 還是 commercial software 都有這個現象。OSGeo的wiki 上列出以 python為基礎的套件和軟體,除了核心基本的套件—GDAL和PROJ4有Python binding,Mapserver、QGIS和老牌的GIS open source – GRASS都支援 Python,另外,許多人文地理學者、空間經濟學家或社會學家會用到的GeoDa,也有Python 的套件—PySAL,當然也有套件Rpy支持python來使用統計軟體R,對於學術研究或教學而言,Python所提供的套件是相當充足的。
再來看看commercial的,ESRI 是最大的 GIS 軟體商,他們的GIS軟體ArcGIS在10版後,改為使用Python來擴充使用者對於軟體的使用,然而,ArcGIS 9還是用Visual Basic,在遠古時代的版本,ArcView 是以 Avenue,Arc/Info 是用AML(Arc Macro Language),二者都是ESRI為自家軟體所發展的語言,ArcGIS或早期的ArcView都是Desktop GIS,雖然使用上便利,許多命令的執行可透過在視窗上的命令列來執行,但許多情況預設的命令是無法滿足一些複雜的空間運算,或runtine 的工作,因此ESRI的軟體,一直以來都保持與一個腳本語言一起運作的模式,而ESRI在本身軟體發展愈來愈複雜的同時,他們並沒有繼續發展自家的腳本語言Avenue,先使用了VBA ,之後再用python,這是一個很有趣的現象,ESRI 看到了什麼?使他們選擇Python,而不是其它的腳本語言,如Ruby呢?讓我們看下去…..
Geospatial training services newsletter列出10個學Python來使用ArcGIS的理由,很明顯地,Python可以被用來在ArcGIS上處理複雜的分析且Python是一個簡單易學的語言。事實上,Python被認為是地理資訊專家和程式設計者的橋樑,ESRI 有更大企圖心想把他們的產品向資訊社群推,而不單純只在地理資訊社群,況且自已軟體商本身來設計和維護一套程式語言,對於以地理資訊軟體為主的公司,並不是一件明智之舉,他們須花更多人力資源在程式本身的scalability, reliability 和 compatibility,既然只是用來擴充自家產品的語言,何需自已設計一套,陷入wheel reinvention,況且已存在的general purpose語言有一堆,使用者多,程式的體質好的語言更是不勝枚舉,沒道理去自已搞一套!? 所以一開始ESRI導向使用VBA,有一陣子VBA是很熱門,加上Microsoft的推波助瀾,ESRI 在軟體由ArcView 3.x 升級為ArcGIS 8.x 時,也將由自家的Avenue 改為VBA,相關的VBA套件使ArcGIS的擴充變得更fancy,但VBA是Microsof為自家產品所設計的語言,並不為地理資訊所設計,ArcGIS 雖然與Windows 其它的軟體和應用程式整合的更好,但地理資訊本質上所追求的地理空間分析功能並沒有強化,另一方面,Python 算是geospatial open source的異軍突起,在C++和Java二大社群下,發展出來的另一個大的geospatial open source 社群,之前提到的已經有許多binding的libraries可以使用,在這種情勢下,商業軟體見風轉舵,也不是一見稀奇的事,因此在ArcGIS 10之後的版本,將Python納為ArcGIS中的重要一部份,即為正式的ArcGIS腳本語言,即ArcPy,ESRI 也極力推廣 Python在 ArcGIS 上的使用,不但有許多的desmonstrations、tutorials、workshops及official training courses。
Top 10 Reasons to Learn Python for ArcGIS
- Automate your repetitive GIS tasks through Python scripts and free up your time for more important analysis work.
- ESRI has fully embraced Python as its language of choice for geoprocessing.
- Easy language to learn.
- Automate map production and creation of PDF map books.
- Find and fix broken data sources in your map document files.
- Manage data within map document files by adding, inserting, or removing layers.
- Analyze, convert, and publish your data to ArcGIS Server.
- Create your own custom tools that can be integrated with ArcToolbox and shared with others.
- Integrated with ModelBuilder for complex geoprocessing workflows
- Add, edit, and delete records from tables and feature classes