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. 这些HTTP协议状态码你知道吗?

    使用ASP.NET/PHP/JSP 或者javascript都会用到http的不同状态,一些常见的状态码为: 200 – 服务器成功返回网页 404 – 请求的网页不存在 503 – 服务不可用 1x ...

  2. Vue写一个图片轮播组件【转载】

    一.理清思路,理解需求和原理 1. 要写一个什么样的轮播? 在点击右侧箭头时,图片向左滑动到下一张:点击左侧箭头时,图片向右滑到下一张 点击下面的小圆点,滑到对应的图片,相应小圆点的样式也发生改变 要 ...

  3. SVN上的修改提交时间、作者以及简单的SVN操作说明

    情况说明 因为部分SVN记录上传时间不符合规范,需要修改因此有这个需求.默认情况下SVN是不允许修改时间和作者信息,需要服务器进行配置. 一.服务的配置变更 我用的是Windows版本,在这个地方配置 ...

  4. chrony服务器

    1.安装 yum install chrony -y 2.配置文件 主配置文件:/etc/chrony.conf server ntp.aliyun.com iburst         ---指定阿 ...

  5. 深度学习入门笔记——DataLoader的使用

    如何使用数据集DataSet? 在介绍DataLoader之前,需要先了解数据集DataSet的使用.Pytorch中集成了很多已经处理好的数据集,在pytorch的torchvision.torch ...

  6. .NET开发者福音:JetBrains官方宣布 Rider 非商用免费开放!

    前言 JetBrains官方前段时间宣布重磅消息,其两款知名IDE应用WebStorm和Rider现已面向社区开放,允许用户免费用于非商业用途.此举旨在支持学习.开源项目开发.内容创作及业余开发等活动 ...

  7. 切换自己为www-data用户

    突发奇想的想把切换为www-data用户去看看会怎么样.然后做了一个尝试 由于我安装了lamp环境,所以有www-data用户,用它可以来执行web php ,以及安全放心的跑cli(避免权限过高执行 ...

  8. 万字长文带你深入Redis底层数据结构

    Redis数据库的数据结构 Redis 的键值对中的 key 就是字符串对象,而 value 就是指Redis的数据类型,可以是String,也可以是List.Hash.Set. Zset 的数据类型 ...

  9. LinkedHashMap源码分析(基于JDK1.6)

    LinkedHashMap类似于HashMap,但是迭代遍历它时,取得"键值对"的顺序是插入次序,或者是最近最少使用(LRU)的次序.只比HashMap慢一点:而在迭代访问时反而更 ...

  10. spring gateway 学习

    为什么需要使用网关 1.实现统一认证 2.统一一个域名,解决调用困难. 3.协议转换 将不友好的协议转成友好的协议. spring cloud gateway 是什么 是spring cloud 的第 ...