Wednesday, February 07, 2007

Building Bridges...OpenJUMP, UDig and GeoTools

There was recently some discussion on the JUMP/JPP mailing lists about the differences between JUMP/OpenJUMP and UDig that has prompted me to take a more active interest in GeoTools. The discussion that occurred made me realize that I could be taking a more proactive role in building a good working relationship between the OpenJUMP Community and the UDig Community.

I think that most people realize that it isn’t practical for UDig and OpenJUMP to merge into a single GIS platform. For one thing, JUMP/OpenJUMP uses Swing and its own Feature Model, while UDig is built using the Eclipse technologies SWT and RCP, and incorporates its Feature Model from the GeoTools project. It also seems that the GeoTools project is focused on implementing OGC Specifications, while JUMP/OpenJUMP doesn't have this as a primary goal. The two programs definitely take different approached to some of the same problems, but in the end I think they pursue the same noble goal. That goal is basically the availability of a great open source GIS program written in Java and available to the masses.

Some in the community would argue that having two projects pursue a similar goal like this is a waste of programmer time and effort. While this may be true to a certain degree, I think it is important to maintain a positive attitude about the situation. I choose to instead view this situation as a great opportunity to explore multiple ways to solve common GIS software development problems. I think of it as doubling our R&D efforts.

That being said, I still recognize that it is important to avoid duplicated effort. Although code sharing between OpenJUMP and UDig will be a challenge because of the defferent program architectures, I think it is possible in at least a couple of areas:

[1] I/O support for common spatial data formats like ESRI Shapefiles and Autodesk’s DXF.
[2] Improvements and enhancements to the JTS Library and technology built on JTS.

There may be other areas where the two communities can share code, but I think we can start with these two. It may also be possible to exchange ideas for design where actually sharing code is not possible.

I’m going to get this started by incorporating the latest GeoTools classes that support ESRI Shapefile I/O. I took a brief look at the Javadoc for the classes, and it seems like they have everything I will need to support some of the ESRI Shapefile tools I wanted in OpenJUMP. It appears the GeoTools developers have done some awesome work in this area, and I'm very thankful that I stumbled across it. This should move my release date of this tool up a couple of months.

I hope to contribute to GeoTools too, and will be contributing bug fixes and small improvements to the Shapefile classes in GeoTools if I can. I also hope to incorporate some sort of DXF file support into GeoTools in the future.

I’m still not sure how this latest venture of mine will work out, but I hope it will result in a better relationship between the OpenJUMP and UDig communities. Perhaps my modest efforts will remind developers and users from both communities that we pursue the same noble goal.

The Sunburned Surveyor