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:

  1. Herunterladen der Daten

$ mkdir nedata
$ cd !$
cd nedata
$ wget https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip
  1. Entpacken der Datei

$ 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
  1. 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.

    1. GDAL kann un einfach mit dem Paketmanager installiert werden:

      $ sudo apt install gdal-bin
      
    2. Anschließend wechseln wir in den postgresql-User:

      $ sudo -i -u postgres
      
    3. Nun konvertieren wir das Shapefile mit ogr2ogr und importieren es in unsere Datenbank:

      $ 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:

      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

      Siehe auch

    4. Überprüfen des Imports mit ogrinfo

      $ 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
      
      
    5. Alternativ können wir uns auch einzelne Tabellen auflisten lassen:

      $ 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)
      
    6. Schließlich können wir uns bei der Datenbank abmelden mit

      psql> \q
      

Siehe auch