Java使用GDAL

article/2025/11/6 1:15:08

在使用Java调用GDAL之前,先说明一下编译。在编译的时候,需要JRE、Ant和SWIG这三个东西,没有的先下载这两个东西,下载完之后,安装,ANT和SWIG直接解压就行,不用安装。接下来用记事本打开nmake.opt,找到第86行左右的地方,如下:

# SWIG Java settings
!IFNDEF JAVA_HOME
JAVA_HOME = "C:\Program Files\Java\jdk1.6.0_26"
!ENDIF
!IFNDEF ANT_HOME
ANT_HOME=F:\Work\GDAL\gdal_need\apache-ant-1.8.4
!ENDIF
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\win32
将上面的JAVA_HOME和ANT_HOME后面的路径修改为本地Java和Ant的路径,只要修改到主文件夹即可(就是有bin文件夹的那个文件夹),如果文件夹路径有空格的话,把路径用双引号括起来。然后把SWIG的目录也换成本机的目录。接下来就可以编译了。具体步如下:


1、编译Java版本的GDAL:

首先使用命令行,编译C++版本的GDAL,具体步骤参考博客:http://blog.csdn.net/liminlu0314/article/details/6937194,这里使用命令行编译。

编译完成之后,使用cd命令切换到swig目录,然后执行编译,命令依次如下:

#下面三句是编译C++版本的,其实只要第一句即可,后面两句是用来安装的C:\warmerda\bld
nmake /f makefile.vc
nmake /f makefile.vc install
nmake /f makefile.vc devinstall#接下来是编译Java版本的GDAL
cd swig
nmake /f makefile.vc java
正常情况下,执行完上面的,Java版本的GDAL应该就编译完成了。你会在swig\java目录中看到编译出来的一些文件,主要有下面几个文件:
gdalconstjni.dll
gdaljni.dll
ogrjni.dll
osrjni.dll
gdal.jar
如果有上面的文件的话,那就说明编译成功,如果没看,查看命令行编译的时候输出信息,根据输出信息排除错误重新生成。将上面五个文件以及编译GDAL的时候生成的gdal19.dll拷贝到一个新建的文件夹,用于后续的调用。

2、使用Eclipse新建一个工程,名字叫GDALTest,然后在这个工程中新建一个类叫GDALTestApp完成。打开GDALTestApp.java,修改里面的内容为下面的内容,然后保存,如图1所示。


图1 Eclipse界面

