JTS-AffineTransformation 仿射变换使用说明(十三)

26 篇文章 3 订阅

org.locationtech.jts.geom.util.AffineTransformation 使用说明

示例代码库

AffineTransformation 仿射变换工具类

AffineTransformation 相关类关系图

在这里插入图片描述

说明

表示二维笛卡尔平面上的仿射变换。它可用于变换坐标或几何。

仿射变换是通过以下基本类型的一系列变换将2D平面映射到其自身:

reflection反射(通过直线)

rotation旋转(绕原点)

scaling缩放(相对于原点)

shearing剪切(在X和Y方向)

translation(平移)

操作示例
坐标系平移示例一

定义坐标原点从C1(0,0)移动到C2(3,3)见图

在这里插入图片描述


代码示例

//通过 factory创建 AffineTransformation
// 参考坐标C1(0,0)作为坐标零点; 移动到参考坐标(3,3)作为坐标原点记作参考系C2
AffineTransformation affineTransformation = AffineTransformationFactory.createFromControlVectors(new Coordinate(0.0,0.0), new Coordinate(3.0,3.0));
point平移

将坐标点A(1,1)从坐标系C1,转换到坐标系C2,转换后的坐标A’(4,4)

代码示例

GeometryFactory geometryFactory = new GeometryFactory();
//1. 平移
//1.1 将A point(1,1) 移动到新坐标系上面
Point pointA = geometryFactory.createPoint(new Coordinate(1.0,1.0));
System.out.printf("坐标A,WKT:%s \r\n",pointA.toText());
Geometry geometryA = affineTransformation.transform(pointA);
System.out.printf("坐标A移动后的A',WKT:%s \r\n", geometryA.toText());

结果输出

坐标A,WKT:POINT (1 1) 
坐标A移动后的A',WKT:POINT (4 4) 

效果图

在这里插入图片描述

lineString平移

代码示例

//1.2 平移线 (0,1) (1,2)
Coordinate[] coordinates = new Coordinate[2];
coordinates[0] = new Coordinate(0,1);
coordinates[1] = new Coordinate(1,2);
LineString lineStringA = geometryFactory.createLineString(coordinates);
System.out.printf("线A,WKT:%s \r\n",lineStringA.toText());
Geometry lineStringATrans = affineTransformation.transform(lineStringA);
System.out.printf("线A移动后的线A',WKT:%s \r\n", lineStringATrans.toText());

结果输出

线A,WKT:LINESTRING (0 1, 1 2) 
线A移动后的线A',WKT:LINESTRING (3 4, 4 5) 

效果图

在这里插入图片描述

POLYGON平移

代码示例

//1.3 平移 pologn
Coordinate[] coordinates3 = new Coordinate[4];
coordinates3[0] = new Coordinate(0,1);
coordinates3[1] = new Coordinate(1,2);
coordinates3[2] = new Coordinate(1,3);
coordinates3[3] = new Coordinate(0,1);
Polygon polygonA = geometryFactory.createPolygon(coordinates3);
System.out.printf("框A,WKT:%s \r\n",polygonA.toText());
Geometry polygonATrans = affineTransformation.transform(polygonA);
System.out.printf("框A移动后的框A',WKT:%s \r\n", polygonATrans.toText());

结果输出

框A,WKT:POLYGON ((0 1, 1 2, 1 3, 0 1)) 
框A移动后的框A',WKT:POLYGON ((3 4, 4 5, 4 6, 3 4)) 

效果图

在这里插入图片描述

坐标系平移示例二

根据参考线到线平移几何

代码示例

 //定义线参考
AffineTransformation affineTransformationBaseLine = AffineTransformationFactory.createFromBaseLines(new Coordinate(0.0,1.0), new Coordinate(3.0,4.0),new Coordinate(6,0),new Coordinate(5,3));

CoordinateList coordinateList = new CoordinateList();
coordinateList.add(new Coordinate(2,2));
coordinateList.add(new Coordinate(2,1));
coordinateList.add(new Coordinate(3,1));
coordinateList.add(new Coordinate(3,2));
coordinateList.add(new Coordinate(2,2));

Polygon polygon = geometryFactory.createPolygon(coordinateList.toCoordinateArray());
System.out.printf("框A,WKT:%s \r\n",polygon.toText());
Geometry polygonTrans = affineTransformationBaseLine.transform(polygon);
System.out.printf("框A移动后的框A',WKT:%s \r\n", polygonTrans.toText());

结果输出

框A,WKT:POLYGON ((2 2, 2 1, 3 1, 3 2, 2 2)) 
框A移动后的框A',WKT:POLYGON ((6 1.6666666666666672, 6.666666666666667 1.3333333333333337, 7 2.0000000000000004, 6.333333333333333 2.3333333333333335, 6 1.6666666666666672)) 

效果图

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: jts-1.13.jar 是一个Java语言编写的JTS(Java拓扑套件)库的版本,这个库主要用于在地理信息系统(GIS)开发中进行空间数据处理和拓扑分析。下面是对于 jts-1.13.jar 的一些说明: 1. 功能:jts-1.13.jar 提供了许多常见的空间数据操作功能,如点、线、面的创建、编辑和删除,缓冲区分析、空间关系判断等。通过这些功能,开发人员可以方便地处理和分析地理空间数据。 2. 特点:jts-1.13.jar 是一个开源的库,在开发GIS应用程序时可以被方便地引入。它提供了一组丰富而强大的类和方法,以支持地理空间数据的处理,并且在性能和可靠性方面有较好的表现。 3. 应用领域:jts-1.13.jar 可以被广泛用于各种GIS应用开发中。它可以用于创建和编辑地理空间数据集,进行空间查询和分析,支持路径规划、地图匹配、空间索引等功能。这个库在不同领域的GIS应用中都得到了广泛的应用和验证。 4. 兼容性:jts-1.13.jar 兼容性较好,可以与其他GIS开发工具和框架结合使用。它支持常见的空间数据格式和协议,如Shapefile、GeoJSON等,可以方便地与其他地理信息系统进行数据交换和共享。 总结来说,jts-1.13.jar 是一个功能强大、易于使用和兼容性较好的GIS库,可以广泛应用于各种地理信息系统开发中。通过该库,开发人员可以方便地处理和分析地理空间数据,实现各种空间查询和分析功能,提高GIS应用的开发效率和性能。 ### 回答2: jts-1.13.jar 是一个开源的 Java Topology Suite 库的版本,它提供了在地理信息系统(GIS)中处理和分析地理空间数据的功能。这个库是由意大利的JTS项目开发的,旨在为开发人员提供一种在他们的Java应用程序中实现GIS功能的方式。 这个版本的库具有许多功能,包括几何对象的创建、操作和查询等。它支持点、线和面等常见的几何类型,并提供一系列的操作方法,例如计算距离、判断包含关系、计算缓冲区等。开发人员可以使用这些方法来处理地理空间数据,进行空间分析和查询。 此外,jts-1.13.jar 还提供了一些算法的实现,如凸包算法、最小外包矩形算法、R树索引等。这些算法可以帮助开发人员解决一些与地理空间数据相关的问题,例如查找最近的邻居、查找覆盖一个区域的最小矩形等。 总之,jts-1.13.jar 是一个功能强大的库,可以帮助开发人员处理和分析地理空间数据。通过使用这个库,开发人员可以更轻松地实现GIS功能,为他们的应用程序增加地理空间数据处理的能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值