Langsung ke konten
MSP
Grid geohash persegi dan grid H3 heksagonal berdampingan di atas kota yang sama, keduanya bergabung ke dalam satu batas distrik
  • Geospatial Data Engineering
  • problem-solving
  • solution-design
  • geo-tech
  • cloud-engineering
  • cloud-native-geospatial
  • postgis
  • spatial-indexing
  • python

H3 vs Geohash: Hitung di Grid, Laporkan di Batas Wilayah

Mahardi Setyoso Pratomo5 mnt bacaBahasa Indonesia

Geohash atau H3? Tergantung pertanyaannya, dan keduanya tidak menggantikan batas wilayah tempat bisnis melapor. Kapan masing-masing unggul, dan cara memadukannya.

Pakai H3 atau geohash?

Pakai grid yang sesuai dengan pertanyaannya, lalu laporkan di batas wilayah yang sudah dipakai bisnis. Geohash lebih cocok ketika sel harus berpindah sebagai teks biasa lewat tabel, konfigurasi, dan spreadsheet. H3 lebih cocok ketika yang diukur adalah pergerakan, aliran, atau supply terhadap demand antar-sel yang bertetangga. Keduanya tidak menggantikan distrik, zona, atau area layanan yang menjadi tanggung jawab seseorang.

Saya pernah memakai keduanya. Di Grab, setiap booking membawa geohash 6 karakter, dan pendapatan dihitung per geohash. Di analisis taksi NYC, saya mengukur supply dan demand di sel H3, lalu menggabungkannya ke zona taksi. Grid-nya berbeda, polanya sama: hitung di grid, laporkan di batas wilayah.

Apa itu geohash dan H3?

Keduanya membagi peta menjadi sel ber-ID, dalam beberapa tingkat detail. Perbedaannya ada di bentuk, cara kerja ID, dan perilaku tetangganya.

Geohash H3
Bentuk sel Persegi panjang Heksagon (plus 12 pentagon di setiap resolusi)
ID String base-32 pendek, misalnya qqguyb Indeks 64-bit, biasanya ditampilkan sebagai string hex 15 karakter
Tingkat Presisi 1–12; setiap tingkat memecah sel menjadi 32 Resolusi 0–15; setiap heksagon punya 7 anak
Sel tipikal di kota Presisi 6 ≈ 1,2 km × 0,6 km Resolusi 8 ≈ 0,74 km²
Tetangga 8, dengan dua jarak berbeda (sisi dan sudut) 6, semuanya berjarak sama
Induk dan anak Anak tepat berada di dalam induk Anak kira-kira menutupi induk
Tanpa library Bisa: pencocokan prefix di kolom teks Butuh library H3 atau ekstensi database
Grid geohash persegi dan grid H3 heksagonal di area yang sama; sel geohash punya tetangga sisi dan sudut dengan dua jarak, sel H3 punya enam tetangga dengan satu jarakBuka ukuran penuh
Gambar 1. Area yang sama, dua grid. Perbedaan terpenting ada pada perilaku tetangganya.
Satu level ke bawah: sel geohash terbagi menjadi 32 anak yang pas di dalam induknya, sedangkan heksagon H3 punya 7 anak yang hanya kira-kira menutupi tepi induknyaBuka ukuran penuh
Gambar 2. Geohash naik level dengan prefix string. H3 naik level dengan fungsi parent, dan tepinya tidak pas persis.

Kapan geohash lebih cocok?

Ketika ID sel harus berpindah lewat sistem biasa. Geohash hanyalah string, jadi muat di kolom database mana pun, bisa di-join seperti key lainnya, dan bisa ditempel di spreadsheet atau file konfigurasi. Sel dengan prefix yang sama biasanya letaknya berdekatan, jadi LIKE 'qqguy%' adalah filter awal yang murah.

Itulah sebabnya geohash cocok untuk operasional di Grab. Tabel booking membawa geohash titik jemput, tabel lookup memetakan setiap geohash ke sebuah area, dan pendapatan bisa dijumlahkan per sel untuk mengarahkan promo tepat ke blok yang membutuhkannya. Tim non-GIS bisa meminta daftar sel untuk zona layanan baru, dan untuk itulah tool geohash self-service saya dibangun.

Trade-off-nya perlu diketahui:

  • Tetangganya tidak seragam. Tetangga di sudut lebih jauh daripada tetangga di sisi, sehingga analisis yang menghaluskan atau membandingkan sel bersebelahan jadi miring.
  • Prefix bisa menyesatkan. Dua sel di kedua sisi garis grid besar bisa bertetangga di lapangan, tetapi hampir tidak punya prefix yang sama.
  • Lompatan antar-tingkatnya besar. Setiap kenaikan presisi melipatgandakan jumlah sel 32 kali, jadi naik dari 6 ke 7 adalah lompatan besar dalam ukuran tabel.
  • Cakupannya harus lengkap. Kalau tabel lookup kehilangan satu sel, booking di sel itu diam-diam hilang dari laporan, seperti dibahas di artikel celah poligon.

Kapan H3 lebih cocok?

Ketika analisisnya tentang pergerakan dan kedekatan. Setiap heksagon punya enam tetangga dengan jarak yang sama, sehingga membandingkan sebuah sel dengan cincin tetangganya, menghaluskan heatmap, atau menelusuri aliran di seluruh kota berperilaku sama di mana pun.

