import org.gvsig.georeferencing.GeoOperations; import org.gvsig.georeferencing.utils.AffineT; import org.gvsig.georeferencing.utils.PointT; public class TestGeoOperation { private static final int MAXPOINTS = 3; public TestGeoOperation(GeoOperations go, double x, double y, int o){ PointT[] srcPoints = new PointT[TestGeoOperation.MAXPOINTS]; PointT[] dstPoints = new PointT[TestGeoOperation.MAXPOINTS]; PointT corner = new PointT(); int numsrcpoints = 3; int order = 0; AffineT affine = new AffineT(); if(numsrcpoints >= 3*10) order = 3; else if(numsrcpoints >= 3*6) order = 2; else order = 1; srcPoints[0] = new PointT(); srcPoints[0].setX(3108); srcPoints[0].setY(3523); srcPoints[0].setI(numsrcpoints); srcPoints[1] = new PointT(); srcPoints[1].setX(1651); srcPoints[1].setY(1463); srcPoints[1].setI(numsrcpoints); srcPoints[2] = new PointT(); srcPoints[2].setX(5578); srcPoints[2].setY(300); srcPoints[2].setI(numsrcpoints); dstPoints[0] = new PointT(); dstPoints[0].setX(433700.9072); dstPoints[0].setY(4582611.7542); dstPoints[0].setI(numsrcpoints); dstPoints[1] = new PointT(); dstPoints[1].setX(432975.8313); dstPoints[1].setY(4581581.5722); dstPoints[1].setI(numsrcpoints); dstPoints[2] = new PointT(); dstPoints[2].setX(434939.2793); dstPoints[2].setY(4581000.0758); dstPoints[2].setI(numsrcpoints); //Calcular la transformación afin por mínimos cuadrados affine = go.computeLeastSquaresAffine(affine, srcPoints, dstPoints, order); corner.setX(x); corner.setY(y); order = o; //Transformacióno de un punto double[] point = go.transformPoint((int)corner.getX(), (int)corner.getY(), affine); System.out.println("Order: "+order); System.out.println("Pixel Point: ("+corner.getX()+", "+corner.getY()+")"); System.out.println("Map Point: ("+point[0]+", "+point[1]+")"); } /** * @param args */ public static void main(String[] args) { GeoOperations go = new GeoOperations(); double x = Double.parseDouble(args[0]); double y = Double.parseDouble(args[1]); int order = Integer.parseInt(args[2]); TestGeoOperation f = new TestGeoOperation(go, x, y, order); } }