基于布尔莎模型模型的二维的仿射变换(java与postgis)-)----四、七参数坐标转换

发布时间 2023-04-12 18:05:37作者: 禅心识万物-天亮

 

                                                                            基于布尔莎模型模型的二维的仿射变换(java与postgis)-)----四、七参数坐标转换

                           1、布尔莎模型。

                             布尔莎模型可以为是三维的仿射变换,在三维空间直角坐标系中,平移,旋转,缩放都三个维度,布尔莎模型的参数则包括:3个平移参数x0,y0,z0;三个旋转参数anx,any,anz;一个尺度参数m。即X轴缩放,Y轴缩放,Z轴缩放                                             系数相等,合成为一个系数;

                         2、布尔莎矩阵偏移:

                                   

 

 

                        3、 java代码:

                           //控制点54-2000(3组)涉密数据不展示

             Coordinate s1 = new Coordinate(x1, y1);
Coordinate s2 = new Coordinate(x2,y2);
Coordinate s3 = new Coordinate(x3,y3);
       Coordinate t1 = new Coordinate(x11,y11);
        Coordinate t2 = new Coordinate(x22,y22);
        Coordinate t3 = new Coordinate(x33,y33);
        // 建立仿射变换对象
        AffineTransformationBuilder afb = new AffineTransformationBuilder(s1,
     s2, s3, t1, t2, t3);

        AffineTransformation atf = afb.getTransformation();
        String wktPoint = "point (535815.92 3465335.919)";
        WKTReader wktReader = new WKTReader();
        Point p = (Point) wktReader.read(wktPoint);
        // 坐标转换       p.apply(atf);
4、POSTGIS代码:

ST_Affine(ST_GeomFromText('point('||weld.x||' '||weld.y||')',4548),m0, m1, m3, m4, m5,m6)---仿射变换参数需要通过控制点
             AffineTransformationBuilder 获取