Thursday, January 9, 2014

unFlatland: Make Maps in 3D



The coding has been too much fun and thus the writing of posts has not been good. Even worse: the more I code the more things there are to write about and I fall even further behind. Speaking of Sysiphus my previous post - on FGx Globe - was about rolling that big rock we all live aboard.

The issue with the FGx Globe is that it really only shows the aircraft that are in the air. Well, aircraft do need and want to touch land from time time. Even these virtual ones.

So, what are some ways for you to quickly and easily display highly detailed 3D geography in your browser? Exploring the possibilities has been keeping me up late - and even getting me up early for weeks.

So let's jump back a month or so:

UnFlatland R 4.1

This 3D map covers the entire earth with an accuracy of one elevation point approximately every one kilometre or 43,600 x 43,600 data points.

The current goals include:
  • Attain an accuracy of a datum every one hundred meters for the entire earth.
  • Make the data sufficiently compact that it will fit in a single GitHub repository - which have limits of about one gigabyte of data maximum
  • Follow the TMS/Slippy Map simple proven methods
  • Have it all work in browser with nothing to download or install
  • Make it easy enough so that beginning and intermediate coders can build and edit 3D maps
  • Supply the knowhow so that it is easy to add building, diagramming, 

There's probably another half-dozen cool things involved, but the main thing is to get the code up on GitHub and thus allow you to play with it.

Some comments on unFlatland.
  • Latitude & Longitude. Enter any latitude or longitude and the press 'Go'.
  • Cities dropdown. The 'Cities' dropdown takes you directly to any of 2,017 cities around the world. Macchu Pichu and Kathmandu are fun places to visit.
  • Zoom levels dropdown. Currently there are only zoom-levels 7-12.  Elsewhere we have zoom levels 1-7 working well and progress is being made on the higher levels.
  • Scale: The default is for a highly exaggerated map. Such exaggeration really helps with debugging and identifying issues. Some people say the display looks 'unrealistic'. A setting of one will make the map totally flat. A setting of two approximates true-to-life scale.
  • Map types. Select the type of map you want overlaid or 'draped' over the terrain.
  • Camera controllers. The first person controller allows you to fly over or through the landscape as if you are in a very high-speed helicopter. Pressing the right mouse button or holding two fingers down on the tack pad allows you to fly backwards.
  • Placards. Click the checkbox to toggle the display of the name of every city in the map.
By the way, the title unFlatland has several interesting sources. See the Wikipedia article on Flatland. Also my eldest daughter is an industrial designer. A critical requirement for industrial designers is to be able to think and communicate in 3D. While she was studying, we once had a chat about working with graphic designers and people in the print industry. And she remarked something like "Not interested, all their work is in Flatland."

So the title of this app, unFlatland, is a reminder that we live in a 3D world. We are in the process of leaving behind those old 2D paper maps and entering a world full of lumps and bumps. And even more importantly, it is a land where people live and things happen and our maps should reflect this activity.

You can see two derivatives of unFlatland that begin to show the active possibilities.
FGx Plane Spotter allows you to travel to all the usual places. And you can also see who is currently flying a virtual aircraft using the FlightGear simulator. And if you have a Leap Motion device you can have a hand, so to speak, in the game yourself.