摘要: 毫無疑問,Python 已成為地理空間分析師和研究人員在更廣泛的 GIS 和空間分析工作中使用的主要計算機語言。對于那些有興趣了解更多的人,可能會出現一些重要的問題,例如為什么會變成這樣,最近的趨勢是什么? 在 GIS 中采用 Python GIS、地理空間分...
毫無疑問,Python 已成為地理空間分析師和研究人員在更廣泛的 GIS 和空間分析工作中使用的主要計算機語言。對于那些有興趣了解更多的人,可能會出現一些重要的問題,例如為什么會變成這樣,最近的趨勢是什么?
在 GIS 中采用 Python
GIS、地理空間分析和 Python 在過去十多年中共同經歷的巨大發展。最初,當 ArcGIS 和 QGIS 等主要 GIS 平臺開始采用 Python 作為主要的腳本、工具制作和分析語言時,計算機語言和地理空間平臺之間的這種結合就出現了。PostGIS 的出現及其對地理空間對象數據處理的關注,同時部署在許多 GIS 環境中,例如 QGIS、 ArcGIS 和 OpenStreetMap,都對此有所幫助。GRASS 等使用較少的平臺也是如此 。
也許對于用戶來說,采用 Python 的主要原因是 Python 易于學習、擅長數據操作,并且具有許多適用于或可以輕松適應地理空間分析的有用庫。Pandas 使數據操作、分析和數據處理比其他一些語言容易得多,而 GeoPandas 特別專注于使用常見空間對象以地理空間格式提供 Pandas 的優勢,并添加交互式繪圖和性能方面的功能。事實上,有許多 Python 庫可用并且列表還在增加,這有助于用戶有很多選擇來利用現有代碼并在工具中構建更強大的功能。
QGIS 等平臺允許用戶輸入自己的用 Python 構建的擴展,進一步鼓勵 GIS 專家開發和使用 Python。這種增長突顯出,隨著 GIS 用戶和地理空間分析師技能的發展,Python 可能是最值得關注的語言。相對于其他高級語言,Python 更易于使用,編碼風格靈活,可以應用于不同的范例,包括命令式、函數式、過程式和面向對象的方法。
流行的平臺還通過添加模型構建器幫助簡化函數編碼,模型構建器是有助于基本編程和組織的擴展,可鏈接用戶創建的數據和功能。
在 QGIS 中使用 GeoPandas 進行軌跡數據處理。
當然,Python 用戶發現存在一些問題和障礙。這包括常見的兼容性問題。當安裝的庫可能無法很好地協同工作或不同版本可能導致代碼出現異常時,寫得很好的說明和安裝文件可以幫助解決這個問題,但并不是所有的圖書館都有這個。有一些工具可以使庫安裝更容易,例如 Conda。Conda 的圖形界面是 Anaconda。用戶還可以訪問 PyCharm 和 Spyder等 Python 開發環境。
Python 還擴展到通過創建允許直接或類似使用其他語言的庫來合并其他語言的優勢。對于性能,C 語言長期以來一直是最好用的語言之一,Cython 為 Python 提供類似 C/C++ 的性能增強,Cython 通常用于幫助解決數據分析的速度和擴展等問題。
雖然 Scala 和 Java 等其他語言可能值得學習,例如在地理空間數據的大規模數據操作方面,但由于并行計算庫和更多工具利用圖形處理單元的優勢,我們越來越多地看到 Python 部署到大數據問題中( GPU)架構。
在 GIS 中使用 Jupyter Notebooks
對基于代碼研究的一種批評是難以復制結果和記錄發現。一組工具可以應用于 Python,但也可以應用于許多其他計算機語言,這是 Jupyter 工具系列,包括 Jupyter Notebooks。
Jupyter 工具有助于執行、記錄和顯示代碼的工作方式。Jupyter Notebooks 可能是該系列工具中最著名的一款。該工具允許編寫單元格或代碼塊,這些單元格或代碼塊可以直接將數據和代碼集成到小段中,這些小段也會在筆記本中顯示輸出。
這允許用戶查看給定代碼的工作方式,充當一種文檔或對文檔的幫助,并有助于了解給定代碼的作用。Jupyter Notebooks 已被比較或比作 Google Docs 的代碼,其中可以完成協作工作和共享給定部分的工作和顯示方式。
另一個很大的好處是 Notebooks 允許在不同的計算機語言之間進行切換。例如,許多地理空間項目使用 Python 來實現地理空間功能,使用另一種流行的分析語言 R 來進行可視化顯示或統計分析。擁有 Jupyter Notebook 可以讓顯示所使用的每種語言的代碼的不同部分,同時還允許顯示鏈接以允許在兩者之間開發可以復制的工作流。這可能基于每個 Notebooks 使用的不同內核。
出于地理空間目的,Jupyter Notebooks 可以更輕松地顯示視覺輸出并在團隊之間復制它,同時通過集成數據鏈接(包括大數據)更輕松地訪問數據。以前,用戶必須下載可能很大的數據文件,這使得復制變得困難或麻煩。對于科學家來說,這一點非常重要,因為這意味著研究可以更容易地從現有工作中驗證和構建。我們可以將 Jupyter Notebook 視為在一個環境中提供文檔、調試和執行的東西,這也使其對學習編碼很有用。
隨著 Python 的興起,例如在地理空間分析方面,可能不擅長編碼但想學習 Python 的人可以使用 Jupyter Notebooks 以簡單易用的方式學習部分代碼。JupyterHub 是一個擴展,可幫助使用 Jupyter 筆記本協作或服務多個用戶。它有助于安裝所需的庫,并允許合作者查看對方正在開發的內容,從而允許用戶進行編輯和輸入。
Jupyter 系列中的另一個工具是 JupyterLab,它允許基于 Web 的協作界面,還允許不同的數據格式。在共享和訪問 Jupyter 筆記本時,可以鏈接到用于開發的其他 Jupyter 工具。Voilà 工具是 Jupyter 工具系列的一部分,可用于幫助使用 JupyterLab 開發 Web 應用程序。
最終,學習和開發用于空間分析的 Python 工具的門檻變得更加容易,這意味著我們可能會看到 Python 在一段時間內繼續作為地理空間應用程序的主導語言。
拆分地圖功能是 ipyleaflet 包的一部分,ipyleaflet 包是 Jupyter 的交互式地圖可視化系統。
Python 已成為地理空間分析的主導語言,因其被主要的 GIS 平臺采用,但越來越多的用戶也看到了它在數據分析方面的潛力,并且其相對易于理解的語法有助于增加用戶數量?,F在有許多庫可以幫助用戶通過組合不同的庫來創建復雜的應用程序,有時只需要最少的代碼。
QGIS 等流行工具通過允許更廣泛的社區貢獻用 Python 編寫的插件來鼓勵使用 Python。Jupyter Notebooks 等工具還可以讓學習 Python、完成給定項目和復制結果變得更加容易。許多工具從一開始就作為開源軟件開發,并且易于訪問,進一步鼓勵了用戶。對于地理空間分析人員而言,Python 已成為開發應用程序和進行強大分析不可或缺的工具。