Apa itu shapefile dan file apa saja yang dibutuhkannya?

Shapefile adalah format GIS vektor yang dibuat Esri pada awal 1990-an. Format ini berupa sekelompok file dengan satu nama: .shp menyimpan geometri, .shx indeks, dan .dbf atribut. File .prj memberi sistem koordinat dan .cpg pengodean teks. FileReshape dapat menampilkan shapefile atau mengonversinya ke GeoJSON, KML, atau GeoPackage di browser Anda, tanpa mengunggahnya.

Asal-usul shapefile

Esri memperkenalkan shapefile pada awal 1990-an bersama program desktop ArcView, sebagai cara sederhana untuk menyimpan titik, garis, dan poligon beserta tabel atributnya. Pada 1998 Esri menerbitkan ESRI Shapefile Technical Description, sebuah white paper yang mendokumentasikan tata letak file geometri dan indeks. Karena deskripsinya terbuka untuk umum dan formatnya sederhana, perangkat lunak lain dapat membaca dan menulisnya tanpa lisensi, dan shapefile menjadi format pertukaran umum pada GIS desktop.

Hingga kini itulah kekuatan utamanya. Portal data terbuka pemerintah, surveyor, kantor perencanaan, dan perusahaan utilitas menerbitkan shapefile karena hampir semua program GIS, dari QGIS dan ArcGIS Pro hingga GDAL, pemuat PostGIS, dan banyak program CAD, dapat membacanya. Format ini juga menunjukkan usianya, dan batasan yang dijelaskan di bawah adalah alasan format yang lebih baru muncul.

File-file yang menyusun shapefile

Shapefile adalah sekumpulan file yang memiliki nama dasar yang sama, seperti parcels.shp, parcels.shx, dan parcels.dbf. Tiga di antaranya wajib. File .shp menyimpan geometri setiap fitur sebagai daftar koordinat. File .shx adalah indeks berisi posisi setiap record di dalam .shp, sehingga program bisa langsung melompat ke fitur nomor 5.000 tanpa membaca semua yang ada sebelumnya. File .dbf adalah tabel atribut dalam format dBASE, dengan satu baris per fitur dalam urutan yang sama dengan bentuknya. Hubungan antara sebuah bentuk dan barisnya tidak lain hanyalah urutan itu.

File lainnya bersifat opsional. File .prj menyimpan sistem koordinat sebagai satu baris well-known text (WKT), dalam dialek yang dipakai Esri. File .cpg adalah file teks kecil yang menyebutkan pengodean karakter .dbf, seperti UTF-8 atau 1252. File .sbn dan .sbx adalah indeks spasial yang dipakai perangkat lunak Esri, dan .qix adalah indeks spasial berbeda yang ditulis oleh GDAL dan MapServer; keduanya hanya mempercepat penggambaran dan pencarian pada file besar. File .shp.xml membawa metadata seperti deskripsi, penulis, dan tanggal. Anda mungkin juga menemukan file .atx untuk indeks atribut. Jika file opsional tidak ada, program tetap bisa membaca datanya, tetapi tanpa .prj lokasinya hanya tebakan, dan tanpa .cpg karakter khusus bisa salah tampil.

Nama dasarnya harus sama persis, termasuk huruf besar dan kecil pada sistem yang membedakannya. Hanya mengganti nama roads.shp menjadi streets.shp akan merusak kumpulannya. Ganti nama, salin, dan kirim semua bagian bersama-sama, dan cara paling mudah untuk menjaganya tetap bersama adalah .zip berisi seluruh kumpulan file.

Satu jenis geometri per shapefile

Setiap shapefile menyatakan satu jenis bentuk di header-nya, dan setiap fitur harus bertipe itu atau kosong. Jenis utamanya adalah Point, MultiPoint, PolyLine (garis), dan Polygon, masing-masing dalam versi 2D biasa, versi dengan nilai Z untuk ketinggian, dan versi dengan nilai M untuk pengukuran, seperti jarak sepanjang rute. Jenis MultiPatch yang jarang dipakai menggambarkan permukaan 3D. File tidak bisa mencampur titik dengan poligon, jadi dataset gedung beserta pintu masuknya harus disimpan sebagai dua shapefile.

