Welcome to Proj4J

Proj4J is a Java library to transform point coordinates from one geographic coordinate system to another, including datum transformations.

The core of this library is a port of the  PROJ.4 C library. The projection algorithms and coordinate system definitions are ported from PROJ.4. These are wrapped in a Java class model which follows standard Java conventions and OO best practices, and which provides a convenient domain model for working with coordinate systems.

Proj4J is a part of the  MetaCRS group of projects, hosted by  OSGeo.

Features

  • Uses the PROJ.4 coordinate system definition files
  • Supports many PROJ.4 parameters
  • Implements over 90 projections
  • Provides coordinate system definitions for EPSG and ESRI authorities
  • Simple, efficient API
  • Provides a test framework compatible with the  MetaCRS Test Suite
  • Provides unit tests defined in MetaCRS format

Download

Status: Currently this library is still being created, and is not yet ready for download

Documentation

  • The  PROJ.4 documentation is the best reference for details of the coordinate system specification language, projection algorithms and supported parameters.
  • the  Version History lists the evolution of features of the library
  • The Design Goals provide the thinking guiding project development
  • The Development Roadmap details future directions for development

Mailing List

A mailing list is available for users and developers of Proj4J.

Development

Bug Tracking

License

Proj4J is licensed under the  Apache License, Version 2.0.

Related Resources

Project History

The Proj4J codebase is based on the Java Map Projections Library. This is a partial port of PROJ.4 carried out by Jerry Huxtable at  JHLabs, circa 2006. The JHLabs port provided a large number of the PROJ.4 projections, via a simple API.

The Proj4J project was initiated in 2009 by Martin Davis with the following goals:

  • move the JHLabs codebase into an open, supported environment
  • minimize duplication of effort by tracking PROJ.4 as closely as reasonable
  • support further PROJ.4 features such as datum transformation
  • improve the error handling and reporting
  • improve the parsing and modeling of projection parameters
  • improve the API to make it more flexible, expressive and descriptive
  • add some missing projections
  • fix outstanding bugs in the projection algorithms
  • add a unit test framework (following the MetaCRS Unit Test design), with a comprehensive set of unit tests
  • add further tools to support using the library (such as a GUI interface)

Since the launch of the project, the API has been substantially refactored and extended, to make the library more flexible, powerful, and extensible.