Java运用GDAL
Java使用GDAL
将上面的JAVA_HOME和ANT_HOME后面的路径修改为本地Java和Ant的路径,只要修改到主文件夹即可(就是有bin文件夹的那个文件夹),如果文件夹路径有空格的话,把路径用双引号括起来。然后把SWIG的目录也换成本机的目录。接下来就可以编译了。具体步如下:
在使用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
- 1楼goodnew前天 11:19
- 很好,但不知道java调gdal有什么用?难道要写cs系统?还是做一个在线处理系统?
- Re: liminlu0314昨天 20:01
- 回复goodnewnBS的系统啥的,应该还是可以的吧