Feb 15, 2007

Maps are Complicated

I am very dis-satisfied with the state of map services on the Internet. So much so that I've quite my job to write a better service. Yes, this might qualify for an insanity award, but it is my life and I am so far happy with my decisions and illusions.

After playing with some of the MAP API's offered by Google, Yahoo and Mapquest I've come to the conclusion that Mapping software is really complicated. (A collective "Duh" is heard and acknowledged).

One of the gaping holes I've discovered has to do with the standardization of intersection names. Namely, there is no such standardization. Try the following in a few map service providers.

TX-71 (W) & I-35 (N), Austin, TX
If you haven't guessed, I want the spot where 71 (Ben White) crosses the north bound lanes of IH 35 in south Austin. This string will work for Google, but not Mapquest or Yahoo. I guess that would be bad since they're all about search technology and need to retain some sort of identity apart from one another. But for the end user it really is bad because if you want to get directions to an intersection or pick an intersection as your starting point, there is no reliable way to select an intersection and then tailor your directions from that spot. Yes, you can use an address and pass through the intersection but hitting that spot is the challenge. I stumbled upon this when testing out a trick little jsp tag library for Google Maps.


With everything moving to geocodes, this problem is exacerbated because you have to be accurate when specifying an intersection in order to get the geocodes returned to your app. The tag library above actually uses Yahoo's geocode API to return lat/lon values from address values you provide, so that you can add custom markers on maps you create via the tag library.

Some of the private map software providers provide complicated aliasing schemes where the user actually provides the aliases but has to create a reference to the actual geocode. Starting to see the circular logic problem involved here?

Also, notice the example I provided above isn't even consistent on Google. If I derive a pattern from the above example, I should be able to use something similar to find the spot where I-10 crosses I-45 in Houston. Using the "get directions" link on google maps, enter in your data like this:

From: TX-71 (W) & I-35 (N), Austin, TX To: I-45 (S), I-10 (E), Houston, TX
You get the following:
We could not understand the location I-45 (S), I-10 (E), Houston, TX

Eh? Why not? Now modify this a bit and just replace the destination to "I-45 Houston TX". And Voila! Directions to Houston but going North on I-45! You can't specify that you want to go south unless you make your destination some location south of Houston.


I'm not sure that this is Google's "fault", it's a historical thing. The alias information for most of the map data available regarding intersections is derived and people have never been consistent by default. Think about it, address incormation is consistent (within a country anyway). But no such standardization has been devised for intersections.

A standardized intersection naming convention for at least the major and minor freeways and highways would surely be a wonderful thing even if a daunting task.

How much would it be worth to have every intersection abstracted such that you could enter in a string matching a standard pattern and return reliable coordinates? I'd certainly pay for it.


ARConn said...

And next i suppose U'll want to standadise time into "zones" instead of each city setting its own time by the sun?

Rick Fisk said...

Now that would be completely archaic.