介绍

jts是一个为GIS服务提供的api,内部可以用坐标点构建空间模型,判断模型之间的关系等

Coordinate

JTS内部封装的一个坐标类Coordinate(坐标)是用来存储坐标的轻便的类。它不同于点,点是Geometry的子类。不像模范Point的对象(包含额外的信息,例如一个信包,一个精确度模型和空间参考系统信息),Coordinate只包含纵座标值和存取方法。表示空间坐标,newCoordinate(116.273352,40.057497)


GeometryFactory

用来构建空间模型

JTS包结构

系(linearref包)、计算交点(noding包)、几何图形操作(operation包)、平面图(planargraph包)、多边形化(polygnize包)、精度(precision)、工具(util包)

空间数据模型

JTS提供了如下的空间数据类型

Point     MultiPointLineString     LinearRing  封闭的线条MultiLineString    多条线Polygon 多边形MultiPolygon           多个多边形GeometryCollection  包括点,线,面

空间模型的关系

判断两个几何图形是否存在指定的空间关系。包括:



实例代码:

package jtsTest;import java.util.ArrayList;
import java.util.List;import com.vividsolutions.jts.geom.*;
import com.vividsolutions.jts.io.ParseException;
import com.vividsolutions.jts.io.WKTReader;/*** Class Operation.java* Description 几何对象操作* Company mapbar* author Chenll E-mail: Chenll@mapbar.com* Version 1.0* Date 2012-2-21 上午10:47:47*/
public class OperationLines {private GeometryFactory geometryFactory = new GeometryFactory();/*** create a Point* @param x* @param y* @return*/public Coordinate point(double x,double y){return new Coordinate(x,y);}/*** create a line* @return*/public LineString createLine(List<Coordinate> points){Coordinate[] coords  = (Coordinate[]) points.toArray(new Coordinate[points.size()]);LineString line = geometryFactory.createLineString(coords);return line;}/*** 返回(A)与(B)中距离最近的两个点的距离* @param a* @param b* @return*/public double distanceGeo(Geometry a,Geometry b){return a.distance(b);}/*** 两个几何对象的交集* @param a* @param b* @return*/public Geometry intersectionGeo(Geometry a,Geometry b){return a.intersection(b);}/*** 几何对象合并* @param a* @param b* @return*/public Geometry unionGeo(Geometry a,Geometry b){return a.union(b);}/*** 在A几何对象中有的,但是B几何对象中没有* @param a* @param b* @return*/public Geometry differenceGeo(Geometry a,Geometry b){return a.difference(b);}public static void main(String[] args) throws ParseException {OperationLines op = new OperationLines();//        //创建一条线
//        List<Coordinate> points1 = new ArrayList<Coordinate>();
//        points1.add(op.point(116.271635,40.052176));
//        points1.add(op.point(116.280991,40.052439));
//        points1.add(op.point(116.291119,40.050665));
//        LineString line1 = op.createLine(points1);
//        //创建第二条线
//        List<Coordinate> points2 = new ArrayList<Coordinate>();
//        points2.add(op.point(116.271292,40.046591));
//        points2.add(op.point(116.279446,40.046591));
//        points2.add(op.point(116.288115,40.054475));
//        LineString line2 = op.createLine(points2);
//        System.out.println(op.distanceGeo(line1,line2));//out 1.0
//        System.out.println(op.intersectionGeo(line1,line2));//out GEOMETRYCOLLECTION EMPTY
//        System.out.println(op.unionGeo(line1,line2)); //out MULTILINESTRING ((0 0, 1 3, 2 3), (3 0, 3 3, 5 6))
//        System.out.println(op.differenceGeo(line1,line2));//out LINESTRING (0 0, 1 3, 2 3)/*** 构建多边形,* 1,利用geometryFactory的Create方法* 2. 利用wkt标记语言*  WKTReader reader = new WKTReader( geometryFactory );*  MultiPoint mpoint = (MultiPoint) reader.read("MULTIPOINT(109.013388 32.715519,119.32488 31.435678)");*/GeometryFactory geometryFactory = new GeometryFactory();List<Coordinate> colist1 = new ArrayList<>();colist1.add(new Coordinate(116.280648,40.058811));colist1.add(new Coordinate(116.276356,40.050008));colist1.add(new Coordinate(116.289231,40.051322));colist1.add(new Coordinate(116.280648,40.058811));Coordinate[] cn = (Coordinate[]) colist1.toArray(new Coordinate[colist1.size()]);Polygon polygon1 = geometryFactory.createPolygon(cn);List<Coordinate> colist2 = new ArrayList<>();colist2.add(new Coordinate(116.273352,40.057497));colist2.add(new Coordinate(116.280733,40.052504));colist2.add(new Coordinate(116.270262,40.050336));colist2.add(new Coordinate(116.273352,40.057497));Coordinate[] cn1 = (Coordinate[]) colist1.toArray(new Coordinate[colist2.size()]);Polygon polygon2 = geometryFactory.createPolygon(cn1);Geometry intersection = polygon1.intersection(polygon2); //两个多边形的相交面积System.out.println(intersection);System.out.println(polygon1.equals(polygon2)); //形状是否相等WKTReader reader = new WKTReader( geometryFactory );Polygon wktPolygon1 = (Polygon) reader.read("POLYGON((0 0, 0 3, 3 3, 3 0, 0 0), (1 1, 1 2, 2 1, 1 1))', 10");Polygon wktPolygon2 = (Polygon) reader.read("POLYGON((0 0, 0 3, 3 3, 3 0, 0 0), (1 1, 1 2, 2 1, 1 1))', 10");System.out.println("相交面积坐标点:"+wktPolygon1.intersection(wktPolygon2));}
}

WKT简介:

WKT - 概念

WKT(Well-known text)是一种文本标记语言,用于表示矢量几何对象、空间参照系统及空间参照系统之间的转换。它的二进制表示方式,亦即WKB(well-known binary)则胜于在传输和在数据库中存储相同的信息。该格式由开放地理空间联盟(OGC)制定。

WKT - 几何对象

WKT可以表示的几何对象包括:点,线,多边形,TIN(不规则三角网)及多面体。可以通过几何集合的方式来表示不同维度的几何对象。

几何物体的坐标可以是2D(x,y),3D(x,y,z),4D(x,y,z,m),加上一个属于线性参照系统的m值。

以下为几何WKT字串样例:

POINT(6 10)
LINESTRING(3 4,10 50,20 25)
POLYGON((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2))
MULTIPOINT(3.5 5.6, 4.8 10.5)
MULTILINESTRING((3 4,10 50,20 25),(-5 -8,-10 -8,-15 -4))
MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2)),((6 3,9 2,9 4,6 3)))
GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10))
POINT ZM (1 1 5 60)
POINT M (1 1 80)
POINT EMPTY
MULTIPOLYGON EMPTY

