CN108647336B - 一种利用关键比例尺以及类瓦片技术处理矢量图的方法 - Google Patents

一种利用关键比例尺以及类瓦片技术处理矢量图的方法 Download PDF

Info

Publication number
CN108647336B
CN108647336B CN201810454271.2A CN201810454271A CN108647336B CN 108647336 B CN108647336 B CN 108647336B CN 201810454271 A CN201810454271 A CN 201810454271A CN 108647336 B CN108647336 B CN 108647336B
Authority
CN
China
Prior art keywords
tile
level
interval
section
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810454271.2A
Other languages
English (en)
Other versions
CN108647336A (zh
Inventor
刘德儿
陶小明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Buddhist Tzu Chi General Hospital
Original Assignee
Buddhist Tzu Chi General Hospital
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Buddhist Tzu Chi General Hospital filed Critical Buddhist Tzu Chi General Hospital
Priority to CN201810454271.2A priority Critical patent/CN108647336B/zh
Publication of CN108647336A publication Critical patent/CN108647336A/zh
Application granted granted Critical
Publication of CN108647336B publication Critical patent/CN108647336B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/206Drawing of charts or graphs

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明公开了一种利用关键比例尺以及类瓦片技术处理矢量图的方法,其中包括如下步骤:对地形图内要素进行分级并对层级命名;对每一层级进行矩形分块,并进行编号;求出每一层级的关键比例尺并计算出该层级的显示尺度,然后存储;确定瓦片并编号;包括瓦片编号、大小、位置以及图形数据的每个瓦片数据作为一个整体进行存储。本发明的存储方法在质量图制作软件中打开以及平移和缩放的时候可以明显的提高其反应速度。

Description

一种利用关键比例尺以及类瓦片技术处理矢量图的方法
技术领域
本发明涉及图形处理领域,尤其涉及一种利用关键比例尺以及类瓦片技术处理矢量图的方法。
背景技术
矢量图,也称为面向对象的图像或绘图图像,在数学上定义为一系列由线连接的点。矢量文件中的图形元素称为对象。每个对象都是一个自成一体的实体,它具有颜色、形状、轮廓、大小和屏幕位置等属性。矢量图是根据几何特性来绘制图形,矢量可以是一个点或一条线,矢量图只能靠软件生成,文件占用内在空间较小,因为这种类型的图像文件包含独立的分离图像,可以自由无限制的重新组合。它的特点是放大后图像不会失真,和分辨率无关,适用于图形设计、文字设计和一些标志设计、版式设计等。
但是,随着科学技术的发展以及人们的需求,矢量图的应用也越来越广,同时矢量图内容更加丰富,导致矢量图文件越来越大。比如,矢量电子地图,其需要地物地貌要素表达的更细,内容的不断丰富,加上成图范围不断扩大,其文件就越来越大。因此,在制图软件中打开全幅地图的话相当占内存,带来地图操作效率低下等一系列问题,为此研究者们提出,将电子地图进行分级分块显示。李鲁群等构建了一个用于PDAmobile终端的矢量图形分块模型:将一副地图逐步分级,根据屏幕显示范围,将第一级横纵向划分成nr,nc份,第二级将第一级的每块再划分nr,nc份,按照矩形分块的方式,可以把一幅图形分成若干对象子集,然后很多的对象子集再从子集下划分出来。
传统上是以国家系列比例尺为基础进行分级的,每层金字塔与一层级相对应,然后以12行8列图幅分块方式对每一层进行分块,针对该传统方法的索引速度慢、可拓展性差等不足,基于多分辨率LOD模型,杜莹等设计了一种金字塔模型,即根据全球经纬度范围规定该金字塔每层的分块数横向是纵向的两倍,第0 层以2×1分块,第K层分块总数为2k+1×2k,该模型是面向于全球。秦宽等考虑到用户一般关注具有实际需求的要素类,提出:将地图中的内容划分成几大类 (比如地物、地貌、地名等),按要素的重要程度,再对这几大类分级。王枫则利用抽希算法分别对点、线、面要素进行抽稀,再根据其权重进行分级。
瓦片地图金字塔模型是一种多分辨率层次模型,从瓦片金字塔的底层到顶层,分辨率越来越低,但表示的地理范围不变。首先确定地图服务平台所要提供的缩放级别的数量N,把缩放级别最低、地图比例尺最大的地图图片作为金字塔的底层,即第0层,并对其进行分块,从地图图片的左上角开始,从左至右、从上到下进行切割,分割成相同大小(比如256x256像素)的正方形地图瓦片,形成第0 层瓦片矩阵;在第0层地图图片的基础上,按每2x2像素合成为一个像素的方法生成第1层地图图片,并对其进行分块,分割成与下一层相同大小的正方形地图瓦片,形成第1层瓦片矩阵;采用同样的方法生成第2层瓦片矩阵;…;如此下去,直到第N一1层,构成整个瓦片金字塔。
但是,矢量图形数据的放大缩小不同于位图以及影像数据,位图以及影像数据放大缩小采用重采样方法,从高分辨率影像重采样生成低分辨率影像数据,即在金字塔里从层级高的瓦片数据经过重采样生成更低一层级的瓦片。而矢量图每级都是不同的图形数据,每层之间的图形数据没有重叠。影像数据分块形状可以是三角形,正方形或者是六边形等,较普遍用的是正方形,因为正方形结构简单,可以对影像图划分成有规则的正方形,用这种模型很容易实现用程序自动分块。矢量图形由于要保证矢量数据的完整性,依据多级比例尺将图形进行分级,每级分割成一定数量同等大小瓦片来构成矢量金字塔。如果直接采用规则图形分割,会破坏其完整性,到后期图幅拼接时由于目前拼接算法还不够成熟,很难做到高效地将两幅图形接缝处的被分割成两个对象合并成完整的一个对象。
发明内容
本发明的目的针对目前电子地形图制作软件打开或操作大数据地形图响应时间长、效率低等一系列问题,利用类瓦片技术,提出“SSR”概念,对大文件型矢量图进行分级分块组织,有利于在调度上述矢量图时快速的进行处理,节省时间。
本发明的方法是,一种利用关键比例尺以及类瓦片技术处理矢量图的方法,其中包括如下步骤:
S1:对矢量图内要素进行分级并对层级命名;
S2:对每一层级进行矩形分块,并进行编号;
S3:求出每一层级的关键比例尺并计算出该层级的显示尺度,然后存储;
S4:确定瓦片并编号,即每一层级中落入或首相交于同一矩形块的要素集合在一块,生成瓦片,瓦片的形状为矩形,大小为其内所有要素外包矩形为准;瓦片的位置由瓦片矩形中心点确定,瓦片序号规则为:
瓦片序号=层级名+对应的矩形编号;
S5:将包括瓦片编号、大小、位置以及图形数据的每个瓦片数据作为一个整体进行存储。
上述的一种利用关键比例尺以及类瓦片技术处理矢量图的方法,还可以是,步骤S1中对矢量图内要素从高到低分成3级,分别定义为A,B,C级,其按如下步骤实施分级:
S11:点状图层分级;对于大多数是点状物的图层,用点状符号表示,一般在最低显示级别C级内显示;
S12:主要线、面图层分级;根据图层内要素外包矩形大小分布情况,来决定分级级别,一般来说,外包矩形越大,更优先显示,级别也更高;
S13:不常见线面图层分级;按照轮廓范围、略详细物、最详细或不重要物顺序对不常见图层进行分级。
上述的一种利用关键比例尺以及类瓦片技术处理矢量图的方法,还可以是,
步骤S3中按照下列步骤求出每一层级的关键比例尺:
S31:假设存在系数k,使得当在屏幕上的矢量图实体真实长度大于等于 k*0.1mm时,肉眼能够分辨清晰,其中k为正整数;
S32:准备s台不同屏幕大小的配置合格的电脑,选择t幅具有相对完整图层的具有同一绘图比例尺的矢量图样本,其中s,t均为大于2的正整数;
S33:将矢量图样本按分级模型分成多个层级,将每个层级的地图要素分别合并成一幅图形;
S34:调整k值来观察在不同的电脑显示屏幕上每一层级的要素在界面中缩放显示情况,并最终根据清晰度以及冗余度确定出s×t个k值;
S35:统计上述s×t个k值中,相同个数最多的k值确定为步骤S31中的系数k;
S36:利用下面公式求出关键比例尺;
Mi×Ci×Pixelh=ε×k
其中Mi:当前层级显示长度(单位:m);
Ci:当前层级关键比例尺(单位:像素个数/m);
K:像素个数;
ε:人眼最小分辨率,通常为0.1mm;
Pixelh:单位像素物理长度(单位:mm)。
上述的一种利用关键比例尺以及类瓦片技术处理矢量图的方法,还可以是,
步骤S12中按照下列步骤实施:
S121:选取与本矢量图类似的相同比例大小的多幅矢量图;
S122:将每幅图中的要素的外包矩形的长按照固定长度m划分为n个区间,即形成(0-m],(m-2m],(2m-3m],…((n-2)m-(n-1)m],((n-1)m,+∝]共n 个区间,其中m大小按照地图比例以及要素情况进行选取,n为大于1的正整数;
S123:设定阈值r,其中r=2,3,…,n;
S124:分别统计每一幅图中几个主要线、面图层在这n个区间内包含的所有要素外包矩形的长在上述n个区间的百分比hi,其中i=0,1,2,3,…,n-1;
S125:求出多幅图中n个相同区间中的hi的平均值gi,并找出gi最大值所在的区间,然后统计出几个主要线、面图层gi最大值在上述n个区间中的个数fj,其中j=0,1,2,3,…,n,找出个数fj最多的区间为第N个区间并将其个数设为Fj;
S126:利用阈值判断;(1)如果fn=0,则将m值减小一半,转到步骤S122; (2)如果fn≠0且Fj≤r,则进行下一步;(3)如果fn≠0且Fj>r且N不属于 ((n-1)m,+∝]区间,则将N区间划分为两个步长基本相等的区间,这时的n 值加1,转到步骤S124;(4)如果fn≠0且Fj>r且N为((n-1)m,+∝]区间,则将m值加倍,转到步骤S122;
S127:将N区间之前的全部区间合并成一个区间X,将N区间命名成Y区间,将N区间之后的所有区间合并成一个区间Z,这样形成包括N区间在内的三个区间X、Y和Z;如果N区间之前没有其它区间,则将N区间命名成X区间,将 N区间之后到((n-1)m,+∝]之前的区间合并成一个区间Y,将((n-1)m,+∝] 区间设为一个区间Z,这样也形成三个区间X、Y和Z;
S128:根据S125步骤数据判断几个主要线、面图层中哪些图层的gi最大值所在区间在步骤S127设定的三个区间X、Y和Z中的哪一个区间范围,在X区间的图层归入C级,在Y区间的图层归入B级,在Z区间的图层归入A级。
上述的一种利用关键比例尺以及类瓦片技术处理矢量图的方法,还可以是,步骤S2中对每一层级进行矩形分块方法为:矩形块长和宽相等,其长度按照下列公式求出:
Figure GDA0002311587690000041
ScreenH为屏幕高度(单位:像素个数)。
上述的一种利用关键比例尺以及类瓦片技术处理矢量图的方法,还可以是,步骤S4中包括如下步骤:
S41:遍列每一层级中落入或首相交于同一矩形块的要素的全部坐标,找出其横坐标最大值Xmax与最小值Xmin以及纵坐标的最大值Ymax与最小值Ymin
S42:求出瓦片的四个角的坐标(Xmin,Ymin)(Xmin,Ymax)(Xmax,Ymin)(Xmax, Ymax),并由下列公式求出瓦片中心点的坐标以及长和宽;
Figure GDA0002311587690000042
瓦片长=|Xmax-Xmin|;
瓦片宽==|Ymax-Ymin|。
上述的一种利用关键比例尺以及类瓦片技术处理矢量图的方法,还可以是,步骤S2中矩形的编号方法为将格网内的一个个小矩形按从左至右,从下至上进行编号,编号初始值从0开始,编号值为十进制数,表示该层级的第多少号网格,编号id=n×y+x,其中,n为总列数且为大于1的正整数,x为第x列,y为第y行,其中x、y都从0开始取值。
上述的一种利用关键比例尺以及类瓦片技术处理矢量图的方法,还可以是,步骤S5中存储模式采用数据库模式。
上述的一种利用关键比例尺以及类瓦片技术处理矢量图的方法,还可以是,步骤S123中阈值r设置为r=INT(n/2),其中INT为取整函数,指不超过实数n/2 的最大整数。
本发明的一种利用关键比例尺以及类瓦片技术处理矢量图的方法,在电子地形图制作软件中打开以及平移和缩放的时候可以明显的提高其反应速度。
附图说明
图1是瓦片与相似小矩形关系图;
图2是相似小矩形编号图;
图3是金字塔模型与数据表数据传输图;
图4是缩放平移调度流程图。
具体实施方式
下面结合实施例详细说明本发明。
本发明的一种利用关键比例尺以及类瓦片技术处理矢量图的方法,其中包括如下步骤:
S1:对矢量图内要素进行分级并对层级命名;
S2:对每一层级进行矩形分块,并进行编号;
S3:求出每一层级的关键比例尺并计算出该层级的显示尺度,然后存储;
S4:确定瓦片并编号,即每一层级中落入或首相交于同一矩形块的要素集合在一块,生成瓦片,瓦片的形状为矩形,大小为其内所有要素外包矩形为准;瓦片的位置由瓦片矩形中心点确定,瓦片序号规则为:
瓦片序号=层级名+对应的矩形编号;
S5:将包括瓦片编号、大小、位置以及图形数据的每个瓦片数据作为一个整体进行存储。
进一步的,步骤S1中对矢量图内要素从高到低分成3级,分别定义为A,B, C级,其按如下步骤实施分级:
S11:点状图层分级;对于大多数是点状物的图层,用点状符号表示,一般在最低显示级别C级内显示;
S12:主要线、面图层分级;根据图层内要素外包矩形大小分布情况,来决定分级级别,一般来说,外包矩形越大,更优先显示,级别也更高;
S13:不常见线面图层分级;按照轮廓范围、略详细物、最详细或不重要物顺序对不常见图层进行分级。
进一步的,步骤S3中按照下列步骤求出每一层级的关键比例尺:
S31:假设存在系数k,使得当在屏幕上的矢量图实体真实长度大于等于 k*0.1mm时,肉眼能够分辨清晰,其中k为正整数;
S32:准备s台不同屏幕大小的配置合格的电脑,选择t幅具有相对完整图层的具有同一绘图比例尺的矢量图样本,其中s,t均为大于2的正整数;
S33:将矢量图样本按分级模型分成多个层级,将每个层级的地图要素分别合并成一幅图形;
S34:调整k值来观察在不同的电脑显示屏幕上每一层级的要素在界面中缩放显示情况,并最终根据清晰度以及冗余度确定出s×t个k值;
S35:统计上述s×t个k值中,相同个数最多的k值确定为步骤S31中的系数k;
S36:利用下面公式求出关键比例尺;
Mi×Ci×Pixelh=ε×k
其中Mi:当前层级显示长度(单位:m);
Ci:当前层级关键比例尺(单位:像素个数/m);
K:像素个数;
ε:人眼最小分辨率,通常为0.1mm;
Pixelh:单位像素物理长度(单位:mm)。
进一步的,步骤S12中按照下列步骤实施:
S121:选取与本矢量图类似的相同比例大小的多幅矢量图;
S122:将每幅图中的要素的外包矩形的长按照固定长度m划分为n个区间,即形成(0-m],(m-2m],(2m-3m],…((n-2)m-(n-1)m],((n-1)m,+∝]共n 个区间,其中m大小按照地图比例以及要素情况进行选取,n为大于1的正整数;
S123:设定阈值r,其中r=2,3,…,n;
S124:分别统计每一幅图中几个主要线、面图层在这n个区间内包含的所有要素外包矩形的长在上述n个区间的百分比hi,其中i=0,1,2,3,…,n-1;
S125:求出多幅图中n个相同区间中的hi的平均值gi,并找出gi最大值所在的区间,然后统计出几个主要线、面图层gi最大值在上述n个区间中的个数fj,其中j=0,1,2,3,…,n,找出个数fj最多的区间为第N个区间并将其个数设为Fj;
S126:利用阈值判断;(1)如果fn=0,则将m值减小一半,转到步骤S122; (2)如果fn≠0且Fj≤r,则进行下一步;(3)如果fn≠0且Fj>r且N不属于 ((n-1)m,+∝]区间,则将N区间划分为两个步长基本相等的区间,这时的n 值加1,转到步骤S124;(4)如果fn≠0且Fj>r且N为((n-1)m,+∝]区间,则将m值加倍,转到步骤S122;
S127:将N区间之前的全部区间合并成一个区间X,将N区间命名成Y区间,将N区间之后的所有区间合并成一个区间Z,这样形成包括N区间在内的三个区间X、Y和Z;如果N区间之前没有其它区间,则将N区间命名成X区间,将 N区间之后到((n-1)m,+∝]之前的区间合并成一个区间Y,将((n-1)m,+∝] 区间设为一个区间Z,这样也形成三个区间X、Y和Z;
S128:根据S125步骤数据判断几个主要线、面图层中哪些图层的gi最大值所在区间在步骤S127设定的三个区间X、Y和Z中的哪一个区间范围,在X区间的图层归入C级,在Y区间的图层归入B级,在Z区间的图层归入A级。
进一步的,步骤S2中对每一层级进行矩形分块方法为:矩形块长和宽相等,其长度按照下列公式求出:
Figure GDA0002311587690000071
ScreenH为屏幕高度(单位:像素个数)。
进一步的,步骤S4中包括如下步骤:
S41:遍列每一层级中落入或首相交于同一矩形块的要素的全部坐标,找出其横坐标最大值Xmax与最小值Xmin以及纵坐标的最大值Ymax与最小值Ymin
S42:求出瓦片的四个角的坐标(Xmin,Ymin)(Xmin,Ymax)(Xmax,Ymin)(Xmax, Ymax),并由下列公式求出瓦片中心点的坐标以及长和宽;
Figure GDA0002311587690000081
瓦片长=|Xmax-Xmin|;
瓦片宽==|Ymax-Ymin|。
进一步的,步骤S2中矩形的编号方法为将格网内的一个个小矩形按从左至右,从下至上进行编号,编号初始值从0开始,编号值为十进制数,表示该层级的第多少号网格,编号id=n×y+x,其中,n为总列数且为大于1的正整数,x为第x列,y为第y行,其中x、y都从0开始取值。
进一步的,步骤S5中存储模式采用数据库模式。
进一步的,步骤S123中阈值r设置为r=INT(n/2),其中INT为取整函数,指不超过实数n/2的最大整数。
下文矢量地图为例来说明,并且以处理矢量地图最常用的AutoCAD软件为例进一步详细说明本发明。
步骤1,矢量地图分级方案设计及地图分级模型构建
(1)标准图层名称配置
对于地形图,本方法以CASS定义的26个标准图层名称为标准图层分类及名称。设计一配置表结构,字段名分别为“原图层名”和“标准图层名”。可以将源矢量图的图层名称提取出来,导入到“原图层名”字段栏中。在“标准图层名”栏将原图层名配置成标准图层名称,将标准图层名称以一维数组形式返回,即可对图层的名称按照标准图层名称重命名。
(2)分级原理与原则的设定
大地形图内容复杂,信息丰富,为避免数据冗余,符号不清晰,对其进行分级显示。地形图要素的分级与地图概括相似,就是将每一类地形图要素按照其用途,以其几何大小或是重要程度为依据将地形图要素分成多个层级。要素的重要性主要表现的地方有:行政等级、要素长短、面积大小与高差间隔。同类要素内部的等级也可不同,不同类别要素间的等级通常也有高低之分。分级原则:1) 图层内要素总体显示重要程度差别不大时尽量划分在同一层级内;
2)分层时要注意保持空间的逻辑连续性;
3)相邻层级间地图流畅切换,不会出现较大的断层;
4)必须保证要素和其具有空间联系的附属物在同一层,比如沟渠与桥梁;
5)有填充区域的对象要附上填充区域,如稻田符号与稻田边界。
特殊图层处理。对于一些内部要素显示等级相差大的图层,不能放在一个层级来显示,需要分成多个图层来分级显示。等高线分为首、计曲线,两者间的间距较大,计曲线显示级别比首曲线更高。对于等高线图层(编号为DGX),需要分割成两个图层,分别编号命为DGX-S,DGX-I。将等高线图层内的首、计曲线分隔开,首曲线实体存入DGX-S里,计曲线实体存入DGX-I中。SXSS图层代表各种水系设施,如湖泊,河流,沟渠,或者水井、池塘、海岸线等,以及水体附属物如涵洞。对于水系,线状水系一般贯穿整幅地形图,构成图形的基本轮廓,比面状水系等级更高。将SXSS分割成图层名SXSS-R线状水系和图层名 SXSS-B面状水系两个图层,将线状水系存入SXSS-R图层中,面状水系放入 SXSS-B图层中。
(3)地图分级模型建立
对于电子地形图,各图层间的重要程度不一样,显示等级也不同,本文对地图的分级以图层为主。CASS定义的26个图层加上本文自定义的特殊图层处理变动的图层总共30个,根据点、线、面状划分如表1所示。
表1标准图层分类表
Figure GDA0002311587690000091
本文采取“三步法”对地理要素以图层划分为主进行分级,分别为点状图层分级、主要线与面图层分级、和不常见线面图层分级。
1)点状图层分级
对于大多数是点状地物的图层,用点状符号表示,一般在最低显示级别内显示。
2)主要线、面图层分级
一般CAD地形图中常见的主要图层有JMD、DLDW、DMTZ、ZBTZ、GXYZ、 DLSS等。
分级方法:根据图层内要素外包矩形大小分布情况,来决定分级级别。一般来说,外包矩形越大,更优先显示,级别也更高。
举例:随机选择五幅至少含有以上几种常见图层的普通1:500地图,将上述地形图中所有要素外包矩形大小(长/宽)以实际长度5m为单位划分七个区间分别为(0,5],(5,10],(10,15],(15,20],(20,25],(25,30],(30,+∝],下文为了表述简单也可能将上述区间写成0-5,5-10,10-15,15-20,20-25,25-30,>30。分别统计这几个图层在这七个区间内包含的所有要素外包矩形最长边在上述七个区间中的百分比hi(i=0,1...,6),最后所有地形图上述相同区间的hi取平均数 gi,即gi=hi÷5,将gi依次填入表2中区间字段下方对应空格处。
表2图层要素外包大小各区间统计表
Figure GDA0002311587690000101
表2各横向对比可知,可知各个图层要素外包大小主要分布在哪个区间内,填入表中主要区间归类字段下。由于处于0-5区间的图层最多为6个,因此将0-5 区间定为N区间,将该个数定为Fj,即Fj=6。由于该区间中非常密集,因此需要对主要在该区间的图层再细划分区间0-3与3-5,用同样方法统计gi大小之后,可以得出0-3之间也有3个图层,3-5之间有3个图层,因此可以将0-3区间定为N区间,这时Fj=3。由于N区间之前没有其它区间因此将N区间定为X区间,由于5-30区间只有一个图层,所以将3-5与5-30合并在一个区间内,定义为Y 区间,30以上有两个图层,因此将其定为Z区间,这样得到这常见图层区间分布情况如表3所示。
表3常见图层区间分布情况表
Figure GDA0002311587690000111
上述中,30以上的区间即Z区间中有两个图层,这两个图层划入A级,3-30 的区间即Y区间有4个图层,这4个图层划入B级,0-3的区间即X区间有3 个图层,这3个图层划入C级。
需要说明的是,由于图层性质的不同,可能需要划分的区间的长度不一致,同时对图层密集程度理解以及需求不一致,因此为了减少人为操作,更多的可用计算机统计,因此可以设置一个阈值r,该阈值决定多少图层分布在某个区间为合理,对于超出阈值的则需要重新划分区间进行统计。对于上述的例子,开始设置的区间长度为5m,这9个图层中处于0-5区间的图层有6个,5-30之间的有1 个,大于30的有2个,其大部分均在0-5区间,说明其设置并不合理,因此上述例子中将0-5区间进行了进一步的划分为0-3与3-5两个区间,重新划分后0-3 区间有3个图层,3-5之间也有3个图层,其分布已经比较合理,因此不再进行重新划分。对于上述,我们可以设置阈值r=5,最开始的时候Fj=6>r,因此需要重新划分区间,而重新划分后阈值Fj=3<r因此不再继续划分区间。阈值的大小与划分的区间个数n有关系,通常可以设置n/3<r<2n/3,更简单的设置可以设置阈值为图层数一半,若图层数为奇数,则其除以2之后再取整,即可以设置 r=INT(n/2),其中INT为取整函数,指不超过实数n/2的最大整数。
如果由上述步骤得出的最后一个区间的图层数为0,即fn=0,则说明区间的划分并不合理,区间步长偏长,因此应当选用更小的区间,这时可以选用原区间步长约一半长度来重新建立区间并重新统计,即原来的区间长度为5m,现在可以选用区间长度为2.5m进行重建区间并统计。
如果上述得出的最后一个区间的图层数不为0,并且最多的图层数也没有在最后一个区间,则在其他区间中找出N区间,再用阈值进行判断,如果Fj≤r,则说明区间分配比较合理。
如果上述得出的最后一个区间的图层数最多,即最后一个区间为N区间,则说明区间步长偏小,因此应该选用更长步长的区间,通常可以将其步长加倍。
本文中为了陈述方便,选用了区间步长的说法,该说法并不是严格的数学概念,本文中所谓区间步长表示区间中前后两个数字的差(不分开区间和闭区间),反应了区间的长短,比如(0,5)区间的步长为5-0=5。
3)不常见线面图层分级
根据前两步分级,按照轮廓范围、略详细地物、最详细或不重要地物顺序显示等级原则可以大致分为三大层级A、B、C,划分等级由高级到低级开始,层级标识号以大写字母A为最高显示级别,每下一层级的的标识号的比上一级的大一位,显示级别比上一级低一级。
根据本文2.1.2节定义的分级原理与原则,将剩下的不常见线面图层进行分级。JJ表示整个区域间的界限,是行政划分,应该处于最高级A;TK与DLSS 表示一幅地图的轮廓,应该在最高级别显示。DMTZ统计时因为去掉了块参照所以一些区域填充物没有统计,另外该图层表示要素是属于详细地物,应列于B 级中,同样DLJ与DMTZ类似地物列入B级。由于等高(深)线比较密集,加载不方便,等高距一般为1m,可以将DGX-S、DSX-S列入C级,DGX-I、DSX-I 列入B级。注记类图层和点状符号可以看作一个点列入最低显示级C中。对于 CAD里系统默认的0图层,含有不重要的要素,一般是辅助要素,可以列入在最低显示级C中。由此建立分级模型表4,其中显示长度为划分层级的右区间外包矩形大小。
表4地形图分级模型
Figure GDA0002311587690000121
步骤2,基于LOD的多尺度模型构建
LOD技术最原始是应用于计算机中来简化三维模型,后来将LOD技术应用到电子地图上的思想是:在不同缩放比例尺的视图下,视点越远,人体视觉获得的要素越模糊,只需要显示较粗略的图形;视点越近,获得的要素越清晰,这时需要更详细的图形。地图的多尺度显示方法有两种,第一种是建立多尺度模型存储多尺度相关信息来实现,第二种是地图的自动综合。对于地形图利用自动综合难以实现,第一种方法利用LOD思想,将一幅地形图按照地图内容的显示级别进行分层,通过放大显示区域,展现更高层级的要素,缩小显示区域,详细要素不再显示,保留更低级的层级要素。
(1)屏幕窗口像素大小
每个显示设备的屏幕窗口大小是不变的,它的宽与高以像素个数为单位,像素坐标系的坐标系原点在屏幕左上角,其与WCS坐标系(x,y)的左下角为原点不一样。可先求出一个视图窗口的范围,即其左下角、右上角两个点的投影坐标即 (x,y)坐标,然后用Editor.PointToScreen方法将视图内的WCS坐标转换为当前屏幕坐标,即可求出屏幕窗口大小。PointToScreen有两个参数,第一个参数是要转化的WCS坐标,另一个是当前视图的编号,可以用"CVPORT"参数获得,如下所示:
Autodesk.AutoCAD.ApplicationServices.Application.GetSystemVariable("CVP ORT")。
求屏幕窗口大小算法如下:
第1步:求一个视图的左下角ptmin和右上角ptmax坐标;
第2步:利用PointToScreen方法求对应的屏幕左下角Screenpt1坐标与右上角Screenpt2坐标;
第3步:屏幕显示高度像素值ScreenH=Math.Abs(Screenpt1.Y– Screenpt2.Y)。
(2)关键比例尺
随着电子图在屏幕中的无极缩放,比例尺发生改变。根据人眼的视觉感受及分辨能力,当缩小到一定程度时,数据出现冗余,变得不清晰,要将不需要的图形数据清除,这时的比例尺通常称为关键比例尺。每一层级,都有一相对应的关键比例尺。
地形图矢量金字塔模型的每层级是否在AutoCAD中显示的关键比例尺,关键是确定视图拉伸的高或宽达到多大值时,需要进行图形要素增减。不同屏幕窗口大小,要达到关键比例尺的视图拉伸长宽的值又会发生变化。因此,关键比例尺与屏幕窗口大小和当前视图窗口大小有关,可以定义视图比例尺为屏幕窗口大小与当前视图窗口大小高度之比,如公式(2)所示Criscale(单位:像素个数/ 米)。
CriScale=ScreenH/VtH (1)
其中:ScreenH为屏幕高度(单位:像素个数);VtH为视图需要进行图形要素的增减时的当前视图高度(单位:m)。
其中:ScreenH为屏幕高度;VtH为视图需要进行图形要素的增减时,当前视图高度。
(3)多尺度显示模型
显示尺度:在两个关键比例尺之间,进行缩放时,显现的内容即要素数目、种类保持不变,即不需要调度新一级图块展现,也不需要删除旧图块要素,屏幕内容依然清晰,不出现冗余。
多尺度显示模型由多个显示尺度组成,组成模型的每一个节点为关键比例尺。多尺度模型为{C1,C2,…Ck,…,Cn},其中Ci为关键比例尺,[C1,C2],[C2,C3]就是显示尺度,n为地形图分级的层数。利用该模型,缩放屏幕,调用当前显示尺度所对应的层级的图形要素。
随着视图缩放比例尺变化,每一层级的显示长度真实显示在屏幕上的物理长度也在改变。根据瑞利判据,由于人眼在正常情况下可以清晰地分辨0.1mm大小长度。设想,若当前层级的显示长度显示在CAD窗口上的物理长度达到人眼最小辨识尺度时,则该层级的瓦片显示在屏幕上。由于本发明面向的对象是矢量地形图,在屏幕上观看目标的距离会不一样,以及地图各要素间的联系,单以人眼分辨的最小尺度,不能作为分辨屏幕上的地图内要素的分辨率。假设存在系数 k,使得当在屏幕上的地形图实体真实长度大于等于k*0.1mm时,肉眼能够分辨清晰。由分级模型已知各层级的显示长度,根据下列公式(3)可以得出各关键比例尺与屏幕要素可识别的关系。
Mi×Ci×Pixelh=0.1×k (2)
Mi:当前层级显示长度(单位:m),如表4所示,为划分层级的右区间外包矩形大小,要表达在图上的该层级大部分要素真实地理长度;
Ci:当前层级关键比例尺;
Pixelh:单位像素物理长度(单位:mm)。
Pixelh的确定:由于显示设备不一样,像素大小也没有统一的规定。若已知屏幕的物理尺寸和像素,可以进而求得单位像素物理大小。然而如果随着显示器的改变,根据屏幕的参数由人工进行设定效率太低。可以通过Window的API 来求得像素的大小,调用GetDC函数获取显示设备上下文环境的句柄,通过函数GetDeviceCaps根据指定参数值来获得相关设备的尺寸描述信息。单位像素物理长度可以根据屏幕的物理高度与垂直方向像素数之比,或屏幕的物理宽度与水平方向像素数之比计算得出,如公式(4)所示。
Pixelh=ScreenH/ScreenYN (3)
其中,ScreenYN为屏幕垂直方向的像素数。
通过DllImport关键字将非托管动态库"user32.dll"与"gdi32.dll"引用到C#程序里来定义如下函数。
[DllImport("user32.dll")]//引入user32.dll
static extern IntPtr GetDC(IntPtr ptr);
[DllImport("gdi32.dll")]
static extern int GetDeviceCaps(
IntPtr hdc,//handle to DC
int nIndex//index of capability);
式(3)中的k值实验研究实验方法举例:准备5台不同屏幕大小的配置合格的电脑,选择5幅拥有相对完整图层的具有同一绘图比例尺1:500的地形图。将 5×5地形图样本按地图分级模型分成多个层级,将每个层级的地图要素分别合并成一幅图形。然后通过调整k值来观察每一层级的要素在屏幕中调度显示情况,由于微调k值大小不能引起前后显示效果之间的明显变化,所以以10为单位调整,则k=10*n,n=1,2,3,...,如果此时正好满足屏幕显示需求,则此k值为最佳系数。
设置一个非模态窗口,用于根据实验的满意度随时调整n值,设计一个调度层级地图显示在屏幕上的开关,通过视觉感知来获得当前n值系数下各层级内要素的显示情况(清晰度、冗余度)最终确定系数n值,主要实验步骤所示如下:
填入n值,点击“确定”按钮,首先调度最高显示级A层的所有要素。利用人眼视觉感知判断该图形内要素是否清晰易读。适当缩小出现数据冗余,要素模糊;适当放大时要素间间距足够大,需要再补充要素以填补当前视图空洞,满足用户需求。
点击“下一层”按钮,用相同方法查看其他层的显示情况。
所有屏幕最终最佳显示效果与地形图相适应的n值如表5所示。
表5屏幕与地形图相适应的n值
Figure GDA0002311587690000151
根据表5中的n值结果,统计各个值的个数,从上可以可看出n值最常取值为3或附近的数,因此n的最理想取值为3,因此k=30。
根据效果对比得出合适n值之后,可进一步由公式(3)以及表4的显示尺度,求得各层级的关键比例尺Ci=3/(Mi*Pixelh),建立多尺度显示模型如表6所示,则在屏幕大小确定下,根据公式(2)视图比例尺对应VtH也可求得。A层级的显示级别最高,可在地图加载初始化时显示A层瓦片数据,可定义其关键比例尺为0,表示地图初始化的最初层,在任何时候显示窗口范围内的该层瓦片数据都需显示出。
表6显示尺度表
Figure GDA0002311587690000161
根据表6所示,则该多尺度模型为{0,1/(10*Pixelh),1/Pixelh}。
步骤3,基于类瓦片技术的地图分块
(1)类瓦片技术
矢量地理数据的放大缩小不同于影像数据采用重采样方法,从高分辨率影像重采样生成低分辨率影像数据,即在金字塔里从层级高的瓦片数据经过重采样生成更低一层级的瓦片,矢量图每级都是不同的图形数据,每层之间的图形数据没有重叠。影像数据分块形状可以是三角形,正方形或者是六边形等,较普遍用的是正方形,因为正方形结构简单,可以对影像图划分成有规则的正方形,用这种模型很容易用程序实现自动分块。矢量地图由于要保证矢量数据的完整性,依据多级比例尺将地图进行分级,每级分割成一定数量同等大小瓦片来构成矢量金字塔。如果直接采用规则图形分割,会破坏其完整性,后期图幅拼接非常耗时,而且难以复原。基于此,本发明提出一种类瓦片技术,它采用类似于瓦片技术,采用不规则矩形分割DWG地形图的思想。所谓的不规则矩形分割地形图,是将整个地形图范围内的所有完整的对象生成独立图块,保存到一幅图形文件中,假设图块间不会产生重叠,然而,很难找到这样不规则图形作为模型,使其适用于对地形图各个分块中。可以将地形图每个层级要素所组成的图形按一定长和宽建立格网,可知,该层级所有要素都落入单元网格中或与其相交。将这些落入或首相交同一单元网格的要素集合在一块,生成类瓦片,即本发明提出的所谓“相似小矩形”。其中所谓首相交意思为在与要相交的单元格,取离要素起始点坐标最近的单元格,即为首相交该单元格,即该单元格首相交此要素。利用类瓦片技术生成瓦片步骤有:相似小矩形的分割与编号、瓦片的编码、瓦片内容填充及要素编码、矢量瓦片文件生成。
(2)相似小矩形
由于矢量瓦片需保证其内部实体的完整性,其瓦片的大小很难确定,因此提出相似小矩形(Similar small rectangle,简称SSR)概念:对当前层级的覆盖范围以一定长与宽均匀划分m*n个网格,每个网格所包含的要素形成一小矩形,按“一对一”原则,每个矩形对应一个瓦片(block),小矩形就是相对应瓦片的相似小矩形;然后判断要素是否与这些小矩形相关(包含于或首相交于小矩形);最终将这些与同一个小矩形相关的实体要素组合生成一瓦片。这些瓦片的大小不固定,它随着每个相似小矩形包含的要素外包矩形大小而变化,但是位置范围与格网的位置大小相关,即瓦片与其对应的SSR是相似的。如图1所示,当前格网划分为四个网格即四个相似小矩形分别为0、1、2、3号,其中0号相似小矩形中包含两个要素,其全部落入小矩形0中,因此瓦片0号对应的为小矩形 0号,瓦片0号大小为这两个要素外包矩形,其位置以该外包矩形中心点为准确定;而3号相似小矩形包含一个要素并与两个要素首相交,因此瓦片3 号对应的为3号小矩形,其大小为该3个要素外包矩形,其位置以外包矩形中心点为准。瓦片之间互不重叠。
瓦片的大小和位置可以通过如下方式确定:遍列每一层级中落入或首相交于同一矩形块的要素的全部坐标,找出其横坐标最大值Xmax与最小值Xmin以及纵坐标的最大值Ymax与最小值Ymin;然后求出瓦片的四个角的坐标(Xmin,Ymin) (Xmin,Ymax)(Xmax,Ymin)(Xmax,Ymax),并由下列公式求出瓦片中心点的坐标以及长和宽;
Figure GDA0002311587690000171
瓦片长=|Xmax-Xmin|;
瓦片宽==|Ymax-Ymin|。
(3)瓦片的编码
将格网内的一个个小矩形按从左至右,从下至上进行编号,编号初始值从0 开始,编号值为十进制数,表示该层级的第多少号网格,编号id=n*y+x。其中,n为总列数,其取值为大于1的正整数,而x表示为第x列,y表示为第y 行,都从0开始取值如图2所示。
本发明利用层级名与瓦片对应的相似小矩形所在的层级范围内的序号,将每层瓦片进行编码如公式(5)所示,其中的瓦片序号与其对应的相似小矩形的编号相同。
Blockid=层级名+瓦片序号 (5)
瓦片的内容填充算法。Step1:遍历当前层级所有的实体;Step2:求实体所在的该层行列号m,n;Step3:根据step2选择与该实体外包矩形首相交的相似小矩形;Step4:将该实体添加入该相似小矩形对应的瓦片中;Step5:如果有实体剩余,返回至Step2,否则结束。
瓦片内要素编码。现行国家标准《基础地理信息要素分类与代码》(GB T13923-2006)将地理信息分为几大类,每一类都有一个要素编码。此外,要素编码可以对同一瓦片的所有要素进行标识编码,增加所属层级ID和所属瓦片ID 两个拓展属性。可以用这两个拓展属性来索引相关瓦片或层级内的要素,方便在 CAD操作内对其管理,如清除某一瓦片的所有要素。对CAD地形图添加要素编码,可以利用扩展属性xdata进行存储,添加每一组拓展属性都需要将注册的应用程序名为第一个属性值,后期可以根据其来管理这组拓展属性。通过appname, LevelID,BlockID这三个值生成TypedValue数组,来实现ResultBuffer对象,即 xdata值。
矢量瓦片DWG文件的生成。新建CAD有模板数据库,将矢量瓦片包含的实体插入其模型块表记录中,再保存到本地文件夹里,瓦片文件名为blockid.dwg。如果瓦片内没有数据,则移除该瓦片,不生成本地文件。通过GetObject方法获取数据库里的块表及块表记录;接着,往数据库里添加内容,用 WblockCloneObjects方法将所有瓦片实体的Objectid浅度克隆到新建数据库的块表记录中;最后,SaveAs方法将新建的数据库保存到本地文件夹中,生成格式为.dwg的瓦片文件。
(4)SSR分割大小
对各层级内图形根据格网划可分成若干个等大小的相似小矩形。由于相似小矩形的大小直接与其对应的瓦片大小成正相关,若SSR太大,则瓦片也相对很大,消耗内存,影响效率,则对大地形图的分割失去了意义。若SSR太小,则生成的瓦片的个数也很多,这对于大量瓦片的管理也不易;同时,调度瓦片的次数也大大增多,图形操作软件CAD与后台数据库的交互将很频繁。因此,要合理地划分SSR。
当展示某一层级实体时,屏幕显示区域内显现图形,区域外不显示。为了减少实体的读取量,最好读取的实体为屏幕显示区域需要显现的实物。同时为了小幅度地平移地图时,当前视图空白处需要及时地更新数据,因此,分块大小应该尽量不大于屏幕区域当前比例尺下视图范围。若是瓦片过小,生成的瓦片数量庞大,数据不方便维护管理。很可能有大量的瓦片内容并不多,即要素稀少。视图范围稍微改变就需调度瓦片更新地图,无疑会大量消耗内存,影响效率。
每一层级的BlockWidth(相似小矩形宽)值互不相同,随着层级递进(以 A-B-C顺序),视图放大,视点离得越近,BlockWidth越小。因此,BlockWidth 值与层级的关键比例尺有关。基于此,由于瓦片大小是由其相似小矩形来决定的,本方法划定显示区域至少由两幅瓦片来填充。根据一般屏幕区域高度值比宽度值小很多的情况,可以横铺两块瓦片,本方法将当前屏幕显示区域高度值VtH定义为BlockWidth,为SSR的长与宽,即等长宽切割当前层级范围来划分相似小矩形。BlockWidth=VtH。
由多尺度模型和关键比例尺CriScale公式可以得出各层级瓦片分割大小即 SSR大小,即可以用BlockWidth=ScreenH/Ci求出SSR大小,但由于A层级的关键比例尺C1=0,因此对于A层级需要另行设定。我们知道,A层级SSR要比B层级的大,这里可以设为其2倍,求出B层级的SSR大小后,就可以求出 A层级的SSR大小,如表7所示,其中ScreenH屏幕显示窗口是一个不定值, Pixelh像素大小也是个不定值,一般屏幕显示器变化,其值可能会变化。
表7各层级SSR大小分布表
Figure GDA0002311587690000191
步骤3,基于DWG地形图金字塔模型设计
金字塔模型常用于栅格影像中构成影像金字塔结构,结构模型中的“分层”是根据采样自底而上生成金字塔,对于过大的原影像图幅,对每层级的影像采用分块技术,进行分块组织,这种金字塔称作瓦片金字塔模型。DWG地形图金字塔模型与普遍应用的影像金字塔模型不同,分级方法与分块组织也不一样。根据本方法中构建出的地形图分级模型与多尺度模型,以及层级分块组织,可以构建出用于DWG地形图的矢量金字塔模型。矢量金字塔模型由索引数据和图形数据文件组成。
(1)金字塔模型构建算法
Step1:根据本方法构建的地图分级模型对DWG地形图进行分级划分;
Step2:对每一层级根据本方法的SSR原理进行分块组织处理;
Step3:获取每层的分块大小、关键比例尺、每层的属性BlockID以及 BlockMBR,生成矢量瓦片文件;
Step4:将所有的矢量瓦片存入到本地文件夹或数据库中。
(2)存储模式
模式一:将金字塔模型生成文件,存入本地文件夹中。这种操作方式简单方便,通过索引文件利用索引直接读取数据文件中的数据,再通过偏移量获取所需的层级瓦片。然而该模型有很大局限性,不便管理。
模式二:将金字塔模型所有的数据存入到数据库中。根据金字塔模型结构,将数据存入到数据库中,利用数据库,方便对数据的增、删管理,数据查询、更新效率明显提高而且访问速度更快。除此之外,放入数据库中相对于放入本地磁盘中更安全,避免了数据的误删与泄漏。
基于这两个模式的优缺点,为了方便本方法实现完整地形图分割成的瓦片数据在CAD中的调度管理操作这一目的,将设计好的DWG地形图金字塔模型里的图形数据和索引数据存入数据库中。
步骤4,数据库搭建与数据表设计及瓦片数据插入
Postgresql是目前功能最强大、最复杂、支持数据类型更多的一种开源数据库系统,PostGIS插件与Postgresql的配合很好地补充了对空间对象的查询、修改、索引功能与Oracle的Spacial类似。
(1)数据库的连接。可利用Npgsql组件来访问Postgresql数据库。实现连接数据库方法类,可在C#语言中将Npgsql组件里的名为Npgsql、Mono.Security 两个类库添加到obj文件夹中,引用Npgsql.dll类库,即可利用Npgsql里的API。这里要注意的是Npgsql版本需与工程项目里用的.NET版本不发生冲突。连接数据库参数见表4.2,通过设计一个窗体,填入参数生成连接数据库的字符串,可以创建一个连接对象NpgsqlConnection即可打开指定数据库。
表7数据库连接参数表
Figure GDA0002311587690000201
为了保存用户的连接数据库参数信息,以免用户下次登录重新输入参数。一般用xml文档进行保存,创建一个XML文档结构如下:
<appSettings>
<add key="Server"value="">
</add>
<add key="Port"value="">
</add>
<add key="UserID"value="">
</add>
<add key="Password"value="">
</add>
<add key="Database"value="">
</add>
</appSettings>
读取xml文件代码并修改里面的属性值代码如下:
XmlDocument xdoc=new XmlDocument();
xdoc.Load(strFileName);
XmlNodeList nodelist=xdoc.GetElementsByTagName("add");
for(int k=0;k<nodes.Count;k++)
{
XmlAttribute xattr=nodelist[k].Attributes["key"];
//通过“key”指引赋值元素中的内容字段
nodelist[k].Attributes["value"].Value=Dic[xattr.Value];
break;
}
xdoc.Save(strFileName);
新建数据库。SQL命令如下:
CREATE DATABASE mydatabase WITH
[TEMPLATE=postgis_21_sample]
(2)数据表设计
将目标矢量地形图存入到数据库中,需按照DWG地形图金字塔模型对地形图分层分块,将瓦片存入到数据库中。该模型中每一数据块都存为数据库表里的一条记录,这条记录有多个字段,用来记录该对应瓦片的属性数据与图形数据。将该矢量图分级分块成的所有瓦片图块存入一张表中,该表结构如表8所示。
表8目标图形数据的数据表
Figure GDA0002311587690000211
新建数据表sql语句如下:
string command="CREATE TABLE"+tablename+"(BlockID VARCHAR(36)PRIMARYKEY,BlockMBR Box2D,LevelID VARCHAR(36),Image Text);"
然后按照DWG地形图金字塔模型,将地形图分级分块后的瓦片图形数据及属性索引数据存入到DWG地形数据库的数据表中,如图3所示。
上面说明已经详细的说明了本方法中如何利用关键比例尺以及类瓦片技术进行处理矢量图的方法,在实际使用过程中存在对已经存在的按照本发明处理过的矢量图进行调度的问题,下面进一步简单说明如何进行调度已经按照本发明处理的矢量图。
在CAD界面内,要想实现对图形数据的实时调度,需要不断触发一个事件。当对CAD窗口进行缩放、平移时,视图会发生变化,可以触发已注册的Document 类ViewChanged事件来调用处理方法。
获取操作的文档,当缩放或移动视图时,会触发该文档的ViewChanged事件,来调用调度瓦片的方法,最终将瓦片在窗口内显示出来,总的流程如图4 所示。
1)缩放调度
对视图进行放大缩小,改变视点的远近距离,显示比例尺也发生变化,当放大到一定程度时,需要额外调度更低显示层级的瓦片数据,来满足用户需要;当缩小到一定程度时,当前显示要素变得模糊不清,因此需要将低等级的瓦片数据不显示。实现缩放调度函数算法如下:
Step1:判断视图宽或高是否变化,若是,进行Step2。若否,返回。
Step2:计算当前视图viewtbr的比例尺ScreenH/viewtbr.Height,若小于当前层级的更低级显示比例尺,则为放大操作,从数据库中调度显示下一级对应的窗口范围图块;若大于当前层级的显示比例尺,则判定为缩小操作,删除已显示在窗口中当前层级所有图块。
2)平移调度
平移当前地图,视图位置会发生改变,当前的图形已经偏离了显示区域内,不能满足浏览地图所需要的要素,因此,需要根据当前的新显示区域调度相关的瓦片来进行显示。
(1)位移阈值设置
当不断平移视图时,不断计算当前视图尺度,CAD不断与后台交互,消耗内存,影响速度,特别是小幅度平移地图。因此,需要设置一个平移的位移阈值,来决定是否需要调度瓦片,即只有超过该阈值,才计算调度瓦片。
本发明阈值根据瓦片的相似小矩形大小(BlockWidth)来设定。阈值设为BlockWidth/2,当前视图中心点距离上一次需要进行调度地图计算的视图中心点水平位移或垂直位移超过该阈值时,进行判断是否需要调度瓦片。
(2)平移调度算法
Step1:先获取当前视图的尺度值,根据显示尺度模型定位到对应的层级;
Step2:获取显示区域的范围,求与范围相交或包含的所有对应层级瓦片;
Step3:判断瓦片是否在显示区域中,若不存在则判断是否在缓存区中;是则直接调用到CAD中,若不存在,则根据本发明建立的二级索引查询索引语句从数据库获取瓦片到缓存区,然后从缓存区中调用到CAD中。对于不在显示区域内已经加载的瓦片应当清除。
缓存区中未正被调用的瓦片,是先前在CAD里从数据库中索引导出,然后调度显示完成的,由于该瓦片不需要显示出,所以被释放,但依然还保存在缓存区里。当本次对地图在CAD中的操作完成后,应当删除缓存区的文件,以防下次操作时将已经存在于缓存区的文件再次导入到CAD中。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

