Real Work Case DATA ENGINEERING & GEOSPASIAL · 2026

Analitik Kecepatan Hauling & Pipeline Data Geospasial

Mengembangkan pipeline otomatis menggunakan Python dan GeoPandas yang memproses ribuan data GPS dan Odometer harian dari truk hauling tambang. Sistem ini memetakan koordinat ke segmen kilometer tertentu, mengklasifikasikan arah jalan, serta menghitung metrik kecepatan dan durasi pelanggaran batas kecepatan secara akurat.

Alur Pemrosesan Data

01

Raw GPS Logs

File XLS (Odometer, Speed, dll)

02

Conversion

XLS ke XLSX via LibreOffice Headless

03

Spatial Join

Mapping titik ke bounding box KM

04

Algorithm

Hitung mean valid & durasi >40km/j

05

Report Excel

Rekap harian per unit truk

Otomatisasi menggunakan Python & GeoPandas. Skrip dapat memproses ribuan baris log koordinat harian dan mengubahnya menjadi laporan kecepatan dan durasi yang akurat.

01. Tantangan & Kebutuhan Utama

Operasi logistik dan hauling tambang menghasilkan data telemetri dalam jumlah masif. Setiap unit mencatat Latitude, Longitude, Kecepatan, dan Odometer setiap beberapa detik, menghasilkan ribuan baris data yang tersebar di puluhan file Excel (XLS) setiap harinya.

Memproses data ini secara manual untuk mengetahui seberapa cepat truk melaju di segmen jalan tertentu (berdasarkan patok Kilometer / KM) sangatlah mustahil. Data mentah memiliki banyak anomali (misalnya: kecepatan terbaca 0 padahal sedang bergerak), membutuhkan konteks spasial (mencocokkan titik GPS dengan fisik patok KM jalan), dan memerlukan *clustering* waktu yang rumit untuk menghitung durasi akurat saat truk melanggar batas kecepatan aman (misal >40 km/jam) tanpa menghitung waktu istirahat (idle).

02. Peran & Implementasi Sistem

Saya merancang dan membangun keseluruhan pipeline pemrosesan data menggunakan Python, Pandas, dan GeoPandas, yang dikemas rapi dalam sebuah Jupyter Notebook sehingga dapat dijalankan secara terjadwal:

  • Konversi Format Otomatis: Membuat skrip yang menggunakan LibreOffice mode headless untuk secara otomatis mengkonversi file .xls usang menjadi format .xlsx modern sebelum diolah, mencegah kerusakan file dan memastikan kompatibilitas dengan library pembaca Excel.
  • Geospatial Joining (GeoPandas): Memetakan setiap titik koordinat GPS ke patok rute kilometer (KM) tertentu menggunakan gpd.sjoin() dengan fungsi `intersects` terhadap shapefile *bounding box* yang telah ditentukan.
  • Klasifikasi Arah Jalan (Direction): Mengimplementasikan logika untuk melacak perubahan nilai KM terhadap waktu (dKM) untuk secara otomatis menandai apakah unit sedang bergerak maju (Return / kosong) atau mundur (Hauling / bermuatan) di sepanjang rute.
  • Analitik Kecepatan Berbasis Clustering Waktu: Mengembangkan algoritma kustom seperti mean_valid_speed() (untuk mengabaikan pembacaan anomali) dan duration_over40_clustered(), yang menghitung secara pasti berapa menit yang dihabiskan di atas batas kecepatan, sekaligus menangani data jeda atau truk berhenti.

03. Pipa Data Interaktif (Pipeline Explorer)

Berikut adalah demonstrasi interaktif tentang bagaimana log telemetri mentah digabungkan secara spasial dan diagregasi menjadi tabel analitik yang bersih:

01. Data Mentah Koordinat & Kecepatan

Setiap unit truk (TRK-015, TRK-030, dll) mengirimkan data lokasi (Latitude/Longitude), kecepatan, dan odometer setiap beberapa detik. Data ini digabungkan dari puluhan file XLS harian:

#DateUnitLatitudeLongitudeSpeed (km/h)Kecepatan (km/jam)Odometer
12025-12-28 08:14:38TRK-015_XX1234YY-2.78471121.202570030635.225
22025-12-28 08:14:26TRK-015_XX1234YY-2.78458121.2026802830635.340
32025-12-28 08:14:22TRK-015_XX1234YY-2.78451121.2028104230635.500
42025-12-16 07:49:05B-015_DD8966UF-2.832530121.2029503530635.750

02. Spatial Join & Penentuan Arah (Direction)

Menggunakan GeoPandas, titik koordinat (Latitude/Longitude) di-map ke bounding box KM yang telah ditentukan. Perubahan nilai KM antar waktu digunakan untuk menentukan apakah truk sedang jalan kosong (Return) atau bermuatan (Hauling):

Plot Aktual: GeoPandas Spatial Join
Loading map…
Loading map…
# GeoPandas Spatial Join
gdf_join=gpd.sjoin(gdf_all, gdf_geofence, how="left", predicate="intersects")
# Direction Classification based on Delta KM
def classify_direction(d):
if d > 0: return "Return" # moving to higher KM
elif d < 0: return "Hauling" # moving to lower KM

03. Agregasi Metrik Kecepatan & Output Akhir

Setelah pengelompokan, data dihitung untuk mendapatkan rata-rata kecepatan yang valid (mengabaikan speed 0 atau speed tidak masuk akal), dan menggunakan algoritma clustering durasi waktu untuk menghitung persis berapa lama truk melaju di atas 40 km/jam:

Daily Average Speed per Segment - Dec 27
DriverUnitKM Route SegmentsAVG SpeedAVG Payload (t)
1234567891011121314151617181920212223
John SmithTRK-053--25393227242126342931393831353330393943412732.5826.71
UnknownTRK-02015232131372726383933322638373533323034-48452632.130.00
David MillerTRK-009234027393025232133413227373530352928393638392231.7024.60
Robert ChenTRK-008--20353322222229303127363732332931413641432831.3524.95
Michael ChangTRK-011323623353226222228353128363529333131363236342630.8226.32
James WilsonTRK-010264123353120193333343126343329302827403534343130.7225.46
William DavisTRK-054--25383025231923342732353830343131333338312730.2924.68
Thomas BrownTRK-003284330373222212127382726313225313130333536312630.1225.03
Daniel TaylorTRK-038113424363225232125333028353528332727383738362529.4925.70
Joseph AndersonTRK-050153224393224222227352829423927332729273035352629.4826.61
Route Average Speed213323333023212326312726323328302727313135312528.1426.03

04. Hasil & Dampak (Outcomes)

Pipeline otomatis ini sepenuhnya menghilangkan kebutuhan untuk manipulasi Excel secara manual. Pekerjaan yang sebelumnya membutuhkan waktu berjam-jam untuk melakukan VLOOKUP manual dan perapian format kini dapat diselesaikan dalam hitungan detik.

Manajemen kini menerima laporan ringkasan harian Excel yang bersih, yang menunjukkan secara akurat unit mana yang melanggar batas kecepatan, di patok kilometer mana, dan untuk berapa lama. Tingkat kedalaman analisis secara spasial dan temporal ini sangat penting untuk menegakkan protokol keselamatan (safety) dan mengoptimalkan siklus hauling.