http://www.taodudu.cc/news/show-3869561.html

相关文章:

  • JTS中TestBuilder
  • LineString (JTS)
  • java jts获取线上任意一点到起点的距离
  • MySQL空间拓展:SpringBoot整合Jts-GIS空间数据存储
  • Java JTS点线面分析、线以及多边形合并、面积计算
  • JTS学习笔记
  • JAVA使用JTS 判断坐标点是否在坐标多边形内部
  • JTS-Angle GIS几何角度计算使用说明(十八)
  • java jts_Java Topology Suite (JTS)与空间数据模型
  • JTS 空间数据关系分析
  • JTS使用实践
  • JTS Geometry用例分析
  • JTS简介
  • JTS
  • JTS 笔记
  • jts-1.14_了解JTS-交易简介
  • JTS简介(一)
  • 计算机显卡怎么拨下来,电脑显卡怎么拆
  • linux 设置显卡命令,Linux命令行下如何配置nVIDIA显卡
  • 常见的电源接口
  • 计算机接口标注方法,计算机内部接口大全!
  • 计算机更新电源,升级了显卡千万别忘记也要把电源升级
  • 关于显卡接口
  • 主机电源所有接口详解
  • 计算机电源第二个接口,后果很严重!! 电源接口别搞错
  • VXLAN简介
  • vxlan学习总结
  • VXLAN介绍
  • VxLAN和GRE
  • vxlan 协议

