关于Java配置GDAL库参考之前的博文。
在Java中使用OGR读写矢量数据时,需要导入ogr库,如果需要对中文路径的支持还有空间参考的支持,需要导入gdal和osr库,代码如下:
importorg.gdal.osr.*;
importorg.gdal.ogr.*;
importorg.gdal.gdal.*;
1.读取矢量staticvoid ReadVectorFile()
{
String strVectorFile = "F:\\Work\\OGR测试数据\\beijing.shp";
// 注册所有的驱动
ogr.RegisterAll();
// 为了支持中文路径,请添加下面这句代码
gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8","YES");
// 为了使属性表字段支持中文,请添加下面这句
gdal.SetConfigOption("SHAPE_ENCODING","");
//打开数据
DataSource ds = ogr.Open(strVectorFile,0);
if (ds == null)
{
System.out.println("打开文件【"+ strVectorFile + "】失败!" );
return;
}
System.out.println("打开文件【"+ strVectorFile + "】成功!" );
// 获取该数据源中的图层个数,一般shp数据图层只有一个,如果是mdb、dxf等图层就会有多个
int iLayerCount = ds.GetLayerCount();
// 获取第一个图层
Layer oLayer = ds.GetLayerByIndex(0);
if (oLayer == null)
{
System.out.println("获取第0个图层失败!\n");
return;
}
// 对图层进行初始化,如果对图层进行了过滤操作,执行这句后,之前的过滤全部清空
oLayer.ResetReading();
// 通过属性表的SQL语句对图层中的要素进行筛选,这部分详细参考SQL查询章节内容
//oLayer.SetAttributeFilter("\"NAME99\"LIKE \"北京市市辖区\"");
// 通过指定的几何对象对图层中的要素进行筛选
//oLayer.SetSpatialFilter();
// 通过指定的四至范围对图层中的要素进行筛选