Lewati ke isi
Profil penulisSeri Buku GIS Kehutanan dan Pertanian/ I3
Tampilkan bagian untuk:

BAB 2: Satu Lemari untuk Semua Data: GeoPackage dan Geodatabase

#Studi kasus: "Kirimannya tidak lengkap"

Seorang surveyor mengirim hasil kerja lewat pesan. Hanya satu berkas yang sampai, yaitu .shp. Berkas .dbf yang memuat atributnya tertinggal. Fotonya ada di folder lain. Saat Anda memperbaikinya, kolom Diameter_cm ternyata terpotong menjadi Diameter_c.

Kepala Seksi bertanya, "Bisa tidak semuanya dibungkus jadi satu?" Bisa. Bab ini membahas dua pembungkus yang dipakai di dunia GIS: GeoPackage dan file geodatabase.

#Konsep: wadah data dalam tiga kalimat

Wadah data adalah tempat layer dan tabel disimpan. Shapefile seperti kertas-kertas lepas yang harus dibawa bersamaan, sedangkan GeoPackage seperti satu ordner yang memuat semuanya. File geodatabase adalah ordner serupa buatan Esri, yang tampil sebagai folder berakhiran .gdb.

Istilah baru bagian ini:

  • GeoPackage: satu berkas berekstensi .gpkg yang bisa memuat banyak layer, tabel, dan pengaturan tampilan. Isinya basis data SQLite.
  • File geodatabase: wadah milik Esri, berupa folder .gdb.
  • Tabel tanpa geometri: tabel biasa tanpa titik, garis, atau poligon, misalnya daftar pilihan.
  • Gaya tersimpan: pengaturan tampilan dan formulir yang disimpan di dalam wadah, bukan di berkas terpisah.
Ilustrasi 2.1: Shapefile dan GeoPackage
Skema: shapefile terdiri atas banyak berkas lepas, GeoPackage memuat banyak layer dan tabel dalam satu berkas

#Apa yang saya buktikan di data latihan

Hal-hal berikut saya uji dengan GDAL dan QGIS 4.0.2. [terbukti]

  • Membuat shapefile dengan field Diameter_cm menghasilkan nama terpotong Diameter_c, dan tiga berkas (.shp, .shx, .dbf).
  • Satu GeoPackage memuat layer titik, layer poligon, dan dua tabel acuan tanpa geometri.
  • Saat sebuah layer GeoPackage sedang diedit di QGIS, muncul dua berkas pendamping, .gpkg-wal dan .gpkg-shm. Setelah perubahan disimpan, keduanya hilang.
  • Layer GeoPackage bisa disalin ke file geodatabase lewat GDAL (ogr2ogr -f OpenFileGDB). Saat itu, kolom tanggal ditulis sebagai tanggal-waktu.

#Perbandingan tiga wadah

HalShapefileGeoPackageFile geodatabase
BentukBanyak berkasSatu berkas .gpkgFolder .gdb
Panjang nama field10 huruf (terbukti)PanjangPanjang
Banyak layer dalam satu wadahTidakYa (terbukti)Ya
Tabel tanpa geometriTidakYa (terbukti)Ya
Domain nilaiTidakYa (terbukti, lihat Bab 3)Ya
Gaya dan formulir QGIS tersimpan di dalamTidak (berkas .qml terpisah)Ya (terbukti)Perlu dicek [CEK]
SQLTidakYa (terbukti, lihat Bab 7)Perlu dicek [CEK]
StandarFormat lama milik perusahaanStandar terbuka OGCFormat milik Esri

#Aturan membawa GeoPackage

  1. Tutup QGIS dulu sebelum menyalin berkas .gpkg. Bila ada berkas .gpkg-wal dan .gpkg-shm di sampingnya, berarti masih ada perubahan yang belum tergabung. Menyalin hanya .gpkg bisa membuat Anda membawa versi lama atau berkas yang tidak terbuka. [kemungkinan: dari diskusi pengembang QGIS dan uji penulis]
  2. Beri nama berkas yang jelas, misalnya Survei_KPH.gpkg. Satu survei, satu berkas.
  3. Jangan menyalin ke banyak surveyor lalu mengedit bersamaan di berkas yang sama. Bab 5 menjelaskan cara yang aman.
  4. Simpan data dan foto sedekat mungkin, misalnya satu folder proyek, supaya jalur foto tetap valid.

