基于GDAL的JAVA生成GDB文件实战

43 篇文章 4 订阅
8 篇文章 9 订阅

前言

        在之前博客中,陆续的介绍了关于gdb文件的读取,gis利器之Gdal(三)gdb数据读取玩转GDAL一文带你深入Windows下FileGDB驱动支持,这些文章主要都是介绍gdal的读取gdb以及简单的gdb文件读写。在实际工作中gdb是一种丰富类型的数据库,可以记录许多的数据,一个gdb文件可以包含多个图层以及多个属性列表。本文将深度讲解如何使用Java语言,基于GDAL进行图层的写入,设置属性表的字段中文别名,通过实例的方式进行讲解,最后使用ArcMap进行空间信息和属性信息的验证。

 一、JAVA具体开发

1、Pom.xml定义

      示例工程采用Maven进行jar管理,因此需要在Pom.xml定义相关依赖。参考代码如下:

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.yelang</groupId>
	<artifactId>gdal_demo1</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>gdal_demo1</name>
	<description>gdal的第一次试验</description>
 
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
	</properties>
 
	<dependencies>
		<dependency>
			<groupId>org.gdal</groupId>
			<artifactId>gdal</artifactId>
			<version>3.4.3</version>
			<scope>system</scope>
			<systemPath>${project.basedir}/lib/gdal.jar</systemPath>
		</dependency>
		
		<dependency>
		    <groupId>net.sf.ucanaccess</groupId>
		    <artifactId>ucanaccess</artifactId>
		    <version>4.0.4</version>
		</dependency>
 
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.11</version>
			<scope>test</scope>
		</dependency>
		
	</dependencies>
</project>

2、gdb驱动支持定义

// 注册所有的驱动
gdal.AllRegister();
// 为了支持中文路径,请添加下面这句代码
gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES");
// 为了使属性表字段支持中文,请添加下面这句
gdal.SetConfigOption("SHAPE_ENCODING", "CP936");
/*******************定义坐标系********************/
SpatialReference sr = new SpatialReference();
sr.ImportFromEPSG(4326);
/*******************输出gdb图层、表********************/
String saveGdbPath = "D:/creategdb/测试生成gdb1210.gdb";
	    
org.gdal.ogr.Driver oDriver = ogr.GetDriverByName("FileGDB");

if (oDriver == null) {
	System.out.println("FileGDB" + " 驱动不可用!\n");
	return;
}
	    
DataSource dataSourceGDB = oDriver.CreateDataSource(saveGdbPath);

3、创建gdb图层layer

 DataSource dataSourceGDB = oDriver.CreateDataSource(saveGdbPath);
//gdb图层
Layer gdbLayer = dataSourceGDB.CreateLayer("ZDXX", sr, ogr.wkbPolygon, null);

4、创建属性列,同时设置别名

// 创建一个叫FeatureName的字符型属性,字符长度为50
FieldDefn oFieldName = new FieldDefn("FieldName", ogr.OFTString);
oFieldName.SetAlternativeName("要素类型");
oFieldName.SetWidth(100);
gdbLayer.CreateField(oFieldName, 1);

5、创建空间元素

FeatureDefn oDefn =gdbLayer.GetLayerDefn();
// 创建三角形要素
Feature oFeatureTriangle = new Feature(oDefn);
oFeatureTriangle.SetField(0, 0);
oFeatureTriangle.SetField(1, "三角形");
Geometry geomTriangle =Geometry.CreateFromWkt("POLYGON ((0 0,20 0,10 15,0 0))");
oFeatureTriangle.SetGeometry(geomTriangle);

gdbLayer.CreateFeature(oFeatureTriangle);

二、gdb文件生成

       经过以上的一系列步骤,基本上完成gdb文件的生成测试,需要完整测试代码可以点击基于JAVA的GDAL生成gdb实例代码,下载后本地后,在确保环境配置无误的情况下,正常运行。

1、gdb文件目录

在生成目录,打开以gdb后缀结尾的文件夹,可以看到如下的文件(比较多,打开滚动条看更多)

2、 ArcMap验证

       使用ArcMap打开上述的gdb文件,验证文件是否可以正常打开,空间参考设置、属性设置、空间信息、属性别名是否已经正常写入等等。

 三、总结

        以上就是本文的主要内容,本文将深度讲解如何使用Java语言,基于GDAL进行图层的写入,设置属性表的字段中文别名,通过实例的方式进行讲解,最后使用ArcMap进行空间信息和属性信息的验证。实验表明,gdb文件空间参考设置正确,属性信息和空间信息设置完成,通过ArcMap可以正常打开。

  • 39
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 80
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 80
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜郎king

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值