首页> 中国专利> 一种基于Lucene的林地图斑矢量数据查询方法

一种基于Lucene的林地图斑矢量数据查询方法

摘要

本发明公开了一种基于Lucene的林地图斑矢量数据查询方法。该方法包括以下步骤:确定网格大小,对林地图斑矢量数据进行格式转换,对于转换后的数据进行网格划分;对于网格划分后的数据建立全文索引,按查询条件返回相应数据。本方法通过将二维林地图斑矢量数据进行网格划分并映射到一维字符串索引,使之能够使用Lucene全文检索引擎库进行检索,从而提供了高效的林地图斑矢量数据全文检索方法。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-11-05

    授权

    授权

  • 2019-07-30

    著录事项变更 IPC(主分类):G06F17/30 变更前: 变更后: 申请日:20160721

    著录事项变更

  • 2017-02-01

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20160721

    实质审查的生效

  • 2017-01-04

    公开

    公开

说明书

技术领域

本发明涉及林地图斑矢量数据查询方法,尤其涉及一种基于Lucene的林地图斑矢量数据查询方法。

背景技术

林地数据反映了森林资源现状和变化情况,是制定我国生态建设管理决策的重要依据。自上世纪70年代我国建立了三级森林资源监测管理调查体系以来,获得了大量森林资源的可靠数据,为我国林地资源监管做出了重要贡献。而随着国家林业局全国林地“一张图”系统的推进,林地落界数据汇总工作的完成,其中仅林地落界专题图数据就达6738.88万条。

而目前对于林地图斑数据的查询大多是基于关系型数据库进行检索,但关系型数据库在对大量林地数据建立全字段索引与空间索引时效率比较低,且应考虑到不同时期、不同地域所获得的林地数据其结构往往不同,这时传统的基于关系型数据库的查询方法往往不能胜任。

发明内容

本发明的目的是克服现有技术的不足,提供了一种基于Lucene的林地图斑矢量数据查询方法。

所述方法包括如下步骤:

1)、确定网格大小:根据输入的数据范围及网格阶数,计算网格大小;

2)、对林地图斑矢量数据进行格式转换:对于输入的林地图斑矢量文件,采用OGR接口注册相应矢量驱动,读取矢量文件的每一图层,并记录图层中每一图斑要素的属性信息,以及将所述图斑要素的空间信息以众所周知的文件WKT格式记录;

3)、对格式转换后的数据进行网格划分:对于获得的WKT格式的图斑数据t,计算所述数据t的空间范围,从而确定所述数据t的网格范围,对于网格范围内的每一个网格,将所述网格与所述图斑数据t求交,获得相交多边形i,将图斑数据t的多个属性赋给相交多边形i,并为相交多边形i新建字段以保存所在网格号及原图斑数据t的WKT格式的空间信息;

4)、对于网格划分后的数据建立全文索引:对于网格划分所得的相交多边形i,计算

该相交多边形i的最小外包矩形mbr;采用Lucene类库对相交多边形i的多个属性信息及最小外包矩形建立索引,并将索引保存至对应的网格所确定的目录中;

5)、按查询条件返回相应数据:对于输入的查询条件,根据其中的空间信息条件先判断其搜索网格范围,获取相应目录下的索引,进而采用Lucene类库根据输入条件查询相应索引,过滤重复数据后返回符合结果。

所述的步骤1)具体为:

1.1)、获取输入的数据范围:

经度范围:[lng,lng],纬度范围:[lat,lat],

其中,lng表示经度的起点,lng表示经度的终点,lat表示纬度的起点,lat表示纬度的终点;

1.2)、获取输入的网格阶数z;

1.3)、计算网格的长度dlng与宽度dlat

所述的步骤2)具体为:

2.1)、使用OGR接口,注册矢量格式驱动;

2.2)、打开林地专题图数据源;

2.3)、对于每一个矢量文件,遍历所述矢量文件的每一个图层的信息;

2.4)、对于每一个图层,遍历所述每一个图层的每一个图斑要素的信息;

2.5)、获取图斑要素的多个属性信息及空间信息;

2.6)、以“图斑ID_属性1的信息_…_属性n的信息_WKT格式空间信息”的格式记录每一图斑要素信息,其中n表示属性的数量。

所述的步骤3)具体为:

3.1)、对于记录的图斑数据t,获取其空间范围:

经度范围:[lngmin,lngmax];纬度范围:[latmin,latmax];

其中,lngmin表示经度范围的最小值,lngmax表示经度范围的最大值,latmin表示纬度范围的最小值,latmax表示纬度范围的最大值;

3.2)、确定图斑数据t的网格行列号范围:

其中,colmin表示列号的最小值,colmax表示列号的最大值,rowmin表示行号的最小值,rowmax表示行号的最大值;

3.3)、对于行列号(col,row)所确定的网格,计算该网格边界为:

gminlng=lng+col×dlng

gmaxlng=lng+(col+1)×dlng

gminlat=lat+row×dlat

gmaxlat=lat+(row+1)×dlat

其中,col表示列号,row表示行号,gminlng表示网格的最小经度值,gmaxlng表示网格的最大经度值,gminlat表示网格的最小纬度值,gmaxlat表示网格的最大纬度值;

3.4)、根据gminlng、gmaxlng、gminlat、gmaxlat建立网格多边形grid,并与图斑t求交,得到相交多边形i;

3.5)、以“图斑数据t的ID_图斑数据t属性1的信息_…_图斑数据t属性m的信息_图斑数据t的WKT格式空间信息_相交多边形i的网格号_相交多边形i的WKT格式空间信息”的 格式记录相交多边形i的信息,其中m表示图斑数据t的属性的数量。

所述的步骤4)具体为:

4.1)、对于相交多边形i,获取其最小外包矩形mbr;

4.2)、采用Lucene类库,创建IndexWriter对象,并将该IndexWriter对象指向由格网号(col,row)确定的目录;

4.3)、采用Lucene类库,创建文档Document对象,并将相交多边形i的多个属性信息建立索引后加入该文档Document对象,并采用Lucene中的Spatial类对最小外包矩形mbr的空间信息建立索引后加入该文档Document对象;

4.4)、采用Lucene类库,将该文档Document对象加入IndexWriter,执行IndexWriter后将其关闭。

所述的步骤5)具体为:

5.1)、获取输入的查询条件中的空间范围:

经度范围:[slngmin,slngmax],纬度范围:[slatmin,slatmax],

其中,slngmin表示查询条件中的空间范围的最小经度值,slngmax表示查询条件中的空间范围的最大经度值,slatmin表示查询条件中的空间范围的最小纬度值,slatmax表示查询条件中的空间范围的最大纬度值;

5.2)、计算其对应的网格号范围:

列号范围:[scolmin,scolmax],行号范围:[srowmin,srowmax],

其中,scolmin表示列号的最小值,scolmax表示列号的最大值,srowmin表示行号的最小值,srowmax表示行号的最大值;

5.3)、根据行列号(scol,srow)获取相应目录下的索引;

5.4)、根据查询条件中的空间信息,采用Lucene中的Spatial类对于所获索引进行过滤;

5.5)、根据查询条件中的非空间信息,采用Lucene类库对于过滤后的索引进行查询;

5.6)、根据所得查询结果中的图斑ID信息进行去除重复,返回去重后的记录。

本发明与现有技术相比具有的有益效果:

(1)、利用Lucene对于林地图斑矢量数据的属性信息及空间信息建立索引,实现了对于林地图斑数据的全文检索;

(2)、在采用Lucene建立索引之前对数据进行网格划分,相当于在Lucene索引之前建立了网格索引,提高了查询效率。

附图说明

图1是本发明中基于Lucene的林地图斑矢量数据查询方法的流程图。

图2是本发明中确定网格大小的流程图。

图3是本发明中林地图斑矢量数据格式转换的流程图。

图4是本发明中对格式转换后的数据进行网格划分的流程图。

图5是本发明中对网格划分后的数据建立全文索引的流程图。

图6是本发明中按查询条件返回相应数据的流程。

具体实施方式

以下通过具体实施方式,并结合附图对本发明作进一步说明。

图1示例性是本发明中基于Lucene的林地图斑矢量数据查询方法的流程图,该方法具体包括如下步骤:

1)、确定网格大小:根据输入的数据范围及网格阶数,计算网格大小;

2)、对林地图斑矢量数据进行格式转换:对于输入的林地图斑矢量文件,采用OGR接口注册相应矢量驱动,读取矢量文件的每一图层,并记录图层中每一图斑要素的属性信息,以及将所述图斑要素的空间信息以众所周知的文件WKT格式记录;

3)、对格式转换后的数据进行网格划分:对于获得的WKT格式的图斑数据t,计算所述数据t的空间范围,从而确定所述数据t的网格范围,对于网格范围内的每一个网格,将所述网格与所述图斑数据t求交,获得相交多边形i,将图斑数据t的多个属性赋给相交多边形i,并为相交多边形i新建字段以保存所在网格号及原图斑数据t的WKT格式的空间信息;

4)、对于网格划分后的数据建立全文索引:对于网格划分所得的相交多边形i,计算该相 交多边形i的最小外包矩形mbr;采用Lucene类库对相交多边形i的多个属性信息及最小外包矩形建立索引,并将索引保存至对应的网格所确定的目录中;

5)、按查询条件返回相应数据:对于输入的查询条件,根据其中的空间信息条件先判断其搜索网格范围,获取相应目录下的索引,进而采用Lucene类库根据输入条件查询相应索引,过滤重复数据后返回符合结果。

图2示例性示出了本发明中确定网格大小的流程图,具体为:

获取输入的数据范围:

经度范围:[lng,lng],纬度范围:[lat,lat],

其中,lng表示经度的起点,lng表示经度的终点,lat表示纬度的起点,lat表示纬度的终点;

获取输入的网格阶数z;

计算网格的长度dlng与宽度dlat

图3示例性示出了本发明中林地图斑矢量数据格式转换的流程图。具体为:

使用OGR接口,注册矢量格式驱动;

打开林地专题图数据源;

对于每一个矢量文件,遍历所述矢量文件的每一个图层的信息;

对于每一个图层,遍历所述每一个图层的每一个图斑要素的信息;

获取图斑要素的多个属性信息及空间信息;

以“图斑ID_属性1的信息_…_属性n的信息_WKT格式空间信息”的格式记录每一图斑要素信息,其中n表示属性的数量。

图4示例性示出了本发明中对格式转换后的数据进行网格划分的流程图。具体为:对于记录的图斑数据t,获取其空间范围:

经度范围:[lngmin,lngmax];纬度范围:[latmin,latmax];其中,lngmin表示经度范围的最小值,lngmax表示经度范围的最大值,latmin表示纬度范围的最小值,latmax表示纬度范围的最大值;

确定图斑数据t的网格行列号范围:

其中,colmin表示列号的最小值,colmax表示列号的最大值,rowmin表示行号的最小值,rowmax表示行号的最大值;

对于行列号(col,row)所确定的网格,计算该网格边界为:

gminlng=lng+col×dlng

gmaxlng=lng+(col+1)×dlng

gminlat=lat+row×dlat

gmaxlat=lat+(row+1)×dlat

其中,col表示列号,row表示行号,gminlng表示网格的最小经度值,gmaxlng表示网格的最大经度值,gminlat表示网格的最小纬度值,gmaxlat表示网格的最大纬度值;根据gminlng、gmaxlng、gminlat、gmaxlat建立网格多边形grid,并与图斑t求交,得到相交多边形i;以“图斑数据t的ID_图斑数据t属性1的信息_…_图斑数据t属性m的信息_图斑数据t的WKT格式空间信息_相交多边形i的网格号_相交多边形i的WKT格式空间信息”的格式记录相交多边形i的信息,其中m表示图斑数据t的属性的数量。