Ini penting di analisis NYC. Setiap sel H3 resolusi 8, sekitar 1.070 sel di seluruh kota, punya angka supply dan demand sendiri, dan selisihnya bisa dibandingkan secara adil dari satu sel ke sel berikutnya. Resolusi 8 cukup halus untuk memisahkan bandara dari sekitarnya, dan cukup kasar agar jumlahnya tetap stabil.

Trade-off-nya berbeda:

  • Butuh tooling. ID-nya berupa integer 64-bit; perlu library H3 atau ekstensi database untuk membuat dan membacanya.
  • Anak tidak tepat bersarang. Tujuh heksagon anak kira-kira menutupi induknya, jadi agregasi lintas resolusi mendekati, tetapi tidak sempurna.
  • Ada pentagon. Setiap resolusi punya 12, hampir selalu di atas lautan, jadi jarang berpengaruh untuk analisis kota, tetapi kode tidak boleh mengasumsikan enam tetangga secara membabi buta.

Kenapa tidak pakai batas administratif saja?

Karena batas administratif digambar untuk pemerintahan, bukan untuk pengukuran. Ukuran dan populasi distrik serta zona sangat bervariasi, jadi metrik per distrik bisa berubah hanya karena batasnya berubah, bukan karena ada yang terjadi di lapangan. Distrik pedesaan yang luas dan blok kota yang padat bukan satuan yang setara.

Tetapi di batas wilayah itulah akuntabilitas berada. Tim kota memegang kota, sales manager memegang wilayah, lead operasional memegang area layanan. Tidak ada yang memegang heksagon 882a100d2bfffff. Laporan yang hanya berbasis grid menghasilkan angka yang adil tetapi tidak punya pemilik.

Bagaimana menggabungkannya?

Hitung setiap metrik di grid, lalu gabungkan ke batas wilayah dengan penjumlahan, bukan rata-rata.

Tiga lapisan: titik mentah seperti booking di bawah, grid sel geohash atau H3 di tengah tempat metrik dihitung, dan batas administratif atau area layanan di atas tempat hasil dilaporkanBuka ukuran penuh
Gambar 3. Titik menjadi sel, sel menjadi batas wilayah. Setiap lapisan punya satu tugas.
-- Simplified illustration (not production code):
-- metrics computed per cell, then rolled up to the reporting boundary
with per_cell as (
  select cell_id,
         count(*) filter (where kind = 'demand') as demand,
         count(*) filter (where kind = 'supply') as supply
  from events
  group by cell_id
)
select z.zone_name,
       sum(c.demand) as demand,
       sum(c.supply) as supply,
       (sum(c.demand) - sum(c.supply))::numeric / nullif(sum(c.demand), 0) as unmet_rate
from per_cell c
join cell_to_zone z using (cell_id)
group by z.zone_name;

Ada dua aturan yang lahir dari kesalahan yang pernah saya lihat di kedua proyek:

  • Jumlahkan dulu, bagi belakangan. Merata-ratakan rasio per sel membuat sel yang sepi dengan satu booking bisa mendominasi seluruh zona. Di analisis NYC, versi awal melakukan persis hal itu dan menghasilkan rasio yang tidak masuk akal, sampai rasionya dihitung dari jumlah yang sudah ditotal.
  • Jaga tabel sel-ke-batas tetap lengkap. Setiap sel di dalam batas pelaporan harus ada di tabel pemetaan, atau aktivitasnya hilang dari laporan tanpa error apa pun.

Mana yang sebaiknya dipilih?

Pertanyaanmu Lebih cocok
Sel mana yang masuk zona layanan atau geofence ini? Geohash
Ke mana promo diarahkan, digabung dengan tabel booking? Geohash
Di mana supply tidak memenuhi demand, dan bagaimana menyebar ke tetangganya? H3
Bagaimana lalu lintas atau pergerakan mengalir di kota? H3
Bagaimana performa tiap kota atau distrik bulan ini? Batas wilayahnya, dihitung dari grid mana pun

Kalau sebuah tim sudah berjalan dengan satu grid, pertahankan, kecuali pertanyaannya benar-benar butuh kekuatan grid yang lain. Berganti grid berarti membangun ulang setiap tabel lookup yang bergantung pada grid lama, dan itu migrasi tersendiri.

FAQ

Apakah H3 lebih akurat daripada geohash?

Tidak ada yang lebih akurat; keduanya membagi ruang dengan cara berbeda. H3 memberi tetangga yang seragam, lebih baik untuk kedekatan dan pergerakan. Geohash memberi ID string yang sederhana dan bersarang tepat, lebih baik untuk lookup dan konfigurasi.

Presisi geohash berapa yang setara H3 resolusi 8?

Kira-kira presisi 6 sampai 7. Sel presisi 6 berukuran sekitar 1,2 km × 0,6 km, lebih besar dari rata-rata heksagon H3 resolusi 8 yang sekitar 0,74 km², sementara sel presisi 7 jauh lebih kecil, sekitar 150 m × 150 m.

Apakah keduanya bisa dipakai dalam satu proyek?

Bisa. Pengaturan yang umum: geohash untuk tabel operasional dan konfigurasi, H3 untuk analisis, dan keduanya dipetakan ke batas pelaporan yang sama.

Referensi

Terakhir diperbarui: 30 Oktober 2026.