Skip to content
Back to Blog
how-to-convert

Cara Mengubah GeoJSON ke JSON (Membuang Geometri, Menyimpan Properti)

2026-05-17 8 min read

Isi Sebenarnya dari GeoJSON (dan Kenapa Isinya Lebih dari yang Kamu Butuhkan)

GeoJSON itu sebenarnya JSON juga, tapi dengan struktur yang sangat spesifik dan seringkali besar. Setiap file biasanya membungkus datamu dalam `FeatureCollection` yang berisi array objek `Feature`. Setiap `Feature`, pada gilirannya, punya dua bagian utama: `geometry` dan `properties`. Blok `geometry` adalah tempat semua data spasial berada—array koordinat, tipe bentuk seperti Point atau Polygon, dan rangkaian koordinat kompleks yang bisa mencapai ribuan baris. Blok `properties` inilah yang biasanya kamu pedulikan: data atribut sebenarnya seperti nama, ID, jumlah populasi, atau timestamp yang terikat pada setiap bentuk. Struktur itu jadi masalah saat kamu perlu memberikan data ke sistem yang tidak 'mengerti' peta. Bayangkan kamu mengekspor dataset dari semua 4.200 batas county di AS dari alat GIS. File GeoJSON yang dihasilkan bisa dengan mudah berukuran 18 MB, dengan setiap poligon county didefinisikan oleh ribuan pasang koordinat. Jika tujuanmu hanya untuk menggunakan nama county, kode FIPS, dan populasi dalam laporan atau API, kamu membawa 95% 'beban mati'. Geometri itu hanyalah 'noise'. Lebih parahnya lagi, beberapa parser akan langsung menolak file karena tidak mengenali kunci geospasial. Untuk penggunaan non-spasial ini, membuang geometri bukanlah kehilangan data; itu adalah persiapan data yang cerdas.

Perbedaan Struktur: GeoJSON vs. JSON Biasa

Mari kita bahas transformasinya secara spesifik. Ini adalah `Feature` GeoJSON minimal yang mungkin kamu miliki: { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-87.6298, 41.8781] }, "properties": { "city": "Chicago", "population": 2696555, "timezone": "America/Chicago" } } Setelah membuang geometri, targetmu adalah objek JSON yang bersih dan sederhana yang ada di dalam kunci `properties`: { "city": "Chicago", "population": 2696555, "timezone": "America/Chicago" } Ketika inputmu adalah `FeatureCollection` (file dengan banyak feature), tujuannya adalah menghasilkan satu array JSON yang hanya berisi objek properti dari setiap feature: [ { "city": "Chicago", "population": 2696555, "timezone": "America/Chicago" }, { "city": "Houston", "population": 2304580, "timezone": "America/Chicago" } ] Ini adalah format yang dipahami oleh sebagian besar API, pengimpor spreadsheet, dan pemuat database. Siapa pun yang pernah men-debug panggilan API yang gagal tahu betapa frustrasinya saat parser 'tersedak' karena kunci tingkat atas yang tidak terduga seperti `geometry` atau `type`. Hasil akhirnya adalah array JSON yang bersih, siap digunakan dengan hampir semua alat. Detail penting: bagaimana jika sebuah feature memiliki nilai `null` untuk `properties`-nya? Ini adalah GeoJSON yang valid. Converter yang baik akan menghasilkan objek kosong `{}` untuk feature tersebut, bukannya crash atau, lebih buruk lagi, diam-diam melewatinya. Converter yang asal-asalan sering kali gagal dalam tes ini.

Mengubah GeoJSON ke JSON dengan CocoConvert

Untuk solusi cepat tanpa kode, converter GeoJSON-ke-JSON dari CocoConvert di /convert/geojson-to-json dirancang khusus untuk pekerjaan ini. Prosesnya sederhana. Kamu unggah file `.geojson` atau `.json` milikmu (keduanya diterima, karena GeoJSON sering menggunakan ekstensi `.json`), pilih opsimu, dan unduh hasilnya yang sudah dipangkas. Secara default, converter ini bekerja 'tanpa ampun'. Alat ini akan menemukan array `features`, mengambil objek `properties` dari setiap feature, dan menyatukannya menjadi sebuah array JSON yang bersih. Kunci `geometry`, kunci `type`, dan pembungkus `FeatureCollection` semuanya akan dibuang. Jika filemu hanya berisi satu `Feature` tunggal, bukan sebuah collection, outputnya akan menjadi satu objek JSON, bukan array. CocoConvert menangani file hingga 50 MB pada paket gratis, yang sudah lebih dari cukup untuk sebagian besar dataset dengan kurang dari 10.000 feature. Tapi jika kamu punya file raksasa seperti jaringan jalan raya seluruh negara bagian (yang bisa dengan mudah berukuran 200 MB atau lebih), kamu perlu menggunakan alat command-line, yang akan kita bahas selanjutnya. Untuk privasi, converter ini memproses file di server tetapi tidak menyimpan datamu setelah sesi berakhir, sebuah detail penting jika atributmu berisi informasi sensitif seperti pengenal pribadi. Secara default, file yang diunduh akan memiliki ekstensi `.json`. Panel pengaturan memberimu lebih banyak kontrol, memungkinkanmu menentukan nama file kustom atau mendapatkan output yang diberi indentasi agar mudah dibaca manusia, bukan hanya satu baris yang diminimalkan.

