Anhang

Anhang 1: Probleme mit Conda: Umlaute im Bentzernamen

Alle conda environments werden an einem zentralen Ort gespeichert. Typischerweise im folgenden Verzeichnis: C:\Users\DEIN-WINDOWS-BENUTZERNAME\AppData\Local\ESRI\conda\envs\. Wenn ihr Umlaute in eurem Windows Benutzernamen habt, findet conda eure environment möglicherweise nicht. Eine Möglichkeit, dieses Problem zu beheben, ist einen alternativen Speicherort für eure conda environments zu definieren. Dazu geht ihr wie folgt vor1:

  1. Überlege dir eine Location, wo du deine conda nvironments abspeichern möchtest (z.B. C:\conda-envs). Erstelle diesen Ordnerpfad und prüfe ob du dort Schreibrechte hast indem du in diesem Orner C:\conda-envs eine Dateie erstellst. Wenn das klappt, hast du Schreibrechte.

  2. Füge diesen Pfad deiner conda configuration hinzu:

    conda config --append envs_dirs C:\conda-envs
  3. Prüfe ob der letzte Schritt funktioniert hat indem du folgendem Befehl laufen lässt und prüfst, ob C:\conda-envs vorkommt:

    conda config --show envs_dirs
  4. Erstelle eine neue conda environment in dieser neu erstellten directory:

    conda create --prefix=C:\conda-envs\geopython
  5. Prüfe, ob das geklappt hat, indem du die verfügbaren environments auflistest.

    conda info --envs
  6. Wenn das geklappt hat, kannst du nun deine environment aktivieren

    conda activate geopython

Anhang 2: Conda und arcpy

Um die ganzen Befehle von ArcGIS direkt in Python ansteuern zu können, muss das package arcpy installiert werden. Bisher haben wir alle unsere Packages mit conda installiert, z.B:

conda install -c conda-forge geopandas

Mit arcpy geht dies leider nicht, weil arcpy ein kostenpflichtiges Modul ist welches eine ArcGIS Lizenz benötigt. Glücklicherweise nutzt ArcGIS aber auch Conda Environments. Wir müssen also nur bewerkstelligen, das Juypter Lab die gleiche Conda environment verwendet wie ArcGIS. Dazu gehen wir wie folgt vor:

  • Schritt 1: ArcGIS Python Umgebung Klonen
  • Schritt 2: Die neue Environment aktivieren
  • Schritt 3: weitere Module installieren

Schritt 1: ArcGIS Python Umgebung Klonen

Zuerst prüfen wir die Python Umgebung in ArcGIS. Diese findet man in ArcGIS unter Project > Python

Hier ist einerseits die Project Environement ersichtlich (1), andererseits steht aber auch, dass diese Environment “read only” ist (2). Das bedeutet, dass wir keine neuen module installieren können, wenn wir diese Environment benutzen. Wir folgen deshalb den Vorschlag “Clone and activate a new environment”. Dazu klicken wir auf “Manage Environment” (3). Übrigens: Das ArcGIS Conda benutzt sehen wir an (4).

Klicke hier auf “Clone Default” um die Umgebung zu kopieren. Das dauert eine Weile, danach kann man die neue Environment auswählen (Klick auf den Button “Active”). Notiert dir den Namen der neuen Environment, speichere das ArcGIS Projekt ab und starte das ArcGIS neu

Schritt 2: Die neue Environment aktivieren

Nun haben wir uns eine wunderschöne Python Umgebung parat gemacht und können diese jetzt in CMD aktivieren. Starte dazu Command Prompt / CMD und schaue dir die verfügbaren environments an:

conda env list

Bei mir sieht der output folgendermassen aus:

# conda environments:
#
arcgisonline             C:\Users\rata\AppData\Local\ESRI\conda\envs\arcgisonline
arcgisonline2            C:\Users\rata\AppData\Local\ESRI\conda\envs\arcgisonline2
arcgispro-py3-clone      C:\Users\rata\AppData\Local\ESRI\conda\envs\arcgispro-py3-clone
arcgispro-py3-clone1     C:\Users\rata\AppData\Local\ESRI\conda\envs\arcgispro-py3-clone1
cameratraps-detector     C:\Users\rata\AppData\Local\ESRI\conda\envs\cameratraps-detector
geopython                C:\Users\rata\AppData\Local\ESRI\conda\envs\geopython
test                     C:\Users\rata\AppData\Local\ESRI\conda\envs\test
arcgispro-py3         *  C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3
root                     C:\Program Files\ArcGIS\Pro\bin\Python

Aktiviere nun die eben erstelle environment mit folgendem code (ersetzte name-der-environment mit dem tatsächlichen Namen deiner neuen environment aus dem letzten Schritt.

activate name-der-environment

Schritt 3: weitere Module installieren

Glücklicherweise ist jupyterlab bereits in der arcgis environment installiert, dies können wir mit folgendem code überprüfen:

conda list
# packages in environment at C:\Users\rata\AppData\Local\ESRI\conda\envs\arcgispro-py3-clone1:
#
affine                    2.3.0                      py_0    anaconda
arcgis                    1.8.2                 py36_1275    esri
arcgispro                 2.6                           0    esri
.
.
.
jupyterlab                2.2.9                      py_0    conda-forge
jupyterlab_pygments       0.1.2              pyh9f0ad1d_0    conda-forge
jupyterlab_server         1.2.0                      py_0    conda-forge
.
.
.

Wenn jetzt aber noch module fehlen (wie z.B. geopandas), dann können wir diese wie gewohnt installieren.

Schritt 4: arcpy verwenden

Wenn alles gewünschten Module installiert sind können wir nun JupyterLab starten.

Sobald JupyterLab gestartet ist, können wir innerhalb einer cell das Modul arcpy mit import arcpy importieren und nun auch verwenden. Zum Beispiel folgendermassen:

import arcpy
from arcpy import env

# Set environment settings
env.workspace = "C:/data/Habitat_Analysis.gdb"

# Select suitable vegetation patches from all vegetation
veg = "vegtype"
suitableVeg = "C:/output/Output.gdb/suitable_vegetation"
whereClause = "HABITAT = 1" 
arcpy.Select_analysis(veg, suitableVeg, whereClause)

Der Syntax ist auf jeder jeweiligen Tool Beschreibung gut dokumentiert (Abschnitt “Code Sample”, z.B. hier)

Anhang 3: JupyterLab mit R

Einige von euch kennen JupyterLab bereits aus dem Statistik Unterricht. Dort habt ihr JupyterLab mit R benutzt, dabei habt ihr aber nicht auf eurem lokalen PC, sondern auf einer gehosteten Version von JupyterLab gearbeitet, also auf einem Server. Dieser Server kann jeder Zeit wieder Offline geschaltet werden oder ihr könnt euren Zugriff darauf verlieren. Wenn ihr JupyterLab mit R lokal nutzen wollt, geht ihr wie folgt vor (Anleitung in Anlehnung an diesen Blogpost):

  1. In eurem Python Command Prompt erstellt ihr eine neue conda environment, aktiviert diese und installiert juypterlab sowie r-ikernel (letzteres aus dem channel r, nicht wie gewohnt conda-forge).

    conda create --name r-env
    conda activate r-env
    conda install -c conda-forge jupyterlab
    conda install -c r r-irkernel
  2. Nun ist R in eurer conda environment aktiviert. Nun könnt ihr mit folgenden Befehlen das Package IRkernel installieren sowie den Kernel für JuypterLab verfügbar machen.

    Rscript -e "install.packages('IRkernel', repos = 'https://cloud.r-project.org')"
    Rscript -e "IRkernel::installspec(user = FALSE)"
  3. Optional: Wenn ihr ein paar nützliche shortcuts für R haben wollt, könnt ihr die extension techrah/text-shortcuts mit folgender Zeile installieren.

    jupyter labextension install @techrah/text-shortcuts
  4. Nun könnt ihr JupyterLab starten und sollet nun einen R-Kernel zur Verfügung haben:

    jupyter lab
Abbildung 32.1: Nach den oben beschriebnen Schritten sollte nun ein R Kernel zur Verfügung stehen

  1. Aus: https://stackoverflow.com/a/67376348/4139249↩︎