Tenho que fazer upload de arquivos GeoTiFF em um banco de dados PostGIS / PostgreSQL e sou novo no raster2pgsql.
Como executo um comando raster2pgsql no console do 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
fonte
fonte
Respostas:
+1 para a resposta do NettaB, mas apenas gostaria de acrescentar que, se todos os seus arquivos tiff estiverem na mesma pasta, você poderá fazer isso usando um único comando (seja na linha de comando ou via subprocesso em Python):
Isso criará uma nova tabela denominada schema.target_table e enviará os dados para ela. Se você precisar de mais informações sobre os comutadores a usar, esta página é útil - e inclui alguns exemplos.
Com a implementação do Python, você não precisa usar o Psycopg, a menos que planeje executar consultas SQL - se estiver apenas carregando os dados diretamente, precisará do utilitário raster2pgsql. Portanto, seu código pode ser adaptado para:
fonte
Aqui está um script que itera em todos os rasters de tiff em uma pasta e cria uma tabela com tamanho de bloco automático para cada um (com base neste link ):
fonte