当前位置:   article > 正文

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

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定义相关依赖。参考代码如下:

  1. <project xmlns="http://maven.apache.org/POM/4.0.0"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>com.yelang</groupId>
  6. <artifactId>gdal_demo1</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <name>gdal_demo1</name>
  9. <description>gdal的第一次试验</description>
  10. <properties>
  11. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  12. <maven.compiler.source>1.8</maven.compiler.source>
  13. <maven.compiler.target>1.8</maven.compiler.target>
  14. </properties>
  15. <dependencies>
  16. <dependency>
  17. <groupId>org.gdal</groupId>
  18. <artifactId>gdal</artifactId>
  19. <version>3.4.3</version>
  20. <scope>system</scope>
  21. <systemPath>${project.basedir}/lib/gdal.jar</systemPath>
  22. </dependency>
  23. <dependency>
  24. <groupId>net.sf.ucanaccess</groupId>
  25. <artifactId>ucanaccess</artifactId>
  26. <version>4.0.4</version>
  27. </dependency>
  28. <dependency>
  29. <groupId>junit</groupId>
  30. <artifactId>junit</artifactId>
  31. <version>4.11</version>
  32. <scope>test</scope>
  33. </dependency>
  34. </dependencies>
  35. </project>

2、gdb驱动支持定义

  1. // 注册所有的驱动
  2. gdal.AllRegister();
  3. // 为了支持中文路径,请添加下面这句代码
  4. gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES");
  5. // 为了使属性表字段支持中文,请添加下面这句
  6. gdal.SetConfigOption("SHAPE_ENCODING", "CP936");
  7. /*******************定义坐标系********************/
  8. SpatialReference sr = new SpatialReference();
  9. sr.ImportFromEPSG(4326);
  10. /*******************输出gdb图层、表********************/
  11. String saveGdbPath = "D:/creategdb/测试生成gdb1210.gdb";
  12. org.gdal.ogr.Driver oDriver = ogr.GetDriverByName("FileGDB");
  13. if (oDriver == null) {
  14. System.out.println("FileGDB" + " 驱动不可用!\n");
  15. return;
  16. }
  17. DataSource dataSourceGDB = oDriver.CreateDataSource(saveGdbPath);

3、创建gdb图层layer

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

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

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

5、创建空间元素

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

二、gdb文件生成

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

1、gdb文件目录

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

2、 ArcMap验证

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

 三、总结

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/456478
推荐阅读
相关标签
  

闽ICP备14008679号