package com.androidol.proj4j.test; import java.awt.geom.Point2D; import java.io.IOException; import com.androidol.proj4j.map.proj.Projection; import com.androidol.proj4j.map.proj.ProjectionFactory; import com.vividsolutions.jts.geom.Point; public class TestProj4j { public static void testProjection() { Projection epsg3785 = ProjectionFactory.getNamedPROJ4CoordinateSystem("epsg:3785"); /* System.out.println("transform from latlon to epsg:3785"); System.out.println("latlon: -117.5931084, 34.1063989"); Point pEpsg3785 = epsg3785.transform(-117.5931084, 34.1063989); System.out.println("epsg:3785: " + pEpsg3785.getX() + ", " + pEpsg3785.getY()); System.out.println("transform from epsg:3785 to latlon"); System.out.println("epsg:3785: " + pEpsg3785.getX() + ", " + pEpsg3785.getY()); Point latlon = epsg3785.inverseTransform(pEpsg3785); System.out.println("latlon: " + latlon.getX() + ", " + latlon.getY()); */ //+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs String[] params = { "+proj=tmerc", "+lat_0=37.5", "+lon_0=-85.66666666666667", "+k=0.999966667", "+x_0=99999.99989839978", "+y_0=249999.9998983998", "+ellps=GRS80", "+datum=NAD83", "+to_meter=0.3048006096012192", "+no_defs" }; Projection epsg2695 = ProjectionFactory.fromPROJ4Specification(params); System.out.println("transform from epsg:2695 to lonlat"); System.out.println("epsg:2965: 166850.0, 1703850.85" ); Point latlon = epsg2695.inverseTransform(166850.0, 1703850.85); System.out.println("latlon: " + latlon.getX() + ", " + latlon.getY()); System.out.println("transform from latlon to epsg:2965"); System.out.println("latlon: -86.24155290750238, 39.92487547623508"); Point pEpsg2695 = epsg2695.transform(-86.24155290750238, 39.92487547623508); System.out.println("epsg:2965: " + pEpsg2695.getX() + ", " + pEpsg2695.getY()); } /** * */ public static void testProjectionFactory() { /* * getNamedPROJ4CoordinateSystem() * returns a Projection based on a well known name like epsg:3785 */ System.out.println("ProjectionFactory.getNamedPROJ4CoordinateSystem(\"epsg:3785\")"); String name = "epsg:3785"; Projection proj = ProjectionFactory.getNamedPROJ4CoordinateSystem(name); /* * fromPROJ4Specification() */ // epsg:2965 // +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs /* String[] params = { // reference by name //"+init=epsg:2965", // reference by projection "+proj=tmerc", "+lat_0=37.5", "+lon_0=-85.66666666666667", "+k=0.999966667", "+x_0=99999.99989839978", "+y_0=249999.9998983998", "+ellps=GRS80", "+datum=NAD83", "+to_meter=0.3048006096012192", "+no_defs" }; Projection proj = ProjectionFactory.fromPROJ4Specification(params); */ // ProjectionFactory.readProjectionFile() /* System.out.println("ProjectionFactory.getNamedPROJ4CoordinateSystem(\"epsg:900913\")"); //String name = "epsg:900913"; //Projection proj = ProjectionFactory.getNamedPROJ4CoordinateSystem(name); Projection proj = null; try { proj = ProjectionFactory.readProjectionFile("others", "900913"); } catch(IOException e) { e.printStackTrace(); } */ if(proj != null) { System.out.println("...projection name: " + proj.getName()); System.out.println("...projection epsg code: " + proj.getEPSGCode()); System.out.println("...projection proj4 desc: " + proj.getPROJ4Description()); } else { System.out.println("specific projection not found"); } } public static void main(String[] args) { TestProj4j.testProjection(); //TestProj4j.testProjectionFactory(); } }