Claims (8)

1.一种利用关键比例尺以及类瓦片技术处理矢量图的方法,其特征在于:其中包括如下步骤:
S1:对矢量图内要素进行分级并对层级命名;
S2:对每一层级进行矩形分块,并进行编号;
S3:求出每一层级的关键比例尺并计算出该层级的显示尺度,然后存储;
S4: 确定瓦片并编号,即每一层级中落入或首相交于同一矩形块的要素集合在一块,生成瓦片,瓦片的形状为矩形,大小为其内所有要素外包矩形为准;瓦片的位置由瓦片矩形中心点确定,瓦片序号规则为:
瓦片序号=层级名+对应的矩形编号;
S5:将包括瓦片编号、大小、位置以及图形数据的每个瓦片数据作为一个整体进行存储;
其中步骤S3中按照下列步骤求出每一层级的关键比例尺:
S31:假设存在系数k,使得当在屏幕上的矢量图实体真实长度大于等于k*0.1mm时,肉眼能够分辨清晰,其中k为正整数;
S32:准备s台不同屏幕大小的配置合格的电脑,选择t幅具有完整图层的具有同一绘图比例尺的矢量图样本,其中s,t均为大于2的正整数,其中完整图层指具有步骤S1中全部层级的图层;
S33:将矢量图样本按分级模型分成多个层级,将每个层级的地图要素分别合并成一幅图形;
S34:调整k值来观察在不同的电脑显示屏幕上每一层级的要素在界面中缩放显示情况,并最终根据清晰度以及冗余度确定出s×t个k值;
S35:统计上述s×t个k值中,相同个数最多的k值确定为步骤S31中的系数k;
S36:利用下面公式求出关键比例尺;
Mi×Ci×Pixelh= ℇ×k;
其中Mi:当前层级显示长度,单位为m;
Ci:当前层级关键比例尺,单位为像素个数/m;
K:像素个数;
ℇ:人眼最小分辨率,设定为0.1mm;
Pixelh:单位像素物理长度,单位为mm。
2.如权利要求1所述的一种利用关键比例尺以及类瓦片技术处理矢量图的方法,其特征在于:步骤S1中对矢量图内要素从高到低分成3级,分别定义为A,B,C级,其按如下步骤实施分级:
S11:点状图层分级;对于点状物的图层,用点状符号表示,在最低显示级别C级内显示;
S12:主要线、面图层分级;根据图层内要素外包矩形大小分布情况,来决定分级级别,外包矩形越大,更优先显示,级别也更高;
S13:不常见线面图层分级;按照轮廓范围、略详细物、最详细或不重要物顺序对不常见图层进行分级。
3.如权利要求2所述的一种利用关键比例尺以及类瓦片技术处理矢量图的方法,其特征在于:步骤S12中按照下列步骤实施:
S121:选取与本矢量图类似的相同比例大小的多幅矢量图;
S122:将每幅图中的要素的外包矩形的长按照固定长度m划分为n个区间,即形成(0-m],(m-2m], (2m-3m], …((n-2)m-(n-1)m] ,((n-1)m,+∝]共n个区间,其中m大小按照地图比例以及要素情况进行选取,n为大于1的正整数;
S123:设定阈值r,其中r=2,3,…,n;
S124:分别统计每一幅图中几个主要线、面图层在这n个区间内包含的所有要素外包矩形的长在上述n个区间的百分比hi,其中i=0,1,2,3,…,n-1;
S125:求出多幅图中n个相同区间中的hi的平均值gi,并找出gi最大值所在的区间,然后统计出几个主要线、面图层gi最大值在上述n个区间中的个数fj,其中j=0,1,2,3,…,n,找出个数fj最多的区间将其设定为N区间并将其个数设为Fj;
S126:利用阈值判断;(1)如果fn=0,则将m值减小一半,转到步骤S122;(2)如果fn≠0且Fj≤r,则进行下一步;(3)如果fn≠0且Fj>r且N不属于((n-1)m,+∝]区间,则将N区间划分为两个步长相等的区间,这时的n值加1,转到步骤S124;(4)如果fn≠0且Fj>r且N为((n-1)m,+∝]区间,则将m值加倍,转到步骤S122;
S127:将N区间之前的全部区间合并成一个区间X,将N区间命名成Y区间,将N区间之后的所有区间合并成一个区间Z,这样形成包括N区间在内的三个区间X、Y和Z;如果N区间之前没有其它区间,则将N区间命名成X区间,将N区间之后到((n-1)m,+∝]之前的区间合并成一个区间Y,将((n-1)m,+∝]区间设为一个区间Z,这样也形成三个区间X、Y和Z;
S128:根据S125步骤数据判断几个主要线、面图层中哪些图层的gi最大值所在区间在步骤S127设定的三个区间X、Y和Z中的哪一个区间范围,在X区间的图层归入C级, 在Y区间的图层归入B级, 在Z区间的图层归入A级。
4.如权利要求1所述的一种利用关键比例尺以及类瓦片技术处理矢量图的方法,其特征在于:步骤S2中对每一层级进行矩形分块方法为:矩形块长和宽相等,其长度按照下列公式求出:
矩形块长=
Figure 262821DEST_PATH_IMAGE001
,ScreenH为屏幕高度(单位:像素个数)。
5.如权利要求1所述的一种利用关键比例尺以及类瓦片技术处理矢量图的方法,其特征在于:步骤S4中包括如下步骤:
S41:遍列每一层级中落入或首相交于同一矩形块的要素的全部坐标,找出其横坐标最大值Xmax与最小值Xmin以及纵坐标的最大值Ymax与最小值Ymin
S42:求出瓦片的四个角的坐标(Xmin,Ymin)(Xmin,Ymax)(Xmax,Ymin)(Xmax,Ymax),并由下列公式求出瓦片中心点的坐标以及长和宽;
中心点坐标=
Figure 203095DEST_PATH_IMAGE002
瓦片长=
Figure 195322DEST_PATH_IMAGE003
瓦片宽==
Figure 828429DEST_PATH_IMAGE004
6.如权利要求1所述的一种利用关键比例尺以及类瓦片技术处理矢量图的方法,其特征在于:步骤S2中矩形的编号方法为将格网内的一个个小矩形按从左至右,从下至上进行编号,编号初始值从0开始,编号值为十进制数,表示该层级的第多少号网格,编号id= n×y + x,其中,n为总列数且为大于1的正整数,x为第x列,y 为第y行,其中x、y都从0开始取值。
7.如权利要求1所述的一种利用关键比例尺以及类瓦片技术处理矢量图的方法,其特征在于:步骤S5中存储模式采用数据库模式。
8.如权利要求3所述的一种利用关键比例尺以及类瓦片技术处理矢量图的方法,其特征在于:步骤S123中阈值r设置为r=INT(n/2),其中INT为取整函数,指不超过实数n/2的最大整数。
CN201810454271.2A 2018-05-14 2018-05-14 一种利用关键比例尺以及类瓦片技术处理矢量图的方法 Active CN108647336B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810454271.2A CN108647336B (zh) 2018-05-14 2018-05-14 一种利用关键比例尺以及类瓦片技术处理矢量图的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810454271.2A CN108647336B (zh) 2018-05-14 2018-05-14 一种利用关键比例尺以及类瓦片技术处理矢量图的方法

