Skip to content

UCOSP Project Ideas

Josh Marcus edited this page Sep 4, 2013 · 3 revisions

UCOSP Project Idea Page

Hello there! We are excited about working with you on GeoTrellis, which is a high performance, distributed geoprocessing server -- it processes map data (see http://en.wikipedia.org/wiki/Geographic_information_system) with enough speed that a user can have real-time interaction with map data to help them make decisions. Geospatial analysis is powerful and growing in importance, and we think GeoTrellis fills an interesting and important technical need. A key aspect of GeoTrellis is distributed and parallel computation, and we're looking for folks with particular interest in algorithms. GeoTrellis is written in Scala, and most projects involve Scala development. That said, if you are very interested in Scala but don't have much experience in it, you might consider proposing a javascript focused project. Feel free to contact us with your thoughts and questions before applying!

Ideas

Implement new raster geoprocessing operations

There are a range of map algebra (http://en.wikipedia.org/wiki/Map_algebra) raster operations that would be extremely useful as additions to GeoTrellis. You could focus your implementation on single-threaded efficiency, a multi-threaded implementation, or a distributed implementation. We use an actor framework called Akka (see akka.io) for much of our parallel and distributed work. See http://www.spatialanalysisonline.com/output/, chapter 6 for some interesting examples. For example, we'd be interested (and have ideas about) a concurrent cost-distance analysis operation.

Requirements: Scala, familiarity with algorithms

Kriging and IDW interpolation

With real world data, we often only have data for particular points -- so for raster analysis, extrapolating values across a surface is critical. A potential project would be to implement a few interpolation methods from points to a raster grid.

Requirements: Scala, familiarity with algorithms

Web-based operation builder

A geoprocessing operation can be visualized as a flow of operations connected by inputs and outputs. We'd love to see a "flowchart builder" in the browser to let users explore and build their own operations. This would primarily a javascript project.

Requirements: javascript, some familiarity with Scala

Formal grammar and parser for Map Algebra

Map Algebra (http://en.wikipedia.org/wiki/Map_algebra) is widely used in GIS in various forms -- but his formal grammar for map algebra has never been implemented as a programming language or DSL (domain specific language, a mini-programming language designed for a specific purpose). The project would be to explore whether the map algebra language specification is complete and build a parser that can interpret it. From there, the goal would be to generate a GeoTrellis operation.

Requirements: Scala, some familiarity with parsing

Generate 3D raster images

This project would be to create an operation that can generate 3D visualizations of a raster. The output would be a normal image (e.g. png) from a particular viewpoint. Optionally, SVG generation or WebGL might be alternate approaches to allow quick client-side control of the viewpoint.