Skip to main content
Apa Itu GeoJSON? Format, Tipe Geometri, dan Jebakan Production
Guides

Apa Itu GeoJSON? Format, Tipe Geometri, dan Jebakan Production

GeoJSON adalah format berbasis JSON yang dibaca setiap library peta modern. Pelajari tipe geometri, pola Feature, dan jebakan yang menggigit di production.

Brent van der Heiden6 min read
#geojson#geojson format#geojson file#rfc 7946#geospatial#maps api

GeoJSON adalah format berbasis JSON yang bisa dibaca setiap web map modern. Jika Anda pernah menggambar polygon pada peta Leaflet, men-style vector layer di MapLibre, atau menyimpan service area di PostGIS, Anda sudah bekerja dengan GeoJSON, bahkan jika ekstensi file-nya berkata lain.

Panduan ini menjelaskan apa sebenarnya GeoJSON, apa arti tipe geometri-nya, di mana ia muncul di sistem nyata, dan jebakan yang menggigit tim ketika file GeoJSON meninggalkan laptop developer dan masuk production.

Apa Itu GeoJSON Sebenarnya

GeoJSON adalah format terbuka untuk meng-encode struktur data geografis, distandarisasi oleh IETF sebagai RFC 7946 pada 2016. Ia adalah subset ketat dari JSON: setiap dokumen GeoJSON adalah JSON yang valid, tetapi spec menambahkan aturan tentang key apa yang diizinkan, bagaimana geometri terstruktur, dan bagaimana koordinat diurutkan.

Format-nya sengaja dibuat kecil. Hanya ada sembilan tipe objek top-level dalam keseluruhan spec, dan developer yang kompeten bisa menampung semuanya di kepala mereka. Kekecilan itulah mengapa GeoJSON menjadi lingua franca dari web mapping: ia mudah dibaca, mudah ditulis, dan mudah divalidasi.

Koordinat selalu ditulis sebagai [longitude, latitude] (dengan altitude opsional sebagai nilai ketiga), dan coordinate reference system-nya tetap pada WGS84, datum yang sama dengan yang dipakai GPS ponsel Anda. Tidak ada negosiasi, tidak ada metadata proyeksi, tidak ada perdebatan urutan axis. Satu datum, satu urutan, di mana saja.

Tipe Geometri

GeoJSON mendefinisikan tujuh tipe geometri. Tiga yang pertama adalah primitif:

  • Point: koordinat tunggal, dipakai untuk pin, alamat, dan sensor individual
  • LineString: daftar terurut berisi dua koordinat atau lebih, dipakai untuk rute, jalan, dan sungai
  • Polygon: cincin tertutup dari koordinat (titik pertama dan terakhir identik), dipakai untuk gedung, bidang tanah, dan batas administratif

Tiga berikutnya hanyalah koleksi dari primitif tersebut:

  • MultiPoint: banyak point dalam satu geometri, berguna untuk merepresentasikan rangkaian toko sebagai satu feature tunggal
  • MultiLineString: banyak line string, dipakai untuk rute terfragmentasi atau sistem sungai
  • MultiPolygon: banyak polygon, pilihan tepat untuk negara mana pun yang punya pulau (jadi, hampir semua dari mereka)

Yang ketujuh, GeometryCollection, dapat menyimpan campuran dari semua di atas. Spec menyarankan untuk tidak memakainya karena sebagian besar consumer menanganinya dengan buruk, dan Anda hampir tidak pernah membutuhkannya. Jika Anda meraih GeometryCollection, biasanya itu pertanda bahwa model-nya ingin menjadi FeatureCollection.

Feature dan FeatureCollection

Geometri saja jarang berguna. Anda perlu tahu apa yang direpresentasikannya. Itulah gunanya Feature: sebuah Feature membungkus geometri dengan objek properties yang menampung metadata arbitrary.

{
  "type": "Feature",
  "geometry": {
    "type": "Point",
    "coordinates": [4.8952, 52.3702]
  },
  "properties": {
    "name": "Amsterdam Centraal",
    "type": "station",
    "platforms": 15
  }
}

