John Frandsen, Chief Product officer for Elebase, joins host Jeff Doolittle for an exploration of geospatial technologies. They begin with a discussion of the history of mapping and global information systems (GIS) technologies. John describes the underlying technologies used in location-aware applications and the ways that developers can incorporate maps in their own applications. The conversation also highlights recent changes and innovations in the space, as well as the challenges and opportunities of incorporating your own data into existing base map providers.
This episode is sponsored by WorkOS.
Show Notes
from the Episode
from IEEE Computer Society
- Geospatial Semantic Query by Integrating Geospatial Reasoning on the Geospatial Semantic Web
- Geospatial optimization problems
- Acting Responsibly with Geospatial Data
- Physical Visualization of Geospatial Datasets
from SE Radio
- 561 – Dan DeMers on Dataware
- 546 – Dietrich Ayala on the InterPlanetary File System
- 523 – Jessi Ashdown and Uri Gilad on Data Governance
- 399 – Sumit Kumar on Building Maps using Leaflet
Transcript
Transcript brought to you by IEEE Software magazine and IEEE Computer Society. This transcript was automatically generated. To suggest improvements in the text, please contact [email protected] and include the episode number.
Jeff Doolittle 00:01:02 Welcome to Software Engineering Radio. I’m your host, Jeff Doolittle. I’m excited to invite John Frandsen as a guest on the show today for a conversation about geospatial technologies. John Frandsen is the Chief Product Officer for Elebase, a content and data management solution for digital maps. He worked on ESRI Technologies and licensing with early .com companies such as E-Nature, ESPN Outdoors and Reserve America. This became the initial footprint for a product he started in 2007 called Geoconsensus — accidentally one of the first headless content management systems — which helped power National Geographic maps. In 2020, Geoconsensus was relaunched as Elebase, an API-first data management platform for digital maps. John, welcome to the show.
John Frandsen 00:01:46 Hey, thanks Jeff.
Jeff Doolittle 00:01:48 Glad you’re here. Let’s start with sharing a little bit about how you got into mapping.
John Frandsen 00:01:52 Certainly. I’ve always been interested in maps and even as a kid I had maps on the wall back before there were such things as digital maps and I’d look at them in the evenings and especially was interested in places that kind of just seemed out of the way and kind of distant and remote and always kind of wondered what it was like at those places. Digital maps did something kind of interesting and new where it suddenly made the world accessible, especially with the advent of satellite imagery and such. And so maybe on one side it took away the mystery of the world, but on the other side is it opened it up to us. And then at a certain point there was a project that I was kind of working on in the late 1990s where there was this intersection between what we needed to accomplish and maps.
Jeff Doolittle 00:02:48 Okay. Tell us a little bit more about that. What was the project and how did maps become a part of what problems you were solving? So
John Frandsen 00:02:54 We were building something for the Coleman company. Maybe some people are familiar with that. That’s the guys who make lanterns and stoves and outdoor stuff. Back at that time, Coleman wanted to expand their brand a bit beyond just kind of selling coolers and sleeping bags and backpacks and stuff like that. They wanted to help people and facilitate people to find places to go and things to do outside. And we discovered that, at least in the US for people who are familiar with the US, there are these really popular places called national forests and they have campgrounds in them that are people go and stay at. And the US Forest Service at that time didn’t really even know how many campgrounds they actually had. And so what we were going to do is build a database of every national forest campground and there were about 4,500 or so of them across the US and we had about six months to pull that off.
John Frandsen 00:03:51 And this was pretty early. It wasn’t like you could just go online like you can now to find this information. So we had to build a data set of about 45 to 5,000 different places. And to do that we needed to enlist people we’d call field experts, which were kind of like the forest rangers and such. So they could log in and tell us about these different campgrounds. And then we wanted also to know where they’re at. And so we started to log kind of like the, the coordinates, the geo coordinates for this, the latitude longitude of this and that tool that allowed people to interact kind of remotely to facilitate geospatial information we called it consensus at that time. It was kind of the very first iterations. People thought it was kind of cool back then to kind of be able to log in and collaborate on places. I think the coolness is worn off nowadays.
Jeff Doolittle 00:04:44 We kind of take it for granted now. I think.
John Frandsen 00:04:45 Yeah, we’re pretty kind of burned out on maybe filling in fields online but
Jeff Doolittle 00:04:50 .
John Frandsen 00:04:51 And so we did that and listed literally hundreds if not maybe even thousands of people to all collaborate on building this data set. And then it became something where we wanted that Coleman called the Outernet. So the internet was cool back then, but then they said let’s go, let’s make something called the outer net. And it was an online travel planning site where you could literally say, I want to start here and go there and it’s going to show you the campgrounds along the way with descriptions of it and such like that. Now it might seem pretty pedestrian right now, but this was before Google Maps existed.
Jeff Doolittle 00:05:25 Yeah, 25 years ago. And I think it’s interesting that that predates social media and yet here they were telling people to get outside and it seems like now weíre realizing that’s still a good thing to get off the tech and get outside, but we’re here to talk about tech. So in that vein, let’s dive a little deeper into the nuts and bolts of mapping applications. Some of our listeners may have experience building mapping applications. I’m pretty sure all of them have some experience using interactive maps. But for those who either have limited experience or no experience with maps, share a little bit about how interactive mapping applications work. What’s the nuts and bolts behind it?
John Frandsen 00:06:00 Yeah, certainly. One of the things I found really interesting just to kind of start with on this is like there was a study done in 2019 by the National Academy of Sciences and MIT and that asked people what do you find most valuable about the internet? And the first at the top of the list was search. And, this presupposes the reason why search is valuable is because there’s things to search for. But the second thing was email, which I’m sure some of us would maybe quibble about. And the third thing though is digital maps. So people find digital maps really invaluable to their day-to-day existence. Now I think a lot of us would probably kind of wonder about like, wow, how did we even get around before we could type in an address and get directions to someplace or even just find like a restaurant nearby using Yelp or something like that. So digital maps at its heart kind of have two basic parts and I know that there are map nerds I’m sure on this and they’re going to quibble with what I say and say like, no, you’re being too simple. But at its,
Jeff Doolittle 00:07:05 Well, we’ll get deeper as we go too, right? So we can sort of start simple and then dive deeper as we continue in.
John Frandsen 00:07:10 Its top level just to kind of get orientation, there’s sort of two basic parts here. We have what’s called a base map and then your data that you want to put on that base map. So a base map is largely kind of like the, the roads and the streets and the waterways, the towns in the world. And that’s something that you probably donít as a developer, it’s something that you don’t want to have to do. Like you don’t want to have to have to go and figure out like where all the roads are and stuff like that. That usually already comes available to you through something called a base map. But most of the time when you build a digital map, you’re probably not wanting just to show people where roads at. You want to show people where your data is in context to the base map. So that’s the second part of it is kind of your data. And oftentimes that’s kind of the heart of the problem set. Getting base maps is fairly straightforward. There’s a lot of different ways to get base maps now.
Jeff Doolittle 00:08:11 What are some of those ways, I mean I’m sure we’re familiar with Google Maps, but what are some of the others?
John Frandsen 00:08:15 Yeah, I think, Google Maps perfect is a good example that almost everybody’s familiar with. Like when you go to Google Maps and you look at the world, you’re seeing what kind of a Google style base map. But Apple Maps has their own base maps. There’s ESRI, which is one of the earliest software inventors in the digital mapping space. It started back even back in the seventies actually, they were doing initial digitization of geospatial capacities. One kind of emerging and really interesting base map providers, Mapbox. But Open Street maps is an open source and almost kind of a foundational resource for digital mapping because it empowers the world to kind of help map the world. And that’s almost the only way to do it. There are some big billion-dollar companies like Google and Apple that or Navtech and stuff will drive around the world and with vehicles and try to keep on top of it. But when it really boils down to it, it really takes a crowd to log and keep updated the data of the world.
Jeff Doolittle 00:09:29 Yeah, and things are always changing, and I think that speaks to some of the challenges that maybe you could talk a little bit more about. You mentioned before we’ve got the base map and then we’ve got the content and, in one way it just seems kind of straightforward. We’ll just put a pin on a map with a latitude, longitude and just start throwing content at it. So why is that insufficient?
John Frandsen 00:09:46 Yeah, I mean if we know the world is a lot more complicated than just points on a map. And oftentimes as software developers, most of the time when we do digital maps itís just the simplest and the most straightforward way, literally is to put a pin on the map. It’s and a pin is represented by a coordinate or a latitude longitude or a longitude latitude. That’s an ongoing debate. But ultimately, we know that the world is more than that. It’s paths. So it’s like routes, like where does this road go or where’s this trail at or where’s this, that’s a path. Or it could be an area. So an area like a lake would be an area, or a property parcel would be an area. So at its heart those are additional geometries that represent the kind of information that you want to put on the earth.
John Frandsen 00:10:44 And well, it’s a lot simpler to just pass say like a latitude, longitude coordinate as a decimal value to something. And it kind of represents a point, it gets a little bit more complicated to say, how do I pass information that represents say, an area or a path. And that’s where a standard is kind of evolved, called that. Most of the time now it’s using something called, GeoJSON, which is a kind of a subset of JSON, but it has a geospatial capability. So you can capture geospatial information. So you can then pass a base map through a mapping platform like either an API or an SDK or something. And there’s a lot of them out there. I could, I’ll mention some of them in a moment here, but you’ve got a base map now you want to put your data on that map and that data needs to be represented in a, in a structure that can capture not just the simple points and paths but also other geometries. And best way to do that is through GeoJSON, which is a representation of that information.
Jeff Doolittle 00:11:56 So let’s pause on GeoJSON. I do want to dig a little bit more into the details of that later on in the episode, but let’s stay a little bit high level for a second and talk a little bit about how we interact with the base map as software engineers. Because I imagine there’s different levels of the tale, for example, you mentioned yeah you can put a point on a map, but then you mentioned paths and what’s the distinction between say when I’m responsible as a developer to calculate such things or when I should leverage the mapping SDK or mapping APIs and what are some different ways that I can make those decisions about when it makes sense for me to carry a burden of calculation or determining those things versus being able to rely on the mapping platform itself to do those sorts of things?
John Frandsen 00:12:36 Certainly. Most of the time the mapping platform, we can talk about the platform here for a moment. We’ve got, so let me amend the idea of saying that there’s just two parts that you need and then add a third part. So you start with a base map and then you’ve got your data, but the way to put your data on that map is typically through a platform API or an SDK. And there are a lot of them out there. Like, let’s go back to like the Google Maps example. With Google Maps, you could use the Google Maps API to pass it data that you want to put on that base map, Apple MapKit. There’s a lot of open-source resources now. One that’s used a lot is something called Leaflet, it’s a JavaScript, Mapbox has something called Mapbox GL. But CARTO, there’s a lot of sources out there.
John Frandsen 00:13:28 And in fact, actually kind of, it’s going to depend on the type of thing you’re doing. If you’re building an Apple iOS application, you’re probably going to use Apple MapKit SDK, you don’t have too though. You could use Mapbox or you could, you could actually even use like a Google Maps API to put data into an Apple application. So we’ve got the base map, we’ve got your data, then you want to put it into that. Now your data is, the platform itself is going to render that data, but it’s not going to make that data for you. With some exceptions, there are some things that the platform SDKs and APIs will do for you. For example, routing, like if you want to get directions from point A to point B, there are APIs that you can kind of pass the origin and the destination information to and it’ll render a route for you and probably generate a GeoJSON representation of that route or another type of representation of that route.
Jeff Doolittle 00:14:34 Now when you say route, real quick to clarify right now we’re talking about, and I guess talking about driving, what about things like trail maps, walking, things that are maybe you’re not going to send a car down a road to determine these things. In those kinds of use cases, is that a little more is on the developer to figure out how to calculate and determine those things?
John Frandsen 00:14:56 Yeah, that’s a great question. What we’ve done at this point is we’re really good at the world has kind of evolved into a road matrix with directions and you can ask for driving directions, but if you ask for directions up the avalanche trail in Glacier National Park, you’re not going to get a result most likely. So once we get outside of the road matrix, in some examples, potentially public transportation, that’s sometimes getting a little better. But once you get outside of that, if you want to provide the data, you’re going to have to do it or you’re going to have to do it.
Jeff Doolittle 00:15:36 Or crowdsource it perhaps?
John Frandsen 00:15:38 For you and crowdsourced it. Yeah, that’s one way that kind of Elebase comes into play sometimes and something like that. Or just a need to say like, hey, I want to provide this data and I’m the only one who has it, or I can’t go find it out there. Sometimes this data exists in the world, it may be proprietary. I find it a little bit too difficult to like if you want to just put say like a summit county boundary on a map, finding a summit county boundary in a format that’s usable and putting on a map is harder than it should be. But that is starting to get easier.
Jeff Doolittle 00:16:20 Okay. And what’s making that challenging? Is it about granularity and getting the details correct? I mean, maybe talk a little bit about that. Because it’s fascinating. I think from a bias a lot of people who aren’t familiar with technology generally, it’s pretty amazing that you can do a Google Earth, you can start way zoomed out and you zoom way in. I imagine there’s some challenges around just how accurate things are based on how zoomed in or zoomed out you are. So how do you deal with those kinds of challenges when you’re building mapping applications, finding the right resolution, the right level of scale and being able to answer these questions we don’t want to create a border dispute between nations because we screwed up a map. Right?
John Frandsen 00:16:55 Yeah. Speaking of border disputes, actually just a quick sideline on that. We did a, when I was working with National Geographic on a project and with USAID also, we built a kind of collaborative travel guide to the Western Balkans. And it was really cool because we had all these countries that came together to represent why people should visit the Balkans. And then like literally the day before we launched, the Serbians decided that the border wasn’t in the right place.
Jeff Doolittle 00:17:28 Of course, if there was a border dispute. So there you go. That speaks to the nature of the challenge, right? Is these things are not static, but they’re often dynamic. How was that challenge addressed? I mean, was that an easy just fix? Obviously the political side of it probably wasn’t as simple, but I mean what’s the response to that kind of a situation?
John Frandsen 00:17:50 Yeah, so the good thing is that most of the time those aren’t problems that developers need to worry about. Like the boundaries on countries and such usually will come from the base map and the base maps oftentimes are deferring to have some kind of standards and rules behind that. Like for example, I think in the instance with Western Balkans guide we were able to just lean back to National Geographic who is kind of a partner agency. We’re just following their cartographic standards, whether people like it or not. That’s the standard that we’re following. There are other, so there are groups, they’re kind of cartographic groups that establish standards and kind of rules for whether something is a fixed boundary or maybe and sometimes if enough people don’t agree on it, they’ll create a dotted line and call it disputed or something like that. But that kind of data most of the time will come from base maps.
Jeff Doolittle 00:18:45 Okay. So that means the developer can rely on the base map typically to take care of that sort of thing. But it, I’m kind of envisioning that it’s not really a hard line between what really would belong in a base map and what might be more you have to add yourself. I mean, does that change over time? Do the base maps tend to take on more granular data about location and borders and things over time? Or is there kind of a cutoff point where it’s like, okay, they’ve done their job and now it’s time for you to do your job?
John Frandsen 00:19:14 That is a great question and it kind of leads into the way that mapping is evolving and we’re moving away from the fixed boundaries between the base map and your data that lays on top of the base map and things are moving more towards these ideas of vector tiles and vector tile sets. And there’s a couple reasons for that. When you think about a base map in the kind of the more legacy concepts is that you just got that data, you get it like you Google Maps will give you the base map, but you can’t decide like, oh, I don’t like what Google thinks is a boundary and what isn’t a boundary or there’s some capacity that they give you as a developer to style those base maps. But oftentimes it’s just kind of in colors and hues you don’t have a lot of granular control over that.
John Frandsen 00:20:08 Part of the reason is because in a legacy way, creating a base map, which if you think about it, is an enormous amount of data in a kind of, oftentimes it’s represented as almost like a triangle where if you look at the entire world, the entire world could maybe be captured through four different squares, but as you start to zoom in closer, you’re exponentially needing more squares until you get to the level of like maybe streets. And at that point we’re talking about millions and millions of squares that are needed to represent the entire world. Rendering that data in the old days took a lot of processing time and it would usually get rendered in like a raster file. So a base map was largely just kind of an image of that place, kind of like a picture. It’s just collect, it’s just assembling a whole bunch of pictures that had been pre-processed to make that right.
Jeff Doolittle 00:21:11 And at various layers of resolution, I imagine. So you’re saying when you’re zoomed out, you’ve got picture, you zoom in and then how many zoom levels do we have, I imagine was part of if you have a hundred thousand zoom levels, it’s going to be way more data than if you have 10,000, right?
John Frandsen 00:21:26 Yes, definitely.
Jeff Doolittle 00:21:26 And so, but now we’re moving to this other thing. So you said vector tile sets, so we’ve got rasterizing, so what is a vector tile set in relation to what we were doing previously?
John Frandsen 00:21:37 So there’s no set numerical value to it, but in general when you’re interacting with base maps, there’s kind of levels and they’ll call them zoom levels and zoom level one means sort of the world and zoom level 22 could be, it’s possible to even get below a zoom level 22, but the zoom level 22 is like you’re looking at a street corner or something like that.
Jeff Doolittle 00:21:59 Is there a reason why 22?
John Frandsen 00:22:01 No, and there isn’t really a fixed like if you go and you say I want to look at a zoom level eight on ESRI and a zoom level eight on Google map, space map or a Zoom level eight on a Mapbox, they’re not going to be exactly the same. Like they won’t align exactly the same, you canít.
Jeff Doolittle 00:22:20 But somewhere 20ish seems to be kind of common. We don’t have a hundred or a thousand zoom levels, but we’d also don’t just have 10.
John Frandsen 00:22:29 Yeah, I mean I think if you got to a hundred zoom levels you sort of run out of, you’re getting down to the centimeter.
Jeff Doolittle 00:22:35 And super granular. Yeah okay.
John Frandsen 00:22:37 Yeah, you just run out of stuff to show that people care about.
Jeff Doolittle 00:22:39 Do you the utility would’ve decreased I imagine at that level like it’s just too much granularity, too much data.
John Frandsen 00:22:45 Exactly. Yeah. At about 22 is where you get in close enough at. So going back to the early days when we did our initial kind of Coleman Outernet map, it was just, it was almost magic when the very first time we took all this data we’ve been developing and kind of crowdsourcing and put it on a map and suddenly all these places of these icons showed up on a digital map and it’s like sudden all these data that had been kind of tabular was now in front of us in a visual way or a spatial way, but it was on a base map that wasn’t that interesting. It was largely just kind of like beige. The roads were there, but anything that wasn’t a road was kind of beige. And the reason for that is because the amount of computing power it would take to render all the details just didn’t exist at that time.
John Frandsen 00:23:38 But now when you go off of a road, it’s not just a beige area, you’ve got the topography and you’ve got all kinds of interesting stuff that used to be kind of rendered through a visual. But now we can render that as vector data and a vector data meaning that it’s just described through geometry, the computer understands the geometry of it instead of just rendering raster squares. The interesting thing is that one, as we all probably know a bit, is that loading vector information is a lot faster than loading kind of raster images.
Jeff Doolittle 00:24:20 This would be like scalable vector graphics versus, JPEGs, right? Like a jpeg is a raster representation of an image with some compared to png and then you got an svg and that also shifts the rendering burden as well, right? Who renders this?
John Frandsen 00:24:35 Yep. And most of the time its kind rendered through the browser or through the device,
Jeff Doolittle 00:24:40 You mean now with the vector tile sets?
John Frandsen 00:24:43 Correct, yes.
Jeff Doolittle 00:24:44 Okay. So that moves some of the processing burden to the Edge or not in the Edge, to the client. But then since its vector based, I imagine that reduces that burden on the rendering. So it distributes it and then it’s also simplifying it because its vector based?
John Frandsen 00:25:00 Yes. Yep. And the other thing that happens, it’s still a tile set though and that’s why it’s still tiles. So they use this idea of tile, which is squares. So if you say you want to have a map of the world, you don’t download the entire world into your browser because that would be too much. But at the same time as you never look at the detail, like you don’t look at the street level detail of the entire world at the same time, in fact, you probably will never look at the street level detail of the whole world. So it’s only going to bring in the tile data that’s necessary for the window that you’re looking at.
Jeff Doolittle 00:25:38 When you say window, do you mean level or does that, is that different than when you say window?
John Frandsen 00:25:42 Window and level are kind of the same thing but they’re slightly different in the sense that if you have a big screen, you might be including more tiles.
Jeff Doolittle 00:25:53 I see, I see. So the window is the, and it’s hard because we’re on a podcast here so you can’t see our hands moving here. But essentially the window is like a window, it’s the rectangle I’m looking at right now and then the level is how far zoomed in I am at the given time?
John Frandsen 00:26:08 That’s correct, yeah. Yeah. They’re going to be if you’re really zoomed in, it’s going to take a really huge window to have a, to show a lot of neighborhoods. Now if you’re really zoomed out you can kind of capture the entire world in just your viewport so to speak.
Jeff Doolittle 00:26:25 Right. But that may be of limited utility depending on what you’re trying to do.
John Frandsen 00:26:30 Yeah.
Jeff Doolittle 00:26:31 So what’s changing now for developers with the shift from more raster based? You talked about the early days when you first built applications in the nineties doing this and, it was obviously raster based and it was rendering on some either pre rendering I would imagine or being rendered at request time by some heavy server in the backend. How are tile sets affecting the ways that developers interact with maps now?
John Frandsen 00:26:55 Yeah, so I think a couple ways out of the gate I said that there’s kind of two basic things. You’ve got the base map and then you’ve got your data and you put your data on top of the base map. Most of the time people probably look at interactive maps and they see it like that. And then they, one experience they often have will be a just a kind of a cluster or a grouping of icons that are all just crowding out the information underneath it. And that’s because what you’re seeing is your data being represented by icons on a base map. And as you zoom out further, there’s just not enough space to show those. With vector tile sets your data and the base maps start to intermingle a bit and you start thinking of a vector tile set as a series of layers. And you might have, for example, a layer that is just waterways that’s represented as a vector tile set. And that vector tile set has characteristics and associated data with it. And a lot of it is styling characteristics. Like we want the water to be blue and we want the water to appear when you are between this zoom level and that zoom level.
Jeff Doolittle 00:28:15 Okay, interesting.
John Frandsen 00:28:16 Just because when you’re very far zoomed out and you’re trying to see the whole world, you can’t show every little river and stuff. It just makes the map; it just wouldn’t work. So you’re saying like, hey at this zoom level, another way to think about that, sometimes when you think about like town labels or street labels, like the street that I live on is not going to be visible on the map when I’m showing the entire country. Partly because if I showed every street at that level, the map would be a mess. However, with the tile set I would have the control to show just my street level at that. If I wanted, I could pick out that little piece of data. Let me use another example of how vector tile sets are a little bit more valuable in the sense is that because it’s vector data and it has the styling attributes kind of embedded with the data, you can start to change the presentation or change the design or the visual representation on the fly.
John Frandsen 00:29:17 So just like you could with, other vector graphics through a browser or through a device. So an example of that would be if I want to have country boundaries, so each country boundary is represented as a vector as vector tile data. And then if I wanted to say like population and population as a value is actually embedded as part of that tile set, it’s metadata for that tile set. So in my code I could say if the population value is higher than 1 billion, make it red. If it’s between 1 billion and 200 million, make it orange. If it’s less than 200 million, make it yellow or something like that.
Jeff Doolittle 00:30:03 Can you also use that information to control at what level of zoom, cities will appear or not appear for example? Because I imagine that’s useful for your maps, right? If I’m zoomed out, look at the US I might want to see New York, Los Angeles, Portland, Oregon of course because that’s where I live, Denver because right, you know what I mean? But anyway, so I imagine that’s part of the control set too is you, can I do that when I’m interacting with these mapping SDKs as a developer?
John Frandsen 00:30:26 Yeah. One of the attributes in a vector tile is the visibility layer, is the visibility value and you can decide at what value that is present or not present. Now a lot of this to people might sound like, oh my gosh, that’s a lot. How do I do all of this? There are tools that you don’t necessarily have to write the vector tile data yourself. You don’t have to like write the and even write the design specifications. There are tools out there like for example Mapbox has a really nice kind of visual editor where you can go into Mapbox and design, you can pick all of that and make the map look exactly the way you want it to look. There’s MapTiler, there are open-source tools out there. There’s one called Map, Iím probably mispronounce the name Map pu, mapup nic, MAP EU or M-A-P-U-P-T-I-K mapup nic, which is an open-source kind of tile set designer through a UI.
John Frandsen 00:31:31 The cool thing with maps now is that in the old days you got what you got. Now you make the map what you want it to be and you can decide like, hey, you know what? My map, I don’t really want the town names, it’s not important to what I’m doing with my interactive map. Putting the town names on there, that’s just clutter. Or it might be a map that’s really specific about say hydrology or something like that. You say, I don’t even want the streets there. I just want to focus on say like the topography and the waterways. That’s the kind of data I want to put on my map. And you can do that now with MapTiles, you can style the map, so it’s the map that you want and then your data itself can also be rendered as tile sets and then exists within that layer system however you want.
Jeff Doolittle 00:32:19 So essentially you can take the tile sets that they’re providing, create your own and then determine how those sorts of combine together to create your map.
John Frandsen 00:32:29 Yes. So going back to the idea of tile sets, you probably don’t want to build like, I don’t even know, probably don’t want to. Probably you’re not capable of or don’t have the space to do that, to build a tile set of like all the waterways in the world or all the roads and stuff. So those tile sets exist out there. One place that’s actually a really good resource from that is something like open-source street maps. However, most mapping platforms that you interact with, whether it’s Google Maps or ESRI or Mapbox or MapTiler, most of the time when you’re using their platform, they’ll give you the base maps, they’ll give you a certain amount of data out of the box, which is kind of representing the world.
Jeff Doolittle 00:33:13 So let’s talk about a real-world scenario. I think most of us are familiar with navigation apps. I think a lot of us have forgotten how to get anywhere. Just like we can’t remember anybody’s phone number anymore, or their email address. So we’re so used to maps. So what’s happening when I am like, I imagine it’s using location information from my phone, like talk us through, because let’s say our listeners may want to do some mapping apps of themselves, so understand a little bit about what’s going on right now to help render that map on my iPhone or my Android phone or whatever. How’s that interacting with the mapping base? And this is a simple use case. We can get some more complex ones in a second in order to render things like real-time traffic and my real-time location as it pertains to where I am on the map and where I’m in reality.
John Frandsen 00:34:02 Yeah, so there’s a really interesting confluence that kind of happened with the advent of the smartphone where suddenly people were carrying around their computers or carrying around their devices in their pocket.
Jeff Doolittle 00:34:15 Yeah.
John Frandsen 00:34:15 And so your location became really, relevant to the whole kind of question of what you could do early days with online mapping and such, you would go to a desktop computer and you would say, what address are you going to start? And you would type that in and then you’d say, where do you want to end? And you’d type that in, and it would give you directions and you’d print them out. Yes. You carry them in a car with you.
Jeff Doolittle 00:34:37 Either that or early you had a Thomas guide. But yes, that the early stage of the internet, I remember having my printed directions with me in my car. Yep.
John Frandsen 00:34:45 Yeah, kind of going back to the days I was working on a licensing deal with MapQuest and their headquarters were in Washington DC. So I flew into Washington DC and I, before I went, I printed out my directions and I followed them in my rental car how to get, I’d get there and they’re like, how did they work? And I said, oh they’re pretty good.
Jeff Doolittle 00:35:09 You got there. So I mean…
John Frandsen 00:35:10 Yeah. Yeah, most of the time it worked. So, a couple things are happening now with everybody having the device, your computers on your device so it knows where you are at sometimes even if you didn’t give it permission to know that. But that’s another thing so it knows where you’re at and because of that location-based information or contextual information becomes there’s all kinds of use cases that have emerged out of that driving directions being just one. But think about how often we can start answering questions that we have in our head that our location is relevant to, such as what’s a good restaurant where I can get some sushi when I don’t want to go more than five minutes in a car, or I don’t want to walk more than five minutes. Where can I charge my electric car? All these kinds of spatial questions that really are key to our everyday life. We exist in a world, in a physical world with the physical infrastructure and most of the questions or a lot of the questions we have and the problems we have every day is in relationship to that physical question, that physical infrastructure. That’s probably one of the reasons why that study by MIT found that digital maps are the third most valuable thing that people found.
Jeff Doolittle 00:36:27 Yeah. And even then, you said was it search, email and then digital maps, but I’m curious how much search actually is related to location? In other words, like you said, find me a restaurant, is that a search or is that a digital map? And I think it’s, you could kind of, those aren’t necessarily mutually exclusive I think is what I’mÖ
John Frandsen 00:36:46 I think they blend very much. Most of the time when you do a Google search now even on your desktop, it’s going to prioritize that information based on where you’re at.
Jeff Doolittle 00:36:56 Yeah. And I think we take it so for granted now, which makes me curious to, before we dig a little more into some of the nuts and bolts of GeoJSON, which I definitely want to do before we run out time but, what are some use cases that you see developing now with some of these changes with vector tile sets? What sort of the state of where we’re going with maps so that maybe some of our listeners have ideas about, oh, because in some ways you might say it’s overwhelming, there’s so much we’re doing now with maps that maybe there’s nothing left to be done. And I imagine the opposite is the case. There’s probably a ton left to do and I’m curious what your thoughts are on where are we going next? What could we do to continue pushing this?
John Frandsen 00:37:33 Yeah, I think that we’re kind of at the start of it in a lot of ways. I think that going back to the idea that many of the questions and many of the pieces of information that we want are related to where we exist, or they have a geographical context. And I think that as software developers, I think software development is just kind of at the early edge of starting to take into account spatial questions. There’s unfortunately, or for whatever reason, there’s been a little bit of a division, there’s kind of GIS people who are trained to be kind of GIS stands for Geographic Information Systems. There’s sort of cartography professionals that were the map makers and they lived over in this one camp and then over in this other camp there were software developers who wrote code and there wasn’t a lot of intersection in that.
John Frandsen 00:38:27 But now there’s been a merging of that where now regular software developers can start to interact and start using geospatial tools in ways that before were maybe only available to the GIS professional. And so what are some of the questions that you might want to ask? And this is where I would start is start asking like how can I know, like what information is inside of a specific polygon? Sometimes people use the term geofencing for that, which is I’ve got a polygon and it’s not just a circle, it’s actually a more nuanced and complicated, it’s like maybe a block and I want to know what information is inside of that. There’s a lot of ways to organize data and to sort and to query data based on a simple thing like that. Or another one could be, I want to know like what information is along a path or along a route knowing things about like elevation and those are things that add a lot of value to end users that if you put them into the context of what the features are in your software.
John Frandsen 00:39:35 I could go one other way with it too. I think that one thing that’s happening also in the mapping space is we’re starting to get better at some of the last mile and trying to, these people are starting to expect more information on that last mile. So over time we’ve refined, and we’ve built a pretty good data set that understands where the roads are at in the world and how to drive from point A to point B. But once you get out of your car, like I think the next, I guess frontiers and the space of kind of more like indoor mapping, people will say like, how do I get from this place to this room within a hospital complex or within a university or things like that.
Jeff Doolittle 00:40:16 Yeah, that could be really helpful. You show up at a building and you don’t know which floor and it could be a big floor and that can get really, really granular but could be really powerful as well.
John Frandsen 00:40:26 Yeah, I think we navigate around structures a little bit the way we did in say 1985, still asking people.
Jeff Doolittle 00:40:34 Yeah, that’s an interesting insight, right? The technology has really worked for the broad scale, but that last, you call it the last mile, but it’s like the last yard. It’s like, get me here. And I see attempts to try to do that. Sometimes when I park, my mapping app will say, ìWould you like to walk the last bit?î and it’ll actually help me do that. But seems like there’s some opportunity to lean into that as well. And then I guess too, we’ve hinted a little bit at, there’s obviously consumer applications for mapping, but then there’s also a lot of industrial commercial applications for this as well. So I mean, I think some of us have probably experienced we’re getting a package delivered and sometimes, at least in my experience, not always, and I don’t remember which vendor or which provider does this, but I’ve had times where it will send me an interactive map of where the truck is right now that I’m supposed to be working.
Jeff Doolittle 00:41:26 So if I’m sitting there watching my package, it’s limited utility on the other hand, it’s kind of cool if you’re like, because who doesn’t love getting a package? Right? But talk a little bit about the because some of this too John, and I know you’ve seen this too in your experiences, some of the things we’ve seen for location I remember there were apps where you could like check in everywhere and it’s like check in, check in, check in. And this was cute for about a week. And then you realize why am I checking in everywhere that I go? I’m not really getting much out of this. So there’s some limited utility use cases and then there’s some higher utility use cases. So can you speak a little bit about how you’ve seen that play out in your years in mapping and what sort of proven to not be super valuable use cases and which things are going to be growth use cases maybe going forward?
John Frandsen 00:42:06 Yeah, and I think that there’s some science behind it where let’s say for example a public transit system and you’re waiting at a bus stop or you’re waiting for a train to arrive. And the science behind it is that if they show you where the current bus is at in relationship to your place or how long it’s going to be, if they tell you that or show you that the perceived amount of time that you have to wait is significantly less, in fact even like half the amount. So if you’re standing at a bus stop and it’s kind of chilly and you got five minutes to wait for a bus and you don’t know like is the bus going to show up? Is it on its way? Is it even anywhere? Do they even know I’m here? If those are all the questions that are running through your head, that five minutes seems like 20 minutes.
John Frandsen 00:42:55 But if you can see it on the map and you can see that that bus is on its way, that five minutes starts to feel like two minutes. So there is some science behind that, whether or not it’s like certainly this is probably a first world problem. Like my emotional state of having to worry about that bus is maybe not solving a super critical problem, but it does improve just a person’s experience with something that public transit system or even the transit system itself. That’s probably one of the reasons why really early on Uber started to show where that car is at.
Jeff Doolittle 00:43:31 Yeah, freeways have for a long time been saying this many minutes from here to here based on traffic and there’s obviously you’re not using a mapping app on your phone, but there’s geospatial implications for that. And I imagine reducing road rage is good for humanity even if it tends to be.
John Frandsen 00:43:48 Yeah.
Jeff Doolittle 00:43:49 Not maybe the biggest problem we have to solve.
John Frandsen 00:43:51 Yeah. Or another thing that it can be solving is helping disperse traffic. It’s like, ah, I don’t want to wait 50 minutes. One problem that national parks have right now is that something like 93% of visitors visit or what, I think it’s 97% of visitors visit 3% of the park. And so you have these really popular places like Yosemite and the Valley bottom of the valley floor or the rim of the Grand Canyon or, these places where everybody goes. And there’s times where there will potentially be a five hour wait for someone just in cars sitting there in the car to get into the, the valley bottom of Yosemite. So how do you solve that problem? Well, number one is know that it exists and two could be potentially telling people like, hey, it’s five hours, but if you go here or go there, you could also have an interesting experience.
Jeff Doolittle 00:44:46 Yeah, and that sounds similar in some ways to getting different routing directions based on traffic profiles. But this is, it’s the same thing, but it’s not car based, it’s a traffic profile of standing in line? Yeah, that’s interesting. I haven’t been to an amusement park in a while either, but I would be shocked if they don’t have apps that tell you this as well, how long do I have to wait in line for Space Mountain and these kinds of things.
John Frandsen 00:45:10 So now the information itself is potentially valuable because I can make a decision, but if it told me something else to do also that I could as an alternative that would, that even adds to the value. So I think that when we think about how to use geospatial information in our feature development, it’s not just about the technical capacity, but what is the problem that it’s solving for humans? And that’s where it really starts becoming useful because like if I’ve got an app and it’s going to show me where taco restaurants are and it says, hey John, there’s this really great taco restaurant, but it’s like three hours away or it’s on the other side of a mountain, or it’s like a long way it’s not accessible to me.
Jeff Doolittle 00:45:55 Those better be some great tacos.
John Frandsen 00:45:57 Yeah. Yeah. The app isn’t that helpful to me. So it’s, or if it’s like, hey John, there’s five hours if you want to, you can sit in your car for the next five hours or you could go and do these other things in these other communities. That starts becoming interesting to me because it’s like, oh wow, thank you for saving me from sitting in my car for five hours. But what else has it done? It’s taken like all this spending power that’s sitting in a car and distributing it out into these rural communities that have great little restaurants that would love to have more customers. So we can help solve those very real problems by thinking about not just the capacity, the technical capability of doing that, but actually what are the real-world human problems that we’re solving.
Jeff Doolittle 00:46:47 So let’s talk a little bit, it’s again, challenging with audio only, but you’ve mentioned before SDKs and APIs for some of these mapping platforms. And we’ll put links in the show notes to a lot of these different things if listeners want to dive in a little bit more deeply. But you mentioned GeoJSON before. So let’s say I have an idea for adding interactive maps to an application that I’m working on or a new product that I want to build with these kinds of things. So talk a little bit about helping a listener get started. What does GeoJSON look like? What are they embedding in there? Are there tools that help? Am I just in VS code coding this up by scratch? How am I getting started here as somebody who wants to get involved with mapping technologies?
John Frandsen 00:47:28 So oftentimes, and this is probably one of the reasons why little pin drops on a map are the most common ways that most software developers kind of think about an interactive map. I was like, oh, I want to put a pin on the map, and it’s got a little popover and stuff. And the reason why is because it’s a pretty easy way to represent geospatial data. You can do it with a lot of mapping applications just by passing a CSV file.
Jeff Doolittle 00:47:53 So if you, okay, so you could start there. So it sounds like pin drops are to mapping apps. What chatbots are to AI right now?
John Frandsen 00:48:00 In a little way. It’s like, or maybe it’s like putting a photo into a webpage is, it’s like sort of the basics. You can do it, it accomplishes something, it’s nice to know that this place is where it’s at that has value to people. You could get driving directions there or something. So at its very foundational level you can use a CSV with a lot of things and that CSV obviously would need to have two columns, a latitude and a longitude or a longitude and a latitude. It depends on, once again, sometimes that can be fighting words over the order of that. And then you can have your other information. Like it could be description and it could be another thing like a status or type. So you can, you can represent geospatial information as a CSV, you can pass that CSV to a mapping application. And quite often the mapping application, the platform API, whether it’s like a Google Maps or ESRI or something like that, they recognize it, they can see, oh I understand those are coordinates.
Jeff Doolittle 00:49:02 So quickly make a static map with points using a flat file and that’s going to take you only so far, right? So now we’ve got the issue of static, it’s not dynamic. And then we’ve got the issue that it’s flat and not structured. So what can I do? Let’s maybe go down the structure. We can talk about the dynamic for static in a second, but now I move from flat file to GeoJSON, what changes, what can I now do differently that I couldn’t do before with the flat file?
John Frandsen 00:49:26 So a GeoJSON you can start to represent that information as paths and polygons. And not only that but think about it going beyond just a path. Like a path isn’t always just a path. You could have a path that’s a dirt trail or you could have a path that’s a paved trail or you could have a path that’s say like universally accessible. So if you wanted to have a path and you want to show that hey, this path isn’t just a path, it actually has a different type of path. Like the paved path you might want to have is a thicker line that’s gray and a dirt pass might one is a dotted line or something like that, that’s brown. So those types of paths and the data associated with it could all be represented as GeoJSON and it’s just a Json representation’s, a Json structure.
John Frandsen 00:50:15 The reason why they call it GeoJSON is because there’s a specification that understands how to capture and structure that geospatial information. Now we’re getting into a space where it’s like I could see a developer going like, how do I make a GeoJSON file if I don’t have my own GeoJSON file or if I don’t import it from someone else. You can use tools out there like ArcGIS. There are some platforms that have ArcGIS online, which is an ESRI tool. There are different kinds of ways to sort of do that through browsers and such. Now one of the limitations of it is that you’re really just now dealing with geo data. So like, okay now I’ve drawn a line, I’ve drawn an area, I have a GeoJSON file, but you probably want to do more than that.
John Frandsen 00:51:08 You want to actually describe it, have descriptions and maybe you want to have photos of that trail and stuff like that. And that’s kind of one of the ways that Elebase comes into play is its sort of designed for building advanced geo data sets like this that go far beyond just kind of like the point and path information where you want a lot of your media also your long descriptions or lots of photos and maybe video or attributes and stuff like that. So there are tools like that. Then you would access that data through the API and the data would be presented to you as a GeoJSON that you could just put on the map.
Jeff Doolittle 00:51:45 Okay. Now let’s say I need to more interactively update my map like dynamically in real time. Right now what I have in mind, which I’m guessing is not correct, is I’m not just throwing a CSV file at the map every like 250 milliseconds. So if I can alter a map or add features to a map using GeoJSON, that’s one thing. But now if I need this interactivity and this dynamic update, how is that working? Are these simple API calls? Is there more to it? What’s going on there?
John Frandsen 00:52:15 Yeah, I mean you can, the GeoJSON file or the CSV file is kind of a one hit thing or you’re going to add it, and then it’s going to be there.
Jeff Doolittle 00:52:23 Yeah.
John Frandsen 00:52:23 Now, if you want to dynamically interact, you can dynamically access JSON or GeoJSON through an API. And so that’s once again, I don’t want to like just flog elevates on this, but that’s kind of like one of the things that you can get out of Elebase is just like get this data through an end point.
Jeff Doolittle 00:52:41 Yeah. Well actually no, that’s great timing. So let’s transition to talk a little bit about Elebase with the time that we have left. So you have a company called Elebase. We mentioned at the top of the show we’ve talked about mapping applications broadly, kind of how they work, how developers can get started with working with them. So what does a tool like Elebase help developers do that they would be challenged to do for themselves with interactive mapping and geospatial applications?
John Frandsen 00:53:06 So, going back to the kind of foundational point, which is that you, most of the time when you build a digital map, you want to put your data on that map. Like the base map itself has contextual value, but in itself it’s just stuff that you can pretty much get anywhere. So when you make your own digital map, the primary value proposition of that digital map is that you are showing your information. And that information consists of kind of two parts. For the most part, it’s the geographical information, like where are the points at? Where’s the polygons, what kind of polygons, what kind of points are those? But then there’s another step to it, which is oftentimes the details behind that. So just to use kind of something we probably all relate to maybe is trail information. So if you want to have an interactive map, like for example, the Montana Wilderness Association has this really cool interactive map called Hike Wild Montana, with hundreds of trails all across Montana that have been crowdsourced.
John Frandsen 00:54:13 And that’s, they’re using Elebase to power that. And what happens is you look at the map and there’s a point, and then as you zoom in, there’s actually the route of the trail. And then you can select it and you can learn about that trail. Like you can see photos of that trail, you can see descriptions, you can see characteristics like, is it good for kids? All that information typically has to be, when people are building an interactive map, what they’re doing is they’re oftentimes marrying or relating the geo information with another database. They’re saying like, okay, we’re going to go manage all the trail information here in this resource, and then we’re going to create an ID or something and link to the other information over here. So they either have to build it custom, or they have to connect that with Elebase. That’s kind of all just on the same platform. And it’s done in a way that’s kind of designed for the regular developer, not for GIS professionals. It’s not like you don’t have to go get a degree in GIS to access this information as you would pretty much any API.
Jeff Doolittle 00:55:23 Okay. Yeah. because what you’re describing, I mean, I remember a while back doing some mapping applications with some GIS extensions to PostgreSQL, and you were able to use that to do even proximity search and things of that nature to find coordinates that were close to one another and things of that nature, or if they fit within a certain zip code, that was another thing that we could do with that. But of course that required you to know, PostgreSQL required you to kind of understand how the GIS extensions worked and this sort of a thing. And so it sounds like a platform like Elebase might simplify the accessibility to those kinds of features and functionality for people who want to get started doing mapping applications.
John Frandsen 00:55:59 Yeah, it kind of abstracts that. So you could pass it a polygon and it’s going to give you that information as a parameter in the endpoint, so you don’t have to stand up post SQL and run it and all of that and maintain it and scale it. It’s kind of there. The Wild Montana is kind of an interesting example of that, because they have, so in that hike or in that guide, they have all these, what they call kind of local businesses that they want to help support. And those businesses are near trail heads. So if you’re looking at a trail, it would say like, here’s a nearby business too that you want to see. The problem set that they had though is that, okay, how do I show local businesses in one way that people oftentimes without manually going and relating all these things and keeping all these relationships in place.
John Frandsen 00:56:48 So you just want to do a spatial query, like, here’s the trailhead, show me everything nearby it. And that’s what oftentimes people will do, is they’ll just do like the radius search, show me everything within 30 air miles of that. In Montana, what happened is you’d oftentimes get like a restaurant that’s on the other side of the mountain in a valley. So by the crow flies it’s 30 miles but driving it’s 200. So you needed a more interesting query, which is like you needed a contains within. So with Elebase, what they could do is draw a little polygon around that, say like any business that’s inside of this area is a related business. And then dynamically that would just show up on the page. Like they didn’t have to. When they loaded that, it just showed me all the businesses that are inside this polygon.
Jeff Doolittle 00:57:36 Yeah. So it helps with managing the content itself, but also the placement of that content within the map. And it’s kind of lowering that barrier to entry.
John Frandsen 00:57:44 And on top of it then allows, going back to the initial idea that most of the time it’s a lot better to have a thousand people maintaining one piece of information each, than to have one person maintaining a thousand pieces of information. A map of the world is difficult for just a few people to do. So Elebase kind of empowers large communities of people to collaborate on that information through a user interface that’s kind of designed for non-experts. An example of that, like the state of Maine, it uses Elebase, the power, the visit maine.com. And to have non-experts, you need to have, say like a local restaurant owner and Caribou Maine that’s able to log in and update information without going through a long training course.
Jeff Doolittle 00:58:34 Right. Yeah and there’s times where that makes sense. It’s like, I appreciate the experience I’ve had diving deep into ESRI and ArcGIS, and PostgreSQL, GIS capabilities and things like that. But that required a lot of effort and work to understand the nuts and bolts of that. And I was doing this 15 years ago when tools like what you’re describing didn’t exist, but sometimes as a software engineer, you want to find the shortest path to releasing the functionality and getting the product out of the marketplace. And so having tools like that, that can help lower that barrier to entry, not just for developers, but also for other people that are using the applications. Sounds really great. Well, John, anything else you want to share with our listeners before we wrap things up? Anything else they should know or research about what you’re up to these days?
John Frandsen 00:59:19 Oh yeah. Wow. I mean, yeah, it’s such a big space, mapping and GIS is a whole genre. But I think probably just in kind of quick summary is like, it is a discipline that is intersecting a lot more with just regular software development. And so start thinking about ways as you’re building new software, adding new features and such, just what are the spatial components? What are the spatial questions that you could potentially solve for? And some of that has to do with just the primary vectors of what’s nearby, where is the location in context to other things. Just those kind of use cases that impact us on a real-world level, in a kind of, as a human level. The tools for accomplishing that are becoming much more, I guess, accessible and usable for developers in their code. And so if we’re not thinking about that, I think there’s a possibility that other people are, as you kind of wake up one morning, you’ll figure out that you might learn that my application isn’t geo aware or it’s not thinking about geography or geospatial questions at all, and these other people are, and that’s maybe why they’re getting more uptake.
Jeff Doolittle 01:00:38 Yeah, I think that’s great to consider, and as you said from that research that the top three uses of the internet search, email, and digital maps, and they’ve become so ubiquitous now that sometimes when things become ubiquitous, we stop seeing them. But you’re encouraging us to realize that there could be opportunities we’d be missing out on if we don’t consider how to include geospatial and mapping technologies in our solutions. So that’s great. John, if people want to find out more about you and about Elebase, where should they go?
John Frandsen 01:01:05 Yeah, you can go to Elebase.io and @Elebase.io there’s actually a free trial you can take with Elebase. It’s free to try it out. You don’t have to give a credit card or anything like that. And the API is right there and pretty well documented. Try it out, have fun.
Jeff Doolittle 01:01:27 Well, John, thanks so much for joining me on Software Engineering Radio.
John Frandsen 01:01:30 Thanks, Jeff.
Jeff Doolittle 01:01:32 All right. This is Jeff Doolittle for Software Engineering Radio. Thanks for listening.
[End of Audio]