图5示例性示出了本发明中对网格划分后的数据建立全文索引的流程图。具体为:

对于相交多边形i,获取其最小外包矩形mbr;

采用Lucene类库,创建IndexWriter对象,并将该IndexWriter对象指向由格网号(col,row) 确定的目录;

采用Lucene类库,创建文档Document对象,并将相交多边形i的多个属性信息建立索引后加入该文档Document对象,并采用Lucene中的Spatial类对最小外包矩形mbr的空间信息建立索引后加入该文档Document对象;

采用Lucene类库,将该文档Document对象加入IndexWriter,执行IndexWriter后将其关闭。

图6示出了本发明中按查询条件返回相应数据的流程。具体为:

获取输入的查询条件中的空间范围:

经度范围:[slngmin,slngmax],纬度范围:[slatmin,slatmax],

其中,slngmin表示查询条件中的空间范围的最小经度值,slngmax表示查询条件中的空间范围的最大经度值,slatmin表示查询条件中的空间范围的最小纬度值,slatmax表示查询条件中的空间范围的最大纬度值;

计算其对应的网格号范围:

列号范围:[scolmin,scolmax],行号范围:[srowmin,srowmax],

其中,scolmin表示列号的最小值,scolmax表示列号的最大值,srowmin表示行号的最小值,srowmax表示行号的最大值;

根据行列号(scol,srow)获取相应目录下的索引;

根据查询条件中的空间信息,采用Lucene中的Spatial类对于所获索引进行过滤;

根据查询条件中的非空间信息,采用Lucene类库对于过滤后的索引进行查询;

根据所得查询结果中的图斑ID信息进行去除重复,返回去重后的记录。

在此给出根据本发明的基于Lucene的林地图斑矢量数据查询方法的具体实施例,具体如下:

1、确定网格大小:

根据输入的数据范围:

lng=117.798,lng=118.665,lat=25.828,lat=26.442,

及网格阶数:z=10,计算网格大小:dlng=0.0867;dlat=0.0614。

2、对林地图斑矢量数据进行格式转换:

对于输入的林地图斑矢量文件yx.shp,采用OGR接口注册相应矢量驱动,读取矢量文件的每一图层,并记录图层中每一图斑要素的属性信息,输出的部分要素信息如表1所示:

表1

3、对于输出的每一行要素,做如下操作进行网格划分:

对于获得的每一行图斑数据t,计算t的空间范围,从而确定其网格范围,对于范围内的每一个网格,将其与该林地图斑数据t求交,获得相交多边形i,将图斑数据t的各属性赋给相交多边形i,并为相交的多边形i新建字段以保存所在网格号及原图斑数据t的WKT格式的空间信息,输出部分信息表2所示:

表2

4、对于网格划分后的每一行数据建立全文索引:

对于网格划分所得的多边形i,计算其最小外包矩形mbr;采用Lucene类库对于多边形i的各属性信息及最小外包矩形建立索引,并将索引保存至对应的网格所确定的目录中;

5、对于输入的查询条件中的空间范围:

slngmin=117.963,slngmax=118.083,slatmin=25.852,slatmax=25.908;

计算其对应的网格号范围:

scolmin=1,scolmax=3,srowmin=0,srowmax=1;

获取1-0、1-1、2-0、2-1、3-0、3-1目录下的索引,使用Lucene查询索引,返回结果如表3所示。

表3

以上列举的仅是本发明的最佳具体实施例。显然,本发明不限于以上实施例,还可以有许多变形。本领域的普通技术人员能从本发明公开的内容直接导出或联想到的所有变形,均应认为是本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号