Publications (2)

Publication Number Publication Date
CN108647336A CN108647336A (zh) 2018-10-12
CN108647336B true CN108647336B (zh) 2020-06-19

Family

ID=63755031

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810454271.2A Active CN108647336B (zh) 2018-05-14 2018-05-14 一种利用关键比例尺以及类瓦片技术处理矢量图的方法

Country Status (1)

Country Link
CN (1) CN108647336B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109753546A (zh) * 2018-11-13 2019-05-14 北京码牛科技有限公司 矢量地图生成方法、装置、电子设计及计算机可读介质
CN110264542B (zh) * 2019-05-29 2023-09-05 浙江中控信息产业股份有限公司 在线绘制地图海量线的方法
CN110706341B (zh) * 2019-09-17 2021-03-30 广州市城市规划勘测设计研究院 一种城市信息模型的高性能渲染方法、装置及存储介质
CN110865750B (zh) * 2019-10-09 2021-04-30 成都中科合迅科技有限公司 瓦片地图的无极缩放显示方法
CN110990512B (zh) * 2019-11-29 2021-06-29 农业农村部规划设计研究院 矢量要素与行政区域全覆盖检查的方法和装置
CN111259105B (zh) * 2020-02-10 2023-09-01 中国神华能源股份有限公司神朔铁路分公司 地图显示方法、装置、系统和存储介质
CN111914046B (zh) * 2020-07-14 2023-02-03 北京世纪国源科技股份有限公司 标的坐落图的生成方法、装置及计算机设备
CN111986152B (zh) * 2020-07-17 2024-03-15 南京航空航天大学 一种数字图像相关变形测量数据处理时长预测方法
CN112687007B (zh) * 2020-12-22 2023-09-08 北斗伏羲信息技术有限公司 一种基于lod技术的立体网格图生成方法
CN112966041B (zh) * 2021-02-02 2024-04-26 苍穹数码技术股份有限公司 数据处理方法、装置、设备及存储介质
CN112907486B (zh) * 2021-03-18 2022-12-09 国家海洋信息中心 一种基于深度学习和色彩映射的遥感影像调色方法
CN113538468B (zh) * 2021-09-07 2022-01-25 成都国星宇航科技有限公司 基于svg格式构建高清卫星地图矢量切片的方法及装置
CN116612207B (zh) * 2023-04-12 2024-01-09 北京龙软科技股份有限公司 一种露天矿区矢量图件空间点要素注记抽稀方法和系统
CN116610746A (zh) * 2023-07-17 2023-08-18 南京壹波云信息科技有限公司 一种基于WebGIS的气象格点数据分片展示方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103488760A (zh) * 2013-09-26 2014-01-01 中国测绘科学研究院 地理信息瓦片服务的提供方法及实现该方法的装置
CN105022818A (zh) * 2015-07-08 2015-11-04 纪兴瑞 瓦片图存储及加载方法
CN106599025A (zh) * 2016-10-25 2017-04-26 中国电力科学研究院 一种基于数据交换格式的矢量数据切片方法及系统
CN106940730A (zh) * 2017-03-29 2017-07-11 武大吉奥信息技术有限公司 一种动态服务和瓦片服务的无缝集成方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103488760A (zh) * 2013-09-26 2014-01-01 中国测绘科学研究院 地理信息瓦片服务的提供方法及实现该方法的装置
CN105022818A (zh) * 2015-07-08 2015-11-04 纪兴瑞 瓦片图存储及加载方法
CN106599025A (zh) * 2016-10-25 2017-04-26 中国电力科学研究院 一种基于数据交换格式的矢量数据切片方法及系统
CN106940730A (zh) * 2017-03-29 2017-07-11 武大吉奥信息技术有限公司 一种动态服务和瓦片服务的无缝集成方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
瓦片式电子海图图片生成与编码分析;丁振国;《船海工程》;20120831;第158-160页 *

Also Published As

Publication number Publication date
CN108647336A (zh) 2018-10-12

Similar Documents

Publication Publication Date Title
CN108647336B (zh) 一种利用关键比例尺以及类瓦片技术处理矢量图的方法
CN108664619B (zh) 一种类瓦片技术的海量线划地形图本原存储与调度方法
de By et al. Principles of geographic information systems
US5030117A (en) Digital global map generating system
EP0436263B1 (en) Electronic global map generating system
US6781599B2 (en) System and method for visualizing massive multi-digraphs
Pajarola et al. Survey of semi-regular multiresolution models for interactive terrain rendering
US20070262988A1 (en) Method and apparatus for using voxel mip maps and brick maps as geometric primitives in image rendering process
Hwa et al. Real-time optimal adaptation for planetary geometry and texture: 4-8 tile hierarchies
JPH11195132A (ja) テクスチャマッピング用バッファ、3次元グラフィクス処理装置、3次元グラフィクス処理システム、3次元グラフィクス処理方法および処理プログラムが記憶された記憶媒体
JPH09190541A (ja) 画像マップデータ構造対話方法
EP1756521A2 (en) Method for encoding and serving geospatial or other vector data as images
Van Oosterom The reactive-tree: A storage structure for a seamless, scaleless geographic database
CN101908202A (zh) 一种电子海图的快速显示方法
CN113066157B (zh) 基于cim平台的数据分级请求渲染方法及系统
Mahdavi Amiri et al. Geospatial data organization methods with emphasis on aperture-3 hexagonal discrete global grid systems
Gerstner Multiresolution compression and visualization of global topographic data
US8250480B2 (en) Interactive navigation of a dataflow process image
Brenner et al. Continuous generalization for small mobile displays
Chiang et al. Out-of-core algorithms for scientific visualization and computer graphics
JP2577397B2 (ja) 図形表示装置
McKeown Jr et al. Graphical tools for interactive image interpretation
US20060279436A1 (en) Digital elevation model data structure for geospatial analysis
CN113495935A (zh) 一种基于不规则三角化网格剖分的地形切片方法和系统
Brown et al. GRASS as an integrated GIS and visualization system for spatio-temporal modeling

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant