首页 > 编程语言 >Java中使用JTS实现WKB数据写入、转换字符串、读取

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

时间:2023-12-22 17:26:08浏览次数:42  
标签:Java geometry hex WKB WKBWriter JTS write new

场景

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

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/132755202

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)')))

 

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi

实现

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)


 

标签:Java,geometry,hex,WKB,WKBWriter,JTS,write,new
From: https://www.cnblogs.com/badaoliumangqizhi/p/17922023.html

相关文章

  • java反射
    一、反射概述  二、反射的相关操作1、获取Class类对象示例:学生类:packagecom.itbianma;publicclassStudent{privateStringname;privateStringaddress;privateIntegerage;publicStudent(){}publicStudent(Stringname,......
  • java8排序
    升序List<Transaction>transactions=Arrays.asList(newTransaction(brian,2011,300),newTransaction(raoul,2012,1000),newTransaction(raoul,2011,400),newTransaction(mario,2012,......
  • javaWeb中文乱码
    问题归类1.登录时无法用中文名登录2.页面修改数据,后端传入乱码解决方法1.数据库看看数据库编码集是不是中文编码集如果不是可以在数据库中运行下面语句ALTERDATABASE数据库CHARACTERSET=utf8mb42.数据库连接关键是characterEncoding=utf8没有的加上url=jdb......
  • 计算机 JAVA 语言的基础小总结
    计算机JAVA语言的基础小总结一维数组和二维数组的定义及初始化在Java中,数组是一种数据结构,用于存储多个数据。数组中的元素是相同类型的数据。数组是一个引用数据类型,数组的变量只是一个引用,数组元素和数组变量在内存里是分开存放的。一维数组的定义和初始化一维数组在Jav......
  • 如何 使 Java、C# md5 加密的值保持一致
    JavaC#md5加密值保持一致,一般是编码不一致造成的值不同JAVA(加密:123456)C#(加密:123456)UTF-8e10adc3949ba59abbe56e057f20f883eUTF8e10adc3949ba59abbe56e057f20f883eUTF-16LEce0bfd15059b68d67688884d7a3d3e8cUnicodece0bfd15059b68d67688884d7a3d3e8c......
  • javaweb中的设计模式
    1.监听器基于观察者模式。1.myTestEvent自定义事件。被观察者publicclassMyTestEventextendsApplicationEvent2.MyNoAnnotationListener自定义监听器。观察者@ComponentpublicclassMyNoAnnotationListenerimplementsApplicationListener<MyTestEvent>{@Override......
  • java后端开发小技巧-集合初始化
    阅读说明:1.如果有排版格式问题,请移步https://www.yuque.com/mrhuang-ire4d/oufb8x/lu346eokyvgfao0b?singleDoc#《java后端开发小技巧-集合初始化》,选择宽屏模式效果更佳。2.本文为原创文章,转发请注明出处。后端开发中集合是经常会用到的类型。java原生的集合方法难以满足......
  • 【Java】Spring、SpringBoot、SpringCloud理解和入门
    关于Spring、SpringBoot、SpringCloud我总结了几点。Spring是轻量级的容器框架,目前大多数项目不直接使用Spring的。SpringBoot是Spring的升级版,主要应用单个微服务,关联性小的项目、规模小、硬件要求不高的项目。SpringCloud基于SpringBoot来实现微服务开发组件。主要应用于规......
  • vue3 + java 查询数据前后端时间不一致如何解决?
    环境:vue3+springboot+mybatis+mysql 场景:后端返回的时间与前端接收到的时间,小时不一致,时间格式是古巴标准时间:"CST"解决:在Entity中时间字段上增加注解:@JsonFormat(pattern="yyyy-MM-ddHH:mm:ss",timezone="GMT+8")......
  • 找到最佳优惠券组合!Java算法助力电商平台策略优化
    大家好,我是小米,一个热爱分享技术的小伙伴。最近我们电商平台迎来了一个新的需求,需要在用户下单时,高效地计算出多张平台券和店铺券的最优组合,使用户享受到最大的优惠。为了满足这一需求,我研究了一下动态规划和贪心算法,想和大家分享一下。需求背景在用户下单时,有时候我们会提供多张平......