前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >geotools中的空间关系(Geometry Relationships)和空间操作(Geometry Operations)

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

作者头像
lzugis
发布2018-10-23 11:28:51
3.7K0
发布2018-10-23 11:28:51
举报

概述:

本文讲述geotools中的空间关系判断(Geometry Relationships)和空间操作(Geometry Operations)的编码实现。

空间关系(Geometry Relationships):

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

空间操作(Geometry Operations):

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

代码实现:

1、测试数据

代码语言:javascript
复制
			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))";

测试数据地图展示如下:

2、空间关系

代码语言:javascript
复制
			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));

控制台输出结果如下:

3、空间操作

代码语言:javascript
复制
			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));

控制台输出结果如下:

空间操作的计算结果展示如下:

intersect

union

Difference

SymDifference

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年02月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档