JTS学习笔记

article/2025/8/15 1:50:09

JTS学习笔记

基础的类

  • Geometry geom对象
  • Coordinate坐标类
  • Point Point对象
  • MultiPoint 基本对象MultiPoint等等
  • GeometryFactory工厂对象
  • PreparedGeometryFactory
  • PreparedGeometry

几何对象Geometry

public abstract class Geometry implements Cloneable, Comparable, Serializable{...}
  // 一系列常量protected static final int TYPECODE_POINT = 0;protected static final int TYPECODE_MULTIPOINT = 1;protected static final int TYPECODE_LINESTRING = 2;protected static final int TYPECODE_LINEARRING = 3;protected static final int TYPECODE_MULTILINESTRING = 4;protected static final int TYPECODE_POLYGON = 5;protected static final int TYPECODE_MULTIPOLYGON = 6;protected static final int TYPECODE_GEOMETRYCOLLECTION = 7;public static final String TYPENAME_POINT = "Point";public static final String TYPENAME_MULTIPOINT = "MultiPoint";public static final String TYPENAME_LINESTRING = "LineString";public static final String TYPENAME_LINEARRING = "LinearRing";public static final String TYPENAME_MULTILINESTRING = "MultiLineString";public static final String TYPENAME_POLYGON = "Polygon";public static final String TYPENAME_MULTIPOLYGON = "MultiPolygon";public static final String TYPENAME_GEOMETRYCOLLECTION = "GeometryCollection";// 边界框protected Envelope envelope;//创建本Geometry对象的工厂对象protected final GeometryFactory factory;protected int SRID;//可用于携带客户端定义的辅助数据的对象引用。private Object userData = null;// 构造方法public Geometry(GeometryFactory factory) {...}public abstract String getGeometryType();// 包含任何非空几何返回trueprotected static boolean hasNonEmptyElements(Geometry[] geometries){...}protected static boolean hasNullElements(Object[] array) {...}Geometry getGeometryN(int n){...}// 测试此 Geometry 是否简单。 SFS 对简单性的定义遵循一般规则,即如果几何没有自相切点、自交点或其他异常点,则该几何是简单的。public boolean isSimple(){...}// 距离public double distance(Geometry g){...}// 与geom的距离小于distancepublic boolean isWithinDistance(Geometry geom, double distance){...}// 是否是矩形多边形public boolean isRectangle(){...}// 找到质点public Point getCentroid(){...}// 返回内点public Point getInteriorPoint(){...}// 获取维度public abstract int getDimension();// 获取边界public abstract Geometry getBoundary();public abstract int getBoundaryDimension();// 此图形是否和g不相交public boolean disjoint(Geometry g)public boolean touches(Geometry g)//是否相交public boolean intersects(Geometry g)public boolean crosses(Geometry g)//是否在g图形内部public boolean within(Geometry g)// 是否包含gpublic boolean contains(Geometry g)//是否重叠public boolean overlaps(Geometry g)//是否覆盖public boolean covers(Geometry g)//是否被覆盖public boolean coveredBy(Geometry g)  public String toText()//计算缓冲区public Geometry buffer(double distance)  //最小凸边型public Geometry convexHull()//计算一个新几何,它的所有组件坐标序列都与这个几何相反(相反方向)。public Geometry reverse()//计算表示该几何图形和其他几何图形共有的点集的几何图形。public Geometry intersection(Geometry other)// 交集public Geometry union(Geometry other)// 差集 Computes a Geometry representing the closure of the point-set of the points contained in this Geometry that are not contained in the other Geometry.public Geometry difference(Geometry other)// 并集public Geometry symDifference(Geometry other)// 此几何内所有并集public Geometry union()// 在指定容差内相等public abstract boolean equalsExact(Geometry other, double tolerance);// 完全相等public boolean equalsNorm(Geometry g)//使用或在此几何的坐标上执行操作。如果此方法修改了任何坐标值,则必须调用 geometryChanged 来更新几何状态。public abstract void apply(CoordinateFilter filter);//深克隆public Object clone()

多边形类 Polygon

public class Polygon extends Geometry implements Polygonal{...}
//外边缘protected LinearRing shell = null;
//内边缘protected LinearRing[] holes;
/*
shell:外边线
holes:里面的洞的边线
factory:GeometryFactory 
*/
Polygon(LinearRing shell, LinearRing[] holes, GeometryFactory factory){...}
// 获取外边线
LinearRing getExteriorRing(){...}
//获取内洞的周长
int getNumInteriorRing(){...}
//获取第n个洞
LinearRing getInteriorRingN(int n){...}
// 其他方法继承自Geometry

