等值线和/或等值面生成方法、系统、设备及存储介质技术方案

技术编号:34343785 阅读:39 留言:0更新日期:2022-07-31 04:24
本发明专利技术公开的一种等值线和/或等值面生成方法、系统,包括计算出栅格区域的宽度值和高度值;计算内存缓冲区大小并生成内存缓冲区;进行插值结果计算,并将插值结果存储至内存缓冲区;创建临时存储文件和存储波段,将插值结果或数据存入存储波段中;对存储波段的插值结果进行等值线数据生成,并存储至创建的第一矢量图层,对存储波段的数据进行栅格矢量化转换,并存储至创建的第二矢量图层;利用创建的裁剪图层分别对第一矢量图层、第二矢量图层进行裁剪,分别得到等值线文件、等值面文件。本发明专利技术利用GDAL开源类库进行等值线和/或等值面计算和生成,配置简单,操作便捷,免费,避免了商业GIS软件使用复杂,收费昂贵的问题。收费昂贵的问题。收费昂贵的问题。

Isoline and / or isosurface generation method, system, equipment and storage medium

【技术实现步骤摘要】
等值线和/或等值面生成方法、系统、设备及存储介质


[0001]本专利技术属于地理信息
,尤其涉及一种基于gdal空间插值的等值线和/或等值面生成方法、系统、计算机设备及存储介质。

技术介绍

[0002]等值线是专题地图的重要图型,起初用来描述地形的起伏变化,后常被用于以相等数值点的连线表示连续分布且逐渐变化的数量特征,如等高线、等温线、等降雨量线等。等值面是一定地理空间范围内相近值的面域范围集合,在专题地图展示时,等值面可更直观地表示要素在空间渐变的趋势。等值线及等值面的应用不仅仅在测绘及地理信息领域,同时也越来越多地被应用于环境、水利、气象等诸多领域的数据分析及可视化渲染。
[0003]随着地理信息技术的快速发展,利用GIS技术中的等值线及等值面进行数据分析以及信息化系统的开发与展示被越来越多的大众接受和认可。尽管等值线及等值面生成技术已经十分成熟,但该功能大多集成在商用地理信息数据处理软件中,如ArcGISDesktop、SuperMap Desktop,在WebGIS信息化系统开发过程中需要取得其桌面软件及服务端软件的产品授权才能使用,软件价格昂贵、等值线及等值面生成技术调用效率低下,因其结果数据只能利用对应软件产品的二维地图sdk或api进行加载,导致无法跨平台使用,且展示效果不直观,更无法与二、三维开源WebGISApi进行无缝展示集成。而流行的开源前端的插值渲染类库,如kriging.js、turf.js等,效率低下,准确率较低、参数设置不灵活、展示效果不理想、无法生成等值线数据、与三维WebGIS集成效果差。后端开源类库wContour开源插值类库仅仅支持反距离权重插值方法,无法灵活设置插值方法。

技术实现思路

