Ich muss GeoTiFF-Dateien in eine PostGIS / PostgreSQL-Datenbank hochladen und bin neu in raster2pgsql.
Wie führe ich einen Befehl raster2pgsql in der Python-Konsole aus?
import psycopg2
import subprocess
db_name = 'enter_qgiscloud_db'
db_host = 'db.qgiscloud.com'
db_user = 'enter_qgiscloud_user'
db_password = 'enter_qgiscloud_pw'
conn = psycopg2.connect( "dbname={0} host={1} user={2} password={3}".format( db_name, db_host, db_user, db_password ) )
cursor = conn.cursor()
cmds = 'raster2pgsql -s 3857 -p -Y -I -C -M C:\qgis_cloud_data\ -F -t auto .tif | psql'
subprocess.call(cmds, shell=True)
cursor.execute(cmds)
conn.commit()
qgis
postgis
raster2pgsql
verdunkelt durch den Mond
quelle
quelle
Antworten:
+1 für die Antwort von NettaB, wollte aber nur hinzufügen, dass Sie, wenn sich alle Ihre TIFF-Dateien im selben Ordner befinden, dies mit einem einzigen Befehl ausführen können sollten (sei es über die Befehlszeile oder über einen Unterprozess in Python):
Dadurch wird eine neue Tabelle mit dem Namen schema.target_table erstellt und die Daten werden in diese Tabelle verschoben . Wenn Sie weitere Informationen zu den zu verwendenden Schaltern benötigen, ist diese Seite hilfreich - und enthält einige Beispiele.
Mit der Python-Implementierung müssen Sie Psycopg nur verwenden, wenn Sie SQL-Abfragen ausführen möchten. Wenn Sie nur die Daten direkt in das Programm laden, benötigen Sie nur das Dienstprogramm raster2pgsql. So kann Ihr Code angepasst werden an:
quelle
Hier ist ein Skript, das alle TIFF-Raster in einem Ordner durchläuft und für jede Tabelle eine Tabelle mit automatischer Kachelgröße erstellt (basierend auf diesem Link ):
quelle