import org.gdal.gdal.Dataset;
import org.gdal.gdal.Driver;
import org.gdal.gdal.gdal;
import org.gdal.gdalconst.gdalconstConstants;public class GDALTestApp {/*** @param args*/public static void main(String[] args) {String fileName_tif = "F:\\Data\\11NOV23034214-P2AS_R3C3-052581320010_03_P001.TIF";  gdal.AllRegister();Dataset hDataset = gdal.Open(fileName_tif, gdalconstConstants.GA_ReadOnly);if (hDataset == null){System.err.println("GDALOpen failed - " + gdal.GetLastErrorNo());System.err.println(gdal.GetLastErrorMsg());System.exit(1);}Driver hDriver = hDataset.GetDriver();System.out.println("Driver: " + hDriver.getShortName() + "/" + hDriver.getLongName());System.out.println("Size is " + hDataset.getRasterXSize() + ", "+ hDataset.getRasterYSize());hDataset.delete();// 可选gdal.GDALDestroyDriverManager();}
}
保存完之后,将刚才生成的那些dll和jar文件拷贝到工程所在文件夹中,然后在工程右键,选择Build Path->configure build path,弹出属性对话框,然后切换到libraries标签,点击Add Jars,选择gdal.jar和名字中有ini的dll文件,添加到lib中,如图2所示,然后确定。


图2 Java配置界面

接下来,点击运行,正常情况下,会在控制台输出类似下面的文字,第一行是图像的驱动格式,第二行是图像的大小。

Driver: GTiff/GeoTIFF
Size is 8499, 3403

……………………………………………………华丽的分割线…………………………………………………
……………………………………以下内容更新于2013年1月30日…………………………………………

之前的例子没有显示怎么读取数据,今天补上,先上代码吧:

import org.gdal.gdal.Band;
import org.gdal.gdal.Dataset;
import org.gdal.gdal.Driver;
import org.gdal.gdal.gdal;
import org.gdal.gdalconst.gdalconstConstants;public class GDALTestApp {/*** @param args*/public static void main(String[] args) {String fileName_tif = "E:\\Austra\\DEM\\srtm_65_18.tif";  gdal.AllRegister();Dataset hDataset = gdal.Open(fileName_tif, gdalconstConstants.GA_ReadOnly);if (hDataset == null){System.err.println("GDALOpen failed - " + gdal.GetLastErrorNo());System.err.println(gdal.GetLastErrorMsg());System.exit(1);}Driver hDriver = hDataset.GetDriver();System.out.println("Driver: " + hDriver.getShortName() + "/" + hDriver.getLongName());int iXSize = hDataset.getRasterXSize();int iYSize = hDataset.getRasterYSize();System.out.println("Size is " + iXSize + ", " + iYSize);Band band = hDataset.GetRasterBand(1);//这里是DEM数据,所以声明一个int数组来存储,如果是其他数据类型,声明相应的类型即可int buf[] = new int[iXSize];	for(int i=0; i<10/*iYSize*/; i++){band.ReadRaster(0, i, iXSize, 1, buf);	//读取一行数据// 下面是输出像元值,为了方便,我只输出了左上角 10×10的范围内的数据for(int j=0; j<10/*iXSize*/; j++)System.out.print(buf[j] + ", ");System.out.println("\n");}hDataset.delete();// 可选gdal.GDALDestroyDriverManager();}
}

Java中,读取数据用的接口是ReadRaster,这个函数已经针对所有的数据类型进行了重载,所以读取某种类型的数据,只需要声明对应的类型即可。运行上面的程序,会输出下面的内容:

Driver: GTiff/GeoTIFF
Size is 6001, 6001
64, 64, 64, 63, 62, 62, 64, 63, 61, 61, 
61, 62, 63, 66, 64, 64, 63, 63, 62, 61, 
62, 61, 63, 64, 65, 62, 63, 61, 63, 64, 
64, 63, 63, 62, 63, 65, 64, 64, 62, 63, 
64, 61, 63, 63, 63, 64, 65, 63, 62, 64, 
64, 63, 62, 63, 62, 62, 63, 64, 64, 64, 
64, 63, 63, 64, 65, 62, 61, 63, 62, 63, 
62, 64, 63, 64, 63, 60, 62, 61, 62, 63, 
62, 65, 63, 63, 62, 60, 64, 63, 61, 62, 
63, 65, 64, 63, 62, 61, 64, 63, 60, 61, 


http://chatgpt.dhexx.cn/article/HxLOJCUg.shtml

相关文章

Gdal环境配置(Windows系统)

​​​​​ 目录 前言 一、下载安装 二、环境配置 三、验证 前言 Gdal是一个空间数据分析处理和格式转换的开源工具。 官方地址&#xff1a;GDAL — GDAL 文档 一、下载安装 下载地址&#xff1a;https://www.gisinternals.com/query.html?contentfilelist&filerel…

VS2022配置GDAL

GDAL&#xff08;Geospatial Data Abstraction Library&#xff09;是一个用于处理地理空间数据的开源库。它提供了一组功能丰富的API&#xff0c;用于读取、写入、转换和处理各种地理空间数据格式&#xff0c;包括栅格数据&#xff08;如卫星图像、数字高程模型&#xff09;和…

GDAL源码剖析(一)

前言&#xff1a;一直在使用和研究GDAL的相关东西&#xff0c;发现网上对GDAL的内容倒是不少&#xff0c;但是很少有系统的介绍说明&#xff0c;以及内部的一些结构说明&#xff0c;基于这些原因&#xff0c;将本人的一些粗浅的理解放在此处&#xff0c;形成一个系列&#xff0…

gis利器之Gdal(一)

现如今&#xff0c;随着很多行业对gis的了解越来越深入&#xff0c;很多关于智慧的标签便纷纷贴上了&#xff0c;比如智慧园区、智慧交通、智慧城市、智慧校园等等诸多的行业深度应用。国内外有很多gis的相关产品&#xff0c;国外有大名鼎鼎的arcgis&#xff0c;国内有超图、ma…

GDAL教程(一)查看帮助文档

一、在GDAL官网https://www.gdal.org/可以查看英文帮助。 二、Main Page主页 1.开头介绍了什么是GDAL&#xff08;Geospatial Data Abstraction Library地理空间数据抽象库&#xff09;以及GDAL源码各个版本的下载链接。 2.User Oriented Documentation使用定向的文档&#x…

Ubuntu 安装 GDAL C++库

1. GDAL简介 GDAL 是读写大量的栅格空间数据格式的广泛应用的开源库。该库起源于 1998年,已经大幅进化。 它支持他自己的数据模型和应用程序接口(API)。 从最初的单一发展的起源,GDAL已发展成为一个分布式的项目,开发人员的数量相对比较大。 GDAL官网下载以及安装教程。 2. …

JAVA使用GDAL入门指南

如果你打开了这篇博客&#xff0c;那么你肯定和我当初一样的苦逼。 话不多说&#xff0c;分析下我学习gdal的一丢丢心得。 1.你要知道什么GDAL&#xff0c;它是干什么的。 gdal到底是什么呢&#xff0c;相信你已经百度过了。。。。 ** 2.Java集成gdal 2.1 下载Java版本的gd…

在Python中安装GDAL(最简单,最详细图文教程)

在Python中安装GDAL(最简单,最详细图文教程) 今天是2021年1月20日。为了安装在pythong中安装GDAL,我浏览了几十个网页,发现有99%都是垃圾,浪费了我非常多的时间。最后我安装成功了,在这里我把我的全过程放在这里。希望大家少走些弯路,也少浪费点时间。 首先我的专业背…

Python中安装GDAL库

GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理&#xff0c;可以用来处理栅格数据如遥感影像、DEM等。 1. 下载GDAL 安装GDAL库是…

python安装gdal库

1、直接输入pip install gdal&#xff0c;报错无法安装。 原因&#xff1a;GDAL不是纯净的python库&#xff0c;无法像pip install flask这样安装库文件。 解决方法&#xff1a; 2、首先要明确自己安装路径下有没有gdal这个文件 在winr&#xff0c;输入cmd&#xff0c;键入…

Gdal总结

1、头文件 #include<gdal.h> #include<gdal_priv.h> #include<gdalwarper.h> 2、注册驱动设置中文路径加载数据 //注册所有的驱动GDALAllRegister();//设置支持中文路径和文件名CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO"); /…

gdal概览

GDAL 1 gdal库2 栅格驱动3 栅格数据集&#xff08;就是包含各种栅格属性的一个类&#xff09;3.1 坐标&#xff08;6个参数&#xff09;3.1.2 tif文件的地理坐标&#xff08;两种情况&#xff09; 3.2 波段数、大小、投影等信息3.3 读取栅格像元3.4 创建栅格影像3.4.1 直接用数…

2.GDAL简介

1. 什么使GDAL GDAL全称是Geospatial Data Abstraction Library(地理空间数据抽象库),在一个X/MIT许可协议下读写空间数据(包括栅格数据和矢量数据)的开源库&#xff0c;它利用抽象数据模型来表达所支持的各种文件格式&#xff0c;还使用一系列命令行来进行数据转换和处理。 …

GDAL学习笔记02:GDAL基础知识

你的习惯决定了你会成为什么样的人。 GDAL学习笔记02&#xff1a;GDAL基础知识 前言1. 版本2. 摘要3. 说明4. 微信公众号GISRSGeography 一、GDAL简介二、导入GDAL三、读取遥感影像的信息 前言 1. 版本 1.1 山东青岛&#xff0c;2022年7月17日&#xff0c;Version 1 2. 摘要…

GDAL 安装教程(Python)

引言 本文介绍 GDAL&#xff08;Geospatial Data Abstraction Library&#xff0c;空间数据抽象库&#xff09;的 Python 版本安装教程。 简介 GDAL 是用于栅格和矢量地理空间数据格式的开源转换器。向调用应用程序提供所有受支持格式的单个栅格抽象数据模型和单个矢量抽象数…

TrAdaBoost

TraAdaBoost是AdaBoost算法的扩展。 TraAdaBoost核心思想&#xff1a; same-distribution instance feature:训练数据中与测试数据分布相同的数据&#xff0c;用Ts表示&#xff0c;m 错误预测增加权重 diff-distribution instance feature:训练数据中与测试数据分布不同的数据&…

Boost Build

Window XP Visual Studio 2008 获取Boost库源码 我们可以从http://www.boost.org/ 上获取boost的源代码。当前最新版本为1.45.0。 解压到指定目录 例如&#xff1a;D:/Program Files/boost/目录下 获取bjam 一种方式&#xff1a;从http://sourceforge.net/projects/boos…

BoF and Bos

Bag of freebies 采用一些方法使模型有更高的准确度但是不增加模型的复杂度和模型的推理代价 PS&#xff1a;数据增强应该在图像标准化(normalization)之前完成&#xff1b; Library: Albumentations arxiv github docsAugmentor arxiv github docs Biomedical image augment…

Boost 作为客户端 boost

系列文章目录 lotus Boost 作为客户端 系列文章目录前言一、同步区块高度二、boost 初始化1. 生成钱包地址2. boost设置默认钱包地址 三、boostx向存储市场添加资金四、发单五、离线交易参考 前言 Boost 作为客户端 一、同步区块高度 可以远程调用其它api&#xff0c;也可以…

DART booster

XGBoost基本上都是组合大量小学习率的回归树。在这种情况,越晚添加的树比越早添加的树更重要。 Rasmi根据深度神经网络社区提出一个新的使用dropout的boosted trees,并且证明它在某些情况有更好的结果。 以下是新的tree boosterdart的介绍。 原始文章 特征 Drop Trees是…