Sebuah FeatureCollection adalah daftar dari Feature. Hampir setiap file GeoJSON nyata yang Anda temui di lapangan adalah FeatureCollection, karena dataset nyata punya banyak hal di dalamnya.

Pilihan desain krusialnya adalah properties itu terbuka. Spec tidak mengatakan apa-apa tentang key apa yang boleh dikandungnya atau tipe apa yang harus dimiliki nilainya. Itu fitur, bukan bug: itu berarti GeoJSON bekerja untuk street furniture, batas pemilihan, zona delivery, dan track kapal AIS tanpa harus memperluas format. Itu juga berarti consumer harus berhati-hati: jika Anda bergantung pada properties.population ada, validasi sendiri, karena RFC 7946 tidak akan melakukannya.

Di Mana GeoJSON Muncul

Setelah Anda mulai memperhatikan, GeoJSON ada di mana-mana di stack geospasial:

  • Library peta: MapLibre GL, Mapbox GL, Leaflet, dan OpenLayers semuanya mengkonsumsi GeoJSON secara native sebagai sumber data untuk layer
  • Pipeline vector tile: tools seperti Tippecanoe mengambil GeoJSON masuk dan menghasilkan set MVT (Mapbox Vector Tile) keluar
  • Spec map style: Mapbox Style Specification, yang dipakai MapLibre, mereferensikan GeoJSON sebagai tipe sumber first-class
  • Database spasial: PostGIS, BigQuery GIS, dan Snowflake semuanya import dan export GeoJSON via fungsi khusus
  • Output API: sebagian besar geocoding, isochrone, dan routing API modern mengembalikan GeoJSON Feature untuk hasil, sehingga response-nya bisa langsung dijatuhkan ke peta
  • Polyline rute: response navigasi umumnya mencakup geometri LineString untuk rute, siap dirender
  • Sharing data: portal open data, ekspor OpenStreetMap, dan rilis batas pemerintahan default ke GeoJSON ketika menargetkan web user

Jika sebuah tool bisa berbicara format geospasial apa pun, ia hampir pasti berbicara GeoJSON.

Jebakan di Production

GeoJSON forgiving pada hari pertama dan tidak forgiving pada hari ke-90. Jebakan yang menangkap tim:

Longitude duluan. RFC 7946 menetapkan urutan sebagai [lon, lat]. Manusia, alamat, dan sebagian besar dokumentasi menulis lat, lon. Menukarnya adalah bug GeoJSON paling umum, dan titik Anda berakhir di lautan yang salah.

Winding order polygon. RFC 7946 menetapkan bahwa cincin eksterior harus counter-clockwise dan cincin interior (lubang) clockwise. Banyak file GeoJSON lama mengabaikan ini. Beberapa renderer tidak peduli, lainnya (terutama Mapbox GL dengan polygon yang melintasi antimeridian) merender polygon sebagai inverse dari yang Anda inginkan: sebuah pulau kecil menjadi lubang di lautan yang menutupi seluruh dunia.

Penanganan antimeridian. Geometri yang melintasi meridian 180/-180 perlu dipecah sesuai spec. Polygon naif yang digambar melintasi Pasifik dirender sebagai strip tipis yang melilit jalur panjang mengelilingi planet.

Tidak ada dukungan CRS native di luar WGS84. RFC 7946 sengaja menghapus member crs yang lebih lama. Jika data Anda dalam national grid (British National Grid, RD New, EPSG:3857), Anda harus memproyeksikan ulang ke WGS84 sebelum serialisasi. Tools yang mengeluarkan GeoJSON non-WGS84 secara teknis non-conformant.

Ukuran file. FeatureCollection dengan jutaan polygon detail bisa membengkak hingga gigabyte. Untuk delivery browser, beralih ke vector tile, sederhanakan geometri dengan Douglas-Peucker, atau stream dengan newline-delimited GeoJSON (.ndjson).

