Langsung ke konten
MSP
Sampul: permintaan taksi tak terlayani senilai $81,6 juta, digambarkan sebagai grid heksagon dengan sel terpanas berwarna emas
  • Geospatial Data Engineering
  • problem-solving
  • geo-tech

Menemukan $81,6 juta permintaan taksi tak terlayani di NYC dengan H3 dan PostGIS

Mahardi Setyoso Pratomo5 mnt bacaBahasa Indonesia

Setahun data Yellow Taxi NYC (35 juta perjalanan) menunjukkan sekitar $81,6 juta/tahun permintaan tak terlayani di hanya 13 zona, sementara 159 zona kelebihan armada. Armadanya cukup, posisinya yang salah. Begini cara saya mengukurnya dengan H3, dbt, dan PostGIS.

Jawaban singkat

Armada Yellow Taxi New York diperkirakan kehilangan $81,6 juta per tahun dari permintaan yang tidak terlayani, dan sebagian besar terkumpul di hanya 13 zona yang kekurangan armada. Pada saat yang sama, 159 zona justru kelebihan armada. Masalahnya bukan kekurangan taksi, melainkan salah alokasi: mobil berada di tempat dan waktu yang salah. Memindahkan armada yang sudah ada lebih berdampak daripada menambah armada baru.

Kesimpulan ini saya dapat dari analisis setahun penuh data perjalanan NYC TLC Yellow Taxi 2023 (sekitar 35 juta record setelah difilter) di atas grid heksagon H3, lalu mengubah selisih supply–demand menjadi angka dolar yang bisa ditindaklanjuti tim operasional.

Kenapa heatmap permintaan saja tidak cukup

Kebanyakan heatmap taksi dan ride-hailing berhenti di di mana perjalanan terjadi. Itu tidak bisa ditindaklanjuti: semua orang sudah tahu Midtown dan bandara itu ramai. Pertanyaan operasional yang berguna adalah selisihnya: di mana permintaan terus melampaui armada yang benar-benar datang, dan di mana armada menganggur?

Jadi setiap sel H3 di kota diberi posisi di sumbu supply–demand, lalu selisihnya diberi harga.

Pipeline-nya

Pipeline: Parquet TLC diambil oleh Kestra, diproses PySpark di Dataproc, dimodelkan di BigQuery dengan dbt, diperkaya di PostGIS, ditampilkan di StreamlitBuka ukuran penuh
Gambar 1. Dari file Parquet TLC mentah sampai dashboard interaktif.

Baca diagram dari kiri ke kanan. Tiga bagian memikul beban terbesar:

  1. Ingestion dan pemrosesan. Dua belas file Parquet bulanan diambil langsung dari endpoint resmi TLC, diorkestrasi dengan Kestra. PySpark di cluster Dataproc yang berumur pendek menangani ~35 juta baris, perubahan skema di pertengahan 2023 (setiap file dibaca, di-cast, lalu di-union terpisah), dan indexing H3.
  2. Warehouse. BigQuery menyimpan data mentah; dbt membangun model staging → intermediate → mart, dengan data test sebagai pengaman regresi.
  3. Lapisan spasial dan penyajian. PostGIS di Supabase memvalidasi borough dengan ST_Within dan mengukur kedekatan ke simpul transit dengan ST_Buffer. Dashboard Streamlit menampilkan peta heksagon 2D/3D, KPI, dan tabel zona. Seluruh stack disiapkan dengan Terraform di GCP.

Cara mengukur supply dan demand

Setiap metrik dihitung per sel H3 resolusi 8 (sekitar 1.070 sel di NYC), lalu digulung ke zona TLC untuk pelaporan.

  • Demand = jumlah penjemputan (pickup) di sebuah sel. Supply = jumlah pengantaran (drop-off) di sel itu.
  • Ini adalah proksi asimetri pickup–drop-off, bukan ketersediaan pengemudi secara real-time: drop-off adalah tempat pengemudi menjadi tersedia, bukan bukti ia tetap di sana. Proksi ini tetap sinyal arah yang kuat tentang posisi armada relatif terhadap tempat ia dipanggil.
  • Sel dengan kurang dari 500 perjalanan per tahun dibuang agar sel bervolume rendah tidak merusak peringkat (243 → 185 sel yang dilaporkan).
  • Pita ±10% mengklasifikasikan setiap zona: rasio supply/demand 0,9–1,1 = seimbang, di bawahnya kekurangan, di atasnya kelebihan. Kehilangan pendapatan hanya dihitung untuk zona yang kekurangan armada.

Bug metrik yang hampir lolos

Versi pertama merata-ratakan rasio per sel ke level zona. Sel yang jarang terisi (misalnya demand = 1 dan supply = 42) menghasilkan rasio seperti −41, yang merusak rata-rata zona dan memunculkan hasil tidak masuk akal.

Perbaikannya mudah diucapkan dan mudah terlupa: jumlahkan totalnya dulu, baru bagi sekali.

