那些年Python攻佔了GIS

會想去碰觸這個主題,是因為有一次和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

  1.  Automate your repetitive GIS tasks through Python scripts and free up your time for more important analysis work.
  2.  ESRI has fully embraced Python as its language of choice for geoprocessing.
  3.  Easy language to learn.
  4.  Automate map production and creation of PDF map books.
  5.  Find and fix broken data sources in your map document files.
  6.  Manage data within map document files by adding, inserting, or removing layers.
  7.  Analyze, convert, and publish your data to ArcGIS Server.
  8.  Create your own custom tools that can be integrated with ArcToolbox and shared with others.
  9.  Integrated with ModelBuilder for complex geoprocessing workflows
  10.  Add, edit, and delete records from tables and feature classes

 

增加10年功力的學術會議和一趟糟糕的旅程—空間資訊理論研討會 COSIT 2007

終於來到墨爾本, 但已一路千里迢迢地飛了上萬公里才到, 再坐上一個多小時的車, 才到Mt. Eliza的墨爾本商業學院, 好累!!

這是一個美麗的校園, 加上現是澳洲的春天, 百花爭艷, 美不勝收呀!!

在閒逛時,不經意的認識了二個從 Institute for Geoinformatics (ifgi), University of Muenster來的PhD學生, 後來聊一聊才知道其中之一還是ITC碩士畢業! 不過他們是workshop的Organizer, 了不起!!

 

COSIT是一個地理空間理論的會議,會議本身參加的人都是在這個領域頗有知名度的人,像David Mark, Max Egenhofer,平常都是唸他們的paper,但這幾天和他們同席而坐,聽他的talks,甚至和他們同座共餐,感覺特別不一樣。COSIT是在地理空間理論的領域,大家相互切磋武藝的地方,許多教授都帶著的他們自已的研究生來報告他們的研究,藉此也可以得到更多的feedback。雖然半年來的研究著重於ontology上,但三天下來的會議,讓我覺得還有許多知識與技術需要去更新、學習。博士生涯才剛開始,或許這何嘗不是很好的開始。

會議到第三天結束,本來想多待一天到Melbourne City看看,畢竟我來沒過澳洲。但前二天收到mail說我的到荷蘭的簽證已經可以領了,心中又萬般地急迫,想快一點將簽證的事情搞定,所以改了回台灣的時間,提前一天回家。因此我沒參加最後一天的Doctoral Colloquium,臨前和Mohamed說再見後,再度搭機場的shuttle Bus到機場,老實說,我跟本就不知道Melbourne downtown是如何?我的澳洲印象就只有機場和Melbourne Business School,相信還有機會再度到澳洲或是Melbourne的。

幾天下來的疲憊,加上天氣多變,在機場時,就己經感到不舒服了,所以到Drug Store去買了止咳的藥,沒想到上飛機後,情況開始變得的嚴重,不舒服外,還開始發燒。我不知道為什麼,Melbourne到Singapore的座位這麼小,加上我的座位在中間,旁邊被二個大個子外國人包的死死的,哇!!超痛苦。機上的娛樂系統有點問題,耳機一直都時好時壞,況且電影也沒什麼選擇,在到Melbourne也看的差不多,所以索性畫面停在飛航資訊的那一頁,祁求早點到達Singapore。就這樣看著螢幕上的飛機8個小時,半夢半醒地接近Singapore,然後降落在樟宜機場,心中大石落下,這時我必需找一個地方好好的休息,還好在機場找到轉機旅館,雖然不大,陽春,但還可以沖澡,就這樣在過境旅館睡了7個多小時。在休息之後,感覺好多了,飛了4個多小時再度回到熟悉的故鄉。

總而言之,我這次的Melbourne或COSIT’07之旅,是十分糟糕的一趟旅程。