為什麼選擇Python

個人微信號:361318358

本文有濃烈的個人偏好,每個語言都有各自的特點,選擇適合自己的就好。

本人在接觸Python之後,對其甚是喜歡。網上雖然有關於其在空間數據處理方面的中文文章,但總體不多。計劃寫一些關於Python在GIS和遙感等空間數據處理分析方面的應用。在後續的文章中將主要包括Python的入門、基本環境配置、常用工具包及其在遙感和GIS數據處理方面的基本應用。

前言

作為一個非計算機專業的人,接觸過的編程語言其實也不算少了。入門的經典C語言就不必說了,本科還曾經選修過VB和java(上完課就還給老師了),用過C#,C++做一些小軟體,現在主要用Python偶爾加R輔助,再加上曾嘗試寫過一兩行代碼的IDL和Matlab。正所謂貪多嚼不爛,哪一個都沒能精通甚至談的上熟練使用。出國留學之後,希望能做一些和機器學習相關的內容,網上搜羅一遍,看各種語言之爭,最後決定從Python入手,至少到目前覺得Python值得我投入那麼多時間去學習掌握它。

為什麼選擇Python

因為學會Python你就能飛了。。。

1. 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的生態系統龐大,應用場景豐富。

推薦閱讀:

Python面試指南
redis 的常用命令
列表生成式版圖片拼接——知乎是喵多還是汪多系列

TAG:Python | GIS地理信息系统 | 遥感 |