-- Salah: rata-rata dari rasio per sel (sel yang jarang terisi mendominasi)
select zone, avg((demand - supply) / demand) as unmet_rate
from cell_metrics
group by zone;

-- Benar: rasio dari total
select zone, (sum(demand) - sum(supply)) / sum(demand) as unmet_rate
from cell_metrics
group by zone;

Apa kata angkanya

Temuan Nilai
Perkiraan permintaan tak terlayani (batas atas) $81,6 juta / tahun
Zona kekurangan vs kelebihan armada 13 vs 159
Bandara JFK $26,3 juta (32% dari total), 79% permintaan tak terlayani
Bandara LaGuardia ~$15,0 juta
Garment District (dalam radius 800 m dari Penn Station) ~$11,4 juta
Queens / Manhattan ~$44,0 juta (didorong bandara) / ~$37,6 juta (didorong komuter)
Brooklyn dan Bronx tidak ada zona yang kekurangan armada

Bandara mendominasi, tetapi hasil Garment District yang paling menarik: ST_Buffer di sekitar Penn Station menunjukkan celah di titik keluar komuter yang akan tersembunyi kalau dilihat per borough.

Apakah masalahnya jalan?

Hipotesis yang wajar: zona yang kekurangan armada memang lebih sulit dijangkau taksi. Untuk mengujinya, saya menggabungkan 72.005 segmen jalan OpenStreetMap yang bisa dilalui kendaraan (ekstrak Geofabrik NY) dengan zona-zona di PostGIS.

Datanya berkata tidak. Zona yang kekurangan armada rata-rata punya 113,8 segmen jalan, dibanding 95,1 di zona yang kelebihan. Taksi justru menghindari sebagian zona yang paling mudah diakses dan paling tinggi permintaannya. LaGuardia (9 segmen, ~$15 juta hilang) dan JFK (192 segmen, ~$26 juta hilang) sama-sama sangat kekurangan armada, apa pun akses jalannya. Ini masalah dispatch dan penempatan armada, bukan infrastruktur.

Keterbatasan yang jujur

Studi kasus yang menyembunyikan keterbatasannya justru kurang bisa dipercaya:

  1. $81,6 juta adalah perkiraan batas atas, bukan pendapatan hilang yang teramati. Angka ini menerapkan rasio tarif agregat ke permintaan tak terlayani; pendapatan yang benar-benar bisa direbut akan lebih kecil karena elastisitas harga dan substitusi.
  2. Supply dan demand adalah proksi (drop-off dan pickup), bukan status pengemudi secara langsung.
  3. Satu tahun, satu moda: hanya Yellow Taxi 2023, tanpa taksi hijau, kendaraan sewa (FHV), atau pola musiman antartahun.
  4. Validasi spasial: 181 dari 185 sel cocok dengan poligon borough dan 180 di antaranya berlabel benar; 4 sel berada di tepi air atau batas wilayah dengan kehilangan $0. Marble Hill secara administratif bagian dari Manhattan tetapi secara spasial ada di Bronx (Harlem Ship Canal memindahkannya pada 1895). Kedua label benar dalam kerangkanya masing-masing.

Apa yang akan saya sampaikan ke tim operasional

Seimbangkan dulu sebelum menambah. Armadanya sudah cukup; pertanyaannya adalah penempatan. Langkah pertama ada di antrean bandara JFK dan LaGuardia serta titik keluar komuter di sekitar Penn Station, tempat pergeseran armada kecil merebut porsi terbesar dari selisih itu.

FAQ

Apa itu H3 dan kenapa dipakai untuk data taksi? H3 adalah sistem grid heksagonal dari Uber yang membagi peta menjadi sel berbentuk sama. Heksagon punya tetangga yang seragam, sehingga demand dan supply bisa dibandingkan di seluruh kota. Resolusi 8 (sekitar 1.070 sel di NYC) cukup halus untuk memisahkan bandara dari sekitarnya dan cukup kasar agar jumlahnya stabil.

Kenapa pickup dan drop-off dipakai sebagai demand dan supply? Data perjalanan TLC tidak memuat posisi pengemudi secara langsung. Pickup menunjukkan di mana penumpang terlayani, dan drop-off menunjukkan di mana pengemudi menjadi bebas. Selisih keduanya adalah proksi arah tentang posisi armada relatif terhadap permintaan.

Apakah $81,6 juta itu pendapatan yang benar-benar hilang? Bukan. Itu perkiraan batas atas: permintaan tak terlayani dikalikan rasio tarif agregat. Pendapatan yang bisa direbut sebenarnya akan lebih kecil.

Apakah datanya bisa dijelajahi? Bisa. Dashboard live menampilkan peta heksagon dan tabel zona, dan repositori GitHub memuat pipeline, model dbt, dan log keputusan berisi 58 entri (D-001 sampai D-058).


Data: NYC TLC Yellow Taxi trip records 2023 (setahun penuh, Parquet resmi dari CloudFront). Jaringan jalan: OpenStreetMap via Geofabrik. Terakhir diperbarui: 20 Oktober 2026.