Validasi. Pakai linter seperti GeoJSONLint atau library geojson-validation di CI. Menangkap winding order yang invalid atau koordinat yang tertukar pada build time lebih murah daripada menangkapnya dari customer ticket.

GeoJSON di MapAtlas

GeoJSON adalah format pertukaran data default di seluruh platform MapAtlas. Produk Dynamic Maps menerima sumber GeoJSON langsung untuk overlay kustom, styling, dan layer interaktif, tanpa preprocessing yang diperlukan.

Geocoding API mengembalikan alamat yang dicocokkan sebagai GeoJSON Feature, sehingga hasil forward geocode bisa langsung dijatuhkan ke peta atau disimpan di PostGIS tanpa remap field. Isochrone API mengembalikan area waktu tempuh sebagai GeoJSON polygon, yang berarti query "tempat yang dapat dijangkau dalam 15 menit" hanya satu fetch dan satu panggilan addSource dari muncul di layar.

GeoJSON tidaklah glamor. Ia adalah subset kecil yang opinionated dari JSON dengan urutan koordinat tetap dan beberapa tipe geometri. Tetapi itulah format yang memungkinkan setiap lapisan stack lokasi modern, dari spatial database hingga map canvas, sepakat tentang apa itu sebuah tempat. Dapatkan urutan longitude dengan benar, validasi winding-nya, dan sisa stack-nya cenderung mengurus dirinya sendiri.

Pertanyaan yang Sering Diajukan

Apa itu GeoJSON?

GeoJSON adalah format terbuka berbasis JSON untuk meng-encode data geografis, yang distandarisasi sebagai RFC 7946 oleh IETF. Ia mendefinisikan sekumpulan kecil tipe geometri (Point, LineString, Polygon, dan varian multi-nya) ditambah objek Feature dan FeatureCollection yang membungkus geometri dengan properti arbitrary. Koordinat selalu ditulis sebagai longitude, latitude pada datum WGS84, yang adalah apa yang diharapkan setiap library web map modern.

Apa beda GeoJSON dan JSON?

GeoJSON adalah subset ketat dari JSON dengan aturan ekstra. Setiap dokumen GeoJSON adalah JSON yang valid, tetapi tidak setiap dokumen JSON adalah GeoJSON yang valid. Spec menetapkan tipe objek top-level, struktur objek geometri, urutan koordinat (longitude duluan), dan coordinate reference system (WGS84). Apa pun di luar aturan itu hanyalah JSON yang kebetulan berisi data geografis.

Kapan saya pakai GeoJSON daripada shapefile atau KML?

Pakai GeoJSON kapan pun data harus mengalir melalui web stack: API, browser, database seperti PostGIS, atau MapLibre, Leaflet, Mapbox GL, atau OpenLayers mana pun. Shapefile masih umum di GIS desktop tetapi datang sebagai empat file atau lebih dan memakai format binary dari tahun 1990-an. KML cocok untuk Google Earth tetapi verbose dan berbasis XML. GeoJSON menang untuk apa pun yang menyentuh JSON API.

Kenapa koordinat GeoJSON longitude duluan?

RFC 7946 menetapkan urutan sebagai longitude, latitude, altitude opsional. Ini cocok dengan konvensi x, y, z yang dipakai di sebagian besar sistem grafis dan GIS. Ini berlawanan dengan cara manusia menulis koordinat (latitude duluan, seperti dalam 51.5, -0.1) dan adalah bug paling umum saat membuat GeoJSON manual: tukar dua nilai dan titik Anda mendarat di hemisfer yang salah. Selalu longitude duluan di GeoJSON.

Merasa ini berguna? Bagikan.

Tentang penulis

Brent van der Heiden

Ditulis oleh

Brent van der Heiden

Co-Founder & CEO at MapAtlas

Brent built MapAtlas out of a conviction that developers deserve location APIs with fair pricing and genuine end-user privacy. He writes about geospatial infrastructure, AI search visibility, and how location data powers the products people rely on every day.

Lihat semua artikel
Kembali ke blog