QGIS+Conda+jupyter玩轉Python GIS

2021-02-20 Python大數據分析

本文完整代碼及數據已上傳至我的Github倉庫https://github.com/CNFeffery/DataScienceStudyNotes

❞1 簡介

QGIS隨著近些年的發展,得益於其開源免費的特點,功能不斷被世界各地的貢獻者們開發完善,運算速度也非常出色,使得越來越多的Giser們從臃腫緩慢的Arcgis等傳統平臺轉向QGIS。

圖1

最重要的是,QGIS面向Python的接口PyQgis不僅可以用來開發QGIS插件,還可以配合Conda完美地避開路徑配置的過程,直接與Conda虛擬環境集成在一起,從而隨心所欲地在jupyter notebook之類的編輯器中書寫Python代碼調用各種QGIS中的地理計算功能,進而彌補geopandas在某些功能上的尚未完善之處。

圖2

本文就將為大家展示如何集成QGIS到Conda環境裡,並基於建好的環境在jupyter lab中調用QGIS從而解決實際計算問題。

2 配置環境&功能演示

接下來我們從0開始,完整地展示如何構建QGIS+Conda+jupyter lab的集成。

在已經正確安裝和配置anaconda或miniconda的機器上,在終端執行conda create -n QGIS python=3.7 -y來建立一個Python虛擬環境,這裡選擇3.7版本的Python。

圖3

接下來我們執行conda activate QGIS激活剛剛創建好的環境之後,接著執行conda install -c conda-forge qgis -y來直接安裝QGIS相關組件。

如果你的下載過程非常緩慢且你沒有「特殊」的上網技巧,可以將-c參數後的源更換為國內的清華大學對應鏡像(https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge),因為QGIS本身有著一定的體積且依賴包眾多,這一步耐心等待完成即可。

安裝成功後,直接執行qgis命令就可以打開傳統的帶界面的QGIS應用:

圖4

但這並不是本文的重點,我們關注的是如何實現在jupyter lab裡寫代碼調用QGIS功能,接下來我們來安裝jupyter lab:

conda install nodejs jupyterlab -y

安裝完成後我們執行jupyter lab來啟動它:

圖5

接著我們創建新的notebook,測試一下QGIS是否可以正確導入:

圖6

如果你可以成功執行上述代碼,那麼恭喜你已經完成了所有環境配置工作,因為是集成在conda虛擬環境中的,所以我們免去了所有配置QGIS相關路徑的工作(爽翻了是不是~)。

為了方便下面的功能演示我們順便把geopandas也安裝了:

conda install -c conda-forge geopandas -y

接下來我們先來查看所有可用的QGIS中的算法功能:

# 查看可用的所有QGIS功能
from processing.core.Processing import Processing
from qgis.analysis import QgsNativeAlgorithms

Processing.initialize()
QgsApplication.processingRegistry().addProvider(QgsNativeAlgorithms())
for alg in QgsApplication.processingRegistry().algorithms():
        print(alg.id(), "中的", alg.displayName(), '可用!')

輸出的結果內容非常之多,可以說囊括了我們常用的所有QGIS功能,譬如「漁網創建工具」

圖7

正好geopandas中沒有現成的創建漁網功能,下面我們就以為「重慶市創建漁網為例」

首先我們導入對應的重慶市域矢量文件,這裡的可視化需要matplotlib和descartes兩個庫的支持,請確保已經安裝好它們:

import geopandas as gpd

# 從矢量文件創建QGIS圖層
chongqing = QgsVectorLayer('重慶市.geojson')

gpd.read_file('重慶市.geojson').plot();

圖8

接著我們就需要使用到前面列印功能列表時看到的Create grid功能,通過下面的方式可以查看所有在功能列表中出現的算法:

from processing import algorithmHelp

# 查看漁網創建工具的說明文檔
algorithmHelp("native:creategrid")

圖9

如果你使用過QGIS中的「漁網創建工具」,通過閱讀上述的參數說明一定很快就能明白各個參數的意義,下面我們根據自己的需求創建10000x10000米的正方形漁網:

from processing import run

chongqing = gpd.read_file('重慶市.geojson')

