IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Java调用GDAL命令进行插值分析的一种方法 -> 正文阅读

[游戏开发]Java调用GDAL命令进行插值分析的一种方法

一、写在文章前

从GDAL的官网可知,GDAL关于java的文档相对较少。作者根据官网上的信息,想到了调用命令行的方法,解决了批量插值分析的需求。在此仅介绍了如何用“命令行的方式”调用GDAL的有关程序进行反距离加权等方法的插值分析。愚以为本文只适用于数据分析、或简单地实现通用插值分析功能。若有个性化较强的需求,还需要对源代码深入研究,理解后再自行编码。

二、关于插值分析

1.概念

从地理信息系统的范畴内来说,插值分析可以简单狭义理解为通过离散的点状矢量空间数据(或分隔文本)、通过数学公式来推测点以外的区域内的某个位置上的值。

2.应用场景

比较典型的应用有降雨量模拟分析、植物生长范围推测等。

3.方法

作者知道的插值分析方法有线性、双线性、薄板样条、移动平均、趋势面分析、泰森多边形等等,每种插值的方法都有其使用场景。GDAL提供了gdal_grid来完成插值分析,它可以从从分散的数据创建规则网格,根据文档目前有5中插值分析方法:

invdist 幂的反距离
invdistnn 使用最近邻搜索的幂的反距离
average 移动平均算法
nearest 最近邻算法
linear 线性插值算法

三、具体实现

1.命令行示例及解释

关于gdal_grid的参数解释,详细可以参考原文?(gdal_grid.html),这里列举一种常用的参数组合并解释:

gdal_grid -zfield "rain" -a invdist:power=2.0 -txe 87.78 90.02 -tye 30.28 31.54 -tr 0.01 0.01 -of GTiff -ot Float64 -l rainTest rain.vrt rain.tiff

以上命令中gdal_grid是程序名。

-zfield是指定了使用名字为rain的字段来分析。

invdist:power=2.0是指定了插值方法及其参数。

-txe 87.78 90.02是指定X坐标范围为87.78至90.02度。

-tye 30.28 31.54是指定Y坐标范围为30.28至31.54度。

-tr 0.01 0.01是指定输出栅格的分辨率为0.01度。

of GTiff 指定输出栅格格式是GTiff。

-ot Float64?指定输出栅格值为Float64

-l rainTest 指定用于分析的图层为rainTest(本文基础数据是ShapeFile,所以需要和文件名保持一样)

rain.vrt rain.tiff 输入文件路径为rain.vrt,输出路径为rain.tiff。

需要注意的是gdal_grid不能直接读取矢量图层,需要通过虚拟格式(VRT)文件来读取,文件详解可以参考原文(VRT – Virtual Format — GDAL documentation),这里使用的rain.vrt的文件内容如下:

<OGRVRTDataSource>
    <OGRVRTLayer name="rainTest">
        <SrcDataSource>rainTest.shp</SrcDataSource>
        <GeometryType>wkbPoint</GeometryType>
    </OGRVRTLayer>
</OGRVRTDataSource>

SrcDataSource是矢量文件的相对路径。GeometryType是地理空间数据的类型。

文件结构如下:

以下官网对invdist的参数解释(即我们理解的反距离加权法)

  • power: 幂的权重(默认为2.0)

  • smoothing: 平滑参数(默认 0.0)

  • radius1: 搜索椭圆的第一个半径(如果旋转角度为 0,则为 X 轴)。 将此参数设置为零以使用整个点数组。 默认值为 0.0。

  • radius2: 搜索椭圆的第二个半径(如果旋转角度为 0,则为 Y 轴)。 将此参数设置为零以使用整个点数组。 默认值为 0.0。

  • angle: 搜索椭圆旋转的角度,以度为单位(逆时针,默认 0.0)。

  • max_points: 要使用的最大数据点数。 不要搜索比这个数字更多的点。 这仅在设置了搜索椭圆时使用(两个半径都非零)。 零意味着使用所有找到的点。 默认值为 0。

  • min_points: 要使用的最小数据点数。 如果发现的点数量较少,则认为网格节点为空,并将用 NODATA 标记填充。 这仅在设置了搜索椭圆时使用(两个半径都非零)。 默认值为 0。

  • nodata: NODATA 标记填充空点(默认 0.0)。

本文以invdist为例,使用其余方法,需要先理解其原理及参数意义,关于插值参数的解释可以参考原文(gdal_grid.html)。?

2.调用

1)可以用Runtime来调用命令行程序

    public void execute(String command) throws Exception {
            Runtime rt = Runtime.getRuntime();
            Process pr = rt.exec(command);
            BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream(), "UTF-8"));
            String line = null;
            while ((line = input.readLine()) != null) {
                System.out.println(line);
            }
            int exitValue = pr.waitFor();
            System.out.println("Exited with error code " + exitValue);
    }

execute方法的command参数填写编辑好的gdal_grid命令。

2)可以调用GDALGrid类的main方法

这个类在GDAL的源码(git地址:https://github.com/OSGeo/gdal.git?也可以官网下载Download — GDAL documentation)中可以找到。

路径为/GDAL/swig/java/apps/GDALGrid.java

将GDALGrid.java到项目中,编译后,调用其main方法即可,gdal_grid参数依次放在agrs数组中即可。

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-05-07 11:27:07  更:2022-05-07 11:27:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 11:48:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码