[0004]本专利技术的目的在于提供一种等值线和/或等值面生成方法、系统、设备及存储介质,以解决现有软件需授权才能使用,价格昂贵,调用效率低,无法跨平台使用且展示效果不直观;以及开源类库参数设置不灵活的问题。
[0005]本专利技术是通过如下的技术方案来解决上述技术问题的:一种等值线和/或等值面生成方法,包括以下步骤:
[0006]步骤1:根据栅格数据的使用分辨率需求设置插值结果栅格的数据分辨率,根据所需结果数据的实际坐标范围设置插值范围的四角坐标数据;
[0007]步骤2:根据所述数据分辨率和四角坐标数据计算出栅格区域的宽度值和高度值;
[0008]步骤3:根据栅格区域的宽度值和高度值、定义的插值结果栅格的输出数据类型计算出内存缓冲区大小,并动态生成内存缓冲区;
[0009]步骤4:利用GDAL(Geospatial Data Abstraction Library)提供的插值函数对空间散点数据进行插值结果计算,并将计算出的插值结果存储至所述内存缓冲区;
[0010]步骤5:选择生成等值线和/或等值面,当生成等值线时,执行步骤6;当生成等值面时,执行步骤9;当生成等直线和等值面时,执行步骤6和9;
[0011]步骤6:创建第一临时存储文件,并为所述第一临时存储文件写入四角范围坐标,在所述第一临时存储文件中创建存储波段,将所述内存缓冲区的插值结果写入至第一临时存储文件的存储波段中;
[0012]步骤7:创建第一矢量图层,并设置等值线生成间隔;利用GDAL提供的等值线生成函数对所述第一临时存储文件中存储插值结果的波段数据进行等值线数据生成,并将生成的等值线数据存储至所述第一矢量图层;
[0013]步骤8:根据需要输出的结果范围创建第一裁剪图层,利用所述第一裁剪图层对所述第一矢量图层中的等值线数据进行裁剪,得到等值线文件;
[0014]步骤9:将所述内存缓冲区的插值结果转化为特定的数值类型,对转化后的数据进行重分类,并将重分类后的数据按照原顺序写入整形数组;
[0015]步骤10:创建第二临时存储文件,并为所述第二临时存储文件写入四角范围坐标,在所述第二临时存储文件中创建存储波段,将所述步骤9中写有重分类后的数据的整形数组写入至第二临时存储文件的存储波段中;
[0016]步骤11:创建第二矢量图层,利用GDAL提供的栅格矢量化函数对所述第二临时存储文件中存储整形数组的波段数据进行栅格矢量化转换,并将栅格矢量化转换后的数据存储至所述第二矢量图层;
[0017]步骤12:根据需要输出的结果范围创建第二裁剪图层,利用所述第二裁剪图层对所述第二矢量图层中的数据进行裁剪,得到等值面文件。
[0018]进一步地,所述步骤2中,栅格区域的宽度值和高度值的计算公式为:
[0019][0020][0021]其中,N
x
表示栅格区域的宽度值,N
y
表示栅格区域的高度值,x
max
、y
max
分别表示x、y方向坐标的最大值,x
min
、y
min
分别表示x、y方向坐标的最小值,δ表示数据分辨率。
[0022]进一步地,所述步骤3中,内存缓冲区大小的计算公式为:
[0023][0024]其中,B表示内存缓冲区大小,N
x
表示栅格区域的宽度值,N
y
表示栅格区域的高度值,N
type
表示输出数据类型尺寸。
[0025]优选地,利用JAVA.nio.ByteBuffer.allocateDirect()函数动态生成所述内存缓冲区。
[0026]进一步地,所述步骤4中,插值函数所采用的插值方式为反距离权重插值法、自然邻域插值法或趋势面法插值。
[0027]进一步地,所述步骤6或10中,利用GDAL内置函数rasterDriver.Create()创建第一临时存储文件或第二临时存储文件;
[0028]利用SetGeoTransform()函数为第一临时存储文件或第二临时存储文件写入四角范围坐标;
[0029]利用GetRasterBand()函数在第一临时存储文件或第二临时存储文件中创建存储
波段;
[0030]利用WriteRaster_Direct()函数将内存缓冲区中的插值结果或数据分别写入至第一临时存储文件或第二临时存储文件的存储波段中。
[0031]进一步地,所述步骤7或11中,利用OGR.GetDriverByName.CreateDataSource()函数创建第一矢量图层或第二矢量图层。
[0032]优选地,所述步骤8或12中,利用Geometry.CreateFromJson()函数创建第一裁剪图层或第二裁剪图层。
[0033]进一步地,所述生成方法还包括图形展示及渲染,具体实现过程为:
[0034]读取所述等值线和/或等值面文件,将所述等值线和/或等值面文件分别转化为字符串数据,并分别将对应的所述字符串数据请求到Web前端,实现等值线和/或等值面图像展示;
[0035]利用Cesium三维平台对生成的等值线GeoJSON字符串数据进行加载本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种等值线和/或等值面生成方法,其特征在于,包括以下步骤:步骤1:根据栅格数据的使用分辨率需求设置插值结果栅格的数据分辨率,根据所需结果数据的实际坐标范围设置插值范围的四角坐标数据;步骤2:根据所述数据分辨率和四角坐标数据计算出栅格区域的宽度值和高度值;步骤3:根据栅格区域的宽度值和高度值、定义的插值结果栅格的输出数据类型计算出内存缓冲区大小,并动态生成内存缓冲区;步骤4:利用GDAL(Geospatial Data Abstraction Library)提供的插值函数对空间散点数据进行插值结果计算,并将计算出的插值结果存储至所述内存缓冲区;步骤5:选择生成等值线和/或等值面,当生成等值线时,执行步骤6;当生成等值面时,执行步骤9;当生成等直线和等值面时,执行步骤6和9;步骤6:创建第一临时存储文件,并为所述第一临时存储文件写入四角范围坐标,在所述第一临时存储文件中创建存储波段,将所述内存缓冲区的插值结果写入至第一临时存储文件的存储波段中;步骤7:创建第一矢量图层,并设置等值线生成间隔;利用GDAL提供的等值线生成函数对所述第一临时存储文件中存储插值结果的波段数据进行等值线数据生成,并将生成的等值线数据存储至所述第一矢量图层;步骤8:根据需要输出的结果范围创建第一裁剪图层,利用所述第一裁剪图层对所述第一矢量图层中的等值线数据进行裁剪,得到等值线文件;步骤9:将所述内存缓冲区的插值结果转化为特定的数值类型,对转化后的数据进行重分类,并将重分类后的数据按照原顺序写入整形数组;步骤10:创建第二临时存储文件,并为所述第二临时存储文件写入四角范围坐标,在所述第二临时存储文件中创建存储波段,将所述步骤9中写有重分类后的数据的整形数组写入至第二临时存储文件的存储波段中;步骤11:创建第二矢量图层,利用GDAL提供的栅格矢量化函数对所述第二临时存储文件中存储整形数组的波段数据进行栅格矢量化转换,并将栅格矢量化转换后的数据存储至所述第二矢量图层;步骤12:根据需要输出的结果范围创建第二裁剪图层,利用所述第二裁剪图层对所述第二矢量图层中的数据进行裁剪,得到等值面文件。2.如权利要求1所述的等值线和/或等值面生成方法,其特征在于,所述步骤2中,栅格区域的宽度值和高度值的计算公式为:区域的宽度值和高度值的计算公式为:其中,N
x
表示栅格区域的宽度值,N
y
表示栅格区域的高度值,x
max
、y
max
分别表示x、y方向坐标的最大值,x
min
、y
min
分别表示x、y方向坐标的最小值,δ表示数据分辨率。3.如权利要求1所述的等值线和/或等值面生成方法,其特征在于,所述步骤3中,内存缓冲区大小的计算公式为:
其中,B表示内存缓冲区大小,N
x
表示栅格区域的宽度值,N
y
表示栅格区域的高度值,N
type
表示输出数据类型尺寸;优选地,利用JAVA.nio.ByteBuffer.allocateDirect()函数动态生成所述内存缓冲区。4.如权利要求1所述的等值线和/或等值面生成方法,其特征在于,所述步骤4中,插值函数所采用的插值方式为反距离权重插值法、自然邻域插值法或趋势面法插值。5.如权利要求1所述的等值线和/或等值面生成方法,其特征在于,所述步骤6或10中,利用GDAL内置函数rasterDriver.Create()创建第一临时存储文件或第二临时存储文件;利用SetGeoTransform()函数为第一临时存储文件或第二临时存储文件...

【专利技术属性】
技术研发人员:张旗升傅利李翔罗凯乐陈岳鸿
申请(专利权)人:中国电建集团中南勘测设计研究院有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1