CollegeLinks
Five public lists become one database of 9,881 institutions, every one placed on a map.
What it does
Five lists, one database
Public lists of central, state, private and deemed universities and of colleges merge into one database: 9,881 institutions in 36 states and union territories.
Every institution placed
Two geocoders, with a cache, put a point on each institution. Where neither finds one, the state capital stands in and is flagged.
One map, three views
The map offers simple, clustered and heat views over five base layers, in one HTML file. Popups show each institution's name and state.
How the map is built
The orange path runs from the public lists to the finished map. Search is the next stage, already designed.
Core responsibilities
Merge the five lists
Each list is a public file. All five load into one database, with one row per institution and its state.
Place every institution
It builds an address from the name, city and state and sends it to the geocoders, with retries and backoff. Answers are cached, so a re-run repeats no lookup already answered.
Never leave a blank
Where no point comes back, the state capital stands in and the row is flagged. Every row reaches the map, and every stand-in is known.
Draw three views
It draws simple markers, clusters and a heat map over the same points, with switchable base layers. Density and detail read at any zoom.
Ship as one file
The map is generated as one HTML file that opens from disk with no server. Anyone with the file has the whole map.
CollegeLinks in figures
- 9,881institutions in the database, every one with a point on the mapcounted in the database
- 36states and union territories coveredcounted in the database
- 5public lists merged: central, state, private and deemed universities, and the collegesthe raw files in the repository
- 3views on the map: simple, clustered and heatthe map script
Counted in the repository, read from a run or set in the code. No figure is estimated.
CollegeLinksBuilding
Why it is built this way
Rules written into the code, and what each one prevents.
Apply for a seatPublic data, kept whole
The source lists are the regulator's own, loaded as published. Every institution on the map traces to a row in a public file.
A point for every row
The geocoders run with retries and a cache; where they find nothing, a flagged state-capital point stands in. No row is dropped for want of a coordinate.
The map first, the app next
The generated map is the product's first form: three views, no server needed. The served application that reads and searches the database is the next stage, already designed.
The code behind CollegeLinks
Three files from the repository, shown in turn. Select one to read it.
01query = """02SELECT03 id,04 name,05 state,06 city,07 latitude,08 longitude09FROM institutions10"""11df = pd.read_sql_query(query, conn)01def safe_geocode(geolocator, address, max_retries=3):02 for attempt in range(max_retries):03 try:04 return geolocator.geocode(address, timeout=5)05 except (GeocoderTimedOut, GeocoderUnavailable) as e:06 if attempt == max_retries - 1:07 raise e08 print(f"Geocoding attempt {attempt + 1} failed, retrying...")09 time.sleep(2 * (attempt + 1))10 return None01simple_markers = folium.FeatureGroup(name='Simple View', show=True)02clustered_markers = folium.FeatureGroup(name='Clustered View', show=False)03heatmap_layer = folium.FeatureGroup(name='Heat Map', show=False)04 05marker_cluster = MarkerCluster()Bring the workflow that keeps breaking.
Our engineers work through it with you in a free 45-minute briefing.