Je dois télécharger des fichiers GeoTiFF dans une base de données PostGIS / PostgreSQL et je suis nouveau sur raster2pgsql.
Comment exécuter une commande raster2pgsql dans la console Python?
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
eclipsed_by_the_moon
la source
la source
Réponses:
+1 pour la réponse de NettaB, mais je voulais juste ajouter que si tous vos fichiers tiff sont dans le même dossier, vous devriez pouvoir accomplir cela en utilisant une seule commande (que ce soit à partir de la ligne de commande ou via un sous-processus en Python):
Cela va créer une nouvelle table nommée schema.target_table et y pousser les données. Si vous avez besoin de plus d'informations sur les commutateurs à utiliser, cette page est utile - et comprend quelques exemples.
Avec l'implémentation Python, vous n'avez pas besoin d'utiliser Psycopg sauf si vous prévoyez d'exécuter des requêtes SQL - si vous chargez simplement les données directement, vous n'avez besoin que de l'utilitaire raster2pgsql. Ainsi, votre code peut être adapté à:
la source
Voici un script qui itère sur tous les rasters tiff d'un dossier et crée un tableau avec une taille de tuile automatique pour chacun (basé sur ce lien ):
la source