基于布尔莎模型模型的二维的仿射变换(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 获取