Geocoding that takes plain words
“Koramangala, Bengaluru” or 12.9352, 77.6245 — both work. Nominatim handles the fuzzy human input; lat/lon skips the lookup entirely when you already know where you are.
geopy · Nominatim
Open source · Built for India · Runs from a folder
Type where you are. PlugIn resolves it through Nominatim, scans the station dataset for the closest match, and hands you back a driving route drawn by OSRM — on a map that is just an HTML file. Geocoding and routing are the only two things that leave your machine.
Nothing to register or rotate.
Geocoding and routing. That is it.
Location in, drawn route out.
Static files. Open and run.
How it works
The whole tool is a pipeline you can read in one sitting. Each step does one thing and returns something you could print.
A city, a neighbourhood, a landmark, or raw coordinates. geopy sends the string to Nominatim and gets back a latitude and longitude you can trust enough to route from.
Every charging station in the dataset is measured against your point using great-circle distance. The closest match wins, along with the number of stations checked.
OSRM turns two points into a real road line. Folium drops that line, the stations and the markers onto a Leaflet map and writes it out as plain HTML you can open, host, or email.
Live map
The frame below is the Folium map the script generates — same file you get on disk. Pan it, zoom it, follow the route line.
What is inside
“Koramangala, Bengaluru” or 12.9352, 77.6245 — both work. Nominatim handles the fuzzy human input; lat/lon skips the lookup entirely when you already know where you are.
geopy · Nominatim
Stations live in a CSV. Add rows, trim rows, swap in your own file — the schema is the only contract.
Not a straight line between two pins. OSRM returns the driving path over OpenStreetMap road data.
No dashboard, no quota, no secret in a .env you have to remember. The public Nominatim and OSRM endpoints do the work.
Distances, the dataset scan and map rendering all happen locally. Only geocoding and routing touch the network.
Folium writes standalone HTML. Open it from your desktop, drop it on any host, or paste it into a chat.
OpenStreetMap contributors carry the map, Nominatim carries the geocode, OSRM carries the route. The page and the generated map both say so, because the licence asks you to.
ODbL · attribution kept in output
Coverage
The clusters the sample dataset reaches for. Point-to-point arcs stand in for the driving routes OSRM returns between them.
Schematic view — node positions show city geography, not station counts.
Quickstart
Python, a couple of packages, one script. If you can run a script from a terminal, you can run PlugIn.
from geopy.geocoders import Nominatim
from geopy.distance import distance
import folium
# 1. words in, coordinates out
geolocator = Nominatim(user_agent="plugin")
here = geolocator.geocode("Koramangala, Bengaluru")
# 2. nearest station in the dataset
station = nearest(here.point, stations) # great-circle
# 3. route, then draw it
route = osrm_route(here.point, station.point)
folium.Map(location=here.point).save("map.html")
Stack