Package org.geotools.utils

Source Code of org.geotools.utils.Test

package org.geotools.utils;

import java.io.File;
import java.util.List;

import org.geotools.referencing.operation.builder.AdvancedAffineBuilder;
import org.geotools.referencing.operation.builder.AffineToGeometric;
import org.geotools.referencing.operation.builder.AffineTransformBuilder;
import org.geotools.referencing.operation.builder.MappedPosition;
import org.geotools.referencing.operation.matrix.GeneralMatrix;
import org.geotools.referencing.operation.transform.AffineTransform2D;
import org.geotools.referencing.operation.transform.ProjectiveTransform;
import org.opengis.referencing.FactoryException;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.TransformException;


public class Test {
    /**
     * @param args
     */
    public static void main(String[] args) throws Exception {
    /*    AffineToGeometric a2g = new AffineToGeometric((AffineTransform2D) getMT());
        System.out.println(a2g.getSkew());
        System.out.println(a2g.getXTranslate());
        System.out.println(a2g.getYTranslate());*/

       Builder builder = new Builder(new File("./gcpswld.txt"));
            System.out.println("klokan------------------------------------------------------");
        transformTest(getMT(), builder.getMappedPositions());
       
        AdvancedAffineBuilder aab = new AdvancedAffineBuilder(builder.getMappedPositions());
        aab.setConstrain(aab.SXY, 0);
       // aab.setNumberOfIterationSteps(200);
      //  aab.setMaxIterationDifference(0.0000001);
        System.out.println("Ja------------------------------------------------------");
        transformTest(aab.getMathTransform(), builder.getMappedPositions());
        AffineToGeometric a2g2 = new AffineToGeometric((AffineTransform2D)aab.getMathTransform());
        System.out.println("Parametry------------------------------------------------------");
        System.out.println("xrot "+a2g2.getXRotation()*180/Math.PI);
        System.out.println("tX  "+a2g2.getXTranslate());
        System.out.println("tY  "+a2g2.getYTranslate());
        System.out.println("sx  "+a2g2.getXScale());
        System.out.println("sy  "+a2g2.getYScale());
        System.out.println("sxy "+a2g2.getSkew());
        System.out.println(aab.getMathTransform());
       
        System.out.println("Afinita------------------------------------------------------");
        AffineTransformBuilder atb = new  AffineTransformBuilder(builder.getMappedPositions());
      
       // transformTest(atb.getMathTransform(), builder.getMappedPositions());
   /*     AffineToGeometric a2g3 = new AffineToGeometric((AffineTransform2D)atb.getMathTransform());
        System.out.println("Parametry------------------------------------------------------");
        System.out.println(a2g3.getRotation()*180/Math.PI);
        System.out.println(a2g3.getXTranslate());
        System.out.println(a2g3.getYTranslate());
        System.out.println(a2g3.getXScale());
        System.out.println(a2g3.getYScale());
        System.out.println(a2g3.getSkew());
        System.out.println(atb.getMathTransform());*/
    }

    public static MathTransform getMT() throws FactoryException {
        GeneralMatrix M = new GeneralMatrix(3, 3);

        /**
         * Fill the metrix
         */
        double[] m0 = { 0.112804514325, 0.0307621213335, -106.676236219 };
        double[] m1 = { 0.0411346319449  , -0.084359723001, 7.8014489685 };
        double[] m2 = { 0, 0, 1 };
        M.setRow(0, m0);
        M.setRow(1, m1);
        M.setRow(2, m2);

        MathTransform mt = ProjectiveTransform.create(M);

        return mt;
    }

    public static void transformTest(MathTransform mt, List<MappedPosition> pts)
    throws FactoryException, TransformException {
    double[] points = new double[pts.size() * 2];
    double[] ptCalculated = new double[pts.size() * 2];

    for (int i = 0; i < pts.size(); i++) {
        points[(2 * i)] = pts.get(i).getSource().getOrdinate(0);
        points[(2 * i) + 1] = pts.get(i).getSource().getOrdinate(1);
    }

    mt.transform(points, 0, ptCalculated, 0, pts.size());

    double sumDx = 0;
    double sumDy = 0;
    double sum = 0;
    for (int i = 0; i < pts.size(); i++) {
      double x2 =  Math.pow((pts.get(i).getTarget().getOrdinate(0) - ptCalculated[2 * i])     ,2);
      double y2 =  Math.pow((pts.get(i).getTarget().getOrdinate(1) - ptCalculated[(2 * i) + 1]),2);
     
      sum =  sum + (x2 + y2);
     
      //  System.out.println(pts.get(i).getTarget().getCoordinates()[0] +" "+ ptCalculated[2 * i]);
       // System.out.println(pts.get(i).getTarget().getCoordinates()[1] +" " + ptCalculated[(2 * i) + 1]);
       
        System.out.println(pts.get(i).getTarget().getCoordinates()[0] - ptCalculated[2 * i]);
        System.out.println(pts.get(i).getTarget().getCoordinates()[1] - ptCalculated[(2 * i) + 1]);
    }
    System.out.println("chyba  "+Math.pow(sum/pts.size(),0.5));
}
}
TOP

Related Classes of org.geotools.utils.Test

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.