jts学习——com.vividsolutions.jts.geom包相关推荐

  1. JTS学习-com.vividsolutions.jts.operation包

    JTS组织以下的文件夹:几何图形(geom包).拓扑图(geomgraph包) .基本算法(algorithm包).索引方法(index包).输入/输出(io包).线性关系(linearref包).计 ...

  2. 怎么恢复oracle的包,【学习笔记】使用dbms_backup_restore包恢复数据库

    天萃荷净 使用dbms_backup_restore包恢复数据库 Oracle提供了一个包:DBMS_BACKUP_RESTORE包是由dbmsbkrs.sql 和 prvtbkrs.plb 这两个脚 ...

  3. 【STM32学习】——USART串口数据包HEX/文本数据包收发流程串口收发HEX/文本数据包实操

    文章目录 前言 一.数据包格式(江科大规定) 1.HEX数据包 2.文本数据包 3.两者对比 二.数据包收发流程 1.HEX数据包接收(只演示固定包长) 2.文本数据包接收(只演示可变包长) 三.实操 ...

  4. R语言可视化学习笔记之相关矩阵可视化包ggcorrplot

    本文转载自"R语言中文社区",己获授权. 作者简介Introduction taoyan:伪码农,R语言爱好者,爱开源. 个人博客: https://ytlogos.github. ...

  5. 学习开发自己的composer包,并使用GitHub实时更新到Packagist

    composer是什么 Composer 不是一个包管理器.是的,它涉及 "packages" 和 "libraries",但它在每个项目的基础上进行管理,在你 ...

  6. 灵魂拷问:机器学习、深度学习专业已经沦为调包专业了吗?

    有硕士同学问:小弟现在正在高校读硕士,目前跟着导师做自然语言处理的研究,虽说听起来高大上,但是做过的都知道,例如深度学习框架跑起来就是各种调包,运气好凑个模型出来发发论文,技术含量就比较稀少了,感觉现 ...

  7. 通过openpctv简单学习opkg安装与生成包的一些过程

    http://linuxtoy.org/archives/openpctv-adding-full-tv-functionality-to-htpc.html OpenPCTV - 让你的HTPC拥有 ...

  8. ASP.NET Core on K8S深入学习(10)K8S包管理器Helm-Part 2

    本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章.上一篇 Part 1 中介绍了Helm的基本概念与基本使用,这一篇我们来自定义一 ...

  9. ASP.NET Core on K8S深入学习(10)K8S包管理器Helm-Part 1

    本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章. 关于Helm Why Helm? 虽然K8S能够很好地组织和编排容器,但是缺少 ...

最新文章

  1. c++ python opencv_ubuntu下C++与Python混编,opencv中mat类转换
  2. MySQL 性能调优之存储引擎
  3. how is my Angular custom controller code executed
  4. 【转】Microsoft Graph 概述
  5. Apache Log4j2详解,【高级Java架构师系统学习
  6. 京东方将首次向华为供应on-cell OLED面板 用于Mate 40系列
  7. Nginx启动报错误unlink() “nginx.pid” failed (2: No such file or directory)
  8. iOS开发-常见错误和警告总结
  9. 【C#设计模式——创建型模式】抽象工厂模式
  10. mysql groupby 优化
  11. C# 使用 NPOI操作excle文件(读取与新建重写)
  12. 2020-06-20
  13. 2020年中国汽车后市场行业发展现状分析,汽车保有量不断提升,行业发展前景广阔「图」
  14. CentOS-8 dnf 前端工具学习笔记
  15. 【观察】联想“内生外化”:能干肯干、真招实招加速中小企业数字化转型
  16. final、finalize 和 finally
  17. D - Circular Addition
  18. 实体嵌入(向量化):用深度学习处理结构化数据
  19. 如何从官网下载 Google Chrome 64位离线安装包
  20. 谷歌工程师阴谋干掉IE6的尘封往事

热门文章

  1. 2021-09-17 ROS2教程(三)-服务客户端创建(C++/Python)记录
  2. [DevExpress使用随笔]之licenses.licx的处理
  3. 代码审计之oasys系统
  4. Hack the box靶机 Soli
  5. jqprint 打印分页
  6. 什么是API?(看完你就理解了)
  7. 搭建docker私库
  8. SEO优化看这篇就够啦
  9. 一个简单创业案例带来的启示
  10. Windows Terminal 快捷键