线LineString

public class LineString extends Geometry implements Lineal{...}
// The points of this LineString.
protected CoordinateSequence points;
// 初始化
private void init(CoordinateSequence points){...}
// 获取`CoordinateSequence points`序列的第N个坐标
Coordinate getCoordinateN(int n){...}
// 获取`CoordinateSequence points`的第`n`个点
Point getPointN(int n){...}
//返回第0个,空就返回null
Point getStartPoint(){...}
Point getEndPoint(){...}
//是否封闭
isClosed()
//是否是圈圈
isRing()
// 其他方法继承自Geometry

GeometryFactory介绍

提供一组实用方法,用于从坐标列表构建几何对象。请注意,工厂构造函数方法不会以任何方式更改输入坐标。特别是,它们没有四舍五入到提供的 PrecisionModel。假设输入坐标满足给定的精度。此类的实例是线程安全的。

方法介绍
构造器:

public GeometryFactory(PrecisionModel precisionModel, int SRID,CoordinateSequenceFactory coordinateSequenceFactory)
public GeometryFactory(CoordinateSequenceFactory coordinateSequenceFactory)
public GeometryFactory(PrecisionModel precisionModel)
public GeometryFactory(PrecisionModel precisionModel, int SRID)
public GeometryFactory()

其中PrecisionModel是精度模型

转换成数组

创建各种基本类型

PreparedGeometryFactory

PreparedGeometry封装了一些判断的方法,提高重复调用的性能。

输入输出类(转换类)

eg:

Geometry g1 = new WKTReader().read("LINESTRING (0 0, 10 10, 20 20)");System.out.println("Geometry 1: " + g1);

Geometry 1: LINESTRING (0 0, 10 10, 20 20) Geometry 2: LINESTRING (0 0, 10 10, 20 20)


http://chatgpt.dhexx.cn/article/1TwqrM4d.shtml

相关文章

JTS-Angle GIS几何角度计算使用说明(十八)

org.locationtech.jts.algorithm.Angle 角度计算使用说明 示例代码库 Angle 角度计算 1.Angle.angle(p0,p1) public static double angle(Coordinate p0, Coordinate p1) {double dx p1.x - p0.x;double dy p1.y - p0.y;return Math.atan2(dy, dx); }返回与x轴正方向的夹…

java jts_Java Topology Suite (JTS)与空间数据模型

JTS是Java的处理地理数据的API,它提供以下功能: 实现了OGC关于简单要素SQL查询规范定义的空间数据模型 一个完整的、一致的、基本的二维空间算法的实现,包括二元运算(例如touch和overlap)和空间分析方法(例如intersection和buffer) 一个显示的…

java jts点到面的距离_jts-空间索引

前言: 如果您对JTS这三个词还是没有一个概念,那么推荐您关注一下sinoly的博客。这个我能够找到为数不多的关于jts的中文资料。 http://www.blogjava.net/sinoly/archive/2007/02/09/99042.html 下面这段话就是摘抄自sinoly老兄的博客: ......…

JTS Geometry关系判断和分析

关系判断 Geometry之间的关系有如下几种: 相等(Equals): 几何形状拓扑上相等。 脱节(Disjoint): 几何形状没有共有的点。 相交(Intersects): 几何形状至少有一个共有点(区别于脱节) 接触(Touches)&a…

JTS Geometry用例分析

微信搜索:“二十同学” 公众号,欢迎关注一条不一样的成长之路 拓扑关系 GeometryTest import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.GeometryCollection; import…

JTS 笔记

简介 JTS由加拿大的VividSolutions公司开发,是一个用Java语言描述的几何拓扑套件,遵循OpenGIS的Simple Feature Specification,封装了2D几何类型和非常多的空间分析操作,而且包含了不少常见的计算几何算法实现。     JTS被广泛…

jts 简介、中文文档、中英对照文档 下载

jts 文档 下载链接(含jar包、源码、pom) 组件名称中文-文档-下载链接中英对照-文档-下载链接jts-1.13.jarjts-1.13-API文档-中文版.zipjts-1.13-API文档-中英对照版.zip jts 简介 JTS拓扑套件 JTS拓扑套件是一个用于建模和操作二维线性几何的API。它…

GeoTools——JTS的相关介绍和操作

GeoTools——JTS的相关介绍&#xff08;一&#xff09; JTS拓扑套件是GeoTools用于提供Geometry数据结构的实现&#xff0c;Geometry主要是指几何形状。 想要使用geoTools——JTS相关的操作可以导入以下的依赖<properties><geotools.version>17.1</geotools.ver…

java topo: 开源jtopo框架

