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:








