GDAL矢量图层裁剪为矢量网格(java)

该博客介绍了如何使用GIS库进行矢量图层的基本信息展示,包括图层数、属性表结构、要素信息等。然后讲解了如何创建网格,并基于矢量图层的范围创建矩形网格。最后,展示了如何通过图层的Intersection方法计算矢量图层与网格的交集,实现空间分析。内容涵盖了GIS数据处理的关键步骤。

1、矢量图层

打开矢量图层,并显示基本信息。

图层数,驱动名,图层网格范围,属性表结构信息,矢量元素,及矢量元素的属性

public static void info(String srcFile) {
   
   
     // 读取原图
     DataSource srcDataSource = ogr.Open(srcFile, 0);
     if (srcDataSource == null) {
   
   
         System.err.println("GDALOpen failed - " + gdal.GetLastErrorNo());
         System.err.println(gdal.GetLastErrorMsg());
         return;
     }

     // 获取该数据源中的图层个数,一般shp数据图层只有一个,如果是mdb、dxf等图层就会有多个
     int layerCount = srcDataSource.GetLayerCount();
     System.out.println("图层数 = " + layerCount);
     if (layerCount < 1) {
   
   
         System.err.println("异常:没有图层。");
         return;
     }
     System.out.println(srcDataSource.GetDriver().GetName());

     Layer layer = srcDataSource.GetLayer(0);
     // 对图层进行初始化,如果对图层进行了过滤操作,执行这句后,之前的过滤全部清空
     layer.ResetReading();
     // 通过属性表的SQL语句对图层中的要素进行筛选,这部分详细参考SQL查询章节内容
     // layer.SetAttributeFilter("\"NAME99\"LIKE \"北京市市辖区\"");
     // 通过指定的几何对象对图层中的要素进行筛选
     // layer.SetSpatialFilter();
     // 通过指定的四值范围对图层中的要素进行筛选
     // layer.SetSpatialFilterRect();

     double[] extent = layer.GetExtent(true);
     System.out.println("extent is " + extent[0] + ", " + extent[1] + ", " + extent[2] + ", " + extent[3]);

     // 获取图层中的属性表表头并输出
     System.out.println("属性表结构信息:");
     FeatureDefn featureDefn = layer.GetLayerDefn();
     int fieldCount = featureDefn.GetFieldCount();
     for (int index = 0; index < fieldCount; index++) {
   
   
         FieldDefn fieldDefn = featureDefn.GetFieldDefn(index);
         System.out.println(fieldDefn.GetNameRef
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值