从时空数据到空间计算工具-JTS

随着智慧城市发展,时空数据成为GIS行业基石。本文介绍了JTS(Java Topology Suite),它是实现空间数据变换核心操作的Java API。文中解释了相关术语和几何对象定义,分析了JTS基础类,对比了JAVA实现与SFS的差别,并给出了入门实践案例。

随着智慧城市的发展,GIS行业迎来了新机遇,时空数据也成为了这个行业的基石。作为一名有追求的程序员,终于在时空数据的道路上越走越远。

  • JTS是什么?
  • 怎么使用JTS?
  • 来个入门案例

免责声明:

JTS是什么?

https://github.com/locationtech/jts

JTS Topology Suite的缩写,递归命名 or Java Topology Suite。

JTS是一个java api,它使用显式精度模型和健壮的几何算法实现一组空间数据变换的核心操作。

JTS试图尽可能精确地实现OpenGIS简单特性规范(SFS)。在某些SFS不清楚或省略的地方,JTS尝试选择合理且一致的替代方案。

术语解释

术语 解释
Geometry 几何体的统称,代码表示为所有几何体的父类
Coordinate 空间中的一个点
Point R^3中一个任意点
Node 交点(节点),2条线段相交的点
Noding(Noded) 一种计算过程:geometry相交时Node的计算过程
SFS OGC Simple Features Specification
Vertex 几何体的顶点

几何对象定义

术语 解释
Geometry 所有几何对象的统称,可以认为是父类
Empty Geometry 标准定义几何体可能是空的
GeometryCollection
Curve 非空曲线必须至少有2个点,并且两个连续的点不能相等。注意,这里的曲线不一定是曲线,也可能是直线。
MultiCurve 规范里有个“Mod 2”规则。
LineString 线性点集,0个或至少2个点,可交叉,连续的点可相同。
LinearRing 线性环,是LineString的子类,至少4个点,或0个点为空。
Polygon 壳和孔都是LinearRing。有以下规则:* 壳和孔不能自相交 * 孔可以挨着壳(touch),但只能有一个点重合,不能是一条边重合 * 上面重合的点不需要是顶点(vertex)
MultiPolygon

合法的polygon

1

不合法的polygon

2

几何关系(二元谓词的方法规约)

3

JTS中基础类分析

了解一些基础实现类帮助开发。

Coordinate

一个轻量级的坐标点实现。

FAQ:Coordinate与Point的区别?

QA:Point是Geometry的子类,带有精度模型,空间引用信息等,Coordinate属于轻量级的点,主攻二维,3维作为附加属性。

CoordinateSequence

一个接口,代表一系列Geometry中的点。

Envelope

一个包含最大最小x、y值的类。

IntersectionMatrix

实现 Dimensionally Extended Nine-Intersection Model (DE-9IM) 模型计算的矩阵。

GeometryFactory

很多几何对象都由此工厂方法创建。

CoordinateFilter

使用访问者模式实现的 点过滤器。

GeometryFilter

几何对象过滤器。

JAVA实现与SFS的差别

  • SFS有时使用整数来表示布尔值。在这种情况下,JTS将使用布尔值
  • SFS中的方法名称以大写字母开头。在JTS中,所有方法名称都以小写字母开头
  • JTS中的方法名称有时会添加前缀“get”或“set”,以符合Java bean的约定。

helloworld实践

了解下模块分布,用于按需引包

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e79kFLPK-1610545503599)(./imgs/000.png)]

<properties>
    <jts.version>1.16.1</jts.version>
</properties>
<dependency>
    <groupId>org.locationtech.jts</groupId>
    <artifactId>jts-core</artifactId>
    <version>${jts.version}</version>
</dependency>
<dependency>
	<groupId>org.locationtech.jts.io</groupId>
	<artifactId>jts-io-common</artifactId
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值