Poligon disimpan sebagai ring. Dalam deskripsi yang diterbitkan, batas luar berjalan searah jarum jam dan lubang berjalan berlawanan arah jarum jam, dan poligon dengan beberapa bagian terpisah, seperti negara dengan pulau-pulau, adalah satu fitur dengan beberapa ring. Format ini tidak menyimpan topologi: dua persil bertetangga masing-masing menyimpan batas bersamanya secara terpisah, dan tidak ada yang dalam file menjamin bahwa garisnya cocok.

Batasan tabel atribut .dbf

Banyak keunikan shapefile berasal dari format tabel dBASE, yang berasal dari tahun 1980-an. Nama field paling banyak 10 karakter, jadi Population_2020 harus menjadi sesuatu seperti POP_2020, dan sebagian program juga mengubahnya menjadi huruf kapital. Field teks menampung paling banyak 254 karakter. Jumlah field juga dibatasi; angka yang biasa disebut adalah 255.

Tipe datanya sedikit. Teks disimpan sebagai field karakter dengan lebar tetap, angka sebagai field numerik atau floating point dengan lebar dan jumlah desimal tetap, benar dan salah sebagai field logis, dan tanggal sebagai field tanggal dengan bentuk tahun, bulan, hari. Tidak ada waktu dalam sehari dan tidak ada zona waktu, jadi stempel waktu harus disimpan sebagai teks atau dipecah menjadi beberapa field. Tidak ada pula nilai null yang sebenarnya: angka kosong biasanya ditulis sebagai spasi atau nol, tergantung programnya, dan sebagian pembaca lalu menampilkan 0 padahal nilainya sebenarnya tidak diketahui. Tidak ada daftar, nilai bersarang, atau field biner.

Batas ukuran file

Header file .shp dan .shx menyimpan offset dan panjang sebagai angka 32-bit, yang melahirkan aturan umum bahwa setiap bagian shapefile, khususnya .shp dan .dbf, harus tetap di bawah 2 GB. Sebagian program, termasuk GDAL, dapat membaca dan menulis file hingga sekitar 4 GB jika diminta, tetapi perangkat lunak lain mungkin menolaknya. Dataset yang lebih besar dari itu harus dibagi menjadi beberapa shapefile atau disimpan dalam format lain. Dalam praktiknya, .dbf sering mencapai batas lebih dulu, karena setiap field teks memakai lebar penuhnya di setiap baris, bahkan ketika sebagian besar nilainya pendek.

Pengodean teks dan file .cpg

Format .dbf lebih tua daripada Unicode. Teks disimpan sebagai byte, dan header memiliki satu byte, yang sering disebut language driver ID, yang dapat menyebutkan code page seperti Windows-1252 atau code page DOS. Banyak program membiarkannya kosong atau mengaturnya dengan salah. File .cpg ditambahkan kemudian untuk menyatakan pengodean dengan jelas, dan perangkat lunak modern menulis UTF-8 bersama .cpg yang menyatakannya.

Jika .cpg maupun byte di header tidak benar, program harus menebak, dan nama seperti Malmö, Ærø, atau São Paulo berubah menjadi deretan simbol aneh. Jika Anda melihat itu, datanya biasanya masih utuh. Beri tahu program GIS Anda pengodean mana yang dipakai saat membuka layer, misalnya di properti layer di QGIS, atau tambahkan file .cpg berisi nama yang benar. Saat Anda menulis shapefile sendiri, pilih UTF-8 dan simpan .cpg bersama bagian lainnya.

Sistem koordinat dan file .prj

File .shp menyimpan angka biasa tanpa menyatakan artinya. Angka itu bisa berupa bujur dan lintang dalam derajat, meter dalam zona UTM, atau kaki dalam sistem state plane AS. Hanya file .prj yang memberi tahu program sistem referensi koordinat mana yang berlaku, dan itu dilakukan sebagai teks WKT, bukan kode EPSG. Sebagian besar perangkat lunak dapat mencocokkan definisi umum dengan kode EPSG, tetapi file .prj yang tidak lazim atau diedit manual kadang menyebabkan interpretasi yang sedikit berbeda.

