0


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

前言

    在之前博客中,陆续的介绍了关于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可以正常打开。
标签: GDAL JAVA 开源GIS

本文转载自: https://blog.csdn.net/yelangkingwuzuhu/article/details/128269992
版权归原作者 夜郎king 所有, 如有侵权,请联系我们删除。

“基于GDAL的JAVA生成GDB文件实战”的评论:

还没有评论