Monday, January 31, 2011

Airports, Part 2

In my first installment of the airport series I presented some basic mapping techniques I used while mapping rural airports in Kansas. One comment I got on IRC suggested using a slightly different tagging scheme for displaced thresholds. The suggestion (I believe it was from pnorman) was to tag it with two tags. One being aeroway=runway and the other being runway=displaced_threshold. While I haven't gone back and changed my previous work, this may be a better way of doing it. First of all, they would get rendered on the default map. I know, I know... "don't tag for the renderer!" But here's the thing: This is technically not incorrect. Displaced thresholds are considered part of the runway and are included when the runway length is specified. So tagging it as a runway but then specifying that it is a specific type of runway is not incorrect tagging. On standard maps it would be rendered as part of the runway but someone making an aeronautical themed map could use the runway=displaced_threshold tag to differentiate it and produce a customized rendering.

Before I go on, I am just going to repost a link to the OSM wiki page for Airports as a reference.

Now on to some new material. I was moving west-to-east through Kansas so the first "big deal" airport I came to was the Salina Municipal Airport. Its 17/35 runway is a massive 12,300 feet (3.8 kilometers) long. Any aircraft currently in service could land here with room to spare. Why does a municipal airport in a city of under 50,000 people in the middle of Kansas have such a massive runway? The military, of course! This facility was built at the beginning of World War II and was used to train heavy bomber crews. Then during the cold war it became part of Strategic Air Command operations until it was closed and turned over to the city of Salina in 1965. (source: wikipedia) Now it serves mostly general aviation but is also used by Kansas State University's aviation program which is based at the Salina campus. A few years ago it was used by Steve Fossett as the start and end point of his solo, nonstop flight around the globe. And I got to bill them for the telecommunications services they used while doing it! (My current day job deals a lot with the telecom billing system at KSU)

I promise, I'll get to the mapping in this post, eventually. But I should point out that this is one thing I love about contributing to OSM. Seeing something unusual in aerial imagery can often lead to an hour spent on wikipedia or a fun discussion on IRC involving people from around the world or, occasionally, a field trip to go see what the heck is happening "on the ground" to cause it to show up a certain way in aerial imagery.

Back to Salina: I had two sets of aerial imagery that conflicted slightly about the length of one of the runways. (USGS and Bing) Obviously the images were taken at different times. But which was newer? Bing imagery has metadata that is sent with each tile that can sometimes tell you when it was taken. In JOSM you can display this metadata by right clicking without moving the mouse. A menu pops up with a "Show Tile Info" option. Unfortunately in most of the areas I have worked in, it usually says something like it did in this case: "capture-date: 2/1/1995-3/15/2007." So that's useless. While reading the wikipedia page about the Salina airport, I noticed a link down in the "External links" section pointing to an FAA "airport diagram" in a PDF. I clicked on it... and just like that I had found a new source of data to use while mapping! Since this is federal government data that is intended for public distribution, I believe it is public domain so license isn't an issue. And yes, this is only for airports in the US. My apologies to the rest of the world.

These diagrams are constantly updated by the FAA. They have the basic layout of the airport. Turns out the Salina airport shortened the 12/30 runway for some reason so that answered my aerial imagery question. But the diagram also has information about the taxiways. Unused ones are X'd out and the ones that are still in use have their names specified. That can go into the ref=* tag of the taxiways just like runway numbers. One thing to note however is that these are "diagrams" not "maps." So they can not be relied on for accurate cartography. Buildings are usually just squares and do not represent the true proportions or shape of the building. So use with caution - just like any other external data source.

Here is the Salina airport with its enormous runway:

Other information that can be taken from the FAA PDF files include location of the control tower and runway width which can go in a width=* tag. Looking at the contents of existing width tags, it doesn't look like there is currently any support for specifying units so I guess everything should probably be in meters. (Everything should be in meters anyway. Everywhere. But that's another debate for another blog)

It seems there are two ways to map the control tower. One being aeroway=control_tower and the other (documented on the wiki) being man_made=tower/service=aircraft_control. Currently they seem to have about the same usage (both minuscule - about 50 instances) but I think I personally prefer aeroway=control_tower. That keeps airport features together in the same tag. Also, man_made=tower seems to be more for things like cell phone or radio towers. An aircraft control tower is typically a building that happens to be tall and sometimes skinny.

As I said above, I found this particular FAA diagram via Wikipedia. When I went back to try and find diagrams for other airports I ran into all kinds of old information, broken links and just plain bad design on So to save you the pain, here is a link directly to where you can start a search for airports in your state: First you have to select the date range, then click on a state. Then you can search by airport code, city name or airport name. Not every airport has a diagram but certainly all major ones do. Go forth and tag!

