Java使用GDAL

2023-10-27

    在使用Java处理图像时使用Gdal,为了保持软件在Windows/Linux的通用性,本文着重介绍Windows和Linux环境的gdal配置,为了简便期间,使用gdal-2.2.3。

一、Windows

    Windows下gdal配置比较简单,下载release-1600-x64-gdal-2-2-3-mapserver-7-0-7.zip,解压缩。将“……\release-1600-x64-gdal-2-2-3-mapserver-7-0-7\bin”添加到环境变量path中。进入“……\release-1600-x64-gdal-2-2-3-mapserver-7-0-7\bin\gdal\java”目录,包含gdal.jar、gdalconstjni.dll、gdaljni.dll、ogrjni.dll、osrjni.dll。将gdal.jar拷贝到java工程的lib中,将gdalconstjni.dll、gdaljni.dll、ogrjni.dll、osrjni.dll拷贝到java.library.path路径中,此处选为jdk安装路径C:\Program Files\Java\jdk1.8.0_121\bin和C:\Program Files\Java\jdk1.8.0_121\jre\bin目录下,经测试,java调用gdal正常运行。

二、Linux

    Linux配置gdal比较繁琐, 在进行编译前,首先查看系统是否有gcc-c++、gcc、swig等基础环境。下载gdal-2.2.3.tar.gz,编译gdal,之后编译gdal-java。大体流程如下,中间根据提示可能安装若干工具:

1、编译proj

     在编译gdal之前,需要 proj4以提供投影支持,因此先安装

[root@bogon gdal]# tar -zxvf proj-4.9.3.tar.gz
[root@bogon gdal]# cd proj-4.9.3/
[root@bogon proj-4.9.3]# ./configure
[root@bogon proj-4.9.3]# make
[root@bogon proj-4.9.3]# make install

2、编译geos

[root@bogon gdal]# tar -jxvf geos-3.6.2.tar.bz2
[root@bogon gdal]# cd geos-3.6.2/
[root@bogon geos-3.6.2]# ./configure
[root@bogon geos-3.6.2]# make
[root@bogon geos-3.6.2]# make install

3、编译gdal

[root@bogon gdal]# tar -zxvf gdal-2.2.3.tar.gz 
[root@bogon gdal]# cd gdal-2.2.3
[root@bogon gdal-2.2.3]# ./configure
[root@bogon gdal-2.2.3]# make
[root@bogon gdal-2.2.3]# make install

若make遇到以下错误,请参照本人另一篇博客。


ogr_sfcgal.h:34:34:致命错误:SFCGAL/capi/sfcgal_c/h:没有那个文件或目录
#include<SFCGAL/capi/sfcgal_c.h>

ogr_sfcgal.h:34:34:fatal error:SFCGAL/capi/sfcgal_c/h:No such file or directory

#include<SFCGAL/capi/sfcgal_c.h>


经过一段时间,编译完成后,编辑swig/java/java.opt,配置JAVA_HOME 路径。

#
# Java Stuff
JAVA_HOME = /usr/java/jdk1.8.0_151
JAVADOC=$(JAVA_HOME)/bin/javadoc
JAVAC=$(JAVA_HOME)/bin/javac
JAVA=$(JAVA_HOME)/bin/java
JAR=$(JAVA_HOME)/bin/jar
JAVA_INCLUDE=-I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux

 编译gdal的java库:

[root@bogon gdal-2.2.3]#cd swig/java
[root@bogon java]# make

       编译后再当前目录生成gdal.jar、ibgdalconstjni.so、libgdaljni.so、libgnmjni.so、libogrjni.so、libosrjni.so。在Linux中使用Linux版的gdal.jar,将ibgdalconstjni.so、libgdaljni.so、libgnmjni.so、libogrjni.so、libosrjni.so拷贝到java.library.path路径中,此处放在/usr/lib64目录下,经测试,java调用gdal正常运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java使用GDAL 的相关文章

  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • Liferay ClassNotFoundException:DLFileEntryImpl

    在我的 6 1 0 Portal 实例上 带有使用 ServiceBuilder 和 DL Api 的 6 1 0 SDK Portlet 这一行 DynamicQuery query DynamicQueryFactoryUtil for
  • 操作错误不会显示在 JSP 上

    我尝试在 Action 类中添加操作错误并将其打印在 JSP 页面上 当发生异常时 它将进入 catch 块并在控制台中打印 插入异常时出错 请联系管理员 在 catch 块中 我添加了它addActionError 我尝试在jsp页面中打
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • 路径中 File.separator 和斜杠之间的区别

    使用有什么区别File separator和一个正常的 在 Java 路径字符串中 与双反斜杠相反 平台独立性似乎不是原因 因为两个版本都可以在 Windows 和 Unix 下运行 public class SlashTest Test
  • 十进制到八进制的转换[重复]

    这个问题在这里已经有答案了 可能的重复 十进制转换错误 https stackoverflow com questions 13142977 decimal conversion error 我正在为一个类编写一个程序 并且在计算如何将八进
  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h
  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja
  • 如何从泛型类调用静态方法?

    我有一个包含静态创建方法的类 public class TestClass public static
  • 声明的包“”与预期的包不匹配

    我可以编译并运行我的代码 但 VSCode 中始终显示错误 早些时候有一个弹出窗口 我不记得是什么了 我点击了 全局应用 从那以后一直是这样 Output is there but so is the error The declared
  • 获取 JVM 上所有引导类的列表?

    有一种方法叫做findBootstrapClass对于一个类加载器 如果它是引导的 则返回一个类 有没有办法找到类已经加载了 您可以尝试首先通过例如获取引导类加载器呼叫 ClassLoader bootstrapLoader ClassLo
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 如何修复 JNLP 应用程序中的“缺少代码库、权限和应用程序名称清单属性”?

    随着最近的 Java 更新 许多人都遇到了缺少 Java Web Start 应用程序的问题Codebase Permissions and Application name体现属性 尽管有资源可以帮助您完成此任务 但我找不到任何资源综合的
  • java.lang.IllegalStateException:驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置 - Similiar 不回答

    尝试学习 Selenium 我打开了类似的问题 但似乎没有任何帮助 我的代码 package seleniumPractice import org openqa selenium WebDriver import org openqa s