Alternatif Command-Line untuk File Besar atau Otomatisasi

Saat berurusan dengan file di atas 50 MB atau perlu mengotomatiskan konversi ini dalam sebuah skrip, command line adalah teman terbaikmu. Kamu punya dua senjata utama: `jq` dan modul `json` bawaan Python. Untuk transformasi JSON murni, tidak ada yang mengalahkan `jq` dalam hal kecepatan dan kesederhanaan: jq '[.features[].properties]' input.geojson > output.json Satu baris ini melakukan persis seperti yang dilakukan alat web: ia melakukan iterasi pada setiap feature, mengambil objek `properties`, dan membungkus hasilnya dalam array JSON. `jq` mudah diinstal di OS besar mana pun (seperti `brew install jq` di macOS atau `apt install jq` di Debian/Ubuntu) dan dapat 'melahap' file berukuran gigabyte tanpa gentar karena ia melakukan streaming data alih-alih memuat semuanya ke dalam memori. Jika `id` feature-mu penting (di GeoJSON, letaknya di samping `properties`, bukan di dalamnya), kamu bisa menggabungkannya: jq '[.features[] | {id: .id} + .properties]' input.geojson > output.json Ketika kamu butuh lebih banyak logika, Python adalah jawabannya: import json with open('input.geojson') as f: gj = json.load(f) result = [feature['properties'] for feature in gj['features']] with open('output.json', 'w') as f: json.dump(result, f, indent=2) Skrip pendek ini memberimu kontrol penuh untuk memfilter feature, mengganti nama kunci, atau menangani kasus-kasus aneh sebelum menulis output. Yang terbaik, modul `json` adalah bagian dari pustaka standar Python, jadi tidak ada yang perlu diinstal tambahan. Biar aku berikan rekomendasi secara langsung: Gunakan CocoConvert saat kamu punya satu file dan ingin hasilnya dalam 30 detik tanpa menyentuh kode. Gunakan `jq` atau Python saat kamu mengotomatiskan pipeline data atau memproses ratusan file.

Menangani Kasus-Kasus Khusus yang Merusak Converter Naif

GeoJSON di dunia nyata seringkali lebih berantakan daripada contoh-contoh bersih dalam spesifikasinya. Berikut adalah masalah umum yang dapat merusak converter yang naif. **Geometri null:** Kamu akan sering menemukan feature dengan `"geometry": null`. Ini sepenuhnya valid, seringkali mewakili catatan yang memang tidak memiliki data lokasi. Converter yang tangguh harus tetap mengekstrak propertinya, bukan membuang seluruh feature. Metode `jq` dan Python yang ditunjukkan sebelumnya menangani ini dengan benar. **Properti bersarang:** Objek `properties` itu sendiri bisa berisi objek JSON bersarang, seperti `"properties": {"address": {"street": "Main St"}}`. Membuang geometri tidak akan meratakan struktur bersarang ini; mereka akan dipertahankan apa adanya. Jika kamu butuh struktur yang sepenuhnya datar (misalnya untuk CSV), itu adalah transformasi terpisah yang perlu kamu lakukan. **Kunci yang tidak konsisten:** Umum terjadi di mana beberapa feature dalam sebuah collection memiliki kunci `"name"` sementara yang lain tidak. Array JSON yang dihasilkan hanya akan memiliki objek dengan bentuk yang berbeda. Ini adalah JSON yang valid, tetapi bisa membuat sistem dengan tipe data yang ketat (strongly-typed) kebingungan. CocoConvert dengan setia mengekstrak apa yang ada; ia tidak akan mencoba menormalkan skema untukmu. **`GeometryCollection`:** Beberapa file menggunakan tipe `GeometryCollection`, yang memiliki struktur berbeda dari `FeatureCollection` standar. Banyak alat, termasuk CocoConvert, mengharapkan `FeatureCollection` dan mungkin akan gagal jika menemukan `GeometryCollection` di tingkat atas. **Masalah encoding:** Ini adalah masalah klasik data GIS. Spesifikasi GeoJSON mewajibkan encoding UTF-8, titik. Tetapi file yang diekspor dari perangkat lunak lama terkadang bisa berisi karakter Latin-1 atau Windows-1252. Ini akan menyebabkan kesalahan parsing. Kamu harus memperbaiki encoding-nya terlebih dahulu menggunakan alat seperti `iconv` sebelum mencoba konversi.

