GeoTools测试几何合并union

一 合并测试

image.png

@Test
public void unionTest() {
    GeometryFactory factory = new GeometryFactory();
    Polygon polygon_1 = factory.createPolygon(new Coordinate[]{
            new Coordinate(0, 0),
            new Coordinate(10, 0),
            new Coordinate(10, 10),
            new Coordinate(0, 10),
            new Coordinate(0, 0),});
    System.out.println(polygon_1.toString());

    Polygon polygon_2 = factory.createPolygon(new Coordinate[]{
            new Coordinate(10, 0),
            new Coordinate(20, 0),
            new Coordinate(20, 10),
            new Coordinate(10, 10),
            new Coordinate(10, 0),});
    System.out.println(polygon_2.toString());

    Polygon polygon_3 = factory.createPolygon(new Coordinate[]{
            new Coordinate(0, 11),
            new Coordinate(10, 11),
            new Coordinate(10, 21),
            new Coordinate(0, 21),
            new Coordinate(0, 11),});
    System.out.println(polygon_3.toString());

    Polygon polygon_4 = factory.createPolygon(new Coordinate[]{
            new Coordinate(10, 11),
            new Coordinate(20, 11),
            new Coordinate(20, 21),
            new Coordinate(10, 21),
            new Coordinate(10, 11),});
    System.out.println(polygon_4.toString());

    // 相邻多边形合并
    Geometry union_12 = polygon_1.union(polygon_2);
    System.out.println(union_12.toString());

    // 不相邻多边形合并
    Geometry union_13 = polygon_1.union(polygon_3);
    System.out.println(union_13.toString());

    // 多多边形中某个多边形与另外一个多边形相邻进行合并
    Geometry union_134_ = union_13.union(polygon_4);
    System.out.println(union_134_.toString());
}
# union_12
POLYGON ((10 0, 0 0, 0 10, 10 10, 20 10, 20 0, 10 0))

image.png

# union_13
MULTIPOLYGON (((0 0, 0 10, 10 10, 10 0, 0 0)), ((0 11, 0 21, 10 21, 10 11, 0 11)))

image.png

# union_134
MULTIPOLYGON (((0 0, 0 10, 10 10, 10 0, 0 0)), ((0 11, 0 21, 10 21, 20 21, 20 11, 10 11, 0 11)))

image.png

二 结论

  • 两个相交的多边形合并后会成为一个多边形
  • 两个不相交的多边形合并后会成为一个多多边形
  • 一个多多边形中某个多边形和另外一个多边形相交,合并后内部相交的多边形几何成为一个合并后的多边形
  • 其他几何类型相似

三 其他

var code = “7dc8a9e3-e41b-4a88-8220-0aab59e36986”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Geotools 中,你可以使用 JTS(Java Topology Suite)库提供的几何修复功能来修复几何对象。下面是一个示例代码,演示如何使用 Geotools 和 JTS 来修复几何对象: ```java import org.geotools.geometry.jts.JTS; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.GeometryFactory; import org.locationtech.jts.geom.PrecisionModel; import org.locationtech.jts.operation.buffer.BufferOp; public class GeometryRepairExample { public static void main(String[] args) { // 创建一个需要修复的几何对象 GeometryFactory geometryFactory = new GeometryFactory(new PrecisionModel(), 4326); Geometry geometry = ...; // 这里替换为你的几何对象 // 检查几何对象是否有效 if (!geometry.isValid()) { // 修复几何对象 Geometry fixedGeometry = geometry.buffer(0); // 打印修复后的几何对象 System.out.println("Fixed Geometry: " + fixedGeometry); } else { System.out.println("Geometry is already valid."); } } } ``` 在上面的示例中,你需要替换 `...` 部分为你实际的几何对象。首先,创建一个 `GeometryFactory` 对象来生成几何对象。然后,使用 `isValid()` 方法检查几何对象是否有效。如果几何对象无效,则通过调用 `buffer(0)` 方法来修复几何对象。修复后的几何对象将作为返回值。 需要注意的是,几何修复的结果可能会因输入的几何对象而异。有时候,简单地使用 `buffer(0)` 方法可能无法完全修复几何对象中的所有问题。在处理复杂的几何问题时,可能需要使用更高级的算法或工具来进行修复。同时,Geotools 库还提供了其他几何修复和操作的函数,你可以根据具体需求进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值