# -*- coding: utf-8 -*-
"""M2 Bab 1: memasukkan berkas GeoPackage ke PostGIS memakai GDAL (setara ogr2ogr).
Penulis: Badar Mubarok Yogaswara
Pemakaian: python-qgis.bat m2_01b_impor.py <folder paket-m2>
Koneksi dibaca dari variabel lingkungan standar PostgreSQL: PGHOST, PGPORT, PGUSER, PGPASSWORD, PGDATABASE.
Kata sandi tidak pernah ditulis di skrip."""
import os
import sys
from osgeo import gdal

gdal.UseExceptions()
paket = sys.argv[1]
tujuan = "PG:dbname=%s" % os.environ.get("PGDATABASE", "kph_contoh")
# (berkas, layer sumber, nama tabel, jenis geometri)
daftar = [("Petak.gpkg", "Petak", "petak", "MULTIPOLYGON"),
          ("Tanah.gpkg", "Tanah", "tanah", "MULTIPOLYGON"),
          ("Jalan.gpkg", "Jalan", "jalan", "MULTILINESTRING"),
          ("Fasilitas.gpkg", "Fasilitas", "fasilitas", "POINT"),
          ("Kejadian.gpkg", "Kejadian", "kejadian", "POINT"),
          ("Stasiun_Hujan.gpkg", "Stasiun_Hujan", "stasiun_hujan", "POINT"),
          ("Batas_Wilayah.gpkg", "Batas_Wilayah", "batas_wilayah", "MULTIPOLYGON")]
for berkas, layer, tabel, gtype in daftar:
    opsi = gdal.VectorTranslateOptions(
        format="PostgreSQL", layerName=tabel, geometryType=gtype, accessMode="overwrite",
        layerCreationOptions=["SCHEMA=kph", "GEOMETRY_NAME=geom", "FID=gid", "SPATIAL_INDEX=GIST", "OVERWRITE=YES"],
        srcSRS="EPSG:32749", dstSRS="EPSG:32749", reproject=False)
    gdal.VectorTranslate(tujuan, os.path.join(paket, berkas), options=opsi, layers=[layer])
    print("dimasukkan:", tabel)
