GeoTools中的空间关系(Geometry Relationships)和空间操作(Geometry Operations)

参考原文:GeoTools中的空间关系和空间操作

一、GeoTools包含的空间关系和空间操作:

空间关系(Geometry Relationships):

常见的空间关系(Geometry Relationships)包括:Disjoint、Intersects、Touches、Crosses、Within、Contains、Overlaps、Relates

空间操作(Geometry Operations):

常见的空间操作(Geometry Operations)包括:Buffer、Intersection、ConvexHull、Intersection、Union、Difference、SymDifference

二、代码测试

  1. 测试数据
String wktPoint = "POINT(103.83489981581 33.462715497945)";
String wktLine = "LINESTRING(108.32803893589 41.306670233001,99.950999898452 25.84722546391)";
String wktPolygon = "POLYGON((100.02715479879 32.168082192159,102.76873121104 37.194305614622,107.0334056301 34.909658604412,105.96723702534 30.949603786713,100.02715479879 32.168082192159))";
String wktPolygon1 = "POLYGON((96.219409781775 32.777321394882,96.219409781775 40.240501628236,104.82491352023001 40.240501628236,104.82491352023001 32.777321394882,96.219409781775 32.777321394882))";
  1. 空间关系
GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory( null );
WKTReader reader = new WKTReader( geometryFactory );
Point point = (Point) reader.read(wktPoint);
LineString line = (LineString) reader.read(wktLine);
Polygon polygon = (Polygon) reader.read(wktPolygon);
Polygon polygon1 = (Polygon) reader.read(wktPolygon1);
System.out.println("-------空间关系判断-------");
System.out.println(polygon.contains(point));
System.out.println(polygon.intersects(line));
System.out.println(polygon.overlaps(polygon1));
  1. 空间操作
System.out.println("\r\n-------空间计算-------");
WKTWriter write = new WKTWriter();
Geometry intersection = polygon.union( polygon1 );
Geometry union = polygon.union( polygon1 );
Geometry difference = polygon.difference( polygon1 );
Geometry symdifference = polygon.symDifference( polygon1 );
System.out.println("\t+++++++++++叠加分析+++++++++++");
System.out.println(write.write(intersection));
System.out.println("\t+++++++++++合并分析+++++++++++");
System.out.println(write.write(union));
System.out.println("\t+++++++++++差异分析+++++++++++");
System.out.println(write.write(difference));
System.out.println("\t+++++++++++sym差异分析+++++++++++");
System.out.println(write.write(symdifference));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值