# 獲取投影坐標系下的bbox信息
total_bounds = chongqing.to_crs('EPSG:2381').total_bounds

params = {
    'INPUT': chongqing,
    'TYPE': 2,
    'EXTENT': f'{total_bounds[0]},{total_bounds[2]},{total_bounds[1]},{total_bounds[3]}',
    'HSPACING': 10000,
    'VSPACING': 10000,
    'HOVERLAY': 0,
    'VOVERLAY': 0,
    'CRS': 'EPSG:2381',
    'OUTPUT': '重慶10000x10000漁網測試.geojson' # 導出到外部GeoJSON文件
}

feedback = QgsProcessingFeedback()
run("native:creategrid", params, feedback=feedback)

在QGIS中查看漁網結果:

圖10

通過geopandas查看坐標參考系信息:

圖11

通過這樣的方式,我們就可以實現在外部編輯器中靈活調用QGIS工具的目的。

以上就是本文的全部內容,歡迎在評論區與我進行討論~

相關焦點

  • 【入門基礎】conda+jupyter玩轉數據科學環境搭建
    2.2 配置jupyter lab類似conda,jupyter也分為jupyter notebook和jupyter lab,兩者核心功能都差不多。但jupyter lab擁有更多的拓展功能,並且界面和操作方式也更加炫酷方便,所以本文選擇jupyter lab。
  • Python學習|Anaconda、Jupyter Notebook、pycharm安裝使用詳解
    python的情景,有了 Anaconda,你無需切換到不同的環境,因為conda是一個環境管理器,可以創建獨立的 python 運行環境。只需要幾條命令,你就可以創建一個完全獨立的 python 環境來運行不同的 python 版本。除此之外,conda 創建的不同環境在安裝軟體包時,是共享的,這樣可以避免軟體安裝包的冗餘。
  • Python從入門到大師教程 | 二、搭建Jupyter Notebook環境
    4、虛擬環境搭建在創建的虛擬環境上運行jupyter notebook,但發現在notebook中的python其實並沒有運行在指定的虛擬環境引擎上,只需要安裝nb_conda_kernels5、 修改jupyter notebook的打開路徑安裝好jupyter notebook 後打開的是默認文檔位置,需要來修改存放文件的路徑。
  • Conda太慢?試試這個加速工具!
    2 Mamba的使用2.1 初識Mamba 首先我們需要安裝Mamba,既然是用來加速Conda,那麼我們可以直接使用下列命令來安裝Mamba:conda install -c conda-forge mamba
  • Python系列特別篇-Conda和JupyterLab
    /Users/h2r/Public/anaconda/envs/py37root * /Users/h2r/Public/anaconda創建環境命令:conda create -n ENV_NAME python=PYTHON_VERSIONmybook
  • 亞馬遜雲教程4:安裝Anaconda,多python環境,運行jupyter notebook
    環境管理軟體conda,創建並管理多個python環境,後臺運行jupyter notebook,然後在瀏覽器中運行python代碼。目前流行的有python2.7和python3系列的版本。我們安裝的是Anaconda3,自帶的是python3.6的版本。所以當我們直接在命令行輸入 python時,調用的就是python3.6了。不過我們可以使用 conda去安裝其他版本的python。下面的命令在伺服器上運行。
  • jupyter 安裝和使用--從零開始
    一、安裝python和R1、如果有root權限,可以直接 yum 安裝python: yum install pythonR:yum install epel-releaseyum install R2.無root權限:下載conda2或者conda3(1)安裝conda,按照說明輸入即可sh Anaconda3
  • Conda/Bioconda實際使用體驗分享
    的經歷:最初是由於安裝幾個科學計算相關的python包出錯,尤其是Scipy包,如果直接使用pip install的方式必然會安裝失敗,雖然後面找到了解決方案,但同時搜到了一堆人推薦使用conda來管理python包的文章,本著試一試態度,就安裝了一次,不過由於當時的工作任務主要是在Windows平臺上進行,使用conda並沒有給我帶來什麼方便之處,然後就將其遺棄了,這是我與conda的第一次邂逅~
  • 安裝Jupyter
    在線課程_中國大學MOOC實戰平臺超好用的IDE:Jupyter ,支持python\R\C++\Julia
  • 在jupyter notebook中同時安裝python2和python3
    之前討論過在anaconda下安裝多個python版本,本期來討論下,jupyter notebook中怎樣同時安裝python2.7 和python3
  • 【Python】conda和jupyter notebook使用
    Jupyter Notebook是Ipython的升級版,而Ipython可以說是一個加強版的交互式 Shell,也就是說,它比在terminal裡運行python會更方便,界面更友好,功能也更強大。安裝指南網址:https://jupyter.org/install.html啟動命令:jupyter notebook使用1、新建:2.點擊Python3 出現框叫做單元格,你可以把你的代碼分成一段段的單元格輸入
  • Jupyter notebook使用指南
    主要是針對python,另外支持運行 40 多種程式語言。Jupyter可以在個人機器開發,也可以連接到集群中使用分布式計算引擎spark等以及資料庫(mysql/hive/hdfs)。Jupyter相對於其他python編程工具來說,除了通常的新建、刪除、更改、下載編程文件外,還支持在線編程運算可幫助持續開發,特別在企業中有些項目需要持續很長時間的開發,每天下班後關閉jupyter,只要伺服器的kernel不關閉,jupyter會保存好開發時的數據緩存和可視化結果,第二天繼續開發,而不用又從頭再運行,再配合支持markdown的功能,使得jupyternotebook
  • Jupyter Notebook基本使用
    支持使用pandas、scikit-learn、ggplot2、TensorFlow等同時使用一份數據安裝本人一直以來都是使用anaconda工具包,因為它不僅包含python的環境,還包括了很多常用的科學計算包及其依賴庫,非常方便 懶人 使用。幸運的是jupyter notebook也在其中,這樣我們就可以直接開箱即用了。
  • 【Python】值得推薦的12個jupyter lab插件
    圖1本文就將給大家介紹在我的日常工作中經常使用到的12個jupyter lab實用插件。2 jupyter lab實用插件推薦2.1 debugger在jupyter notebook或jupyter lab中debug有多麼蛋疼,嘗試過的朋友們應該都有所體會。
  • Python 編輯器界的神器 Jupyter ,推出官方可視化 Debug 工具!
    如果讀者想要安裝這個新工具,那麼首先你需要為 JupyterLab 裝前端插件:jupyter labextension install @jupyterlab/debugger至於後端 Kernel,Jupyter 團隊表示目前 kernel 需要實現 Jupyter Debug Protocol,因此暫時只能用 xeus-python
  • 官方出品 Python 編輯神器 Jupyter ,首款可視化 Debug 工具
    如果讀者想要安裝這個新工具,那麼首先你需要為 JupyterLab 裝前端插件:jupyter labextension install @jupyterlab/debugger至於後端 Kernel,Jupyter 團隊表示目前 kernel 需要實現 Jupyter Debug Protocol,因此暫時只能用xeus-python:
  • Python編程神器Jupyter Notebook使用的28個秘訣
    Jupyter Notebook是什麼Jupyter Notebook,以前稱為IPython Notebook,是一種靈活的python編程工具,可以用來創建可讀的分析。在Jupyter Notebook上可以將代碼、圖像、注釋、公式和可視化結果保存在一起。
  • win10系統jupyter notebook無法打開虛擬環境,自動補全,無法找到程序輸入點的解決方法
    問題1:conda的虛擬環境下打開jupyter notebook,無法進入該虛擬環境的內核
  • Python 編輯神器 Jupyter ,推出首款官方可視化 Debug 工具!
    回復「pythonpdf「,立刻領取100本全品類Python電子書
  • 現代Python必學工具--Jupyter Notebook
    參加官方文檔https://jupyter-notebook.readthedocs.io/en/stable/notebook.htmlJupyterNotebook安裝方法如果你是小白,那麼建議你通過安裝Anaconda來解決Jupyter Notebook的安裝問題,因為Anaconda已經自動為你安裝了Jupter Notebook及其他工具,還有python中超過180個科學包及其依賴項,非常方便使用。