window的下載地址:http://www.gisinternals.com/,根據(jù)自己的需要下載。
1、下載已編譯好的gdal坑匠,如我下載的 x64 位的 release-1911-x64-gdal-3-0-0-mapserver-7-4-0, 解壓之后卧惜,會得到如下圖所示文件:
2笛辟、jdk 配置gdal
將 gdal/bin目錄下所有的dll擴展名文件 和 gdal/bin/gdal/java/gdalalljni.dll 拷貝到 jdk/bin目錄下
3、配置環(huán)境變量
在環(huán)境變量中增加 PROJ_LIB 變量名序苏,變量值為 gdal/bin/proj6/share。配置完后記得重啟或注銷計算機使配置生效捷凄。
4忱详、在java項目中引入并使用gdal
1、新建maven項目跺涤,并創(chuàng)建lib文件夾匈睁,將 gdal/bin/gdal/java/gdal.jar 拷貝進來,并重命名為 gdal-3.0.0.jar
2桶错、pom.xml中引用gdal依賴
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.geovis</groupId>
<artifactId>gdal</artifactId>
<version>1.0-SNAPSHOT</version>
<name>gdal</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.gdal</groupId>
<artifactId>gdal</artifactId>
<version>3.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/gdal-3.0.0.jar</systemPath>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
5航唆、測試
package com.geovis.tiff;
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 ReadTiff {
public static void main(String[] args) {
gdal.AllRegister();
String rasterFilePath = "D:/study/GF1_PMS2_E103.5_N31.9_20130527_L1A0000101973-MSS2.tif";
Dataset dataset = gdal.Open(rasterFilePath, gdalconstConstants.GA_ReadOnly);
if (dataset == null) {
System.out.println("GDAL read error: " + gdal.GetLastErrorMsg());
}
Driver driver = dataset.GetDriver();
System.out.println("driver short name: " + driver.getShortName());
System.out.println("driver long name: " + driver.getLongName());
System.out.println("metadata list: " + driver.GetMetadata_List());
int xsize = dataset.getRasterXSize();
int ysize = dataset.getRasterYSize();
int count = dataset.getRasterCount();
String proj = dataset.GetProjection();
Band band = dataset.GetRasterBand(1);
// 左上角點坐標 lon lat: transform[0]、transform[3]
// 像素分辨率 x院刁、y方向 : transform[1]糯钙、transform[5]
// 旋轉(zhuǎn)角度: transform[2]、transform[4])
double[] transform = dataset.GetGeoTransform();
for(int i=0; i<transform.length; i++){
System.out.println("transform: " + transform[i]);
}
}
}