图例自动绘制技术与实现方法:以珲春地区土地利用图为例
2020-12-16芦吉昆李远华刘一儒黄伟佳冯予泽田程
芦吉昆,李远华,刘一儒,黄伟佳,冯予泽,田程
吉林大学 地球探测科学与技术学院,长春 130026
0 引言
人工智能技术渗透到生产、生活的各个方面,例如人脸智能识别、自动汽车驾驶和智能机器人管理仓库等多方面应用。智能化技术正在改变一些传统的产业结构与生产方式[1--7],同时也推动了地图制图领域的进步发展。在地图制作行业,智能化发展引起了高度的关注,智能化、数字化制图是大势所趋。
目前,越来越多的专家学者正在从事智能制图、自动制图的研究[8--9]。仅就图例而言,作为地图中十分重要的组成部分,其自动绘制与优化也一直是研究热点之一。常规的图例制作方法一般依靠手工操作,当面临大量的制图工作时,传统制作方法就显得捉襟见肘。图例通常利用MapGIS和ArcGIS两种主流GIS软件制作,MapGIS主要是按照系统提供的各种点符号、线符号、面符号及编辑功能来绘制图例[10]。ArcGIS虽然可实现自动生成图例,但生成的图例不利于动态管理和实时更新,同时由于分辨率有限常造成符号不够美观[11]。
针对图例的自动绘制与优化,国内外展开了许多研究,采用了多样的技术,如利用模板或符号库、裁剪图形和利用程序生成固定图例等[12];贺海扬等对基于MapGIS的图件自动裁剪与图例生成进行研究,利用MapGIS二次开发将事先裁剪好的图例单元(点、线、面)依顺序加载、合并,移至合适位置,生成图例[13];王玉晶等在对图例元分类及形式化描述的基础上,构建了基于图例元的统计专题地图图例符号自动生成模型,在计算机控制下进行图例元参数的获取、图例元的生成及图例符号的绘制[14];于泳通过建立瓦斯地质数据库与绘制模板,研究开发了瓦斯地质图例自动绘制系统[15];英国EDINA提出基于可视化重新思考地图图例,提供了在动态环境中创建地图图例的新指南[16]。
传统的制图概念大多基于图形思想,从图形的角度绘制图例,图例自动绘制技术研究相对薄弱,其自动化程度还稍显不足。笔者结合中国地质调查局“高分辨率对地观测系统重大专项”项目需求与吉林大学大学生创新创业训练计划项目,从离散化、数字化的角度出发,将图例的图形参数、内涵和结构等信息离散化存储并通过数据库共享,构建一种基于数据库结构的新型图例模型,对图例各信息进行管理和对接;构建出抽象的新型图例模型,将关于图例的数据信息归纳为图形参数、图例内涵、结构参数和优化参数等方面,解决图例的自动绘制与优化问题。以C#语言与MapGIS10结合方式完成了原型程序的开发,取得了良好的应用效果。
1 数字化图例模型构建
目前制作图例的过程中,存在大量的人工操作,当对几十甚至上百幅地图图例进行批量处理时,传统的图例制作方法已不能满足需求,用户需求使得制图技术向智能化方向转变[17]。从传统概念来看,图例包括图形、专业代号、颜色、大小、注记、排列和位置等多个内容,为了与自动制图技术更好地耦合,需要构建一种图例模型将传统图例包含内容进行整合、集成。笔者提出数字化的图例模型,在设计理念、表达观念等方面对传统方法进行了更新,从图形参数、图例内涵、结构参数和优化参数4个方面对图例信息内容进行管理与信息传递。这4个方面层次清晰,由小及大、由内及外,依次从各个方面高效、全面地概括了图例绘制的主要内容,可以与之后图例自动绘制与优化技术进行恰当的耦合。
整个图例模型以数据库(fatabase)的方式来组织,图形参数、图例内涵、结构参数和优化参数4大方面以表(table)的形式来表示,而其中的子参数以字段(field)的形式来表示。此结构具有很强的数据共享优势,通过数据库表可以使各个数据集之间的数据实现共享,整个数据库也可以与外部程序实现数据共享(图1)。
图1 图例模型Fig.1 Legend model
1.1 图形参数
图例模型的第一个重要组成部分是“图形参数”,用来反映图例的图形特征,图例一般由点、线、面和注记4种数据类型构成,各自的图形参数存储于数据库属性表中,包括颜色参数、形状参数和图案参数等。在图例绘制时将查询出的具体图形参数赋给绘图函数。
不同图形代表不同地物,例如点状图形可以代表首都、省会城市和一般城市等,其图形参数有符号类型、颜色、图元长和图元宽等参数;线状图形典型的有国界、铁路和省界等,其参数有线型、线颜色、X方向系数、Y方向系数和辅助线颜色等;面状图例主要参数有面颜色、图案类型和图案大小等(图2)。
图2 图形及其表达方式Fig.2 Graphics and their expressions
1.2 图例内涵
图例模型的第二个组成模块重点描述图例内涵。图例内涵包括图例的文字说明、专业代号等。在众多类型的地图中,每类地图都有不同的图例内涵。例如在东北某地区地质图图例中,“Qhpal”代表第四系全新统冲洪积层,“K1d”代表下白垩统大砬子组,“γJ1”代表早侏罗纪花岗岩。在其他各类地图,如土地利用图、地质灾害图等地图中,也存在着各自的图例内涵。
图例内涵是图例表达的专业信息,由不同类型的专题图专业含义定义,是通过专业代号、文字说明即具体通过图形参数中的点线面及注记来表达的概念;不同类型的专题图的图例表达专业信息的方式各不相同,且都对应一套各自的专业含义,图例内涵的作用就是用来表达对应专题图图例包含的专业信息。图例内涵是常规图例最重要的信息内容。图例内涵具有专业性,又具有独立性,笔者将其独立存在于图例模型中,利用数据库存储调用,不同类型专题图在数据库中具有各自的专业含义数据模块,自动绘制时通过图形参数表达,增强了用户与图例的交互能力,使制图时可以实时更新图例。
1.3 结构参数
图例具有典型的多级结构特征,由图例体和图例集组成,图例体是指一个单独的图例及其说明文字,图例集是指所有图例体及其辅助符号构成的集合(图3)。结构参数包括图形尺寸(长宽)、图例说明大小、图例说明与图形的距离、图例体间隔等。这些参数由制图风格和全幅地图布局需求来确定。
图3 图例结构与参数体系Fig.3 Legend structure and parameter system
将图例集视为一个独立的整体,为其设置独立系坐标。在这个系坐标下,图例集范围矩形的四个顶点坐标为P0、P1、P2、P3,可通过其确定图例集初始范围;可以由确定的图例体大小计算出来(通过P0’、P1’、P2’、P3’与图例数量),最后通过图例集坐标在地图范围内(由MP0、MP1、MP2、MP3表示)的整体移动实现整个图例的定位。上述关系图例坐标的参数一般通过函数计算而来,但需要管理起来作为结构参数动态调用。
1.4 优化参数
图例与其他要素良好的匹配及自身结构合理调整可增强地图表达效果,这就是图例优化的主要要求,因此制作图例的时候需要存储这些参数。图例优化内容包括:图例在整个地图中的位置布局、图例内部的结构及图例体的形态;优化参数主要包括图例位置参数、图例内部结构参数及图例体形态参数,这些参数以数据库表的形式存在于数据库中。
图例既是一个独立的个体,又离不开地图。绘制优良的图例是为了更好地服务地图,因此图例与地图的通讯也十分关键,与地图的通讯主要是图例在地图中位置的选择。图例位置的选择利用坐标来进行,利用为图例集设置的自体系坐标作为接口,将其转换到地图的坐标系中。地图的整体框架包括图框、接图表、图名和比例尺等,以地图图框作为基准,为图例选择合适位置,如一般图例可以位于图框外侧右方、下方,还可以位于图框内部合适的空白处。位置的选择同时应兼顾其他要素,避免与其他要素位置冲突。本研究通过优化算法,可以对图例进行自动位置选择,进而完成结构的优化配置。
图例内部优化参数主要是针对图例的排列方式。循环绘制图例体时,图例体数目较多,单列或单行不能满足制图需要,就应进行多行或多列的合理排列,本研究中设计排列算法,对图例体的排列进行合理判断与规划,使结果更加美观合理。
图例体形态的优化在1.3结构参数基础上,根据专业与美观经验,对其图形尺寸、说明距离等形态进行优化微调。
2 图例自动绘制与优化技术
构建出数字化的图例模型后,下一步就要实现图例自动绘制与优化。其主要技术是:首先从图例模型中读取内容和参数,利用OleDB、ODBC等技术连接数据库,通过SQL方式进行操作交互;然后利用C#+MapGIS10二次开发绘制点、线、面及注记,以完成单个图例体的绘制;再结合排列算法循环自动绘制所有图例体;最后利用自体系坐标的修正与自优化函数及图例接口完成优化(图4)。
图4 图例自动绘制技术Fig.4 Legend automatic drawing technology
2.1 图例信息交互与地图通讯
图例信息交互包括图形参数、图例内涵、结构参数和优化参数等的信息交互。完成图例自动绘制所需的基础信息均存储在数据库中,开始绘制时利用OLEDB+C#+SQL,程序自动在数据库中提取数据信息,并传递给绘制函数,这样可快速、高效完成目标图例的基本绘制,同时具有很好的动态性,当图例信息进行修改时,利用数据库技术可以实现快速、动态的批量修改。
与地图进行通讯时是以整个图例集的某一顶点坐标作为接口,将其坐标值存储在数据库中。首先利用接口坐标与地图坐标信息进行通讯,在图例接口确定其在地图坐标系下的位置后,根据图例集的自体系坐标,图例整体在地图中的位置便确定下来。
2.2 自动绘制实现
图例自动绘制利用MapGIS10二次开发中的类函数来实现,其中点、线、面的绘制由SFeatureCls类来实现。首先创建新对象后,使用Create方法创建MapGIS格式.wt、.wl、.wp的点、线、面文件,然后用Open方法打开文件。利用相应的点、折线和多边形等要素对象来设置要绘制的点、线、面的坐标及属性参数。最后使用Append方法完成点、线、面的绘制。
注记的绘制由AnnotationCls类来实现。首先,创建两个新对象,一个利用Create方法创建MapGIS格式的注释文件.wt点文件,另一个对象利用Open方法打开文件。利用注记对象对字体、颜色和排列方向等属性进行设置,再利用点对象对注释位置进行设置。最后利用Append方法完成注释的绘制。完成单个图例体绘制后,利用for循环,对所有图例体进行循环绘制。
其核心代码为:
简单要素绘制以线要素为例:
SFeatureCls line = new SFeatureCls();
line.Clear();
LinInfo inf = new LinInfo();//设置线参数
inf.LineType = 0;
……
GeoVarLine ploylin1 = new GeoVarLine();
Dot m_dot1 = new Dot();
m_dot1.X = Px[0]+0.5;
m_dot1.Y = Py[0] - (Py[0] - Py[2]) / 2; //坐标位置
ploylin1.Append(m_dot1);
……
line.Append(ploylin1, null, inf);//绘制
注记绘制:
AnnotationCls m_vectorCls = new AnnotationCls();
AnnotationCls vectorCls1 = new AnnotationCls();
vectorCls1.Clear();
TextAnno TextAnno = null;
TextAnnInfo TextFormat = null;
TextFormat.Chnt = 1;
……//文本属性设置
Dot Dot = new Dot();
Dot.X = X1;Dot.Y = Y2;//注释坐标位置
TextAnno.Text = TLNamePart01;//文本内容
//添加注记,返回添加成功的对象ID
TextAnno.SetAnnInfo(TextFormat);
m_vectorCls.Append(TextAnno, null, null);//绘制注释
图例自动绘制技术的实现,通过在程序中可预留接口,为后续工作衔接提供支持。本技术具有一定的先进性、实用性和广泛性,且较为成熟,具有稳定性。
2.3 优化技术
图例的优化主要表现在图例是否按一定顺序排列、能否对排列结构进行调整优化以及能否对图例与地图位置关系进行调整。
图例排序方式通过按数据库中字段排序实现。其结构调整优化,首先由图例模型与数据库参数确定每一个图例体的大小,通过排列算法对将要绘制的图例体的数量进行计算;然后与地图进行通讯,判断其排列样式,计算图例在地图中的范围,确定图例集位置,进行配置,配置合格即可制图,否则调整行列数;调整行列数时,整体范围宽度除以单个图例体宽度,即可得到图例体的行数,再根据图例体总数除以行数,确定其列数,从而可调整其合适的排列样式,判断合格之后便可以进行循环绘制图例体。
图5 结构调整Fig.5 Structural adjustment
对图例与地图位置关系进行优化。每个零散图例体整合在一起构成图例集。首先通过一个函数F(A)来确定图例集的初始范围F0,F0是一个自体系坐标,包括图例集4点坐标:P0、P1、P2、P3,这是一个独立的坐标系;然后根据用户需求或规则需要进行内部自优化,修正自体系坐标得到F1。完成了图例的自优化后,开始进行与地图的通讯,根据地图的整体结构参数与图例集接口,来确定图例集在地图中的合适位置,即将自体系坐标转换为地图的坐标。当面对主区形状规则的底图,可以根据其底图直接确定地图坐标;当遇到主区不规则的底图,根据其不规则形状先确定整图的规则版型,然后根据版型来确定地图坐标;最后设定一些美观指标与规范指标,利用优化算法对整体美观进行优化,实现合理的结构配置。
3 实验与分析
通过实践来检验图例绘制程序,可以很好地判断其方法是否正确、性能是否合格。因此根据“高分辨率对地观测系统重大专项”项目的制图需求,选择珲春地区作为试验区,以土地利用图作为试验对象,开展图例自动绘制方法与程序的验证工作。因为土地利用专题图中涉及要素众多,需要绘制的图例数量较大,对图例布局与优化要求也比较高,是理想的测试对象。
首先将成果数据导入系统,输入制图要求,程序就会根据要求,可以得出如图6的四种图例排版:A将图例放在地图右侧,一列排布,是传统图例排版样式,可以适用于普通专题图;B为当图例数量过多或图例下方需要放置其他要素时,将图例排列成两列,缩短其竖直长度,以适应不同地图用途;C为将图例横向排列于地图下方,改变了图例的位置,以满足其他要素位置需求,可用于插图等;D为将图例根据其类型进行分组,相同类型放置在一组,增强了图例的专业性和可读性,可适用于更加专业的图件。
图6 图例自动绘制效果图Fig.6 Effect diagrams by legend automatically drawing
如上应用结果表明,基于数据库的数字化图例模型和程序,可以打破单一类型地图的束缚,从而能使其应用于各类专题图的图例自动绘制;程序还可以根据制图要求,灵活地自动绘制多种类型的图例,同时可以对图例的布局结构进行参数的调整,得出多样的结果,进而满足用户的不同需求。
在制图过程中,遇到如下情况,程序可以进行对应优化处理:根据需求自动绘制时,当图例原始排列方式的长度、宽度超过图幅范围或不满足美观条件,程序可根据排列算法与美观指标自动判断,将图例排列成合适的行列数及样式,使其满足制图要求。如图6中A类型变化为B类型,可看做单列图例超长时的优化;A类型变化为D类型,可看做为更加美观时的优化。优化处理提供了更多样的图例样式,使用户可以用于更广的选择。
程序在项目实践中的良好应用,证明了本研究在思路整理、模型构建、技术研发等方面的合理性、科学性与专业性。
4 结论
(1)从图形参数、图例内涵、结构参数和优化参数等方面构建的新型数据库式图例模型,从新的思想看待地图图例,可以实现信息的离散与集成,使图例信息、形态和图形等都高度独立,还可通过独立接口方便程序调用,是一种可以有力支持图例自动绘制与优化的智能化图例模型。
(2)图例绘制程序与图例结构智能判断、循环算法和自优化技术相结合,在完成图例自动绘制的基础上,实现图例内部结构与整体布局的优化,做到图例的实时绘制、布局优化与出现差错后的更新复绘。
(3)该方法提高了图例编制与自动化水平,参数独立存储可与其他地图要素实时交互,提高了制图的工作效率,减少了人工的参与,使得制图者得到解放,从而可以专注于图例的实用性与美观性;设定了图例的自动位置选择和结构优化算法,将优化程序嵌入到绘制程序成为一体,实现图例绘制的实时交互,为各类地图智能化制作研究进行了有益的技术探索。