GIS工具包

这篇具有很好参考价值的文章主要介绍了GIS工具包。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

GIS工具包,根据jts工具,结合实际使用场景提取出来的常用工具集合;涵盖几何格式转换(WKT,GeoJSON等)与geometry转换、gis距离计算、度距离单位换算、角度计算、buffer运算、映射截取、几何穿串等操作

gis-tools使用说明

gis-tools源码库地址文章来源地址https://www.toymoban.com/news/detail-455366.html

1. 格式转换

1.1 WktTool使用说明

wkt格式与geometry互转;

  1. wkt转geometry操作
Geometry geometry = WktTool.wktToGeo("LINESTRING (116.7262994 35.5153623, 116.726309 35.515362, 116.7263135 35.5153642, 116.72632 35.515364, 116.72633 35.515363, 116.7263355 35.5153617, 116.726343 35.515362)");
  1. geometry转wkt操作
//转换不带Z
WktTool.geoToWkt2D(geometry);
//转换带Z
WktTool.geoToWkt3D(geometry);

1.2 GeoJsonTool使用说明

  1. geoJson字符串转Geometry

GeoJsonTool.read(String geoJson)

  1. Geometry转GeoJson

GeoJsonTool.toJSONString(Geometry geometry)

2. 扩圈工具

2.1 BufferTool使用说明

将geometry进行扩圈处理,线场景使用最广,支持延线的方向左右扩、单边扩;

  1. 圆角扩圈(上下是矩形,左右是圆角)
//distance单位米
BufferTool.bufferCapRound(Geometry geometry, double distance)
  1. 扩圈(上下左右四个方向,外接多边形)
//distance单位米
BufferTool.bufferCapSquare(Geometry geometry, double distance)
  1. 上下扩圈(扩完是矩形)
//distance单位米
BufferTool.bufferCapFat(Geometry geometry, double distance)
  1. 左扩X米右扩X米
//distance单位米 leftDistance 左扩x米 rightDistance 右扩X米
BufferTool.bufferGeoLeftRight(Geometry geometry, double leftDistance, double rightDistance)
  1. 左扩X米
//distance单位米 distance 左扩x米
BufferTool.bufferGeoLeft(Geometry geometry, double distance)
  1. 右扩X米
//distance单位米 distance 右扩x米
BufferTool.bufferGeoRight(Geometry geometry, double distance)

3. 距离工具

3.1 DistanceTool使用说明

点到点距离计算,线距离计算,点到线距离计算,度距离相关转换等工具类,半径采用地球平均半径6371.0087714;

  1. 距离转换为度 cmToDegree
  2. 距离(KM)转换为度 kmToDegree
  3. 度转换为距离(单位KM) degreeToKm
  4. 度转换为距离(单位M) degreeToM
  5. 度转换为厘米 degreeToCm
  6. 获取几何距离单位(米) getLengthM(Geometry geometry)
  7. 获取几何距离单位(千米) getLengthKM(Geometry geometry)
  8. 获取两点的距离 p2pLenDegrees(Coordinate coordinate0, Coordinate coordinate1)
  9. 获取两点距离(KM) p2pLenKm(Coordinate coordinate0, Coordinate coordinate1)
  10. 获取两点距离(M) p2pLenM(Coordinate coordinate0, Coordinate coordinate1)
  11. 点到线的最近距离 p2LineDegrees(Point point, LineString lineString)
  12. 点到线的最近距离(KM) p2LineKM(Point point, LineString lineString)
  13. 点到线的最近距离(M) p2LineM(Point point, LineString lineString)

4. 角度工具

4.1 AngleTool使用说明

  1. 获取顺时针夹角 getCwAngle(Coordinate p0, Coordinate p1, Coordinate p2)

p1: po,p2的交点坐标

  1. 获取 逆时针夹角 getCCwAngle(Coordinate p0, Coordinate p1, Coordinate p2)

p1: po,p2的交点坐标

  1. 获取两条线段的逆时针夹角 getCCwAngle(Geometry lineString0, Geometry lineString1)
  2. 获取两条线段的顺时针夹角 getCwAngle(Geometry lineString0, Geometry lineString1)
  3. 判断点coordinate在线lineString的左边还是右边 isLeft(Geometry lineString, Coordinate coordinate)
  4. 判断whereLineString在lineString的左侧还是右侧 isLeft(Geometry lineString, Geometry whereLineString)

5. 操作工具

5.1 PointTool使用说明

  1. 通过线设置point的Z值 getPointZ(Geometry linkString, Point point)
  2. 获取平均Z getAvgZ(Geometry geometry)

5.2 LineTool使用说明

  1. 获取点到线的垂线 verticalLine(Point point, Geometry lineString)
  2. 获取垂足(点到线的垂足) (Point point, Geometry lineString)
  3. 截取l1在点coordinate0与coordinate1之间的线段 (Geometry l1, Coordinate coordinate0, Coordinate coordinate1)
  4. 获取l2在l1上面的线段 getExtractLine(Geometry l1, Geometry l2)
  5. 获取l2在l1上面的线段,并借用l1距离垂足xm的形状点,没有的话返回垂足做起、终点 getExtractLine(Geometry l1, Geometry l2, double xm)
  6. 获取point在l1上面的位置点(索引位置) PointLocation getLinearLocation(Geometry l1, Geometry point)

