FileGDB代码示例
FileGDB代码示例
1. 读取FileGDB图层
1.1 实现思路
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 实现思路
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 实现思路
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代码示例的更多相关文章
- 高级渲染技巧和代码示例 GPU Pro 7
下载代码示例 移动设备正呈现着像素越来越高,屏幕尺寸越来越小的发展趋势. 由于像素着色的能耗非常大,因此 DPI 的增加以及移动设备固有的功耗受限环境为降低像素着色成本带来了巨大的压力. MSAA 有 ...
- Java8-Function使用及Groovy闭包的代码示例
导航 定位 概述 代码示例 Java-Function Groovy闭包 定位 本文适用于想要了解Java8 Function接口编程及闭包表达式的筒鞋. 概述 在实际开发中,常常遇到使用模板模式的场 ...
- [IOS 开发] 懒加载 (延迟加载) 的基本方式,好处,代码示例
懒加载的好处: 1> 不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强 2> 每个属性的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合 ...
- SELECT控件操作的JS代码示例
SELECT控件操作的JS代码示例 1 检测是否有选中 if(objSelect.selectedIndex > -1) { //说明选中 } else { //说明没有选中 } 2.动态创建s ...
- 转:HIBERNATE一些_方法_@注解_代码示例---写的非常好
HIBERNATE一些_方法_@注解_代码示例操作数据库7步骤 : 1 创建一个SessionFactory对象 2 创建Session对象 3 开启事务Transaction : hibernate ...
- Python实现各种排序算法的代码示例总结
Python实现各种排序算法的代码示例总结 作者:Donald Knuth 字体:[增加 减小] 类型:转载 时间:2015-12-11我要评论 这篇文章主要介绍了Python实现各种排序算法的代码示 ...
- C#与数据库访问技术总结(十五)之 DataAdapter对象代码示例
DataAdapter对象代码示例 下面的代码将说明如何利用DataAdapter对象填充DataSet对象. private static string strConnect=" data ...
- C#与数据库访问技术总结(六)之Command对象创建SQl语句代码示例
Command对象创建SQl语句代码示例 说明:前面介绍了 Command 对象的方法和一些属性,回顾一下 Command对象主要用来执行SQL语句.利用Command对象,可以查询数据和修改数据. ...
- 领域驱动开发推荐代码示例 — Microsoft NLayerApp
简介: Microsoft NLayerApp是由微软西班牙团队出品的基于.NET 4.0的“面向领域N层分布式架构”代码示例,在codeplex上的地址是:http://microsoftnlaye ...
- Zeller公式推导及C#代码示例(待完善)
Zeller公式用于计算给定日期是星期几. 该方法可以用数论知识进行证明. 假设给定日期Date为Year-Month-Day,求解该日期是星期几的问题实际上就是以之前某个确定星期几的日期作为参考点, ...
随机推荐
- 容器部署DNS你会吗?
docker快速部署DNS,实现快速上线 概念 环境介绍 部署DNS 下载相关镜像 创建并启动DNS容器 简单介绍三种创建方式 容器启动停止 创建dns交互式容器 配置DNS容器相关配置 测试 修改客 ...
- PBA 商业分析师 考试心得
2021年7月报名开始学习PBA,因为疫情,中间经历两次考试延期,虽然复习时间增多了,但是学习的节奏也被打乱.好在没有白努力,今天收到了邮件,5A通过考试.在这里整理学习经验,梳理一下自己的思路,也希 ...
- 顶点着色网格转换为 UV 映射的纹理化网格
简介 顶点着色是一种将颜色信息直接应用于网格顶点的简便方法.这种方式常用于生成式 3D 模型的构建,例如 InstantMesh.然而,大多数应用程序更偏好使用 UV 映射的纹理化网格. 本教程将介绍 ...
- 1.Kubernetes简介
Kubernetes简介 来源 bilibili尚硅谷K8S视频:https://www.bilibili.com/video/BV1GT4y1A756 中文官网:https://kubernetes ...
- 案例分享-导致MySQL崩溃的SQL语句
背景 周一刚上班一个开发小哥火急火燎的过来找我,黑龙江某客户私有化环境的服务过一阵就报数据库连接失败,不知道是什么原因导致的,我以为是客户调整了网络,但是客户说并没有做任何调整,我使用ping测试也看 ...
- 一些前端javaScript时间处理函数
史上最全时间处理函数(逐行注释) 获取任意周的周一.周末 获取任意月的前后n月的最后一天和第一天 详细函数如下 获取当前周的周一和周末 || 获取当前周的前后n周的周一和周末 函数注释: 入参: da ...
- 服务器cli模式下的定时器
有时候需要一部分后台业务异步的处理,比如处理redis队列啊,处理mysql统计啊,数据同步啊,这种长时间任务,但是又需要每段时间去看看的,发现linux cron最小只能支持每分钟的任务 分 时 天 ...
- nemu-wsl-环境配置
实在是不愿意用学校的虚拟平台,觉得在自己的电脑上留存一部分真的很有意思,也想捣鼓一下,于是在自己电脑上配置下最基本的环境,做下记录 准备好wsl 因为要求环境是 Ubuntu 18.04 和 gcc- ...
- WordCloudStudio 支持支付宝周期性订阅
我们很高兴地宣布,WordCloudStudio 现已支持通过支付宝 (AliPay) 的周期性订阅支付功能!无论您是需要制作精美的词云图用于演示.社交媒体.教育资源,还是其他创意项目,现在都可以更便 ...
- SMOS-II 电梯综合监控系统程序(电梯IC卡解决方案)安装的注意点
命令提示符下输入命令dir "D:\SMOS-II-CH V3.2" /b /s 回车可返回SMOS II 3.2对应的各文件路径 D:\SMOS-II-CH V3.2\Setup ...