The Artima Developer Community
Sponsored Link

Ruby Buzz Forum
On Coordinate Systems

0 replies on 1 page.

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 0 replies on 1 page


Posts: 201
Nickname: cfis
Registered: Mar, 2006

Charlie Savage
On Coordinate Systems Posted: Apr 20, 2006 1:26 AM
Reply to this message Reply

This post originated from an RSS feed registered with Ruby Buzz by .
Original Post: On Coordinate Systems
Feed Title: cfis
Feed URL: http://cfis.savagexi.com/articles.rss
Feed Description: Charlie's Blog
Latest Ruby Buzz Posts
Latest Ruby Buzz Posts by
Latest Posts From cfis

Advertisement

If you feel like ending a conversation with a developer then simply bring up the topic of character encodings. Or, if you're talking to a GIS wonk, then simply mention coordinate systems. In either case, your compatriot is sure to beat a hasty retreat to the nearest exit.

Which of course makes you wonder why I'm mentioning both of them in my blog. Perhaps I'm delusional, but with the explosion of web-based mapping using Googe, Microsoft or Yahoo apis, I've been seeing a lot of questions about coordinate system lately.

So in the spirit of Tim Bray's and Joel Spolsky's wonderful writeups of character encodings, I thought I'd put together a basic survival guide to coordinate systems over my next few posts and then tie it back to Google Maps.

I mentioned encodings and coordinate systems together in the first paragraph because they share a fundamental similarity - both are needed to correctly interpret a piece of data. Given a set of bytes you need to know the encoding to correctly extract the characters. Given a set of coordinates you need to know the coordinate system to correctly locate them.

So what is a coordinate system? It is an agreed upon way of representing locations. The best explanation I've ever seen comes from GE's Smallworld documentation. Spicing it up a bit, imagine you've buried some treasure on a deserted island, and like any good pirate, you want to make a map so you can find it later. You send off two of your trusted lieutenants to do the job. The first one comes up with this map:

Treasure MapImage courtesy GE.

He explains it to you by saying:

Start at the giant conch shell on the western beach, define one axis to run east and the other one to run north. Then divide the island into a grid where each grid unit is 10 paces square. To find the treasure walk 4 units along the first axis and one grid along the other axis. Thus the treasure is located at coordinate 4,1.

Your other lieutenant comes back with this map:

Treasure Map 2Image courtesy GE.

He explains it to you by saying:

Starting at the the clump of two palm trees on the western beach, look towards the giant conch shell. Call this one axis and make the other one perpendicular to it. Then divide the island into a grid where each grid unit is 10 paces square. To find the treasure walk 2 units along the first axis and then 3.5 units along the second. Thus the treasure is located at point 2, 3.5

Both lieutenants unknowingly defined their own coordinate systems. To do this they first defined an origin, then two axes and finally a default unit size.

Without knowing the definitions of the coordinate systems, the points (4, 1) and (2, 3.5) are meaningless. And we would have no way to see that they actually define the same place!

There are of course an infinite number of coordinate systems that could be defined for this treasure map, and if you sent out a few more lieutenants they'd come up with a few more coordinate systems. Of course most people naturally focus on obvious physical features so its no surprise that the giant conch shell plays an important part in the definition of both coordinate systems.

Both of the coordinate systems above are know as local coordinate systems. To define a local coordinate system requires specifying an origin, two axes and a unit size. You've probably done this yourself - as a kid I used to do this all the time when creating maps of my neighborhood.

We use maps with local coordinate systems all the time. Golf course maps, bus maps, train maps, garage sale maps, quaint maps of downtown's, amusement park maps, etc. The examples are endless.

Local coordinate systems have a major limitation though - its harder to share data. Try creating a map that combines information from two different maps with local coordinate systems. First you'll have to reverse engineer each coordinate system (your golf course map probably doesn't tell you where the origin is, what the axes are or what the unit size is). Then you'll have to take the data on one map, convert it from its coordinate system to the other map's coordinate system, and then redraw the map. All in all quite a pain.

It would also be useful to have coordinate systems that accurately cover larger extents - for example the state of Colorado where I live.

There is class of coordinate systems, called geodetic coordinate systems, designed to solve this problem. Geodetic coordinate systems are based on mathematical models of the shape of the Earth. They are used by Google Maps, road atlases, navigation charts, etc. Defining a geodetic coordinate system is a much more complex undertaking than defining a local coordinate system, so I'll leave that until the next post.

Read: On Coordinate Systems

Topic: Guess who? Previous Topic   Next Topic Topic: JavaScript Is Sweet

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use