PointLocation index:索引位置 segmentFraction:同一个index下面的占比. 应用场景:点到线做映射,然后排序映射后的点

  1. 获取 pointGeoList 在线 l1上面的投影线 getExtractLineByPoints(Geometry l1, List pointGeoList)
  2. 当geometry两两形状点的跨度大于XM的时候往geometry里面加入形状点 sewing(Geometry geometry, int XM)

gis-tools源码库地址

到了这里,关于GIS工具包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux】基本开发工具包使用

    目录 一, yum ——linux软件包管理器  1. 软件包是啥子?  2.  yum基本使用  1. 步骤:  2. 开发工具推荐(centos 7.6) 二,vim —— linux文本编辑器 1. Normal mode  ——  命令模式(记不住没关系,多练就行) 2.  last line  mode——   末行模式 (如何进入;shift :) 3. Insert mode ——插

    2024年02月08日
    浏览(80)
  • Hardhat工具包1--安装使用

    参考资料: 官方文档 : https://hardhat.org/getting-started/ https://hardhat.org/hardhat-runner/docs/getting-started#overview 基于Hardhat和Openzeppelin开发可升级合约(一) 基于Hardhat和Openzeppelin开发可升级合约(一)_灬倪先森_的博客-CSDN博客 ---------------------------------------------------------------------------------

    2023年04月11日
    浏览(124)
  • Quanto: PyTorch 量化工具包

    量化技术通过用低精度数据类型 (如 8 位整型 (int8)) 来表示深度学习模型的权重和激活,以减少传统深度学习模型使用 32 位浮点 (float32) 表示权重和激活所带来的计算和内存开销。 减少位宽意味着模型的内存占用更低,这对在消费设备上部署大语言模型至关重要。量化技术也

    2024年04月10日
    浏览(88)
  • Windows11渗透工具包分享

              项目地址 下载地址

    2024年02月13日
    浏览(72)
  • NetAssist网络调试工具使用指南 (附NetAssist工具包)

    1、NetAssist简介 NetAssist网络调试助手,是Windows平台下开发的TCP/IP网络调试工具,集TCP/UDP服务端及客户端于一体,是网络应用开发及调试工作必备的专业工具之一,可以帮助网络应用设计、开发、测试人员检查所开发的网络应用软/硬件产品的数据收发状况,提高开发速度,简

    2024年02月16日
    浏览(70)
  • Kubernetes GoRoutineMap工具包代码详解

    GoRoutineMap 定义了一种类型,可以运行具有名称的 goroutine 并跟踪它们的状态。它防止创建具有相同名称的多个goroutine,并且在上一个具有该名称的 goroutine 完成后的一段退避时间内可能阻止重新创建 goroutine。 使用GoRoutineMap场景: 使用协程的方式运行函数逻辑,如果函数成功

    2024年02月06日
    浏览(68)
  • 浅谈WPF之MVVM工具包

    在之前的WPF示例中,都会用到一个MVVM框,也是一个比较常的MVVM框架,就是MVVM工具包【CommunityToolkit.Mvvm】,今天专门以一个简单的小例子,简述一下MVVM工具包的常见用法,仅供学习分享使用,如有不足之处,还请指正。     CommunityToolkit.Mvvm 包(又名 MVVM 工具包)是一个现代

    2024年03月25日
    浏览(82)
  • IPOP 使用详解 (附IPOP工具包)

    IPOP 是一款设备调试终端工具,功能很强大,集合很多服务、调试、查看手段于一身,主要功能如下: IP 地址动态绑定功能; 路由信息查询和配置功能; MAC 地址信息查询和修改功能; MAC 、主机信息扫描功能; 本机网络报文统计功能; 本机端口列表、远程端口扫描功能;

    2024年02月16日
    浏览(47)
  • 实践学习PaddleScience飞桨科学工具包

    动手实践,在实践中学习!本项目可以在AIStudio平台一键运行!地址:https://aistudio.baidu.com/projectdetail/4278591 本项目第一次执行会报错,再执行一次即可。若碰到莫名其妙的报错,换成32G显存环境试试。 爱因斯坦和牛顿也是普通人,也有认识不到的地方,不要盲目崇拜,也不要

    2024年01月16日
    浏览(44)
  • 宣布推出 .NET 社区工具包 8.1!

    我们很高兴地宣布 .NET Community Toolkit 8.1 版正式发布!这个新版本包括呼声很高的新功能、bug 修复和对 MVVM 工具包源代码生成器的大量性能改进,使开发人员在使用它们时的用户体验比以往更好!  就像在我们之前的版本中一样,我们非常感谢 Microsoft 使用该工具包的团队以及

    2024年02月04日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包