java web 非本人研究方向&#xff0c;只是作为拓展知识涉猎范围 原文链接&#xff1a;http://www.jtopo.com/index.html jTopo是什么? jTopo&#xff08;Javascript Topology library)是一款完全基于HTML5 Canvas的关系、拓扑图形化界面开发工具包。 jTopo关注于数据的图形展…

JTopo踩坑记 -- React项目中使用JTopo

JTopo踩坑记 – React项目中使用JTopo JTopo-in-node & JTopo 最近实习公司一个项目需要绘制电网的拓扑图&#xff0c;大致要求的效果如下&#xff1a; 首先想到的是Echarts和d3&#xff0c;因为这个项目其他图表都是使用的Echarts&#xff0c; 但是在Echarts的官方示例…

jtopo的项目实战(七)

话接上回&#xff0c;继续实现jtopo本身不具有的一些功能&#xff0c;有讲的不对的地方&#xff0c;欢迎大家在评论区留言提出&#xff0c;博主基本每天在线&#xff0c;看到都会及时回复的&#xff0c;我们一起进步&#xff0c;奥利给&#xff0c;还有&#xff0c;码字不易&am…

关于vue3.0项目引入jtopo出现的各种问题汇总

jtopo官网demo网址&#xff1a;http://www.jtopo.com/demo.html 最近的项目需要用到jtopo&#xff0c;关于jtopo的引入&#xff0c;之前自己也都尝试过&#xff0c;没想到这次引入会出现这么多问题&#xff0c;所以大概总结一下 1、借用同事以前的经验来引入 npm install jto…

JTopo 框架教程之一:初始JTopo 框架

JTopo 是什么&#xff1f; JTopo&#xff08;Javascript Topology library)是一款完全基于HTML5 Canvas的关系、拓扑图形化界面开发工具包。jTopo关注于数据的图形展示&#xff0c;它是面向开发人员的&#xff0c;需要进行二次开发。使用jTopo很简单&#xff0c;可以快速创建一…

jtopo的项目实战(一)

前言 初识jtopo是因为项目中需要一个能够动态绘制网络拓扑图的插件&#xff0c;不但能画出基本的网络拓扑结构&#xff0c;还要能够标识出网络设备的类型以及端口设置&#xff0c;甚至是网络连线的流量信息等&#xff0c;基于这个需求查找了很多资料&#xff0c;初步选中了几款…

jtopo的项目实战(二)

话接上回&#xff0c;继续实现jtopo本身不具有的一些功能&#xff0c;有讲的不对的地方&#xff0c;欢迎大家留言提出&#xff0c;我们一起进步&#xff0c;奥利给&#xff0c;还有&#xff0c;码字不易&#xff0c;如果觉得博主写的不错的欢迎打赏哈&#xff01; 2.美化节点之…

vue、jtopo绘制鱼骨图

效果如下图所示&#xff1a; 一、文件目录结构&#xff1a; 二、绘制png的鱼头、鱼尾图片 fish_head.png&#xff1a; fish_tail.png&#xff1a; 三、下载js文件 jquery、jtopo请到官网下载。 四、编写鱼骨图核心文件&#xff1a;MakFishBone.js let MakFishBo…

通过JTopo.js在网页绘制网络拓扑图

项目中遇到要在网页中绘制网络拓扑图的需求&#xff0c;要求节点具备点击、拖拽、缩放等交互功能&#xff0c;并且可以显示/隐藏详细信息&#xff0c;数据是设备实时上报来的。 综上&#xff0c;用画拓扑图的工具画一张固定的图片偷懒显然是不行的&#xff0c;最好是找到一个封…

JTopo添加动态连线

效果如下 先在 JTopo 的 link 原型上定义一个方法 window.requestAnimationFrame window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame JTopo.Link.prototype.drawanimepic functi…

JTopo + Vue 实现自定义拖拽流程图

JTopo Vue 实现自定义拖拽流程图 进入体验效果 进入github 市场上做流程图的插件比较多&#xff0c;这里介绍一种基于canvas编写的js插件&#xff0c;结合vue框架做出精美的流程图 首先搭建vue框架&#xff0c;这里就不做介绍&#xff0c;由于jtopo官方demo里用到了jquery&am…

jtopo连线绘制脉冲动画效果

随着需求的日益精细化&#xff0c;人们越来越多的关注到了画面的美观&#xff0c;单纯的节点间连线已经不满足人们的审美观念了&#xff0c;那么能不能让节点间的连线动起来呢&#xff1f;答案是可以的&#xff0c;老规矩&#xff0c;先上图&#xff0c;再说怎么实现。 同样&am…