Another interesting document from the FAA is Airport Marking Aids and Signs. This is just a document showing exactly what all the little lines/blocks/arrows/signs/etc at an airport mean.

The next major airport I hit was Mid-Continent Airport in Wichita. It already had some pretty good coverage but I added ref=* tags for all the runways and taxiways using the FAA diagrams. The Wichita airport has a few more taxiways than usual because it has both Learjet and Cessna facilities adjacent to the airport and they are all connected by taxiways.  Because the previous mapper also used the source=* tag, I knew it was based on Yahoo imagery so I also improved the level of detail according to the high resolution Bing imagery available here.

Two new features I identified at this airport: parallel runways and terminal buildings. If runways are named based on magnetic heading then what happens for parallel runways? Turns out this is handled pretty simply. Just tack "R" and "L" to the end of it based on which one is to the right and which one is to the left as you are approaching the runway to land. So one runway is named 1L/19R and the other 1R/19L.

Terminal buildings aren't too hard either. In this case, there is a main airport building and two wings that extend to the east and west. These wings are where the gates are. Since I have been to this airport before, I know they are simply referred to "East Concourse" and "West Concourse." The previous mapper had done it as a single huge polygon with a building=yes tag. I decided to split it up int 3 parts so that I could name the concourses. I added an aeroway=terminal tag to the two concourses. Technically I believe there is a difference between a "terminal" and a "concourse" but the distinction seems a little hazy in common usage and depending on airport design. OSM doesn't seem to have anything mapped as a concourse so I just stuck with terminal. Anyway, here is the finished product:

The couple of times I have embarked on bigger projects like this on OSM, I tend to start out mapping basics. As I go I find more details to map and by the end I'm doing some serious micro-mapping and worrying about sub-meter offsets in aerial imagery. In this case, these tendencies were worsened by the increasingly good resolution of aerial imagery as I moved into the urban areas of eastern Kansas. The last airport I touched was Kansas City International airport. Yes, it is in Missouri. But it is in the part that was robbed from Kansas by the pesky meandering of the Missouri river. Also, it was within the simple square bounding box I used to download airport nodes from the XAPI.

Again, a lot of features were already basically there but were traced from old Yahoo imagery. Having flown out of this airport multiple times, I was able to use my own local knowledge to augment the aerial imagery. For example, the original imagery had a good bit of radial distortion and it was hard to distinguish the terminal buildings from the large overhang that covers the sidewalk in front of them so the buildings were lopsided and not uniform like I know them to be in reality. Here is a "before" shot I got from OpenCycleMap before it had a chance to re-render:

Not horrible at this zoom level but when viewing it in JOSM with z21 aerial imagery, it looked a lot worse. I found this airport to be kind of fun to work on and ended up adding more and more detail over a period of a couple of days. With large operations like this and high resolution imagery, you can pretty much add as much detail as you want, especially if you have some local knowledge to add to the imagery. So here is what I did with the terminals:

I used the architecture to my advantage and placed nodes in the columns of the building where straight segments connect at an angle to make a curved building. Here you can clearly see the large overhang in front of the building that somewhat confused the previous mapper.

One area that wasn't mapped very well were the long term parking lots north of the airport as well as the buses that take you from long term parking to the terminals. Again, my local knowledge combined with the high resolution aerial imagery let me pick out a lot of features. For example, bus stops, tagged highway=bus_stop and shelter=yes since they are small enclosed huts to protect travelers from the wind that usually blows from some direction around here.

Then of course there are the parking aisles (highway=service/service=parking_aisle) which in this case can also be tagged as oneway=yes since you can clearly see the angled parking stalls. Also, there are dedicated bus service roads leading from the parking lots to the main road to the airport. Access to these roads is restricted to buses only and enforced by lift gates. The roads are tagged  tagged highway=service/access=private and the lift gates, barrier=lift_gate/access=private. This is where a restricted bus route enters a parking area through a lift gate:

Then of course there are the parking areas themselves. These were already present but I refined them and added some more tags. Currently they are tagged with this: amenity=parking/parking=surface/fee=yes to indicate that this is a surface (as opposed to underground or garage) parking lot and that a fee is charged for parking here. The result is this map of the long-term parking area:

One useful thing I need to add is either a name or ref tag for the parking areas. I know they are named to correspond with the terminals (A, B, C) and you are supposed to park in the lot that is named the same as the terminal you will be flying out of (for bus routing reasons) but I don't recall which is which off the top of my head. Guess it's time for a trip to some place exotic so I can survey the airport parking lot on the way there.

