Java使用GDAL库

GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。

GDAL官方网址:http://www.gdal.org/,它能支持当前流行的各种地图数据格式,包括栅格和矢量地图,具体参考官方网站。该库使用C/C++开发,在java中使用需要自己编译,这里从网上下了好心网友编译好的库,在例子中就没有对库进行编译了。具体编译步骤可以参考http://blog.csdn.net/liminlu0314/article/details/6937194

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<count; i++) {
            Layer layer = ds.GetLayer(i);
            double[] extend = layer.GetExtent();
            for(int j=0; j<extend.length; j++) {
                System.out.println(extend[j]);
            }
            
        }
    }    
}
TestGDAL源码: http://download.csdn.net/detail/a78460750/7802701

GDAL4JAVA库:http://download.csdn.net/download/bbirdsky/5838397

JAVA GDAL API:http://www.gdal.org/java/

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值