GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。
GDAL官方网址:http://www.gdal.org/,它能支持当前流行的各种地图数据格式,包括栅格和矢量地图,具体参考官方网站。该库使用C/C++开发,在java中使用需要自己编译,这里从网上下了好心网友编译好的库,在例子中就没有对库进行编译了。具体编译步骤可以参考
Java使用gdal时,只需将dll库放在项目根目录下即与src同级,然后引入jar即可,以下是在NetBeans下的展现形式:
使用gdal读取栅格数据
import org.gdal.gdal.Dataset;
import org.gdal.gdal.Driver;
import org.gdal.gdal.gdal;
import org.gdal.gdalconst.gdalconstConstants;
public class testgdal {
/**
* @param args
*/
public static void main(String[] args)
{
String fileName_tif = "F:\\aa.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();
}
}
使用gdal的ogr读取矢量数据
import org.gdal.ogr.DataSource;
import org.gdal.ogr.Layer;
import org.gdal.ogr.ogr;
/**
*
* @author WZH
*/
public class testogr {
/**
* @param args
*/
public static void main(String[] args)
{
String fileName_shp = "F:\\chengduroad.shp";
ogr.RegisterAll();
//在读取shp文件时需要将对应的shx文件放在同一目录下,否则会出错
DataSource ds = ogr.Open(fileName_shp);
if(ds == null) {
System.out.println("未找到文件!");
return;
}
//获取图层总数
int count = ds.GetLayerCount();
for(int i=0; i
Layer layer = ds.GetLayer(i);
double[] extend = layer.GetExtent();
for(int j=0; j
System.out.println(extend[j]);
}
}
}
}TestGDAL源码:
http://download.csdn.net/detail/a78460750/7802701