為什麼選擇Python
個人微信號:361318358
本文有濃烈的個人偏好,每個語言都有各自的特點,選擇適合自己的就好。
本人在接觸Python之後,對其甚是喜歡。網上雖然有關於其在空間數據處理方面的中文文章,但總體不多。計劃寫一些關於Python在GIS和遙感等空間數據處理分析方面的應用。在後續的文章中將主要包括Python的入門、基本環境配置、常用工具包及其在遙感和GIS數據處理方面的基本應用。
前言
作為一個非計算機專業的人,接觸過的編程語言其實也不算少了。入門的經典C語言就不必說了,本科還曾經選修過VB和java(上完課就還給老師了),用過C#,C++做一些小軟體,現在主要用Python偶爾加R輔助,再加上曾嘗試寫過一兩行代碼的IDL和Matlab。正所謂貪多嚼不爛,哪一個都沒能精通甚至談的上熟練使用。出國留學之後,希望能做一些和機器學習相關的內容,網上搜羅一遍,看各種語言之爭,最後決定從Python入手,至少到目前覺得Python值得我投入那麼多時間去學習掌握它。
為什麼選擇Python
因為學會Python你就能飛了。。。
之前對於矢量或柵格數據的處理,非常嚴重的依賴於ArcGIS和ENVI,尤其是數據讀取,如ArcGIS 的.shp,ENVI的.img,以及LiDAR的.las等這類獨有的格式,離開了這些專業軟體基本就不知道該怎麼對付這類數據了。所以在選擇語言的時候,矢柵數據讀取以及數據基本分析(空間分析,遙感影像的)是否靈活方便很重要,這也是為什麼在學校時都是學的基於ArcGIS Engine和IDL二次開發(好像GIS專業的特長就是二次開發似的,總感覺這就像是軟體開發世界的二等公民)。Python在一定程度上能夠解決這個問題,不再依賴於特定的軟體平台,畢竟那些對工具依賴性強的工作,你的價值越依附於工具,你越是要警惕自己的思考能力被工具剝奪。
2. Python庫豐富可以說我在了解Python各種庫上面花費了很多時間,有時間應該整理一個表格分類列出來有用的工具包。至少,在矢量數據方面,有GDAL,Geopandas,leafet,rasterio;fiona而柵格數據方面,通用的圖像處理有opencv,scikit-image,用於遙感圖像的有spectral-python。更重要的是,如果想涉足機器學習,python更有從較通用的sklearn到深度學習的Tensorflow、keras等一大票工具包等著你。
3. Python資源多在此是指有問題基本都能在stackoverflow等找到答案,也有很多相關的書籍。
4. 代碼共享方便這裡特指Juypter Notebook的.ipynb文件。文字說明,代碼,圖在一個文件裡面,也可以在gist和nbviewer直接在線共享瀏覽,微軟和anaconda也提供了在線運行環境,申請個賬號就能直接運行代碼。
4. Python」上手快」
之所以列在最後,我對這點是有些質疑的。因為沒有一定的編程功底和對編程語言的理解,很難說的上上手快。裝個flask包,敲幾行代碼運行起來一個網站,不能稱之為上手了。我一開始對著些教程敲代碼,的確感覺python能在相對短的時間內,用較少的代碼完成一些複雜的工作,但都是在利用已有的工具包的情況下,當實際需要處理數據時,還是要非常頻繁的去google或翻之前的資料,很多情況都是沒有能夠深入的去理解。
Python能做什麼
對GIS和遙感數據來說,Python能做的事情,那簡直是不要太多。
1. 數據讀取和處理2. 腳本ArcGIS,ENVI等商業軟體都可以用Python做腳本語言,QGIS,SNAP和EnMAP等開源工具也用到了它。
3. 機器學習更時髦的詞,可以用地理空間智能,時空大數據等等。
4. Web開發GeoDjango
5. 桌面開發
Python結合tkinter和pyqt,也能勝任,但沒啥優勢可言。不過,貌似除了三維、VR/AR,普通的桌面開發也已經頹廢,被Web和移動端佔據了。
總結
一句話總結: Python的生態系統龐大,應用場景豐富。
推薦閱讀: