当前位置:网站首页>批量修改Shapefile属性表的一种方法(使用gdal.jar)
批量修改Shapefile属性表的一种方法(使用gdal.jar)
2022-08-09 09:29:00 【我一时想不起】
批量修改Esri Shapefile属性的方法有很多中,比如使用各类GIS软件自带的字段计算器、函数库等等。
也可以使用GDAL有关的函数库来处理矢量文件,这样操作起来应该会更自由一些、个性化可能更强大一些。GDAL是由开源地理信息基金会发布的一个开源函数库,目前有C、C++、Python、Java版本的API。可以用来做地理信息系统的开发工作。下载及介绍链接:GDAL — GDAL documentation
以下是使用gdal.jar来完成对矢量文件的操作。
public void WriteShpDbf() {
// 注册所有的驱动
ogr.RegisterAll();
// 为了支持中文路径,请添加下面这句代码
gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES");
// 为了使属性表字段支持中文,请添加下面这句
gdal.SetConfigOption("SHAPE_ENCODING", "");
String FileName = "F:\\test\\25.shp";
// 注意空格是必须的
String strDriverName = "ESRI Shapefile";
// 加载驱动
org.gdal.ogr.Driver oDriver = ogr.GetDriverByName(strDriverName);
if (oDriver == null) {
System.out.println("打开驱动失败!");
return;
}
// 打开文件,获取数据源
DataSource oDS = oDriver.Open(FileName, 1);
if (oDS == null) {
System.out.println("打开矢量文件【" + FileName + "】失败!\n");
return;
}
//打开图层,一般ESRI Shapefile只有一个图层
Layer oLayer = oDS.GetLayer(0);
if (oLayer == null) {
System.out.println("打开图层失败!\n");
return;
}
System.out.println("图层:" + oLayer.GetName());
int ct = (int) oLayer.GetFeatureCount();
System.out.println("要素数量" + ct);
//遍历要素,一个要素可以理解为Shapefile属性表中的一行
for (int i = 0; i < ct; i++) {
//根据下标获取要素
Feature feature = oLayer.GetFeature(i);
//给integer型字段bh赋值
feature.SetField("bh", (i + 1));
//将要素应用到图层
oLayer.SetFeature(feature);
}
//将图层数据保存到硬盘
oLayer.SyncToDisk();
}
边栏推荐
猜你喜欢
随机推荐
Ontology Development Diary 03-Understanding Code
本体开发日记05-努力理解SWRL(下)
使用Protege4和CO-ODE工具构建OWL本体的实用指南-1.3版本(4.Building An OWL Ontology)
GBase数据库产生迁移工具假死的原因是什么?
QT sets the icon of the exe executable
7.Collections tool class
Do you know the principles of test cases and how to write defect reports?
Go-控制语句那些事
WAVE SUMMIT 2022深度学习开发者峰会
问卷问题和答案的合并
功能自动化测试实施的原则以及方法有哪些?
1.流的概念
电脑硬件基础知识科普
测试用例的原则、缺陷报告怎么写你都知道吗?
接口开发规范及测试工具的使用
4.字符流
米斗APP逆向分析
GBase数据库中,源为 oracle 报出“ORA-01000:超出打开游标最大数”
常用命令之思科常用基础配置
归并排序