Summer of Code 2006 Ideas

Google Summer of Code discussion...


 * Contact Information for SoC entrants / Questions:
 * If you have questions about our Google Summer of Code project please contact:
 * Matt Mills
 * Board of Directors, The Free Earth Foundation
 * mmills@ceteranet.com
 * AIM: f0urtyfive
 * ICQ: 284628538
 * MSN: mmills@ceteranet.com
 * Google Talk: CNS.Matt@gmail.com
 * IRC: irc://irc.freenode.net/#worldwind

Thanks!


 * Free Earth Foundation profile
 * The Free Earth Foundation is a non profit organization that promotes free GIS and geodata. We are currently looking for coders to help with NASA World Wind (http://worldwind.arc.nasa.gov) a virtual globe much akin to Google Earth. NASA World Wind is currently in C#.


 * About Google's Summer of Code (student faq, mentor faq)
 * Summer of Code 2006 is a program that offers student developers stipends to create new open source programs or to help currently established projects. Google will be working with a variety of open source, free software, and technology-related groups to identify and fund several hundred projects over a three-month period. The inaugural instance of the program, which took place last summer, brought together 400 students and 40 mentoring organizations from 49 countries. We'd like to include even more organizations and participants this year.

For those of you coming here from the Google SoC page:
 * NASA World Wind is a 3d application used for looking at geospatial data. It is written in C# and uses Microsoft's Direct X as its 3d API. It was written by NASA's Learning Technologies group to bring rich browsing capabilities to the schools and students of the world. Students will need to be able to program in one of the .NET languages that are availible and for some of the projects will need a Intermediate to Advance level of knowledge of 3D and its associated data structures.

Requirements:
 * License - NASA Open Source
 * Language - C# prefered, but any .NET supported language would be acceptable. This does not apply to any external modules like GDAL/OGR/Proj.4/JTS/GEOS/Mapserver you need to use.

OpenGL port
Difficulty: Hard

Port World Wind to use OpenGL instead of Managed DirectX

Mono Port
Difficulty: Hard(3D), Medium(2D)

Get World Wind running in Mono then hook into the OGL port above or replace with a 2D window. Possibly 2 students could collaborate on these two items.

Student-Teacher Interaction System
Difficulty: Medium-Hard

It would be great if a 'teacher' could right click on a layer and click Share, or click on the globe to add a shared icon for everyone to see. Of course this doesn't have to be limited to schools, it would also be nice for presentations for example. Lots of extra features could be added, for example the host could ask clients to all move to a certain location ("find the Eiffel tower, kids!") and a list would indicate who passed and who failed. Of course the view could be locked or free, could disable toolbars and menu items, turns layers on and off, activate plugins, etc etc.

ConferenceXP already has the infrastructure to handle the networking/multiplexing. As does Jabber which will be a more Open Source and Universal Implementation Jabber.

Easy Data Addition
Difficulty: Medium

An interface with which users (even beginners) could prepare any maps/imagery/data they might have (ideally without the need to know anything about map projections) and get it into WW, in a format which could be distributed easily... some way for individual large images to be manipulated (think Image Overlay with handles), then tiled in WW format with the ability to rejoin as a properly geo-referenced image with a world file or header info like geotif (think Tile Render with more control), as well as a way to easily substitute different map scales at different zoom levels (like USGS TopoMaps). On top of wanting all this, I think WFS/other vector data support is really important to shoot for, and Tiger data should be easily added.

A similar idea from another message:

A streamlined process for getting more data into WW. A stand alone program that can load data from a variety of formats -- terrain models, lines & polyons from shapefiles, points from a geodatabase, ortho images from tiff's in the filesystem, geocoded street network from a WFS server -- and package it all up into distributable WW cache pack. For the bonus round the cache pack can be wrapped up nicely in an installer and plonk an icon down on the tool dock.

A related idea is: Google Earth KML file support. There is a large body of KML files on the web, and several programs are able to generate KML directly (e.g. from GPS logs).

World Wind has placemark KML support already from ShockFire here - perhaps it could be extended, though.

Integrated browser
Difficulty: Easy

The disconnect between clicking on a point of interest which links to web page is a little disconcerting. Often the user can be easily fooled into thinking nothing is happening if the browser opens behind WW, which happens readily when the user clicks the mouse again, refocussing on the WW window, before the browser has a chance to fire up and load the page.

I'm not thinking of a full blown browser, more like what you would see on a PDA or mobile phone. Text and simple pictures, like the Sage RSS extension for Firefox, but in a single column and no menus side or tool bars. Perhaps in a translucent popup window like the layer manager.

GDAL/OGR and Proj.4 Integration
Difficulty: Easy to Medium

Add the infrastructure necessary to enable World Wind to handle all the formats that bitmap and vector formats GDAL and OGR can read (rasterizing the vector formats as needed) and enabling WMS and WW native tiled formats to be in any projection that Proj.4 can handle.

Scene Graph/3D Support
Difficulty: Hard

World Wind currently has no scene graph for support of efficient rendering of 3D objects. (outside of the sphere of the earth) Modify the World Wind rendering engine to use a scenegraph (Open Scene Graph is a good candidate) and allow larger numbers of 3D objects to be rendered and manipulated. Other solutions to efficiently render many 3D objects are also acceptable.

Vector Support - Shapefiles/OGR/GML/GEOS/NTS
Difficulty: Hard

Rendering vectors is a current deficiency in the World Wind engine. Shapefiles are currently rasterized before rendering as a texture. Implement a renderer for vector objects and implement the ability to support parsing of various vector file types. Optionally use NTS or GEOS to allow spatial operations on the data. Demonstrate that it works by rendering at least 2 vector types Using OGR/Shapelib to read the formats is acceptable (and preferable)There is no scene graph to support efficient vector rendering, so an inventive solution might need to be implemented.

Vector Styling/Attribute Filtering GUI
Difficulty: Easy-Medium

We have Shapefile support in World Wind, but no GUI to help style the data or build expressions to filter the data. Implement a user friendly GUI to allow the end user to style Shapefiles and to filter the data they desire. Preview of the styling visuals and use of good UI design is required.

Localization
Difficulty: Easy (but tedious)

World Wind is an English only application at the moment and has no concept of different languages or locales (except for numeric delimiters like commas versus periods in numbers) or English/Metric units. Make World Wind able to support multiple languages and units.

Shapefile improvements
Difficulty: Medium

Shapefiles need to be easily accessible. People need to be able to link to a shapefile on a web page just like they link to a Worldwind://goto/ URL using, say, a Worldwind://shapefile/host/location/shapefile.xml URL. That URL should point to a shapefile XML file. Every time WW is handed a URL, it should check the .xml timestamp and size to see if it needs to be updated (just like a browser does). When it fetches the .xml file, it automatically fetches (or re-fetches) the .zip which is the shapefile itself. The .zip file should be left packed, and the shapefile code enhanced to read the .zip file contents.

Shapefile databases need to be more useful. When the mouse cursor sits in the same polygon, or near the same line or point, for a reasonable period of time (1 second?) a window should be populated with all the data out of the database. The window should not be automatically raised -- if the user has lowered it, that means that they don't want to see it. The window should not be scrolled when it is refreshed -- if the user has scrolled to a particular data point, leave the scroll point at the same place so they see the same data point. The user should be able to select text in the window, and copy it to the clipboard. Of course, once they move the cursor away from the polygon, the data will change. So, when the WW window doesn't have the focus, use the center crosshairs as the point which populates the window.

Rocket Launch and Orbital Mechanics Sim
Difficulty: Hard

Simulate rocket launches and satellite/shuttle missions in 3D. Using various toolkits and source packages out there like JAT (http://jat.sourceforge.net/) let a user simulate a rocket launch from the surface of the earth into space and eventual orbit. Ground plots of the trajectory during launch and while in orbit are required. Interactive GUI for setting up the launch parameters are requires as well. The functionality will be similar to that provided by AGI's Satellite Toolkit.