02-February-2025M | 03-Shaban-1446H

ALVINBURHANI.NET

MUHAMMAD BURHANUDDIN BLOGSITE

Peta Logistik dengan Folium

Views: 19
2 0
Read Time:3 Minute, 14 Second

Sebagai seorang yang bekerja di bidang logistik dan transportasi, pasti sering kali bersinggungan dengan berbagai jenis data dimana salah satunya adalah peta geolocation. Tulisan ini akan mengulas bagaimana cara memvisualisasikan data latitude dan longitude pada sebuah peta dengan menggunakan Folium Python. Folium bisa melakukan banyak hal, seperti membuat pinpoint, mengganti warna pada peta, membuat radius pada pinpoint, atau memuat peta toposjon. Folium adalah pustaka Python yang memungkinkan Anda membuat peta interaktif menggunakan library . Pustaka ini sangat berguna untuk visualisasi data geospasial.

import csv
# Data
data = [
   ["Pertamina", "Lat", "Long"],
   ["Prabumulih", -3.440840496, 104.2337601],
   ["Ramba", -2.6961302, 104.1123653],
   ["OK", -3.812992204, 104.350026],
   ["RT", -3.1470553, 104.1163256],
   ["Adera", -3.262808, 104.1541684],
   ["Limau", -3.4757064, 104.072869],
   ["Jambi", -1.6526229, 103.6009533],
   ["Pendopo", -3.264586, 103.8214948],
   ["Jambi Merang", -2.0513629, 103.7924965],
   ["Lirik", -0.2787676, 102.2715392],
   ["Pangkalan Susu", 4.1198364, 98.2067353],
   ["Rantau", 4.3330485, 98.0974894],
   ["Jabodetabek", -6.132770378, 107.0283405],
   ["Cirebon / Mundu / Subang", -6.6850875, 108.5491675],
   ["Surabaya", -7.2421686, 112.7354225],
   ["Cepu", -7.0349444, 111.7428687],
   ["Sangata", 0.387574, 117.512644],
   ["Sangasanga", -0.6456044, 117.2364707],
   ["Tanjung", -2.1496, 115.395564],
   ["Tarakan", 3.3085805, 117.6044303]
]
 
# Write to CSV
with open('pertamina_locations.csv', mode='w', newline='') as file:
   writer = csv.writer(file)
   writer.writerows(data)

Dengan menggunakan pustaka Folium, peta interaktif dapat menampilkan titik-titik tempat pengambilan dan pengiriman barang di wilayah misalnya pulau Jawa, Sumatera, dan Kalimantan. Setiap titik pada peta akan dikelompokkan ke dalam beberapa layer berbeda berdasarkan jenis aktivitasnya, misalnya layer pengambilan barang dan layer pengiriman barang untuk cluster tertentu. Penggunaan layer ini memungkinkan visualisasi yang lebih jelas dan terstruktur, sehingga memudahkan dalam mengidentifikasi lokasi-lokasi strategis untuk operasional logistik.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import pandas as pd
import folium
from folium.plugins import MarkerCluster
from IPython.display import display
 
# Convert list of lists to a DataFrame
df = pd.DataFrame(data[1:], columns=data[0])
 
# Create a Folium Map
m = folium.Map(location=[df['Lat'].mean(), df['Long'].mean()], zoom_start=5)
 
# Define groups with centroids
groups = {
    'Adera': ["Prabumulih", "Ramba", "OK", "RT"],
    'Jambi': ["Prabumulih", "Limau", "Ramba", "Pendopo", "Adera"],
    'Jambi Merang': ["Prabumulih", "Limau", "Ramba", "Pendopo", "Adera"],
    'Lirik': ["Prabumulih", "Limau", "Ramba", "Pendopo", "Adera"],
    'Pangkalan Susu': ["Prabumulih", "Limau", "Ramba", "Pendopo", "Adera"],
    'Rantau': ["Prabumulih", "Limau", "Ramba", "Pendopo", "Adera"],
    'Jabodetabek': ["Prabumulih", "Limau", "Ramba", "Pendopo", "Adera"],
    'Cirebon / Mundu / Subang': ["Prabumulih", "Limau", "Ramba", "Pendopo", "Adera"],
    'Surabaya': ["Prabumulih", "Limau", "Ramba", "Pendopo", "Adera"],
    'Cepu': ["Prabumulih", "Limau", "Ramba", "Pendopo", "Adera"],
    'Sangata': ["Prabumulih", "Limau", "Ramba", "Pendopo", "Adera"],
    'Sangasanga': ["Prabumulih", "Limau", "Ramba", "Pendopo", "Adera"],
    'Tanjung': ["Prabumulih", "Limau", "Ramba", "Pendopo", "Adera"],
    'Tarakan': ["Prabumulih", "Limau", "Ramba", "Pendopo", "Adera"]
    }
 
# Add markers, centroids, and lines to respective centroid layers
for centroid, cities in groups.items():
    group_layer = folium.FeatureGroup(name=f'Centroid: {centroid}')
    centroid_location = df[df["Pertamina"] == centroid][["Lat", "Long"]].values[0]
 
# Add centroid marker for the group
folium.Marker(location=centroid_location, popup=f'{centroid} Centroid',
              icon=folium.Icon(color='red')).add_to(group_layer)
for city in cities:
    city_location = df[df["Pertamina"] == city][["Lat", "Long"]].values[0]
    folium.Marker(location=city_location, popup=city).add_to(group_layer)
    folium.PolyLine(locations=[city_location, centroid_location],
    color="blue").add_to(group_layer)
    group_layer.add_to(m)
 
# Add layer control to map
folium.LayerControl().add_to(m)
 
# Display the map in Jupyter Notebook
display(m)

Output:

Dengan fungsi layer pada Folium digunakan untuk mengelompokkan elemen-elemen peta yang berbeda ke dalam beberapa lapisan (layers) yang terpisah. Ini memungkinkan pengguna untuk mengontrol visibilitas dan interaktivitas dari elemen-elemen peta, seperti marker, garis, poligon, dan lain-lain, secara independen.
Dengan library ini, peta yang dihasilkan dapat disimpan dalam format HTML dan dibagikan dengan mudah melalui web, menjadikannya sangat berguna untuk berbagai aplikasi, termasuk visualisasi titik pengambilan dan pengiriman barang di wilayah tertentu. Untuk kebutuhan visualisasi data geospasial interaktif saat ini – folium yang paling banyak membantu.
Contoh:

About Post Author

Muh. Burhanuddin

Industrial Engineer, Specialist in Heavy Cargo Transportation and Heavy Lifting Works. Hobby in computer programming, reading and writing. No occupation except waiting for a prayer time. Ready for working as a surveyor, transport planer, or as lifting engineer.
Happy
Happy
0 %
Sad
Sad
0 %
Excited
Excited
100 %
Sleepy
Sleepy
0 %
Angry
Angry
0 %
Surprise
Surprise
0 %

About The Author

More Stories

Be the first to write a review

Average Rating

5 Star
0%
4 Star
0%
3 Star
0%
2 Star
0%
1 Star
0%

Leave a Reply

Your email address will not be published. Required fields are marked *

You may have missed