Tengo que cargar archivos GeoTiFF en una base de datos PostGIS / PostgreSQL y soy nuevo en raster2pgsql.
¿Cómo ejecuto un comando raster2pgsql en la consola de 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
eclipsado_por_la_luna
fuente
fuente
Respuestas:
+1 para la respuesta de NettaB, pero solo quería agregar que si todos sus archivos tiff están en la misma carpeta, debería poder lograr esto usando un solo comando (ya sea desde la línea de comandos o mediante un subproceso en Python):
Esto creará una nueva tabla llamada schema.target_table e insertará los datos en ella. Si necesita más información sobre los interruptores para usar, esta página es útil e incluye algunos ejemplos.
Con la implementación de Python, no necesita usar Psycopg a menos que planee ejecutar consultas SQL; si solo carga los datos directamente, solo necesita la utilidad raster2pgsql. Entonces su código se puede adaptar a:
fuente
Aquí hay una secuencia de comandos que itera en todos los rásteres tiff en una carpeta y crea una tabla con tamaño de mosaico automático para cada uno (basado en este enlace ):
fuente