Kapan Kamu Harus Mempertahankan Geometri (dan Mengubahnya dengan Cara Berbeda)

Meskipun membuang geometri bagus untuk alur kerja yang hanya berfokus pada data, terkadang itu adalah langkah yang sama sekali salah. Ada banyak waktu di mana kamu perlu menyimpan data spasial, hanya dalam bentuk yang berbeda. Jika kamu memberikan data ke pustaka pemetaan web seperti Leaflet atau MapboxGL, berhenti. Jangan ubah apa pun. Kedua pustaka tersebut menggunakan GeoJSON secara native, jadi mengubahnya ke JSON biasa akan menghilangkan koordinat yang mereka butuhkan untuk menggambar petamu. Terkadang kamu membutuhkan koordinatnya, hanya dalam bentuk yang berbeda—seperti array datar objek `{lat, lng, name}` untuk bagan kustom. Itu adalah tugas pembentukan ulang (reshaping), bukan pembuangan geometri. `jq` sempurna untuk ini: jq '[.features[] | {lat: .geometry.coordinates[1], lng: .geometry.coordinates[0], name: .properties.name}]' input.geojson > output.json Perhatikan baik-baik urutan koordinat di sini. GeoJSON secara ketat menggunakan `[longitude, latitude]`, atau (x, y). Ini kebalikan dari yang diharapkan banyak orang dan sistem. Salah dalam hal ini adalah kesalahan paling umum, dan memiliki efek lucu sekaligus membuat frustrasi, yaitu menempatkan datamu di belahan bumi yang salah. Jika tujuanmu adalah mengubah GeoJSON ke format geospasial lain seperti TopoJSON, Shapefile, atau KML, kamu memerlukan alat yang berbeda. CocoConvert tidak melakukan konversi yang mempertahankan geometri ini. Untuk itu, kamu harus menggunakan alat yang dibuat khusus seperti `ogr2ogr` yang andal di command-line (dari GDAL) atau alat web Mapshaper yang luar biasa. Itulah alat yang tepat untuk pekerjaan tersebut. Alat GeoJSON-ke-JSON kami di /convert/geojson-to-json sangat fokus pada satu tugas: mengekstrak properti. Alat ini melakukan satu hal itu, dan melakukannya dengan baik.

Memvalidasi Outputmu Sebelum Digunakan Lebih Lanjut

Sebelum kamu memasukkan file JSON barumu yang kinclong ke sistem selanjutnya, luangkan dua menit untuk memvalidasinya. Langkah sederhana ini bisa menyelamatkanmu dari berjam-jam men-debug kegagalan yang membingungkan nanti. Buka file di editor teks. Apakah tingkat teratasnya adalah array (dimulai dengan `[`)? Apakah setiap elemennya adalah objek (dimulai dengan `{`)? Poin penting, apakah kamu melihat kunci `geometry` atau `type`? Seharusnya tidak. Pencarian cepat untuk string 'coordinates' seharusnya tidak menemukan apa pun. Selanjutnya, periksa jumlah catatan. Jika GeoJSON inputmu memiliki 847 feature, array JSON outputmu harus memiliki tepat 847 objek. Jika angkanya tidak cocok, berarti converter telah menghilangkan beberapa feature, kemungkinan karena input yang salah format atau penanganan nilai null yang tidak benar. Sekarang, periksa datanya secara acak. Bandingkan nilai properti untuk catatan pertama, terakhir, dan satu catatan acak di tengah dalam JSON barumu dengan file GeoJSON asli. Jika nama, ID, dan angkanya semua cocok, kamu bisa yakin konversinya bersih. Untuk pipeline otomatis, gunakan JSONSchema. Alat seperti `ajv` untuk Node.js atau `jsonschema` untuk Python memungkinkanmu memverifikasi secara terprogram bahwa setiap objek dalam array-mu memiliki kunci dan tipe data yang kamu harapkan. Ini penting untuk proses apa pun yang berjalan secara teratur pada data yang berubah-ubah. Dan satu hal terakhir: jika data akan masuk ke database, jalankan kueri `COUNT` pada tabel setelah proses impor. Apakah jumlah barisnya cocok dengan yang kamu harapkan? Pengecekan 30 detik ini adalah konfirmasi akhir bahwa seluruh rangkaian—konversi dan impor—berhasil dengan sempurna.

Ready to convert?

Try it now — fast, secure, and private.

Convert Now →