#Bagian A: QGIS

#Bagian A: Membuat GeoPackage survei di QGIS

Hasil akhir: Survei_KPH.gpkg dengan layer Titik_Survei dan dua tabel acuan, Ref_Kondisi dan Ref_Jenis. Struktur ini sama dengan yang dipakai Bab 2 M1, ditambah beberapa kolom.

  1. Buat folder KPH_Contoh. Salin folder paket-i3 ke dalamnya.
  2. Pilih Layer ► Create Layer ► New GeoPackage Layer. Isi Database dengan KPH_Contoh/Survei_KPH.gpkg, Table name Titik_Survei, Geometry type Point, dan CRS EPSG:32749.
  3. Tambahkan sepuluh field satu per satu dengan tombol Add to Fields List, sesuai tabel di bawah. Lalu klik OK. Hasil yang akan terlihat: layer Titik_Survei kosong di panel Layers.
FieldTipeIsi
ID_SurveiText (10)Kode unik, misalnya SV-001
KPHText (20)Petak: KPH Alpha, KPH Beta, KPH Gamma
JenisText (20)Jati, Mahoni, Sengon
KondisiText (20)Sehat, Terserang Hama, Tebangan Liar
Tinggi_PhnDecimalTinggi pohon (m)
Diameter_cmDecimalDiameter batang (cm)
Tgl_SurveiDateTanggal survei
SurveyorText (30)Nama surveyor
Akurasi_mDecimalAkurasi GNSS (m)
FotoText (100)Nama berkas foto
  1. Buat tabel acuan. Ulangi New GeoPackage Layer dengan Database yang sama, Table name Ref_Kondisi, Geometry type No Geometry, dan satu field Kondisi bertipe Text. Bila QGIS bertanya, pilih Add New Layer, bukan menimpa berkas. [CEK]
  2. Isi Ref_Kondisi dengan tiga baris: Sehat, Terserang Hama, dan Tebangan Liar. Lakukan hal serupa untuk Ref_Jenis (Jati, Mahoni, Sengon).

Cara cepat: jalankan skrip I3.2 yang melakukan semua langkah di atas sekaligus. Skrip berhenti bila berkas sudah ada, supaya tidak menimpa pekerjaan Anda.

PYTHON
# Inti skrip I3.2 (berkas lengkap: skrip/i3_02_buat_geopackage.py)
skema = ("Point?crs=EPSG:32749&field=ID_Survei:string(10)&field=KPH:string(20)&field=Jenis:string(20)"
         "&field=Kondisi:string(20)&field=Tinggi_Phn:double&field=Diameter_cm:double&field=Tgl_Survei:date"
         "&field=Surveyor:string(30)&field=Akurasi_m:double&field=Foto:string(100)")
sementara = QgsVectorLayer(skema, "Titik_Survei", "memory")
QgsVectorFileWriter.writeAsVectorFormatV3(sementara, KELUAR, QgsProject.instance().transformContext(), opsi)

Hasil uji (QGIS 4.0.2): Titik_Survei valid dengan 0 baris dan 10 field (ditambah fid), Ref_Kondisi 3 baris, Ref_Jenis 3 baris.

  1. Lihat isi wadah di panel Browser. Buka Survei_KPH.gpkg ► tiga tabel tampil. Seret ketiganya ke kanvas bila perlu.
  2. Satu kebiasaan baik: ubah shapefile lama menjadi GeoPackage. Klik kanan layer ► Export ► Save Features As, pilih format GeoPackage. Perhatikan bahwa nama field panjang tidak lagi terpotong. [CEK]

#Bagian B: ArcGIS Pro

#Bagian B: ArcGIS Pro

