Google Maps mobile has been one of my favorite applications from Google. Recently they added one beta feature to it which is a milestone for the Google Maps Mobile (GMM). They have added the ability to find your approximate geographical location solely based on the data that your cell phone receives from base stations. This is really nice since once you know the approximate location, you can guess the details yourself. Also, each time you don’t need to enter your own address before searching for the destination address.
It has been an interesting case to find out how they do it, and by how I mean the general implementation idea and not the theoretical foundations. I post here my current understanding of the implementation, which may be lacking some parts. I hope I can update this as I gather more information.
Federal Communications Commission (FCC) requires that antenna structures with height over 200ft, or close to airport or with some specific slope requirements, register themselves. FCC publishes information gathered from these registrations on their website here. One can search these based on file number, location, address or many other criteria. For instance the tower inside UTD is shown here. The FCC File Registration Number (FRN) shown here is posted in front of the facility too.
Still one problem remains unsolved. FCC only registers the antenna structures, and not the Cell ID broadcasted by the radis on the tower. The only thing that your cell phone receives when it is connected to the radio is the Cell ID (CID) and Location Area Code (LAC), and not the FRN of tower. Although the LAC indicates an area location, the exact location and its boundaries are not broadcasted. If users wish to map the LAC to latitude and longtitude, they should find the mapping themselves. And to make things worse, phone companies do not publish these datasets of CID/LAC.
There have been multiple attempts by different parties to collect information from users of how a CID/LAC pair is related to geographical location. For instance the GSMLoc.org , CellSpotting.com and many similar projects try to gather this information from their users. Unfortunately I have not been able to find such project with enough data for users inside United States, while most of these projects cover good pars of Europe.
Google seem to have a database of the <CID, LAC> to location mapping, and seems to be completing it based on the data it receives from users. When you press the 0 button, your cell phone sends the <CID,LAC> pair(s) that it sees to Google’s server. The server comes up with an approximate location(the blue dot) and the possible error (the blue circular area). Obviously you need a data connection for the location info and the map images being sent and received. I don’t know if they have been able to buy parts of the database from phone companies, or how they use user queries to update the database, but whatever it is their final software rocks.
One final note, there are some software that can show the Cell ID and Location Area Code on your cell phone. I am using NiceTrack on Windows Mobile 2005 on my HTC Wizard. It also shows the signal strength as a graph. There are also similar software for different platforms. If you want to try the GSMLoc and CellSpotting projects, these can give you the <CID,LAC> pair.
Links for more information and resources: