FileGDB代码示例

1. 读取FileGDB图层

1.1 实现思路

graph TD
A[注册OGR] --> B[设置中文路径支持]
B --> C[打开数据驱动]
C --> D[打开数据源]
D --> G[获取图层]
G --> H[读取图层信息]

1.2 代码示例


public Layer readGdbLayer(String driverName,String gdbPath,String layerName) {
ogr.RegisterAll();
gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES"); Driver driver = ogr.GetDriverByName(driverName);
DataSource dataSource = driver.Open(gdbPath, 1);
Layer layer = dataSource.GetLayerByName(layerName); for (int i = 0; i < layer.GetLayerDefn().GetFieldCount(); i++) {
System.out.println(layer.GetLayerDefn().GetFieldDefn(i).GetName());
} Feature feature = layer.GetNextFeature();
while (feature != null) {
for (int i = 0; i < feature.GetFieldCount(); i++) {
System.out.println(feature.GetFieldDefnRef(i).GetName());
System.out.println(feature.GetFieldAsString(i));
} System.out.println(feature.GetGeometryRef().ExportToWkt()); feature = layer.GetNextFeature();
} return layer;
}

2. 写入FileGDB图层

2.1 实现思路

graph TD
A[注册OGR] --> B[设置中文路径支持]
B --> C[打开数据驱动]
C --> D[打开数据源或创建数据源]
D --> G[获取图层或者创建图层]
G --> H[向图层插入数据]
H --> I[关闭数据源]

2.2 代码示例


public void writeGdbLayer(String driverName,String gdbPath,String featureDataset,String layerName,int wkid,String wkt) {
ogr.RegisterAll();
gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES"); Vector options = null;
if (CharSequenceUtil.isNotBlank(featureDataset)) {
options = new Vector();
options.add("FEATURE_DATASET=" + featureDataset);
} Driver driver = ogr.GetDriverByName(driverName);
DataSource dataSource = driver.Open(gdbPath, 1);
if (dataSource == null) {
dataSource = driver.CreateDataSource(gdbPath);
} Layer layer = dataSource.GetLayerByName(layerName);
if (layer == null) {
SpatialReference sr = new SpatialReference();
sr.ImportFromEPSG(wkid);
layer = dataSource.CreateLayer(layerName, sr,6, options);
} FieldDefn fieldDefn = new FieldDefn("TEST", 4);
layer.CreateField(fieldDefn); Feature feature = new Feature(layer.GetLayerDefn());
feature.SetGeometry(ogr.CreateGeometryFromWkt(wkt));
feature.SetField("TEST", "test");
layer.CreateFeature(feature); dataSource.delete();
}

3. 读取FileGDB数据集

3.1 实现思路

graph TD
A[配置GDAL环境] --> B[执行GDAL命令]
B --> C[解析返回信息]
C --> D[读取数据集信息]

3.2 代码示例


public void readGdbDs(String gisPath){
SystemPropsUtil.set("GDAL_FILENAME_IS_UTF8", "YES");
SystemPropsUtil.set("SHAPE_ENCODING", "UTF-8");
String output = RuntimeUtil.execForStr(StandardCharsets.UTF_8, "ogrinfo", "-json", gisPath); String jout = null;
if (!JSONUtil.isTypeJSONObject(output)) {
jout = output.substring(output.indexOf("{"));
} if (!JSONUtil.isTypeJSONObject(jout)) {
jout = output.substring(output.indexOf("{"), output.lastIndexOf("}") + 1);
} JSONObject jsonObject = JSON.parseObject(jout);
String rootGroup = jsonObject.getString("rootGroup");
System.out.println(rootGroup);
}

FileGDB代码示例的更多相关文章

  1. 高级渲染技巧和代码示例 GPU Pro 7

    下载代码示例 移动设备正呈现着像素越来越高,屏幕尺寸越来越小的发展趋势. 由于像素着色的能耗非常大,因此 DPI 的增加以及移动设备固有的功耗受限环境为降低像素着色成本带来了巨大的压力. MSAA 有 ...

  2. Java8-Function使用及Groovy闭包的代码示例

    导航 定位 概述 代码示例 Java-Function Groovy闭包 定位 本文适用于想要了解Java8 Function接口编程及闭包表达式的筒鞋. 概述 在实际开发中,常常遇到使用模板模式的场 ...

  3. [IOS 开发] 懒加载 (延迟加载) 的基本方式,好处,代码示例

    懒加载的好处: 1> 不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强 2> 每个属性的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合 ...

  4. SELECT控件操作的JS代码示例

    SELECT控件操作的JS代码示例 1 检测是否有选中 if(objSelect.selectedIndex > -1) { //说明选中 } else { //说明没有选中 } 2.动态创建s ...

  5. 转:HIBERNATE一些_方法_@注解_代码示例---写的非常好

    HIBERNATE一些_方法_@注解_代码示例操作数据库7步骤 : 1 创建一个SessionFactory对象 2 创建Session对象 3 开启事务Transaction : hibernate ...

  6. Python实现各种排序算法的代码示例总结

    Python实现各种排序算法的代码示例总结 作者:Donald Knuth 字体:[增加 减小] 类型:转载 时间:2015-12-11我要评论 这篇文章主要介绍了Python实现各种排序算法的代码示 ...

  7. C#与数据库访问技术总结(十五)之 DataAdapter对象代码示例

    DataAdapter对象代码示例 下面的代码将说明如何利用DataAdapter对象填充DataSet对象. private static string strConnect=" data ...

  8. C#与数据库访问技术总结(六)之Command对象创建SQl语句代码示例

    Command对象创建SQl语句代码示例 说明:前面介绍了 Command 对象的方法和一些属性,回顾一下 Command对象主要用来执行SQL语句.利用Command对象,可以查询数据和修改数据. ...

  9. 领域驱动开发推荐代码示例 — Microsoft NLayerApp

    简介: Microsoft NLayerApp是由微软西班牙团队出品的基于.NET 4.0的“面向领域N层分布式架构”代码示例,在codeplex上的地址是:http://microsoftnlaye ...

  10. Zeller公式推导及C#代码示例(待完善)

    Zeller公式用于计算给定日期是星期几. 该方法可以用数论知识进行证明. 假设给定日期Date为Year-Month-Day,求解该日期是星期几的问题实际上就是以之前某个确定星期几的日期作为参考点, ...

随机推荐

  1. CMDB实践指南:项目规划与实施策略解析

    随着现代企业IT系统的日益复杂,如何有效管理这些庞大的IT资产和资源,成为每个企业必须面对的重要问题.CMDB应运而生,帮助企业集中管理IT资源,维护系统的稳定性,并支持故障排查与决策制定.本文将深入 ...

  2. Nuxt.js 应用中的 builder:watch 事件钩子详解

    title: Nuxt.js 应用中的 builder:watch 事件钩子详解 date: 2024/10/24 updated: 2024/10/24 author: cmdragon excer ...

  3. 史上最全ThreadLocal 详解

    概述 线程本地变量.当使用 ThreadLocal 维护变量时, ThreadLocal 为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程. 每个 ...

  4. OAS常见错误

    body { font-family: Arial, sans-serif; line-height: 1.6; margin: 20px } h1, h2 { color: rgba(51, 51, ...

  5. php日志分割

    为了方便查看php错误日志信息,将php的日志按照时间进行分割,器脚本如下 phpPid='/usr/local/webserver/php-5.3.27/var/run/php-fpm.pid' p ...

  6. Windows高级调试

    文档摘要: 本书<Windows高级调试>主要讲解Windows高级调试技术和工具,包括调试器简介.调试器揭密.符号文件与源文件的管理.栈内存破坏.堆内存破坏.安全.进程间通信.资源泄漏. ...

  7. MySQL-8.3.0 innovation 创新版本YUM安装配置

    MySQL-8.3.0 innovation版本已发布了,想抢先体验一下最新的功能,可以用以下的方式快速在虚拟机上安装一下哈 服务器环境:[root@node213 ~]# cat /etc/redh ...

  8. UUID和雪花(Snowflake)算法该如何选择?

    UUID 和 Snowflake 都可以生成唯一标识,在分布式系统中可以说是必备利器,那么我们该如何对不同的场景进行不同算法的选择呢,UUID 简单无序十分适合生成 requestID, Snowfl ...

  9. 轻量数据库管理工具之adminer

    github: https://github.com/vrana/adminer 官方文档:https://www.adminer.org/#download Supports: MySQL, Mar ...

  10. 解决GitHub无法访问问题

    作为开发者,经常使用借助GitHub进行开发,但是最近一直无法访问github.com站点,决定搞一下!!! 由于国内某些原因,导致我们有时候不能访问到 www.github.com.此时我们必须找到 ...