Di Pro, wadah utamanya adalah file geodatabase. Pro juga bisa terhubung ke GeoPackage. Cocokkan dengan versi Anda. [CEK]

  1. Jalankan Create File Geodatabase (Data Management Tools ► Workspace). Beri nama Survei.gdb. [CEK]
  2. Jalankan Create Feature Class dengan tipe geometri Point, nama Titik_Survei, dan sistem koordinat WGS 1984 UTM Zone 49S. Tambahkan field seperti tabel di Bagian A. [CEK]
  3. Buat tabel acuan dengan Create Table, lalu tambahkan field dan baris. [CEK]
  4. Untuk membuat GeoPackage dari Pro, pakai alat Create SQLite Database dan pilih jenis ruang GEOPACKAGE. Dokumentasi Esri menyebut alat ini bisa membuat GeoPackage. [kemungkinan: dokumentasi Esri]
  5. Untuk membuka GeoPackage yang sudah ada, buat koneksi basis data dari panel Catalog. Dokumentasi Esri menyebut koneksi SQLite dan GeoPackage bersifat satu pengguna. [kemungkinan: dokumentasi Esri]

#Bagian C: ArcMap 10.8

#Bagian C: ArcMap 10.8

  1. Buat file geodatabase dengan alat Create File GDB (ArcToolbox ► Data Management Tools ► Workspace). Folder tujuan harus sudah ada. [CEK]
  2. Buat feature class titik dengan Create Feature Class, lalu tambahkan field. [CEK]
  3. Dokumentasi Esri menyatakan ArcMap dapat terhubung ke GeoPackage (sejak versi 10.2.2). Beberapa versi, seperti 10.8.1, memerlukan indeks spasial pada GeoPackage sebelum datanya tampil. Bila GeoPackage tidak terbaca, simpan salinan data sebagai file geodatabase atau shapefile. [kemungkinan: dokumentasi Esri dan laporan pengguna]

#Cek paham

  1. Sebutkan dua kerugian shapefile untuk data survei lapangan.
  2. Mengapa Anda perlu menutup QGIS sebelum menyalin berkas GeoPackage?
  3. Apa gunanya tabel acuan seperti Ref_Kondisi?

Jawaban:

  1. Nama field dibatasi 10 huruf, dan satu layer terdiri atas banyak berkas yang mudah tercecer. Shapefile juga tidak bisa memuat tabel acuan di wadah yang sama.
  2. Saat layer diedit, ada berkas pendamping .gpkg-wal dan .gpkg-shm yang menyimpan perubahan sementara. Menutup QGIS menggabungkan perubahan ke berkas utama, sehingga salinannya lengkap.
  3. Menyimpan daftar pilihan yang sah di dalam wadah yang sama. Daftar ini dipakai oleh formulir dan pemeriksaan data.

#Kesalahan umum

  • Menyalin `.gpkg` saat QGIS masih membuka layer yang diedit. Tutup dulu, atau pastikan perubahan sudah disimpan.
  • Membuat satu GeoPackage untuk setiap layer tanpa alasan. Kumpulkan layer yang berhubungan dalam satu berkas.
  • Memakai spasi dan huruf aneh dalam nama. Ini menyulitkan SQL (Bab 7) dan skrip.
  • Mengira file geodatabase bisa diedit di semua aplikasi. QGIS dapat menulis ke file geodatabase lewat GDAL, tetapi hasilnya sebaiknya diperiksa di produk Esri. [CEK]

#Ringkasan dan latihan

Ringkasan: gunakan satu wadah untuk satu survei. GeoPackage memuat layer, tabel acuan, pengaturan formulir, dan domain dalam satu berkas. File geodatabase adalah padanan Esri. Tutup aplikasi sebelum menyalin.

Latihan: buat Survei_KPH.gpkg seperti Bagian A, lalu buka panel Browser dan hitung ada berapa tabel di dalamnya. Jawaban yang diharapkan: tiga (Titik_Survei, Ref_Kondisi, Ref_Jenis).

#Tabel perbandingan: membuat wadah survei

TugasQGISArcGIS ProArcMap 10.8
Wadah utamaGeoPackageFile geodatabase (GeoPackage juga bisa)File geodatabase (GeoPackage bisa terhubung [CEK])
Membuat wadahLayer ► Create Layer ► New GeoPackage LayerCreate File GeodatabaseCreate File GDB
Membuat layer titikDialog yang sama, jenis PointCreate Feature ClassCreate Feature Class
Tabel tanpa geometriGeometry type: No GeometryCreate TableCreate Table
Melihat isi wadahPanel BrowserPanel CatalogJendela Catalog