Tanpa .prj, program mungkin mengasumsikan WGS84 atau bertanya kepada Anda. Nilai antara -180 dan 180 serta antara -90 dan 90 kemungkinan adalah derajat; nilai besar dalam ratusan ribu atau jutaan adalah meter atau kaki terproyeksi. Menetapkan sistem koordinat hanya memberi label pada data. Memproyeksikan ulang benar-benar menghitung ulang koordinatnya, dan keduanya tidak boleh dikacaukan.

Alternatif selain shapefile

GeoPackage adalah standar terbuka dari Open Geospatial Consortium, dibangun di atas database SQLite dalam satu file .gpkg. Format ini menampung beberapa layer, nama field panjang, tanggal dan waktu yang sebenarnya, nilai null, dan dataset besar, dan merupakan format default QGIS. Ini pilihan yang baik untuk menyerahkan seluruh proyek. GeoJSON adalah format JSON teks biasa yang distandarkan sebagai RFC 7946. Mudah dibaca di editor teks dan merupakan format alami untuk peta web dan API, tetapi standarnya mengharapkan koordinat WGS84 dan ukuran file menjadi besar. FlatGeobuf adalah format biner satu file yang lebih baru dengan indeks spasial bawaan, dirancang untuk pembacaan cepat dan streaming lewat web; dukungannya terus berkembang tetapi belum seuniversal format lainnya.

Tidak ada yang tepat untuk setiap kasus. Shapefile tetap menjadi pilihan paling aman jika Anda tidak tahu perangkat lunak apa yang dipakai penerima, atau jika sebuah sistem atau klien memintanya secara eksplisit. Ketika batasannya mulai mengganggu, seperti nama field terpotong, stempel waktu hilang, atau file mendekati 2 GB, mengonversi ke GeoPackage biasanya langkah yang paling tidak merepotkan.

Bekerja dengan shapefile di browser dengan FileReshape

Alat shapefile FileReshape membaca bagian-bagiannya dengan GDAL yang dikompilasi untuk web, sehingga file diproses di perangkat Anda sendiri dan tidak diunggah. Penampil Shapefile menampilkan fitur di peta dan tabel atribut, beserta tipe setiap field. Konversi Shapefile ke GeoJSON, Konversi Shapefile (SHP) ke KML, dan Konversi shapefile ke GeoPackage menulis data yang sama dalam format tersebut; GeoJSON dan KML ditulis dalam WGS84, dan GeoPackage mempertahankan sistem koordinat. Konversi KML ke Shapefile (SHP) bekerja ke arah sebaliknya dan menulis file .zip berisi file .shp, .shx, .dbf, .prj, dan .cpg, satu shapefile per jenis geometri. Anda bisa meletakkan file .zip atau memilih bagian-bagiannya sekaligus, dan nama yang sudah dipersingkat menjadi 10 karakter tidak bisa dipulihkan oleh konversi apa pun.

Pertanyaan yang sering diajukan

File shapefile mana saja yang wajib ada?

File .shp, .shx, dan .dbf wajib ada. File .prj dan .cpg bersifat opsional tetapi disarankan, dan .sbn, .sbx, .qix, serta .shp.xml adalah indeks dan metadata yang boleh ditinggalkan.

Bisakah satu shapefile berisi titik, garis, dan poligon sekaligus?

Tidak. Setiap shapefile memiliki satu jenis bentuk di header-nya. Data campuran harus dipisah menjadi satu shapefile per jenis, atau disimpan dalam format seperti GeoPackage atau GeoJSON.

Mengapa shapefile saya menampilkan karakter aneh, bukan huruf beraksen?

Program membaca .dbf dengan pengodean yang salah. Pilih pengodean yang benar saat membuka layer, atau tambahkan file .cpg dengan nama yang benar, seperti UTF-8 atau 1252.

Bisakah shapefile menyimpan tanggal dan waktu?

Shapefile bisa menyimpan tanggal, tetapi tidak waktu dalam sehari. Stempel waktu biasanya disimpan sebagai field teks, atau datanya dipindahkan ke GeoPackage, yang memiliki tipe tanggal dan waktu yang sebenarnya.

Apakah shapefile adalah format terbuka?

File geometri dan indeksnya didokumentasikan dalam deskripsi teknis yang diterbitkan Esri pada 1998, dan tabel atributnya memakai format dBASE yang sudah dikenal luas, sehingga banyak program gratis maupun komersial dapat membaca dan menulis shapefile.