随机推荐

  • 数据挖掘个人理解

    lt 1 gt 数据挖掘 1 通过对大量数据进行分析 从大量数据中发现一些客观规律 结论 2 主要有数据准备 规律寻找 规律表示3大步 3 步骤 采集数据 采集相关技术 整合检查数据 去除错误数据 建立合适模型进行数据分析 进行数据挖掘工作
  • Markdown基础语法详细版

    文章目录 1 Markdown简介 2 Markdown特点 3 Markdown基本语法 3 1 标题 3 2 斜体和粗体 3 3 换行 3 4 分割线 3 5 列表 3 5 1 无序列表 3 5 2 有序列表 3 5 3 定义型列表 3
  • Linux应用编程(文件IO进阶)

    一 Linux 系统如何管理文件 1 1 静态文件与 inode 文件存放在磁盘文件系统中 并且以一种固定的形式进行存放 我们把他们称为静态文件 每一个文件都必须对应一个 inode inode 实质上是一个结构体 这个结构体中有很多的元素
  • 手写个简单的promisify方法

    node中为了能方便使用async await语法 通常会使用promisify方法将node中遵循错误优先的api接口转换 返回一个Promise实例 从而无缝衔接使用async await语法 例如 async function var
  • CGAL点云处理之体素下采样

    体素下采样 点云体素采样 通过指定大小的网格 每个网格保留一个点云数据 void gridSimplifyPointsByCgal Point set points double threshold int size double spac
  • android五种布局局限性,android ConstraintLayout布局从入门到放弃

    布局优化是性能优化的一个方向点 包括了根据需求应该选用哪种布局容器 ViewStub懒加载 如何减少布局层级等 今天我们要探讨的就是如何使用ConstraintLayout来优化我们的布局层级 提出问题 为什么要用这个布局 怎么用这个布局
  • 死锁的预防和解除

    产生死锁的原因主要是 1 系统资源不足 2 进程运行推进的顺序不合适 3 资源分配不当等 如果系统资源充足 进程的资源请求都能够得到满足 死锁出现的可能性就很低 否则就会因争夺有限的资源而陷入死锁 其次 进程运行推进顺序与速度不同 也可能产
  • flutter直接读取服务器文件的内容,flutter 如何实现文件读写(使用篇)

    flutter文件读写可以对磁盘文件进行操作 实现某些业务场景 那么我们开始来讲下这个文件读写操作 使用的库插件 package dart io 用于数据处理 path provider 用于获取路劲 操作步骤 1 获取正确的本地路径 2
  • 【跑实验07】RuntimeError: Argument #6: Padding size should be less than the corresponding input dimension

    最近在尝试跑实验的时候 我们的部分代码为 patch h 28 patch w 28 feat dim 768 transform T Compose T GaussianBlur 9 sigma 0 1 2 0 T Resize patc
  • 暗黑战神学习笔记

    暗黑战神游戏开发游戏学习笔记 第一章 初始场景与UI界面制作 光照系统 有哪些参数可以设置光源 1 点光源 2 window界面下的LightSetting 光照系统的优化方法 Animation系统 第二章 UI逻辑框架与配置文件 第三章
  • 【线性代数】从矩阵分块的角度理解矩阵乘法

    一 矩阵分块法介绍 概念 例 二 使用矩阵分块法计算矩阵的积 1 分块矩阵计算的数学步骤 使用Numpy计算例1 import numpy as np A np mat 1 0 0 0 0 1 0 0 1 2 1 0 1 1 0 1 B n
  • C++智能指针——auto_ptr详解

    前言 从之前智能指针的介绍中可以了解到智能指针主要作用是管理内存 避免内存泄漏和悬垂指针 之前介绍的不管是智能指针与引用计数详解还是智能指针与句柄详解 其核心就是通过一个类来管理被new出来的对象 具体的技术就是靠引用计数 auto ptr
  • Android Studio系列:安装并使用JetBrains Mono字体

    下载jetbrains mono字体 https www jetbrains com lp mono 解压 打开JetBrainsMono 2 242 fonts ttf 全选 然后安装 重启Android studio 一定要重启 然后选
  • 做SLAM实验时g2o的安装问题cmake的版本问题及git下载历史版本代码方法总结

    博主之前跑了ORBSLAM2做了相关实验 半年没碰之后 又重新来弄发现 WTF g2o用不了 cmake版本过低无法编译 直接修改CMakeLists txt文件还不行 好吧 我屈服了 升级cmake吧 升级到了3 2爽歪歪腰不酸了腿也利索
  • STM32使用HAL库BH1750光照度传感器

    开发环境 单片机 STM32F103C8T6 光照度传感器 BH1750 IDE KEIL STM32CUBEMX 单片机配置 1 STM32CUBEMX BH1750代码 1 头文件 BH1750 光照数据计算 LUX LUX 读取数据
  • JS与PHP通过RSA加密传输密码

    JS与PHP通过RSA加密传输密码 第一次写加密传输时网上看了一些博客将如何实现的 但实际过程中碰到了一些麻烦 一直没成功 现在搞定了来总结一下以便以后参考 实现主要都是参考http www ohdave com rsa 提供的开源代码及d
  • 算法—二叉树递归遍历

    测试的二叉树的结构 root lfb1 rtb1 rtb2 控制台输出的遍历结果 从根节点开始 前序遍历此二叉树 root lfb1 rtb1 rtb2 从根节点开始 中序遍历此二叉树 lfb1 root rtb1 rtb2 从根节点开始
  • 思考:语义过程

    2020 06 14 我有点明白泛化过程的含义了 当时也在阿里的那个文章中看到过 就是说 现在很多机器学习的泛化能力差在网络安全方面 泛化能力 我的理解就是 如果是想模型硬性的记住一些东西 那他就没有泛化能力 但是如果你能够有一些泛化能力
  • 【AIGC】一款离线版的AI智能换脸工具V2.0分享(支持图片、视频、直播)

    随着人工智能技术的爆发 AI不再局限于大语言模型 在图片处理方面也有非常大的进步 其中AI换脸也是大家一直比较感兴趣的 但这个技术的应用一直有很大的争议 今天给大家分享一个开源你的AI换脸工具2 0 只需要一张所需脸部的图像 无需数据集 无
  • Java使用GDAL

    在使用Java处理图像时使用Gdal 为了保持软件在Windows Linux的通用性 本文着重介绍Windows和Linux环境的gdal配置 为了简便期间 使用gdal 2 2 3 一 Windows Windows下gdal配置比较简