Java中使用JTS实现WKB数据写入、转换字符串、读取
2023-12-22 22:33:28
场景
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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!