-
-
Save confile/213016c432374658049a to your computer and use it in GitHub Desktop.
Transforming a WGS84 coordinate into geocentric cartesian coordinate
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | |
<modelVersion>4.0.0</modelVersion> | |
<groupId>de.oschrenk.geo</groupId> | |
<artifactId>geolab</artifactId> | |
<version>0.0.1-SNAPSHOT</version> | |
<properties> | |
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | |
<geotools.version>8.0-M4</geotools.version> | |
</properties> | |
<build> | |
<plugins> | |
<plugin> | |
<groupId>org.apache.maven.plugins</groupId> | |
<artifactId>maven-compiler-plugin</artifactId> | |
<version>2.4</version> | |
<configuration> | |
<source>1.6</source> | |
<target>1.6</target> | |
<encoding>UTF-8</encoding> | |
</configuration> | |
</plugin> | |
</plugins> | |
</build> | |
<dependencies> | |
<dependency> | |
<groupId>org.geotools</groupId> | |
<artifactId>gt-api</artifactId> | |
<version>${geotools.version}</version> | |
</dependency> | |
<dependency> | |
<groupId>org.geotools</groupId> | |
<artifactId>gt-main</artifactId> | |
<version>${geotools.version}</version> | |
</dependency> | |
<dependency> | |
<groupId>org.geotools</groupId> | |
<artifactId>gt-epsg-hsql</artifactId> | |
<version>${geotools.version}</version> | |
</dependency> | |
<dependency> | |
<groupId>junit</groupId> | |
<artifactId>junit</artifactId> | |
<version>4.10</version> | |
<scope>test</scope> | |
</dependency> | |
</dependencies> | |
<repositories> | |
<repository> | |
<id>maven2-repository.dev.java.net</id> | |
<name>Java.net repository</name> | |
<url>http://download.java.net/maven/2</url> | |
</repository> | |
<repository> | |
<id>osgeo</id> | |
<name>Open Source Geospatial Foundation Repository</name> | |
<url>http://download.osgeo.org/webdav/geotools/</url> | |
</repository> | |
</repositories> | |
</project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
java.lang.IllegalArgumentException: dimension must be <= 3 | |
at com.vividsolutions.jts.geom.impl.CoordinateArraySequenceFactory.create(CoordinateArraySequenceFactory.java:90) | |
at org.geotools.geometry.jts.DefaultCoordinateSequenceTransformer.transform(DefaultCoordinateSequenceTransformer.java:93) | |
at org.geotools.geometry.jts.GeometryCoordinateSequenceTransformer.projectCoordinateSequence(GeometryCoordinateSequenceTransformer.java:186) | |
at org.geotools.geometry.jts.GeometryCoordinateSequenceTransformer.transformPoint(GeometryCoordinateSequenceTransformer.java:173) | |
at org.geotools.geometry.jts.GeometryCoordinateSequenceTransformer.transform(GeometryCoordinateSequenceTransformer.java:88) | |
at org.geotools.geometry.jts.JTS.transform(JTS.java:241) | |
at de.oschrenk.geo.Transformations.transform(Transformations.java:50) | |
at de.oschrenk.geo.TranasformationsTest.testTransformation(TranasformationsTest.java:22) | |
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) | |
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) | |
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) | |
at java.lang.reflect.Method.invoke(Method.java:597) | |
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) | |
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) | |
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) | |
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) | |
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) | |
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) | |
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) | |
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) | |
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) | |
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) | |
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) | |
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) | |
at org.junit.runners.ParentRunner.run(ParentRunner.java:300) | |
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) | |
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) | |
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) | |
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) | |
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) | |
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import org.geotools.geometry.jts.JTS; | |
import org.geotools.geometry.jts.JTSFactoryFinder; | |
import org.geotools.referencing.CRS; | |
import org.geotools.referencing.crs.DefaultGeocentricCRS; | |
import org.geotools.referencing.crs.DefaultGeographicCRS; | |
import org.opengis.geometry.MismatchedDimensionException; | |
import org.opengis.referencing.FactoryException; | |
import org.opengis.referencing.crs.CoordinateReferenceSystem; | |
import org.opengis.referencing.operation.MathTransform; | |
import org.opengis.referencing.operation.TransformException; | |
import com.vividsolutions.jts.geom.Coordinate; | |
import com.vividsolutions.jts.geom.CoordinateSequence; | |
import com.vividsolutions.jts.geom.Geometry; | |
import com.vividsolutions.jts.geom.GeometryFactory; | |
import com.vividsolutions.jts.geom.Point; | |
import com.vividsolutions.jts.geom.impl.CoordinateArraySequence; | |
/** | |
* | |
* @author Oliver Schrenk <[email protected]> | |
*/ | |
public class Transformations { | |
private static final CoordinateReferenceSystem wgs84 = DefaultGeographicCRS.WGS84; | |
private static final CoordinateReferenceSystem cartesinaCrs = DefaultGeocentricCRS.CARTESIAN; | |
private static final GeometryFactory geometryFactory = JTSFactoryFinder | |
.getGeometryFactory(); | |
private static MathTransform mathTransform; | |
static { | |
try { | |
mathTransform = CRS.findMathTransform(wgs84, cartesinaCrs, true); | |
} catch (FactoryException e) { | |
System.err.println("FactoryException" + e); | |
} | |
} | |
public static Coordinate transform(Coordinate c) { | |
final Coordinate[] coordinates = new Coordinate[1]; | |
coordinates[0] = c; | |
final CoordinateSequence coordinateSequence = new CoordinateArraySequence( | |
coordinates); | |
final Geometry geometry = new Point(coordinateSequence, geometryFactory); | |
try { | |
final Geometry transformedGeometry = JTS.transform(geometry, | |
mathTransform); | |
final Coordinate[] coordinateArray = ((CoordinateSequence) transformedGeometry) | |
.toCoordinateArray(); | |
return coordinateArray[0]; | |
} catch (MismatchedDimensionException e) { | |
throw new IllegalArgumentException(e); | |
} catch (TransformException e) { | |
throw new IllegalArgumentException(e); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment