java输出shp文件设置其中字段长度精度和类型(精度踩坑记录)

本文介绍如何使用Java程序批量处理SHP文件,并通过修改DBF文件来调整字段的长度和精度,解决中文字符存储问题。文章推荐了一个适用于新版Java DBF操作的库,并提供了输出CPG文件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有一个需求,是需要使用java程序批量处理shp文件,然后按照指定字段类型的长度和精度重新输出成shp文件。
shp文件读取后,可以读取到原字段的字段名和内容,但是长度和精度字段设置,都是在dbf文件中的,shp生成和读取,都是获取不到的,因此,直接输出shp是无法直接设置精度字段的,还需要重新生成一次dbf文件
java输出shp网上有很多,此处不再粘贴复制了,主要是对dbf输出做记录
网上基本找到的都是javadbf去管理dbf字段的设置,不过都是版本比较老的内容了,这边推荐2个很好用的pom下载地址:
这里直接下载最新的1.14.0
添加链接描述
这个就只有老版的0.4.0
添加链接描述
0.4.0版本的这个包,主要问题是在生成dbf文件时,对存入字符串只会存入一小半,尤其是中文字符,网上原因详细,此处不再复制
新版1.14.0的包,对dbf字段管理的方法和老版略有不同
分别设置为数值格式和字符串格式

fields[a].setType(DBFDataType.NUMERIC);
fields[a].setType(DBFDataType.CHARACTER);

设置字段长度和精度

fields[a].setLength(254);
fields[a].setDecimalCount(3)

并且最新版本的com.linuxense.javadbf.DBFWriter这个生成dbf方法,没有找到设置输出文件格式的方法,默认输出的为GBK格式,这样重新输出dbf文件后,无论原来输出shp时设置的是什么格式,后面都会使用GBK格式打开才不乱码
网上找到的输出shp方法,都不生成cpg文件,这边简单记录个输出小方法

//输出cpg,默认GBK格式
    public void outCpg(String encode) throws Exception{
        if(encode==null){
            encode="GBK";
        }
        //创建shape文件对象
        OutputStream out = new FileOutputStream("D:\\test.cpg");
        out.write(encode.getBytes(encode));
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值