The short term parking in the center of the terminal buildings can be tagged similarly but with "parking=multi-storey" instead of "surface" to indicate that these are multi-level parking garages. They aren't rendered any differently though. There are also walkways that cross a small bridge from the top of the parking garage to the streets in front of the terminal buildings. Here is a view of one of the terminals:

Notice the "B" in the middle of the parking area. That is the name of this terminal building. This is kind of a bug in the Mapnik rendering software in my opinion. I believe it uses a "center of gravity" algorithm for determining where to place polygon labels. In this case, the center of gravity of the building is outside of the building outline. Oops.

The last bit of micro-mapping involved the grassy areas between the runways/taxiways. The wiki page mentions that they can be mapped as landuse=grass so I thought I'd give it a shot and see how it turned out. The result seems pleasing to the eye however it is a fair a mount of effort. Although I personally find mapping just about anything at zoom level 21 is kind of fun. Like this:

Yes, I found a windsock in aerial imagery. And of course there is a tag for it! aeroway=windsock - and there are currently 280 of them in the database. JOSM even renders a little red/white striped cone on a little stick! However it is not rendered in the default map styles on

After adding a few more features like fences where I could clearly make them out (barrier=fence) and gates (barrier=gate) as well as the drainage ditches, (waterway=drain) here is the Kansas City International Airport:

The main thing I'm not really happy about is the road classification. When I started, everything in the area was tagged as highway=residential, as imported from TIGER. I upgraded the major road coming in to the airport to trunk since it is basically built like an interstate. Even some of the roads inside of the security perimeter of the airport had been imported from TIGER. These I changed to highway=service and added access=private. The main circle that goes to all three terminals is marked as tertiary. This all seems fine. The terminal roads themselves are very low speed (I think the sign says 15 mph) but also very wide. There are two 3-lane roads separated by an island in the middle for taxis and hotel buses and such. They seem too big to be called a service road. I left them classified as residential for now but this doesn't seem quite right either. Same with the roads leading to the long term parking lots. Suggestions are of course welcome. :)

One thing I haven't touched on is gates. They can be mapped by tagging a node with aeroway=gate and ref=* to indicate the gate number. I have no source of gate names/locations so for now I ignored them. I was also unsure about how to map them. One airport I looked at had lone gate nodes floating out in the apron, essentially where the airplane would sit to dock at the gate. While this kind of makes sense from the pilot's perspective, I might argue that gates should probably be mapped at the edge of the terminal building or even inside the building to make them of use to passengers wanting to find out where they need to go in the airport to find their gate.

And one last note: there are a good number of adjacent features (mostly apron/terminals/landuse) that share nodes with each other right now in my work at the Kansas City airport. These should probably be converted to use multipolygons as node sharing is often frowned upon for this kind of thing and is indeed somewhat harder to deal with in some instances. That's the way it was mapped when I got there. My edits made the map better. Not perfect. Yet.

And so concludes my great Kansas airport mapping adventure. Thanks for flying!


  1. Fantastic. I love that you're combining so many sources with your local knowledge to get all the details right!

  2. Very good work. As Andy says the combination of local knowledge and aerial imagery is excellent. I will be pointing towards this (and the previous) article as examples of how the two should be used together.

    For the road classification: I'm not entirely familiar with the exact rules you using in America for different classification but those highway=residential roads should almost certainly be highway=unclassified since residential is reserved for roads with houses on each side (though some peoples definition may vary a bit).

    In the UK we would probably also not mark the circle road as tertiary since that is generally reserved for roads which aren't legally primary or secondary but which are major thoroughfares through,for example, a town. However, as I say this is the UK tagging rules so it's entirely up to how you guys do it in the USA.

  3. About gates. We really should split the aeroway=gate in two: One node for the place where the pilot would park the plane and one for where the passenger show up for embarking. These two points are usually close together and named the same, but they may just as well be quite different:
    Passenger gates may have letters indicating witch concourse its in. They may be an exit to the apron, accessing multiple aircraft-parking spots (walking or with bus):
    While the aircraft parking can be for cargo (GA) or have a completely different ref than the passenger gate:

    In the examples above, I used aeroway=gate for the passengers and aeroway=ramp for the planes.
    I realize that 'ramp' may for some be synonymous with apron, but perhaps the subtle difference is could convey just that little difference between the whole area and the single spot.

  4. Ahem. aeroway=parking_position seems to have some more usage (>120) than my 13 aeroway=ramp...