Difference between revisions of "Coordinate Transformation Service"
Line 8: | Line 8: | ||
It can be of 3 main sorts : | It can be of 3 main sorts : | ||
− | * Cartesian | + | * Cartesian - e.g. x,y,z - not much used except by geodesian and during transformation processes |
− | * Geographic | + | * Geographic - e.g. longitude, latitude, and sometimes elevation or height above ellipsoid |
− | * Projected | + | * Projected - e.g. x-North, y-East - used for cartographic purposes, there are dozens of possible projection |
− | |||
Coordinate Reference System are defined by : | Coordinate Reference System are defined by : | ||
Line 25: | Line 24: | ||
* [http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/doc-files/WKT.html WKT (Well Known Text)] : there is a format specified by OGC and several variants (like ESRI proj files) introducing compatibility problems. | * [http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/doc-files/WKT.html WKT (Well Known Text)] : there is a format specified by OGC and several variants (like ESRI proj files) introducing compatibility problems. | ||
* proj text file used by the Proj4 library where each CRS is defined on a single line | * proj text file used by the Proj4 library where each CRS is defined on a single line | ||
− | * EPSG database (using | + | * EPSG database (using MS Access, hsql database or h2 database) |
<h2>'''Coordinate Transformation Service library in non java language'''</h2> | <h2>'''Coordinate Transformation Service library in non java language'''</h2> | ||
− | There is popular and mature CRS transformation tool called [http://trac.osgeo.org/proj/ Proj4 ] which is used by | + | There is popular and mature CRS transformation tool called [http://trac.osgeo.org/proj/ Proj4] which is used by |
* PostGIS (spatial database) | * PostGIS (spatial database) | ||
* ogr2ogr, based on the [http://www.gdal.org/ogr/ OGR] library (a popular command line tool able to change coordinates and/or data format of a dataset) | * ogr2ogr, based on the [http://www.gdal.org/ogr/ OGR] library (a popular command line tool able to change coordinates and/or data format of a dataset) | ||
Line 39: | Line 38: | ||
It is a library including java interfaces conforming OGC Standards for Coordinate Transformation Service and some other topics. | It is a library including java interfaces conforming OGC Standards for Coordinate Transformation Service and some other topics. | ||
At the origin, it has been developped to make libraries like OpenJUMP and Geotools interoperable. | At the origin, it has been developped to make libraries like OpenJUMP and Geotools interoperable. | ||
− | Today, GeoToolKit is the only java library implementing the GeoAPI, but adapters have been developed for Proj4 | + | Today, GeoToolKit is the only java library implementing the GeoAPI, but adapters have been developed for Proj4 so the GeoAPI can be a general interface for any CTS implementation. |
Revision as of 23:18, 19 November 2011
This page is intended for OpenJUMP and Coordinate Transformation Service developpers.
For a user guide of how to transform a layer with OpenJUMP, see CTS Extension.
What a Coordinate Reference System is ?
A Coordinate Reference System is a coordinate system that enables every location on the Earth to be specified by a set of numbers
It can be of 3 main sorts :
- Cartesian - e.g. x,y,z - not much used except by geodesian and during transformation processes
- Geographic - e.g. longitude, latitude, and sometimes elevation or height above ellipsoid
- Projected - e.g. x-North, y-East - used for cartographic purposes, there are dozens of possible projection
Coordinate Reference System are defined by :
- A Datum (WGS84, ETRS, ED50...) : mandatory for any CRS
- An Ellipsoid and a Prime Meridian : mandatory for Geographic and Projected CRS
- A Projection : mandatory for Projected CRS
There is a well established CRS registry called EPSG, including definitions of hundreds of CRS.
Most widely used formats to describe CRS are :
- WKT (Well Known Text) : there is a format specified by OGC and several variants (like ESRI proj files) introducing compatibility problems.
- proj text file used by the Proj4 library where each CRS is defined on a single line
- EPSG database (using MS Access, hsql database or h2 database)
Coordinate Transformation Service library in non java language
There is popular and mature CRS transformation tool called Proj4 which is used by
- PostGIS (spatial database)
- ogr2ogr, based on the OGR library (a popular command line tool able to change coordinates and/or data format of a dataset)
Coordinate Transformation Service in/from Java
It is a library including java interfaces conforming OGC Standards for Coordinate Transformation Service and some other topics. At the origin, it has been developped to make libraries like OpenJUMP and Geotools interoperable. Today, GeoToolKit is the only java library implementing the GeoAPI, but adapters have been developed for Proj4 so the GeoAPI can be a general interface for any CTS implementation.
GeoTools and GeoToolKit
- GeoTools has developped a pure java Coordinate Transformation Service. It has been a GeoAPI implementation for a long time, but it is no more.
- Ede has developped CTS Extension for OpenJUMP which makes GeoTools CTS accessible from OpenJUMP. It is based on a quite old version of GeoTools.
- GeoToolKit is a fork of GeoTools. GeoToolKit is still a strict implementation of GeoAPI.
Port of Proj4 library into Java
JhLabs has ported Proj4 code into Java. It is not a complete implementation of GeoAPI and has much less classes than GeoTools or GeoToolKit. It is available from two places :
- As Proj4J, hosted by OsGEO and maintained by M. Davis
- As JMapProjLib, on sourceforge, maintained by B. Jenny
ISA has developped a thin wrapper making ogr2ogr available from java (and from SkyJUMP). It is Mainly a java UI calling ogr2ogr.exe SkyJUMP com/isa/jump/plugin/igor package contains 4 classes which may be able to port IGOR to OpenJUMP quite easily.
CTS
I (Michaël) developped a CTS library which is an on-going work and which lies somewhere between Proj4J and GeoTools. Source code is available on OrbisGIS web site. I used an old version of this library to create JTransfoCoord, and I've refactored it several times since then. My goals would be to achieve it and to implement GeoAPI, but I have no deadline and only sparse time to do it ;-)