Java中使用JTS实现WKB数据写入、转换字符串、读取

场景

Java中使用JTS实现WKT字符串读取转换线、查找LineString的list中距离最近的线、LineString做缓冲区扩展并计算点在缓冲区内的方位角:

Java中使用JTS实现WKT字符串读取转换线、查找LineString的list中距离最近的线、LineString做缓冲区扩展并计算点在缓冲区内的方位角_jts工具类-CSDN博客

WKB介绍

WKB(Well-Known Binary) 用二进制流 描述几何对象信息。

WKB比WKT的优势在于WKB是二进制,主要是解决传输和存储的效率问题,

所以MySQL,Postgre数据存储Geometry类型的数据,存储的值是WKB格式的

WKB 使用 1 字节无符号整数、4 字节无符号整数和 8 字节双精度数(IEEE 754 格式)。一个字节是八位。

Mysql中查询存储WKB值示例:

SELECT hex(st_asbinary(st_geomfromtext('POINT(1 2)')))

注:

博客:
霸道流氓气质_C#,架构之路,SpringBoot-CSDN博客

实现

1、WKB相关操作api

2、WKB输出数据并转换为字符串

        GeometryFactory geometryFactory = new GeometryFactory();
        Point point1 = geometryFactory.createPoint(new Coordinate(112.11,2225.21));
        WKBWriter wkbWriter = new WKBWriter();
        byte[] write = wkbWriter.write(point1);

        String hex = WKBWriter.toHex(write);
        System.out.println(hex);

以上结果输出:

0000000001405C070A3D70A3D740A1626B851EB852

