We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

An American Map Style

00:00

Formale Metadaten

Titel
An American Map Style
Untertitel
A new regional map style for North America
Serientitel
Anzahl der Teile
41
Autor
Lizenz
CC-Namensnennung 3.0 Unported:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen.
Identifikatoren
Herausgeber
Erscheinungsjahr
Sprache

Inhaltliche Metadaten

Fachgebiet
Genre
Abstract
Highway shields! Expressways! This talk introduces the OpenStreetMap "Americana" project, which aims to build an American map style, complete with the features that North American users expect to see on their maps. We'll explore the techniques involved in rendering highway shields and the challenges involved in rendering an attractive highway network given the quirks and complexities of the American highway system. On the implementation side, we'll show how we're implementing an American style on a vector-tile software stack using the OpenMapTiles schema, MapLibre, and ordinary Javascript. Lastly, we'll highlight some of the future possibilities that a vector-based American map style can enable. This talk was presented at State of the Map US 2022. To learn more about State of the Map US 2022, visit https://2022.stateofthemap.us/ Learn more about OpenStreetMap US at https://www.openstreetmap.us/
21
Offene MengeQuick-SortMapping <Computergraphik>Arbeit <Physik>MAPTypentheorieServerVektorraumSystemaufrufMultiplikationsoperatorNummernsystemPunktElektronische PublikationPunktwolkeProdukt <Mathematik>Protokoll <Datenverarbeitungssystem>GoogolDateiformatCodeBildgebendes VerfahrenHook <Programmierung>ZahlenbereichRoutingEinfache GenauigkeitProgrammbibliothekAggregatzustandUmsetzung <Informatik>RechenschieberGeradeDifferenteNeuroinformatikSymboltabelleProjektive EbeneKrümmungsmaßRechter WinkelBasis <Mathematik>VolumenvisualisierungKollaboration <Informatik>GruppenoperationExistenzaussageEinsUnrundheitLoopVorzeichen <Mathematik>DatenparallelitätHilfesystemRückkopplungAbstimmung <Frequenz>Klasse <Mathematik>Spur <Mathematik>SechseckTesselationSoftwareZeitrichtungZoomStandardabweichungCASE <Informatik>CodierungDialektIndexberechnungMereologieRelativitätstheorieBitMinkowski-MetrikKonfigurationsraumOpen SourceOffene MengeKonstruktor <Informatik>Public-domain-SoftwareFokalpunktAttributierte GrammatikVHDSLSichtenkonzeptRenderingGarbentheorieEinfach zusammenhängender RaumStochastische AbhängigkeitGemeinsamer SpeicherElektronisches ForumOrdnung <Mathematik>UmwandlungsenthalpiePhysikalisches SystemDeskriptive StatistikComputeranimation
SelbstrepräsentationKeller <Informatik>Attributierte GrammatikOpen SourceTypentheorieVektorraumDifferenteGruppenoperationKollaboration <Informatik>RoutingProjektive EbeneBasis <Mathematik>ServerElektronische PublikationMultiplikationsoperatorRelativitätstheorieNeuroinformatikSystemaufrufCodierungPunktwolkeMereologieInformationsspeicherungProgrammbibliothekProtokoll <Datenverarbeitungssystem>RückkopplungZahlenbereichQuick-SortMAPKlasse <Mathematik>Physikalisches SystemBitMapping <Computergraphik>Umsetzung <Informatik>VolumenvisualisierungStandardabweichungGarbentheorieDeskriptive StatistikEinfach zusammenhängender RaumTesselationPunktTabellenkalkulationOrdnung <Mathematik>Public-domain-SoftwareFokalpunktDateiformatRechter WinkelKonfluenz <Informatik>DatenparallelitätAttributierte GrammatikSoftwareCASE <Informatik>RechenschieberEinsGeradeMehrrechnersystemAggregatzustandCodeHook <Programmierung>Einfache GenauigkeitUnrundheitVorzeichen <Mathematik>SymboltabelleHilfesystemThreadExistenzaussageGemeinsamer SpeicherElektronisches ForumSichtenkonzeptLoopProdukt <Mathematik>ZoomVHDSLKonstruktor <Informatik>RenderingZeitrichtungKardinalzahlSpur <Mathematik>Minkowski-MetrikOffene MengeComputeranimation
Transkript: Englisch(automatisch erzeugt)
All right. So I'm Brian Spillington. I'm a hobbyist out of Rhode Island. So I don't work in GIS or mapping or anything like that. So this is sort of my personal labor of love to build this community map style for our national audience. So I'd like to start with the description
of what a regional style is. So if you head over to OpenTreatMap.org, the style you see there, the so-called standard tile layer, a.k.a. OpenTreatMap Carto, sort of a globally relevant style. But there are also national specific styles.
Like I've got the French and the German styles pictured here on the slide. The German style is kind of interesting. So there's those sort of blue hexagons, which are used for the German Bundesautobahn. And so those are the shield that you would see in Germany on their sort of first class motorways. And so we've got sort of our interstate highway route numbers
kind of written on them. So if a German tourist were in America and they saw that, they would understand that we're showing a highway there. So the other kind of useful purpose for a regional style is mapper feedback. So when a mapper sees what we're drawing on the map
and they see that something doesn't look right or something's missing that they think should be there, so that gives feedback to mappers to put certain features, certain things in the map. And so the features that we choose to render or to not render or emphasize or de-emphasize will help mappers sort of put things on the map
that we think are useful for an American style. And so I've got up here a couple of examples of probably the two most prominent paper maps manufacturers in the United States, so Rand McNally and AAA. So these are probably familiar to anyone
that's looked at a paper map here. I'm gonna point out some of the features that are pretty common in American style maps. And so the first, of course, is the highway shields. You see you've got our blue and red interstates. We've got the US highway routes, but they're kind of funny pointed signs. And then the sort of circular and rounded ones
are your state highways. So I wanna point out here in the Rand map, there's a US 20 alt, right, the ALT. Those are little banners that you'll see on special routes of the US highway system. So there's all sorts of little special cases like that. Route concurrences are a big thing in the US that are not quite as common overseas.
And so in this case, you've got the Ohio Turnpike that kind of runs through the map here, and that's the confluence of Interstate 80 and 90. On the AAA side, you'll see it as sort of two seals connect to each other. Rand chose to stack them in a vertical configuration, so that's just hand-drawn cartography to make the pieces fit in the right amount of space.
So we've got expressways drawn in here. And so on the Rand map, you see them as sort of yellow cased in red. And on the AAA map, it's a little bit harder to see, but basically they're white cased in black. And so expressways are not quite freeways,
so they're roads that are high-quality, high-speed, but don't quite meet your sort of interstate-type standards. Toll roads are another key feature. So there's no toll road coloring on the standard tile layer, but we do expect to see them on American-style maps. Okay, so you notice for lesser types of roads,
they're typically drawn in a stroked-line style with no casing. And so that's pretty common, and that's different from the standard tile layer, which is generally cased at all the higher zooms. And so I also wanna point out another arrow I just popped up there.
The labels for roads are normally drawn to the side of roads on our maps, and not typically sort of jammed into the middle like you see on the standard tile layer. So collectively, these are the sorts of features that we're looking at as American-style, and we're trying to bake into our style. Now, there's one other thing
that is not typical of American maps, it's typical of all maps, in that you see the road network is interconnected in a nice sort of meaningful way. Here is the standard tile layer rendering of Oklahoma from not too long ago, and you see there's lots of little dangling ends,
there's gaps, there's little islands of roads. So the red in this view is motorway, and the orange is the next-class trunk. So the reason the map looks this way is because early on in our history, it was standard to render roads, or rather to tag roads with expressway-style construction with trunk tagging,
and then when that sort of high-speed road would enter a town and then the lanes would narrow and the speeds would go down and stop signs and that kind of thing would show up, the highway tag would flip over to primary, and so you get these gaps at lower zooms that don't show primary and lower levels.
And so the problem with that was we didn't have a tag that could express the fact that a road is expressway, and so we were sort of overloading this road-class tag to do that. And so a tag expressway equals yes, became in vogue at some point to indicate a road is expressway
independent of its overall sort of connectivity value in the road network. And so we're proud that we're rendering that tag. We believe we're the first open-source style to render this particular tag, and so I've got a little screenshot from Vermont, that little vertical section that's kind of double-cased in red, so that's a section of trunk highway
that's also an expressway, and so we have that differentiated renderer to encourage mappers to add expressway tagging wherever it is expressway. So I wanna flip the conversation a little bit to highway shields, which is probably the most recognizable aspect of our maps. There is so many strange shields out there,
and as I've gone through this project, I've even surprised myself as to what's out there. I wanna share some views of highway shields from foreign audiences, which are pretty interesting. And so this is translated from German, so this was in the Germany forum. The shields have always been a big deal for the Americans,
for whom it is completely normal that three highways and two state roads and another special truck route share a road section, and the users expect all six shields to appear nicely next to each other on the map. We agree, okay, they should. And so about eight years ago, someone opened a ticket on the Carto GitHub saying,
hey, we should have shields on the standard tire label, on the standard renderer, right, because North American users expect to see them there. So of course, that's still open eight years later, but some of the fun comments from that thread include, it is simply quite ugly.
How many symbols are for the U.S.? Dozens, hundreds? Are you proposing having symbols for different states and even counties within states in the U.S.? So absolutely yes, Ohio is probably the first offender on that. And then lastly, so this is from an American now. I don't understand the people who are suggesting that shields are optional. They aren't optional.
They are required. They're how you tell the difference between I-787, New York 787, and County Road 787. And so the bottom line here is that shields are sort of an American cultural phenomenon, and they haven't made their appearance in most open source maps simply because we as an American community haven't done it yet,
and that's what we're working to break through. So there's a lot of weird routes out there. I've probably found a half a dozen more since I put the slide together, and there are a lot of challenges related to how we draw them, should we draw them, how to re-tag them, should we tag them? And so all those conversations continue and are ongoing,
and we hope to help drive it. Okay, wanna talk a little bit about concurrency cartography? So of course a concurrency is when you have two or more routes sharing the same stretch of roadway, so we would like to draw them linearly along the path of the roadway and ordered such that the most important shields go first,
and so that means your interstates come first, then your US routes, then your state routes, and so forth, and so that's what I've shown here, and then within sort of each route network they're ordered numerically. And we're supporting up to a six-way concurrency, so this stretches from the Indianapolis sort of loop highway.
I think there's actually like eight concurrences on this stretch, but that's insane. Okay, so I wanna talk about how we've built this, and so first I need to talk about the tagging, and so we start with route relation, so we're a route relation renderer, we completely ignore any tagging on member ways, and so our route relation would have a network and a ref, and so the network would indicate
the route network that the way is a part of, and so that's structured in such a way that there's a national prefix, and then followed by a network indicator, and so US colon I equals interstates, so I, so we would say like I-10, I-15,
so the I is how we extract that, so US colon I is used on all US interstates, and then there's other codes for other types of roads in the US that start with US colon, and then ref, just get the route number, and that's different from way member tagging, which would have like just I-95 in this example.
So the network tag indicates which shields you're drawing, so if you're US colon I, then you got the blue and red interstate shield, and then the ref tag will show you what you're drawing on top of it, and so what had to happen is, and by the way, we're a vector tile renderer, so that network and ref tag has to get glommed together
into some type of attribute that shows up in the tile, and it would show up something like this, route underscore one equals US I-95, and then you could have route two, route three, route four, as many as you need to create the concurrency and so we start with open map tiles, which is the schema that we're using at the basis for the American map style,
so over the last year, we've gotten about 50 pull requests added to that schema in order to support the features that we care about, and then so open map tiles produces a vector tile format that's basically Google protocol buffs that have all your vector map data that's fed into a library called Map Libra,
which is augmented with our style, which is the piece that we provide, and so what happens is we say, okay, we got US I equals 95, draw the shield for it. Okay, now we're not gonna obviously store in our spreadsheet every single possible shield for every single possible route number
we've gotta deconstruct it, and so we get US I-95 and we say, oh, don't know what that is, and so there's a hook that says, hey, there's a missing image, what do I do? That leads into a piece of JavaScript code that says, okay, US I, I know what that is, give me that blank shield out of the spreadsheet, and I take my presidential white Sharpie marker, scribble 95 on top of it,
and now we've got our 95 shield and subsequent calls for that shield will return that cached graphic, and then that's the map that gets displayed to the user. Okay, so now you're probably saying, okay, that's great, but now you gotta have a Planet vector tile server. That's kind of big, how do we do it?
Well, there's been some new technology in the last couple of months. A product called Planet Tiler open source is able to produce a Planet vector tile server in about a couple of hours on a high-end compute node. If you're doing cloud compute like with AWS, that'll cost you about a buck to compute that.
Produces a file that's 100 gigs. You could store that for about five bucks a month, and you could serve it for about five bucks a month. It's not gonna be high-powered, but it'll get you going as a starting point, and so this is really achievable, I think, pretty much for anybody, and so with this scheme, you could imagine how we could have daily or even multiple times a day updates
if you wanna pay for your repeated computes. So I'd like to end with my call for action. So this is a community collaborative project. This is, so this was my baby, I'm starting it, but I want this to be the community baby. I'm proud of all the people that we have contributing to this, adding styles,
adding shields and rendering features almost on a daily basis. We'd like to get this up on OpenTreatMap US as a centerpiece and focal point for cartography in our community. Got a GitHub with the aforementioned global rendered tile server up there.
We got a flat-channel American map style that's quite popular, and I wanna note that we are a CC0 licensed, or rather non-licensed project, so we're dedicating this to the public domain. It is our goal that American-style cartography proliferate into open-source maps
as much as possible, so please, copy our work, our techniques, our shield graphics, it's all there for you to use. And with that, I will take any questions.