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

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

时间:2023-12-28 11:38:08浏览次数:41  
标签:Java geometry hex WKB WKBWriter JTS write new


场景

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

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

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

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

注:

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

实现

1、WKB相关操作api

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

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://blog.51cto.com/BADAOLIUMANGQZ/9011908

相关文章

  • 【Java核心基础】Java中foreach方法核心总结
    Java中的foreach循环适用于多种场景:遍历数组、集合框架、处理列表数据等,可替代传统for循环,使代码更简洁。结合Lambda表达式和StreamAPI,可实现声明式数据处理,虽然不能直接遍历Map的键值对,但可遍历键或值集合,在多线程环境下,结合并行流使用foreach可并行处理数据。使用foreach能简......
  • 详解Java编写并运行spark应用程序的方法WordCount_tyt2023
    SparkContext:通往Spark集群的入口点,用于创建RDD和广播变量等RDD:弹性分布式数据集,Spark应用程序的核心抽象Transformation:操作RDD生成新的RDD,如map、filter等Action:对RDD的操作,如count、collect等 环境:SparkStandalone模式目标:计算文本文件中所有单词的出现频率输入文......
  • 2017 《Java 2实用教程(第5版)》是由耿祥义、张跃平编著
    我的研究生同学河南老乡河南工业大学Jackso_hao大学期间学习的Java教材  《Java2实用教程(第5版)》是由耿祥义、张跃平编著,2017年清华大学出版社出版的高等学校Java课程系列教材、普通高等教育“十一五”国家级规划教材。该教材既可作为高等院校相关专业Java程序设计的教材......
  • java的启动脚本
    java的启动脚本:run_java.sh脚本内容: -设置工作目录-设置必要的环境变量-设置JVM运行参数-运行程序创建运行脚本:使用run_java.sh来运行java程序1.修改run_.sh2.转成UNIX风格3.上传至Linux 4.添加+x权限,运行脚本 ......
  • 无涯教程-Java泛型 - 映射(Map)
    Java在Map接口中提供了泛型支持。GenericMap-语法Map<T>map=newHashMap<T>();map-Map接口的对象。T   -集合声明期间传递的泛型类型参数。T是传递给泛型接口Map及其实现类HashMap的类型参数。packagecom.learnfk;importjava.util.HashMap;importj......
  • java进行数据库操作的并发控制的2种方法
    本文分享自华为云社区《java进行数据库操作的并发控制》,作者:张俭。在现代应用编码中,从数据库里面find出来,进行一些业务逻辑操作,最后再save回去。即:Personperson=personRepo.findById(id);person.setAge(18);personRepo.save(person);但是这样的业务操作,如果一个线程修改......
  • java8 新特性(二)CompletableFuture类
    CompletableFuture是Java8中引入的一个新特性,它表示异步计算的结果。通过使用CompletableFuture,可以方便地处理异步计算,并能够在计算完成后执行回调函数。CompletableFuture是Java8中引入的一个功能强大的类,它实现了Future接口,并在此基础上进行了丰富的扩展,以简化异步编程的复......
  • 无涯教程-Java泛型 - 有界类型
    有时您可能想限制参数的类型,如对数字进行操作的方法可能只希望接受Number或其子类的,这就是有界类型参数的用途,使用extends实现。这个示例是泛型方法,返回三个Comparable对象中的最大对象-publicclassMaximumTest{//确定三个Comparable对象中最大的一个publics......
  • Java定义变量容易出错的点
    在Java中,定义的数值有默认的类型(整型为int、浮点型为double),所以在定义变量的时候要注意类型的问题。例如:因为给l的值(10000000000)默认类型是int类型,所以超出了范围;修改:在给的值后面加上L,......
  • Java基础2
    1.抽象类在Java中,抽象类(AbstractClass)是一种特殊类型的类,它不能被实例化,而是用于被其他类继承。抽象类可以包含抽象方法和具体方法。以下是关于抽象类的一些关键点:定义抽象类:使用abstract关键字定义抽象类。不能实例化抽象类,即不能使用new关键字创建抽象类的......