IDEA下JAVA 调用GDAL读写tif文件


假设你已经安装好java jdk,并配置好环境变量。
参考:
http://trac.osgeo.org/gdal/wiki/GdalOgrInJava
http://trac.osgeo.org/gdal/wiki/GdalOgrInJavaBuildInstructions(编译java版gdal)

这里使用的是编译好的gdal,下载地址:
http://www.gisinternals.com/release.php
选择win32/x64版的zip,解压到相关目录下。
配置java中的jre library path,将下载后的E:\workspace\release-1600-x64-gdal-1-11-1-mapserver-6-4-1\bin目录下的所有.dll文件 copy 到java/jre/bin下。
同时将E:\workspace\release-1600-x64-gdal-1-11-1-mapserver-6-4-1\bin\gdal\java目录下的所有.dll文件 copy到/java/jre/bin下
如图:包含五个文件
在IDEA下新建一个maven工程,将解压后的gdal.jar加到library中如图:

下面新建一个java class 并编写程序测试gdal的调用是否成功,代码如下
(可参考:http://trac.osgeo.org/gdal/browser/trunk/gdal/swig/java/apps/

package org.geotools;
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 ReadGeoInfo{
/**
* Created by ubuntu on 2015/7/10 0010.
*/
public static void main(String[] args)
{
String fileName_tif = “F:\RASTER DATA\Data\Amberg_tif\090162.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);
int buf[] = new int[iXSize];
for(int i=0; i<10; i++)
{
band.ReadRaster(0, i, iXSize, 1, buf);
for(int j=0; j<10; j++)
System.out.print(buf[j] + “, “);
System.out.println(“\n”);
}
hDataset.delete();

}

}
按shift+F10 运行,结果如下:

自此,java调用GDAL库读取tif文件实现。

备注:
如果你用的是eclipse开发的,也是一样的方法,新建Java project 然后在build path中将jar加入到library里,如果你没有配置GDAL的.dll库到java中,每次新建java project你都需要将上述的.dull copy 到工程的目录下才可以。

转载自:https://blog.csdn.net/youxia918/article/details/46851465

You may also like...

退出移动版