Hiking Map Project
-
- Posts: 1372
- Joined: Thu Apr 11, 2013 5:07 pm
I've been geeking out on a new hiking map over the last couple of months. I'm as excited about the tech as I am about the map.
I created an interactive map of my hikes (https://ironhiker.cloud/hikes) using the powerful Datasette tool by Simon Willison. The result was an intuitive, easy-to-use map that links each hike to a full report on my blog. Many interesting technologies are at play. The main database (All_Hikes) has everything. Then, there are subsets for my Favorites, Ultras, Sierra Club lists, and my personal Iron Mountains CA list. The hardest part was getting all the lat/longs for each summit.
If anyone is interested in the details (probability: very low), the underlying database is sqlite3, a self-maintaining SQL compliant standalone database. The mapping functionality is provided by a datasette plugin, and it was deployed to Google Cloud Run as a service, then mapped to a custom domain (ironhiker.cloud). Google Cloud Run automatically scales your application instances as needed, but is a scale to zero service, meaning when it is not in use, all instances are killed and no charges are incurred.
I know, it's a lot of work for a map, but I wasn't happy with a custom Google Map. I wrote a more detailed article about it (https://symbols.hashnode.dev/interactiv ... ogle-cloud), and I'd be happy to help anyone else set up their own maps.
I'll go crawl back in my nerd hole now.
I created an interactive map of my hikes (https://ironhiker.cloud/hikes) using the powerful Datasette tool by Simon Willison. The result was an intuitive, easy-to-use map that links each hike to a full report on my blog. Many interesting technologies are at play. The main database (All_Hikes) has everything. Then, there are subsets for my Favorites, Ultras, Sierra Club lists, and my personal Iron Mountains CA list. The hardest part was getting all the lat/longs for each summit.
If anyone is interested in the details (probability: very low), the underlying database is sqlite3, a self-maintaining SQL compliant standalone database. The mapping functionality is provided by a datasette plugin, and it was deployed to Google Cloud Run as a service, then mapped to a custom domain (ironhiker.cloud). Google Cloud Run automatically scales your application instances as needed, but is a scale to zero service, meaning when it is not in use, all instances are killed and no charges are incurred.
I know, it's a lot of work for a map, but I wasn't happy with a custom Google Map. I wrote a more detailed article about it (https://symbols.hashnode.dev/interactiv ... ogle-cloud), and I'd be happy to help anyone else set up their own maps.
I'll go crawl back in my nerd hole now.
You do not have the required permissions to view the files attached to this post.
-
- Posts: 546
- Joined: Wed Apr 05, 2023 7:38 pm
This is super cool! Both the map and the scope of your peak bagging...
I love how it groups hikes and counts them in proximity to one another depending on your zoom level.
Is there a way to see your GPS tracks on the map? That would be great. And is it possible for the map to be topographic?
This is kinda like my master google earth archive. I really love being able to have the GPS tracks visible, but of course its not available to others online.
I love how it groups hikes and counts them in proximity to one another depending on your zoom level.
Is there a way to see your GPS tracks on the map? That would be great. And is it possible for the map to be topographic?
This is kinda like my master google earth archive. I really love being able to have the GPS tracks visible, but of course its not available to others online.
-
- Posts: 1372
- Joined: Thu Apr 11, 2013 5:07 pm
I am not sure about adding GPS tracks since that would have to come from a different data source (GPX files vs the CSV data imported for the hikes).
The map is using a program called Leaflet via a plugin called datasette-cluster-map (https://datasette.io/plugins/datasette-cluster-map). A topographic layer can be used instead of the standard OpenStreetMap layer, but it might have to be one or the other. I'll experiment with that.
The map is using a program called Leaflet via a plugin called datasette-cluster-map (https://datasette.io/plugins/datasette-cluster-map). A topographic layer can be used instead of the standard OpenStreetMap layer, but it might have to be one or the other. I'll experiment with that.
-
- Cucamonga
- Posts: 4228
- Joined: Wed Jul 27, 2011 12:32 pm
This is very cool. How difficult would it be to create a map for all the TRs in the San Gabriels section?
-
- Supercaff
- Posts: 418
- Joined: Mon Nov 30, 2015 8:25 am
- Location: Pasadena
I second what Sean said. Nate and I have talked about doing something like that which can link back to the forum. I've thought about making it in caltopo but maybe your site woild be easier to work with.Sean wrote: Tue Sep 09, 2025 6:08 am This is very cool. How difficult would it be to create a map for all the TRs in the San Gabriels section?
stoke is high
-
- Posts: 1372
- Joined: Thu Apr 11, 2013 5:07 pm
A map like that can be created with the same tech stack. I could probably set it up on the same server that hosts the forum.
Gathering all the data would be the hard part. The input to the web site is spreadsheet. It can have as many columns and detail as you want, but it needs to contain the GPS coordinates of the location (latitude, longitude) and a URL for the link. There can be multiple entries for each trailhead/gps coords and the map handles it.
There are ongoing cloud expenses, but fairly minimal. It's usually $0.50/month for me, but my site doesn't generate that much traffic. A Gabes map would be busier.
Gathering all the data would be the hard part. The input to the web site is spreadsheet. It can have as many columns and detail as you want, but it needs to contain the GPS coordinates of the location (latitude, longitude) and a URL for the link. There can be multiple entries for each trailhead/gps coords and the map handles it.
There are ongoing cloud expenses, but fairly minimal. It's usually $0.50/month for me, but my site doesn't generate that much traffic. A Gabes map would be busier.
-
- Supercaff
- Posts: 418
- Joined: Mon Nov 30, 2015 8:25 am
- Location: Pasadena
Caltopo allows unlimited visits. Dima might know of other options tho
stoke is high
-
- Posts: 1708
- Joined: Wed Feb 12, 2014 1:35 am
- Location: Los Angeles
I don't know what your goal is. Caltopo allows unlimited visits today. In the future caltopo might not allow anything and it might not even exist anymore. Probably you want to control your own destinyMatthew wrote: Tue Sep 09, 2025 7:59 pm Caltopo allows unlimited visits. Dima might know of other options tho
-
- Cucamonga
- Posts: 4228
- Joined: Wed Jul 27, 2011 12:32 pm
So, at minimum, the spreadsheet needs columns for: trailhead/starting point, latitude, longitude, URL? Then a "description" would be nice too? Would the description be seen on the map display? I suppose the URL and description could be automated, if you just pull the description from the TR title, but the rest would have to be done manually. I could help with the manual part if someone does the automated part.
-
- Cucamonga
- Posts: 4228
- Joined: Wed Jul 27, 2011 12:32 pm
Nevermind. I see on your map the pop-up has a title and description.
So, we just need to decide whether the coordinates pin to the destination or starting point. That probably depends on what sort of hike it is.
So, we just need to decide whether the coordinates pin to the destination or starting point. That probably depends on what sort of hike it is.
You do not have the required permissions to view the files attached to this post.
-
- Posts: 1372
- Joined: Thu Apr 11, 2013 5:07 pm
FYI, the popup info is generated from the underlying data and can be customized with whatever info you want to show. Only the latitude, longitude and name are required.
The hard part is building the spreadsheet with all the data you want.
The hard part is building the spreadsheet with all the data you want.
-
- Posts: 1372
- Joined: Thu Apr 11, 2013 5:07 pm
If you provide the spreadsheet, I'll be happy to set up the system on Dima's server, as long as it's OK with Dima. I'll include instructions on how to update it when the spreadsheet gets updated. We could probably use a subdomain like maps.eispiraten.com or similar to link to the site on google cloud.Sean wrote: Wed Sep 10, 2025 5:04 am So, at minimum, the spreadsheet needs columns for: trailhead/starting point, latitude, longitude, URL? Then a "description" would be nice too? Would the description be seen on the map display? I suppose the URL and description could be automated, if you just pull the description from the TR title, but the rest would have to be done manually. I could help with the manual part if someone does the automated part.
-
- Supercaff
- Posts: 418
- Joined: Mon Nov 30, 2015 8:25 am
- Location: Pasadena
I'm down to work on the spreadsheet but can you give me the columns that are absolutely necessary?
stoke is high
-
- Posts: 1372
- Joined: Thu Apr 11, 2013 5:07 pm
I recommend starting with a Google sheet. It's easier to share and free.Matthew wrote: Fri Sep 12, 2025 8:25 am I'm down to work on the spreadsheet but can you give me the columns that are absolutely necessary?
The bare minimum is name, latitude, and longitude.
The maximalist number of columns is what PeakBagger tracks:
If you want to filter the different points by area or difficulty, etc., you can add extra columns. For example, I added a column for each Sierra Club list I track (Ultra, HPS, DPS, Favorite, etc.)
The data ultimately gets imported into a SQL database, then served with a tool called datasette (https://datasette.io/).
Let me know if you have any more questions.
-
- Supercaff
- Posts: 418
- Joined: Mon Nov 30, 2015 8:25 am
- Location: Pasadena
I'll play around with it later and see. If it's possible, I want to have gpx tracks visible on the map with links to the trip reports.
stoke is high
-
- Posts: 1372
- Joined: Thu Apr 11, 2013 5:07 pm
Ahh, if you want to show the actual GPS tracks, I think CalTopo is a better solution, and also free (up to a certain number of maps).
Check out Hikin' Jims interactive San Gorgonio map:
https://caltopo.com/m/0P77
Check out Hikin' Jims interactive San Gorgonio map:
https://caltopo.com/m/0P77
-
- Supercaff
- Posts: 418
- Joined: Mon Nov 30, 2015 8:25 am
- Location: Pasadena
Cal topo it is! I shall begin somehow somewhere
stoke is high
-
- Posts: 9
- Joined: Wed Nov 03, 2021 7:05 pm
you can add lines to leaflet to show a gps route. (i might be wrong about how but i think you export your line in to a json and then you copy and paste that json code into your leaflet code. but i don't know how any of that works with the Datasette tool, sorry).
and you cannot add a hyperlink to a caltopo. here is a link to a convo about hyperlinks on makrers in caltopo. https://help.caltopo.com/hc/en-us/commu ... r-comments It really is a shame that you can't put a hyperlink in a marker comment (or customize whats displayed in the marker all together).
This is an example of drawing a gps route using the "polyline" feature in leaflet:
var polylinePoints = [
[37.781814, -122.404740],
[37.781719, -122.404637],
[37.781489, -122.404949],
[37.780704, -122.403945],
[37.780012, -122.404827]
];
var polyline = L.polyline(polylinePoints).addTo(map);
and you cannot add a hyperlink to a caltopo. here is a link to a convo about hyperlinks on makrers in caltopo. https://help.caltopo.com/hc/en-us/commu ... r-comments It really is a shame that you can't put a hyperlink in a marker comment (or customize whats displayed in the marker all together).
This is an example of drawing a gps route using the "polyline" feature in leaflet:
var polylinePoints = [
[37.781814, -122.404740],
[37.781719, -122.404637],
[37.781489, -122.404949],
[37.780704, -122.403945],
[37.780012, -122.404827]
];
var polyline = L.polyline(polylinePoints).addTo(map);