3、WKB数据读取

        WKBReader wkbReader = new WKBReader();
        Geometry geometry = null;
        try {
            geometry = wkbReader.read(write);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        System.out.println(geometry.toText());

完整示例:

        //WKB输出数据
        GeometryFactory geometryFactory = new GeometryFactory();
        Point point1 = geometryFactory.createPoint(new Coordinate(112.11,2225.21));
        WKBWriter wkbWriter = new WKBWriter();
        byte[] write = wkbWriter.write(point1);

        String hex = WKBWriter.toHex(write);
        System.out.println(hex);
        //0000000001405C070A3D70A3D740A1626B851EB852

        WKBReader wkbReader = new WKBReader();
        Geometry geometry = null;
        try {
            geometry = wkbReader.read(write);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        System.out.println(geometry.toText());
        //POINT (112.11 2225.21)


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/264018.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MFC静态链接+libtiff静态链接提示LNK2005和LNK4098

编译报错 1>msvcrt.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_infoAAEABV0Z) 已经在 libcmtd.lib(typinfo.obj) 中定义 1>msvcrt.lib(ti_inst.obj) : error LNK2005: "pr…

电子说明书制作:零基础也可以轻松上手

引言: 在数字化时代,电子说明书成为了传统纸质说明书的现代替代品。电子说明书具有可交互性、易更新、环保等优势,越来越受到企业和个人的青睐。本文将介绍一些简单易用的工具和方法,帮助零基础的用户轻松上手电子说明书的制作。…

Sui 生态排名第一的头部流动性协议 NAVI Protocol 活动进行中

作为在熊市中启动的新生公链,Sui 正在稳步崛起。公链的 TVL 持续攀升,目前已经达到了 1.76亿美元,闯入了公链排名前20榜单。仅过去四个月内,TVL 增加了10倍,并且增长仍在继续,SUI 的价格在近期也有了很亮眼…

智能优化算法应用:基于瞬态优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于瞬态优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于瞬态优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.瞬态优化算法4.实验参数设定5.算法结果6.…

网络调优,部署内网备份冗余和负载分担---实验

目录 网络调优,部署内网备份冗余和负载分担---实验 拓扑 需求 配置步骤: 配置命令: 网络调优,部署内网备份冗余和负载分担---实验 拓扑 需求 主机获取IP地址,访问WEB服务器,WEB服务器网关在SW5上SW5作为VLAN10,V…

Qt配置opencv,cmake编译参考笔记,已成功

Qt版本:Qt5.14.2 opencv:4.5.4(不要用4.5.5!!很坑别问我为什么知道) cmake:下的最新版本 前言:为什么非得要用cmake编译呢?跳过cmake不好吗? 之前用的opencv…

PS里面怎么提取图上要的颜色然后用到另一个部位去

PS里面要提取图上要的颜色然后用到另一个部位去,具体步骤如下: 在ps里打开特定的图像文件; 想要提取图上的哪个颜色,就使用”吸管工具“在图上特定的位置上点击一下,就会看到前景色变成了相应的颜色; 然…

web网页端使用webSocket实现语音通话功能(SpringBoot+VUE)

写在前面 最近在写一个web项目,需要实现web客户端之间的语音通话,期望能够借助webSocket全双工通信的方式来实现,但是网上没有发现可以正确使用的代码。网上能找到的一个代码使用之后只能听到“嘀嘀嘀”的杂音 解决方案:使用Jso…

vue之router-link页面跳转及传参

文章目录 vue之router-link页面跳转及传参根据路由的路径跳转及传参(query)根据路由的名称跳转及传参(params)根据store传参 vue之router-link页面跳转及传参 <router-link> 是用于在 Vue.js 应用程序中进行路由导航的组件。它可以用来生成具有正确链接的<a> 标签…

我的应用我做主:扩展线程池

自定义线程创建&#xff1a;ThreadFactory 线程池中的线程是从哪里来的呢&#xff1f; ThreadPoolExecutor(int corePoolSize,//指定了线程池种的线程数量 int maximumPoolSize,//指定了线程池中的最大线程数量。 long keepAliveTime,// 当线程池数量超过了corePoolSize&#x…

【电路笔记】-串联电容器

串联电容器 文章目录 串联电容器1、概述2、示例13、示例34、总结 当电容器以菊花链方式连接在一条线上时&#xff0c;它们就串联在一起。 1、概述 对于串联电容器&#xff0c;流过电容器的充电电流 ( i C i_C iC​ ) 对于所有电容器来说都是相同的&#xff0c;因为它只有一条…

在x64上构建智能家居(home assistant)(二)(新版Debain12)连接Postgresql数据库

新版数据库安装基本和旧版相同,大部分可以参考旧版本在x64上构建智能家居(home assistant)&#xff08;二&#xff09;连接Postgresql数据库_homeassist 数据库-CSDN博客 新版本的home assistant系统安装,我在原来写的手顺上直接修改了,需要的可以查看在x64上构建智能家居(home…

心有暖阳,笃定前行,2024考研加油

2024考研学子&#xff0c;所有的付出终有收获&#xff0c;阳光终将穿透阴霾&#xff0c;终将上岸。 当曙光破晓的时候&#xff0c;你可曾记得那些星月为伴&#xff0c;孤独为友&#xff0c;理想为灯来指引前行之路的日子&#xff0c;那些默默扎根的日子终将化作星星在未来闪闪发…

java.lang.IllegalStateException: Duplicate key

序言 最近监控扫描出我们项目的某些异常信息&#xff0c;报错java.lang.IllegalStateException: Duplicate key xxx&#xff0c;看到异常来自stream流&#xff0c;然后定位看了一下是某位同事的代码使用stream流把List转Map集合出现重复的key异常信息。List集合A对象来源于某个…

01-黑马程序员大数据开发

一. Hadoop概述 1. 什么是大数据 &#xfeff;狭义上&#xff1a;对海量数据进行处理的软件技术体系&#xfeff;广义上&#xff1a;数字化、信息化时代的基础支撑&#xff0c;以数据为生活赋 2. 大数据的核心工作&#xff1a; &#xfeff;存储&#xff1a;妥善保存海量待…

Http---HTTP 请求报文

1. HTTP 请求报文介绍 HTTP最常见的请求报文有两种: GET 方式的请求报文POST 方式的请求报文 说明: GET: 获取web服务器数据POST: 向web服务器提交数据 2. HTTP GET 请求报文分析 HTTP GET 请求报文效果图: GET 请求报文说明: ---- 请求行 ---- GET / HTTP/1.1 # GET请…

Qt WebAssembly开发环境配置

目录 前言1、下载Emscripten SDK2、 安装3、环境变量配置4、QtCreator配置5、运行示例程序总结 前言 本文主要介绍 Qt WebAssembly 开发环境的配置。Qt for Webassembly 可以使Qt应用程序在Web上运行。WebAssembly&#xff08;简称Wasm&#xff09;是一种能够在虚拟机中执行的…

内存管理学习

内存管理 在计算系统中&#xff0c;通常存储空间分为两种&#xff1a;内部存储空间和外部存储空间。 内部存储空间通常访问速度比较快&#xff0c;能够按照变量地址随机访问&#xff0c;也就是我们通常所说的RAM&#xff08;随机存储器&#xff09;&#xff0c;可以把它理解为…

【原理图PCB专题】原理图图纸锁定/解锁与PCB文件加密方式

在工作中我们会遇到需要冻结原理图进行评审和加密图纸防止被他人盗用的需求。那么在OrCAD Capture中如何对图纸进行锁定与解锁,如何在Allegro中对PCB工程进行加密呢? 原理图锁定与解锁 打开原理图,在图纸中单击右键,选择lock/unlock就可以进行锁定与解锁。 锁定时图纸图…

PostGIS学习教程十四:更多的空间连接

PostGIS学习教程十四&#xff1a;更多的空间连接 在上一节中&#xff0c;我们看到了ST_Centroid(geometry)和ST_Union([geometry])函数&#xff0c;以及一些简单的示例。在本节中&#xff0c;我们将用它们做一些更详细的事情。 提示&#xff1a;写完文章后&#xff0c;目录可以…