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

概述:

本文讲述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、测试数据

			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、空间关系

			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、空间操作

			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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏猿人谷

成员以其在类中声明的顺序构造

分析以下代码的输出: #include<iostream> using namespace std; class A { public: A(int j):...

20660
来自专栏vue学习

JS数据结构与算法-队列

11510
来自专栏ACM算法日常

Find the nth digit(二分查找) - HDU 1597

...

10120
来自专栏企鹅号快讯

1.12编程基础之函数与过程抽象/05:统计单词数

总时间限制: 1000ms 内存限制: 65536kB 描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单...

280100
来自专栏赵俊的Java专栏

计算最大值

15430
来自专栏微信公众号:Java团长

Java泛型详解

定义了一个List类型的集合,先向其中加入了两个字符串类型的值,随后加入一个Integer类型的值。这是完全允许的,因为此时list默认的类型为Object类型...

12320
来自专栏JavaEdge

Java中类型参数“<T>”和无界通配符“<?>”的区别

List<T>最应该出现的地方,应该是定义一个泛型List容器 但List是库里自带的容器,看看ArrayList的源码头一行:

34710
来自专栏数据结构与算法

1341 与3和5无关的数

1341 与3和5无关的数 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 白银 Silver 题目描述 Description ...

29240
来自专栏韦弦的偶尔分享

Swift 两数之和 - LeetCode

12520
来自专栏Spark学习技巧

海量数据处理之BloomFilter

一提到元素查找,我们会很自然的想到HashMap。通过将哈希函数作用于key上,我们得到了哈希值,基于哈希值我们可以去表里的相应位置获取对应的数据。除了存在哈希...

16530

扫码关注云+社区

领取腾讯云代金券