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

发布时间:2023年12月22日

场景

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)


?

文章来源:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/135157655
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。