首页 > 其他分享 >将数据修改为geometry类型

将数据修改为geometry类型

时间:2023-01-09 10:36:58浏览次数:44  
标签:java geometry org 修改 usermodel poi 类型 import apache

甲方给了一坨数据

 

和一坨大便差不多    

 

空间字段完全不符合要求  需要手动清洗后入库

 

拿个简单的来说

 

甲方给的经纬度数据是一条条线

 

数据格式是这样的

113.089437,23.233682;113.091573,23.249744

 

需要将数据使用java转换为  wkt格式   再到数据库中转换为  wkb格式   最后将空间字段类型修改为geometry类型

 

贴一段数据清洗的代码

 

代码的大概意思是 把在excel 后面加一个geom字段,将经纬度清洗为wkt格式后存入geom字段

package com.piesat.test;

import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@SpringBootTest
public class ljwTest {

    @Autowired

    @Test
    public void test() throws IOException {

        String filePath = "C:\\Users\\HTHT\\Desktop\\czt_xdcddqtglxx.xlsx";

        FileInputStream inputStream = new FileInputStream(filePath);

        ExcelReader reader = ExcelUtil.getReader(inputStream);

        Workbook workbook = reader.getWorkbook();

        Sheet sheetAt = workbook.getSheetAt(0);

        int lastRowNum = sheetAt.getLastRowNum();

        Row row1 = sheetAt.getRow(0);

        Cell cell1 = row1.getCell(39);

        String ss1 = "geom";

        Cell head = row1.createCell(39);

        head.setCellValue(ss1);

        for (int i = 1;i<lastRowNum;i++){

            Row row = sheetAt.getRow(i);

            Cell cell = row.getCell(12);

            String s1= "LINESTRING("+cell.toString().replace(","," ")+')';

            String s2 = s1.replace(";",",");

            Cell add = row.createCell(39);

            add.setCellValue(s2);
        }

        ExcelWriter writer = reader.getWriter();

        writer.flush(new File("C:\\Users\\HTHT\\Desktop\\test.xlsx"));

        inputStream.close();

        reader.close();
    }
}

 

清洗完后将excel导入 数据库

 

打命令

update table table_name set geom = st_geometryfromtext(geom)

将数据转换为wkb格式

 

alter table table_name alter column field_name type geometry using field_name::geometry

 

标签:java,geometry,org,修改,usermodel,poi,类型,import,apache
From: https://www.cnblogs.com/bawanglong168/p/17036171.html

相关文章

  • 堆、栈、调用栈、解释型、编译型、静态类型、动态类型、弱引用、强引用 概念理解
    1、堆——存储引用数据类型;2、栈——存储基本数据类型和引用数据类型的地址;3、调用栈每次函数调用会将该函数执行上下文进行入栈操作;多个函数之间的调用,通过函数调用栈......
  • 数据类型
    最新的ECMAScript标准定义了8种数据类型:七种基本数据类型:1、布尔值(Boolean),有2个值分别是:true和false.2、null,一个表明null值的特殊关键字。JavaScript是大小......
  • 读编程与类型系统笔记02_基本类型
    1. 空类型1.1. uninhabitabletype1.1.1. 声明从不返回的函数1.2. 不能有任何值的类型,其可取值的集合是一个空集合1.3. 函数不返回的原因1.3.1. 函数在所有代......
  • expres实现登录与修改密码
    登录模块如果登录的时候,昵称在数据库中查询的是不唯一值。需要提示用户登录失败。即使用户密码输入正确。然后将该消息通知相关人员,立即进行排查问题。varexpress=......
  • TypeScript支持的数据类型(一)
    说明TypeScript做为JavaScript的超集,对于JavaScript中的类型完全支持,除了JavaScript中的类型之外,TS自身也提供了一些数据类型。在TS中,数据类型的整体结构如下:最顶级......
  • centos8修改更新迁徙到Stream方法
    迁徙到Stream此方案比较简单,输入以下命令即可:wget'http://mirror.centos.org/centos/8-stream/BaseOS/x86_64/os/Packages/centos-gpg-keys-8-3.el8.noarch.rpm'rp......
  • ubuntu20下mysql5.7数据库修改密码
    --找到mysql配置文件修改/etc/mysql/mysql.conf.d/mysqld.cnf#加上下面的可以不要密码登录#skip-grant-tables#skip-networking然后重启mysql服务servicemysqlr......
  • 腾讯TencentOS Linux修改主机名hostname的方法
    腾讯TencentOSLinux修改主机名hostname的方法正常情况下修改Linux服务器的主机名是很容易的,只需要hostnamectlset-hostname命令就可以完成,但是我们要知其然知其所以然,L......
  • vnpy tqsdk 修改,增加主力合约和指数
    defquery_bar_history(self,req:HistoryRequest)->Optional[List[BarData]]:"""查询k线数据"""#初始化APItry:api:T......
  • 2.1JS中的数据类型
    ​  1数值型:number整数和浮点数统称为数值。例如85或3.1415926等。2字符串型:String由0个,1个或多个字符组成的序列。在JavaScript中,用双引号或单引号括起来表示,如"......