Stratalogica
So let’s talk about spaceships… I mean Stratalogica.

Stratalogica has been my life for about the past year. It is a teaching tool for geography and history wrapped around Google Earth (for short). Roundarch the company I work for teamed up with Nystrom a division of Herff-Jones, to try and create a new platform to interact with their content. Long story short we came up with Stratalogica.
Of course I wasn’t the only one on this project, and I worked with some amazing people to come up with the ideas we’ve executed. And I’m going to talk about some of them.
Outside of the Google Earth portion which we considered 3D Maps, we came up with display architectures for what we ended up calling 2D Maps, Atlases, Charts and Outline Maps; all of which live as Flash Applications. There’s some other sections of the project I wasn’t too involved in which Include an administration built in JQuery and a Library application built in Flex. So let me tell you a little about the parts I was involved in:
3D Maps: For 3D maps I was tasked with converting all of Nystrom’s content into a format that can be displayed on Google Earth. We wanted to maintain accuracy and detail of the original content. So after many weeks of research, I developed a solution using Google’s (now deprecated) Regionator libraries written in Python… Oh yeah I learned Python, in about 3 weeks, actually I’m still learning python, it’s a pretty cool language. Nystrom’s images were geo-referenced, then ran through a script that chops them up into tiny little pieces and creates KML files for every image file. This is called a Superoverlay. It works on the basis of an image pyramid, 1 kml file the links to 1 img, also references the next 4 images, which reference another 4. On and on until you get to the original size of the image. In our case 256×256 pixel tiles, for an image that is 36,000 x 18,000 pixels…. LOTS OF TILES. That’s one map… actually one layer of one map. It’s huge.
2DMaps, Altases, Charts, and Outline Maps: All of these components run on very similar core’s. They all use the OpenZoom API, which uses a similar image pyramid structure to Google’s except the images don’t need to be geo-referenced, and we could use Photoshop to generate the tiles. On top of the OpenZoom backbone we’ve built drawing tools that lets you interact with the maps much in the same way you do under the 3D environment. Along with that I’ve built a pretty cool solution for the outline maps that allows you to convert the OpenZoom content into a PDF. For this I used AlivePDF. This was of course much experimentation with the Flash PrintJob class, which I must say after weeks of tweaking it, trying to use PixelBender to optimize it, and I have no idea how many other solutions I attempted, is terrible. If you really want high quality print output from flash in AS3, USE ALIVEPDF, it will save you so many headaches.
Outside of these modules, there was a few other minor components in the application i had fun (and help) building. A customized video and audio player, and Flash legends for all of the maps that interact with the 3D maps through some XML-RPC and External Interface calls. All of which makes this pretty cool stuff… and that’s only PART of the front end.
The backend I can’t speak much for, since what I know is rudimentary, but let me tell you it pretty cool in my book. This project has been a great exercise in what you can do with a bunch of developers that rather be partial to open source technologies, and pretty close to technology agnostic, so we ended up with a blend of the following frameworks, API’s, and languages:
Actionscript 3, Java, JavaScript, JQuery, TweenMax, OpenZoom, Google Earth, Hibernate, Spring, Python, Drupal, Flex/Flash, AlivePDF, Oracle, MySQL, SQLServer 2005(or 2008, dunno not a DB guy), borrowed some stuff from Senocular.com, Tomcat, and I’m more than positive I’m forgetting a couple of big ones. Ohh and I only code AS3 in FDT… why would you use anything else, are you nuts?
So now that you’ve listened to me nerd talk, go play with SL and start your own trial account, and if you’ve played with it already I’m glad you came to listen more.
Of course I can’t share the source code for any of this, but I’ll throw up some tutorials on how to use alot of the frameworks I’ve used. Through this project I’ve learned about quite a few things I want to experiment with all of them, and this will be my playground.