So I have a GeoJSON with EPSG:3068 and I would like to convert the coordinates to WGS84(EPSG:4326). I could also convert them before I write them to GeoJSON. I could not find an algorithm for the conversion. I prefer Java, but any other scripts would be ok as well.
My code looks like this:
public static void convert() throws NoSuchAuthorityCodeException, FactoryException, IOException, MismatchedDimensionException, TransformException{ // CoordinateReferenceSystem sourceCRS = CRS.decode("EPSG:3068"); // CoordinateReferenceSystem targetCRS = CRS.decode("EPSG:4326");
String SoldnerBerlinWKT = "PROJCS[\"DHDN / Soldner Berlin\","
+ "GEOGCS[\"DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\","
+ "SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"
+ "AUTHORITY[\"EPSG\",\"6314\"]],"
+ "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"
+ "UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],"
+ "AUTHORITY[\"EPSG\",\"4314\"]],"
+ "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"
+ "PROJECTION[\"Cassini_Soldner\"],PARAMETER[\"latitude_of_origin\",52.41864827777778],"
+ "PARAMETER[\"central_meridian\",13.62720366666667],PARAMETER[\"false_easting\",40000],"
+ "PARAMETER[\"false_northing\",10000],"
+ "AUTHORITY[\"EPSG\",\"3068\"],AXIS[\"y\",EAST],AXIS[\"x\",NORTH]]";
CoordinateReferenceSystem sourceCRS = CRS.parseWKT(SoldnerBerlinWKT);
CoordinateReferenceSystem targetCRS = CRS.decode("EPSG:4326"); //line 74
MathTransform transform = CRS.findMathTransform(sourceCRS, targetCRS, true);
GeometryJSON jsonReader = new GeometryJSON();
Geometry sourceGeometry = jsonReader.read("C:\\Users\\Selphi\\Desktop\\test.geojson");
Geometry targetGeometry = JTS.transform(sourceGeometry, transform);
System.out.println(sourceGeometry.toString());
System.out.println(targetGeometry.toString());
}
and I get this error (maybe some jars missing?):
Nov 13, 2014 9:50:49 AM org.geotools.referencing.factory.epsg.ThreadedPostgreSQLEpsgFactory isAvailable
WARNUNG: Unavailable authority factory: European Petroleum Survey Group
org.opengis.referencing.FactoryException: Failed to connect to the EPSG database.
at org.geotools.referencing.factory.epsg.ThreadedEpsgFactory.createBackingStore(ThreadedEpsgFactory.java:441)
at org.geotools.referencing.factory.DeferredAuthorityFactory.getBackingStore(DeferredAuthorityFactory.java:133)
at org.geotools.referencing.factory.BufferedAuthorityFactory.isAvailable(BufferedAuthorityFactory.java:235)
at org.geotools.referencing.factory.DeferredAuthorityFactory.isAvailable(DeferredAuthorityFactory.java:119)
at org.geotools.factory.FactoryRegistry.isAvailable(FactoryRegistry.java:667)
at org.geotools.factory.FactoryRegistry.isAcceptable(FactoryRegistry.java:501)
at org.geotools.factory.FactoryRegistry$1.filter(FactoryRegistry.java:192)
at javax.imageio.spi.FilterIterator.advance(Unknown Source)
at javax.imageio.spi.FilterIterator.<init>(Unknown Source)
at javax.imageio.spi.ServiceRegistry.getServiceProviders(Unknown Source)
at org.geotools.factory.FactoryRegistry.getServiceProviders(FactoryRegistry.java:197)
at org.geotools.referencing.ReferencingFactoryFinder.getFactories(ReferencingFactoryFinder.java:180)
at org.geotools.referencing.ReferencingFactoryFinder.getCRSAuthorityFactories(ReferencingFactoryFinder.java:455)
at org.geotools.referencing.DefaultAuthorityFactory.getBackingFactory(DefaultAuthorityFactory.java:88)
at org.geotools.referencing.DefaultAuthorityFactory.<init>(DefaultAuthorityFactory.java:69)
at org.geotools.referencing.CRS.getAuthorityFactory(CRS.java:262)
at org.geotools.referencing.CRS.decode(CRS.java:519)
at org.geotools.referencing.CRS.decode(CRS.java:447)
at Test.convert(Test.java:74)
at Test.main(Test.java:53)
Caused by: org.postgresql.util.PSQLException: Connection refused. Check the correctness of host name and port number and check whether the data base server accepts TCP/IP connections.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:136)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66)
at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:125)
at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30)
at org.postgresql.jdbc3.Jdbc3Connection.<init>(Jdbc3Connection.java:24)
at org.postgresql.Driver.makeConnection(Driver.java:393)
at org.postgresql.Driver.connect(Driver.java:267)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at org.postgresql.ds.common.BaseDataSource.getConnection(BaseDataSource.java:87)
at org.postgresql.ds.common.BaseDataSource.getConnection(BaseDataSource.java:70)
at org.geotools.referencing.factory.epsg.DirectEpsgFactory.getConnection(DirectEpsgFactory.java:3196)
at org.geotools.referencing.factory.epsg.ThreadedEpsgFactory.createBackingStore(ThreadedEpsgFactory.java:436)
... 19 more
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at org.postgresql.core.PGStream.<init>(PGStream.java:62)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:76)
... 31 more
Nov 13, 2014 9:50:49 AM org.geotools.referencing.factory.epsg.ThreadedHsqlEpsgFactory createDataSource
INFORMATION: Building new data source for org.geotools.referencing.factory.epsg.ThreadedHsqlEpsgFactory
Exception in thread "main" java.lang.NoClassDefFoundError: org/hsqldb/jdbc/jdbcDataSource
at org.geotools.referencing.factory.epsg.ThreadedHsqlEpsgFactory.createDataSource(ThreadedHsqlEpsgFactory.java:216)
at org.geotools.referencing.factory.epsg.ThreadedEpsgFactory.createBackingStore0(ThreadedEpsgFactory.java:386)
at org.geotools.referencing.factory.epsg.ThreadedEpsgFactory.createBackingStore(ThreadedEpsgFactory.java:434)
at org.geotools.referencing.factory.DeferredAuthorityFactory.getBackingStore(DeferredAuthorityFactory.java:133)
at org.geotools.referencing.factory.BufferedAuthorityFactory.isAvailable(BufferedAuthorityFactory.java:235)
at org.geotools.referencing.factory.DeferredAuthorityFactory.isAvailable(DeferredAuthorityFactory.java:119)
at org.geotools.factory.FactoryRegistry.isAvailable(FactoryRegistry.java:667)
at org.geotools.factory.FactoryRegistry.isAcceptable(FactoryRegistry.java:501)
at org.geotools.factory.FactoryRegistry$1.filter(FactoryRegistry.java:192)
at javax.imageio.spi.FilterIterator.advance(Unknown Source)
at javax.imageio.spi.FilterIterator.<init>(Unknown Source)
at javax.imageio.spi.ServiceRegistry.getServiceProviders(Unknown Source)
at org.geotools.factory.FactoryRegistry.getServiceProviders(FactoryRegistry.java:197)
at org.geotools.referencing.ReferencingFactoryFinder.getFactories(ReferencingFactoryFinder.java:180)
at org.geotools.referencing.ReferencingFactoryFinder.getCRSAuthorityFactories(ReferencingFactoryFinder.java:455)
at org.geotools.referencing.DefaultAuthorityFactory.getBackingFactory(DefaultAuthorityFactory.java:88)
at org.geotools.referencing.DefaultAuthorityFactory.<init>(DefaultAuthorityFactory.java:69)
at org.geotools.referencing.CRS.getAuthorityFactory(CRS.java:262)
at org.geotools.referencing.CRS.decode(CRS.java:519)
at org.geotools.referencing.CRS.decode(CRS.java:447)
at Test.convert(Test.java:74)
at Test.main(Test.java:53)
Caused by: java.lang.ClassNotFoundException: org.hsqldb.jdbc.jdbcDataSource
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 22 more