.. SPDX-FileCopyrightText: 2021 cusy GmbH .. .. SPDX-License-Identifier: BSD-3-Clause Laden von Geodaten ================== Nun Laden wir einige Geodaten in unsere Datenbank, damit wir uns mit den Tools und Prozessen zum Abrufen dieser Daten vertraut machen können. `Natural Earth `_ bietet eine großartige Quelle für Basisdaten für die ganze Welt in verschiedenen Maßstäben. Und sas Beste ist, dass diese Daten gemeinfrei sind: #. Herunterladen der Daten .. code-block:: console $ mkdir nedata $ cd !$ cd nedata $ wget https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip #. Entpacken der Datei .. code-block:: console $ sudo apt install unzip $ unzip ne_110m_admin_0_countries.zip Archive: ne_110m_admin_0_countries.zip inflating: ne_110m_admin_0_countries.README.html extracting: ne_110m_admin_0_countries.VERSION.txt extracting: ne_110m_admin_0_countries.cpg inflating: ne_110m_admin_0_countries.dbf inflating: ne_110m_admin_0_countries.prj inflating: ne_110m_admin_0_countries.shp inflating: ne_110m_admin_0_countries.shx #. Laden in unsere ``postgis_db``-Datenbank Die Dateien ``.dbf``, ``.prj``, ``.shp`` und ``.shp`` bilden ein sog. ShapeFile, ein beliebtes Geodaten-Datenformat, das von der GIS-Software verwendet wird. Um dies in unsere Datenbank zu laden, benötigen wir zusätzlich `GDAL `_, die *Geospatial Data Abstraction Library*. Wenn wir GDAL installieren, erhalten wir auch OGR, *OpenGIS Simple Features Reference Implementation*, eine Vektordaten-Übersetzungsbibliothek, mit der wir das Shapefile in Daten übersetzen können. #. GDAL kann un einfach mit dem Paketmanager installiert werden: .. code-block:: console $ sudo apt install gdal-bin #. Anschließend wechseln wir in den ``postgresql``-User: .. code-block:: console $ sudo -i -u postgres #. Nun konvertieren wir das Shapefile mit ``ogr2ogr`` und importieren es in unsere Datenbank: .. code-block:: console $ ogr2ogr -f PostgreSQL PG:dbname=postgis_db -progress \ -nlt PROMOTE_TO_MULTI \ /srv/jupyter/nedata/ne_110m_admin_0_countries.shp 0...10...20...30...40...50...60...70...80...90...100 - done. ``-f PostgreSQL`` gibt an, dass das Ziel eine PostgreSQL-Datenbank ist ``PG:dbname=postgis_db`` gibt den PostgreSQL-Datenbanknamen an. Neben dem Namen können so auch weitere Optionen angegeben werden, allgemein: .. code-block:: PG:"dbname='db_ename' host='addr' port='5432' user='x' password='y'" ``-progress`` gibt einen Fortschrittsbalken aus ``-nlt PROMOTE_TO_MULTI`` gibt an, dass alle Objekttypen als Multipolygone in die Datenbank geladen werden sollen ``/home/veit/nedata/ne_110m_admin_0_countries.shp`` gibt den Pfad zur Eingabedatei an .. seealso:: * `ogr2ogr `_ #. Überprüfen des Imports mit ``ogrinfo`` .. code-block:: console $ ogrinfo -so PG:dbname=postgis_db ne_110m_admin_0_countries Output INFO: Open of `PG:dbname=postgis_db' using driver `PostgreSQL' successful. Layer name: ne_110m_admin_0_countries Geometry: Multi Polygon Feature Count: 177 … #. Alternativ können wir uns auch einzelne Tabellen auflisten lassen: .. code-block:: console $ psql -d postgis_db postgis_db=# \dt List of relations Schema | Name | Type | Owner --------+---------------------------+-------+---------- public | ne_110m_admin_0_countries | table | postgres public | spatial_ref_sys | table | postgres (2 rows) #. Schließlich können wir uns bei der Datenbank abmelden mit .. code-block:: console psql> \q .. seealso:: * `PostGIS Reference `_