Saya harus mengunggah file GeoTiFF ke dalam database PostGIS / PostgreSQL dan saya baru mengenal raster2pgsql.
Bagaimana cara menjalankan perintah raster2pgsql di konsol 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
sumber
sumber
Jawaban:
+1 untuk jawaban NettaB tetapi hanya ingin menambahkan bahwa jika semua file tiff Anda berada di folder yang sama, Anda harus dapat menyelesaikan ini menggunakan perintah tunggal (baik itu dari baris perintah atau melalui subproses dengan Python):
Ini akan membuat tabel baru bernama schema.target_table dan mendorong data ke dalamnya. Jika Anda memerlukan lebih banyak info tentang sakelar untuk digunakan, halaman ini bermanfaat - dan termasuk beberapa contoh.
Dengan implementasi Python Anda tidak perlu menggunakan Psycopg kecuali Anda berencana untuk mengeksekusi query SQL - jika Anda hanya memuat data secara langsung, Anda hanya perlu utilitas raster2pgsql. Jadi kode Anda dapat disesuaikan dengan:
sumber
Berikut ini adalah skrip yang melakukan iterasi pada semua raster tiff di folder dan membuat tabel dengan ukuran ubin otomatis untuk masing-masing (berdasarkan tautan ini ):
sumber