CN106251385B - 脚本驱动的层次化图形构造方法 - Google Patents
脚本驱动的层次化图形构造方法 Download PDFInfo
- Publication number
- CN106251385B CN106251385B CN201610577043.5A CN201610577043A CN106251385B CN 106251385 B CN106251385 B CN 106251385B CN 201610577043 A CN201610577043 A CN 201610577043A CN 106251385 B CN106251385 B CN 106251385B
- Authority
- CN
- China
- Prior art keywords
- graphical configuration
- script
- symbol
- interactive
- graphical
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种脚本驱动的层次化图形构造方法,具体包括以下步骤:(一)编写用于构造线面符号的脚本文件代码;(二)注册用于图形构造的交互式脚本文件,将脚本文件注册到显示装置的符号管理器中,以供显示装置调用;(三)实现图形构造所需要的输入层,用于输入图形基本绘制点信息;(四)通过显示装置中设计的接收脚本驱动的图形构造结果的输出层,使得显示装置获取所需要的图形绘制参数信息,调用并执行基于脚本语言实现的图形构造算法,传入由用户交互式输入的图形绘制基本点序列,完成交互式地图图形的构造。基于本发明方法构造的地图图形具有良好的地理实体表达和动态交互能力。
Description
技术领域
本发明是涉及地理信息技术、数字地图领域的一种地图图形制作技术,给出了一种基于脚本驱动的层次化图形构造方法。
背景技术
地图图形是地图符号中线面符号的具体实现和信息表达传输载体,地图符号是地图的语言,它是表达地图内容的基本手段。地图符号是由形状不同、大小不一和色彩有别的图形和文字组成。就单个符号而言,它可以表示事物的空间位置、大小、质量和数量特征;就同类符号而言,可以反映各类要素的分布特点;而各类符号的总和,则可以表明各要素之间的相互关系及区域总体特征。地图符号可以指出目标种类(如铁路)及其数量特征和质量特征,并且可以确定对象的空间位置和现象的分布(如人口密度等)。
目前,国内外相关软件中地图符号设计的途径主要有五种:1)文本编辑器设计方法。其特点是速度慢且不能实时观察所设计的符号。2)二次开发。采用系统提供的二次开发语言编程实现。特点是各GIS软件提供的二次开发语言各异,所使用的函数库庞大,需要重新编译系统才能完成符号增删改工作。3)利用系统本身的图形编辑功能将符号当作普通的图形块设计制作。其特点是制作的符号为栅格图片,不具有交互功能。4)使用系统提供的符号设计器。用户使用系统提供的符号设计器可将系统本身提供的基本符号与自定义的符号进行组合、位移、缩放等操作后得到制图所需的复杂符号(如复杂线符号、面符号)。5)使用互联网上相关网站共享的地图符号,使用主流编程语言开发的地图符号设计系统;论文《公共安全应急平台中符号库的设计与实现》(周玉清,李静,罗灵军,等.公共安全应急平台中符号库的设计与实现[J].地理与地理信息科学,2004,20(04):11-14.)总结了地图符号制作的基本方法。
上述地图符号制作方法存在的缺点主要包括:1)制作生成的地图图形符号往往是栅格图片或矢量线划图形,不具有动态交互性;2)采用特定技术和特定软件制作的地图图形符号难以移植和灵活应用,难以在其它平台上面进行集成和应用;3)采用计算机编程语言编程实现的符号,在增加修改新的符号时都需要重新编译程序,可扩展性不强。
发明内容
本发明的目的在于,克服现有技术和解决方案中存在的缺陷,提供一种新的交互式地图图形符号制作方法:脚本驱动的层次化图形构造方法。这种方法能够支持灵活便捷地实现可交互式地图图形符号的制作、管理与维护、可视化场景中矢量化显示与动态交互。
本发明采用的技术方案是:
脚本驱动的层次化图形构造方法,包括以下步骤:
(一)编写用于构造线面符号的脚本文件代码:
步骤1,定义构造交互式地图图形所需要的元素,这些元素类型包括:(1)用于描述和构造该交互式地图图形轮廓的几何图形算法;(2)用于存储描述几何对象样式的属性定义;(3)定义用于改变图形几何形状的控制点;(4)用于辅助控制点实现图形几何形状变化的比例值参数列表;(5)用于规定用户可交互式输入最多和最少点数;
步骤2,编写实现交互式地图图形轮廓绘制的几何图形构造算法的脚本代码,其中实现不同类型的交互式地图图形所用到的几何图形算法各不相同;
步骤3,在交互式地图图形几何图形构造算法中定义比例值参数,通过改变比例值参数的值来实现对图形几何形态的改变;
步骤4,定义控制点在交互式地图符号中的显示位置,在脚本代码中实现各控制点的鼠标移动事件,在鼠标移动事件响应函数中编写根据控制点位置移动而合理改变对应比例值的算法,以通过比例值来动态交互式改变地图符号几何形态;
(二)注册用于图形构造的交互式脚本文件,将脚本文件注册到显示装置的符号管理器中,以供显示装置调用;
(三)实现图形构造所需要的输入层,用于输入图形基本绘制点信息,动态交互输入图形基本绘制点的过程包括:第一次单击后的初始化图形、基本点增加的重新构造、鼠标移动触发的实时更新三个阶段;
(四)通过显示装置中设计的接收脚本驱动的图形构造结果的输出层,使得显示装置获取所需要的图形绘制参数信息,这些绘制参数信息在所述步骤1中定义,调用并执行基于脚本语言实现的图形构造算法,传入由用户交互式输入的图形绘制基本点序列,交互式地图图形制作脚本执行完成后,完成交互式地图图形的构造。
所述步骤1中,在脚本代码中构造交互式地图图形绘制所需要的图形算法和元素,这些算法和绘制元素从不同层次构造可交互的线状地图图形和面状地图图形;交互式地图图形绘制所需要的几何图形信息均以线的形式存储,并都保存于由坐标序列组成的线条,线条分为闭合和非闭合两种,闭合线条即定义为面图形。
所述步骤2中,实现交互式地图图形轮廓绘制的几何图形构造算法的脚本程序是由更新函数作为主输入函数。
所述步骤3中,以实例化比例值对象的方式定义可供显示装置调用的比例值,比例值在几何图形构造过程中以参数的形式作用于几何图形的长度、宽度、角度和位置值的计算结果,以实现通过改变比例值,达到实时动态改变图形的几何形状。
所述步骤4中,以实例化控制点对象的方式定义可供显示装置调用和渲染的控制点对象,控制点对象是帮助用户以交互的方式改变图形形状和位置的控制器,在脚本程序中对控制点对象进行声明、定义显示位置、定义并实现其鼠标移动事件。
所述步骤(二)中,脚本驱动的图形构造文件与图形的对应关系是一对一的关系;多个图形组成一个图形集合,多个图形集合组成一个图形类别集,符号管理器包含多个图形类别集。
所述步骤(四)中,输出到显示装置中的交互式地图图形绘制所需元素包括:图形几何信息、控制点信息、控制比例值信息和绘制属性信息。
本发明的方法可以实现脚本语言驱动的层次化图形构造方法,通过基于Lua脚本的图形构造层、符号文件注册层、输入接口层、输出接口层,实现地图图形的交互式动态输入、构造和输出。相比现有传统的绘制方法,本发明通过层次化图形构造的方法,实现了地图图形构造算法与绘制分离,突破了传统地图图形符号缺乏交互功能或线面图形符号添加、修改和删除需要重新编译系统的弱点,使得地图图形符号库中符号的维护和扩展变得更加高效和低成本。通过该方法构造的矢量图形具有良好的交互性,能很好地应对地理对象丰富多样性的特点,满足不同类型不同层次的图形构造要求,增强地理实体对象的绘制能力和信息表达能力。
附图说明
图1是本发明方法的流程示意图;
图2是地图图形符号的存储组织结构;
图3表示的含义包括:铁道线路图形的效果示意、图形基本点和控制点、拖动控制点后图形的变化;
图4是(a)受灾区域分布范围和(b)人口聚集区域范围图形示意及构造流程图。
具体实施方式
下面对本发明实施例中的技术方法和流程进行清楚、完整的描述。地图图形符号种类繁多且方法各异,其中本文所描述的,开发实现用于构造图形的Lua脚本程序的实施例仅是本发明中的部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明基于图形构造脚本文件编写、图形构造脚本文件注册、绘制基本点输入、绘制元素及属性输出四个层次进行地图图形符号构造,具体包括以下四个部分:
第1部分开发实现用于构造图形的Lua脚本语言程序,根据层次结构,实现其图形构造的主要组成元素,包括:生成图形轮廓的图形算法、绘制属性、比例值、控制点、控制参数等。本图形库主要涉及的交互式地图几何图形元素包括:独立直线、独立曲线、封闭直线、封闭曲线及多线条组合图形等。
第2部分设计实现Lua脚本文件注册接口层,用于注册图形构造的Lua脚本文件到显示装置中的图形符号管理器,Lua脚本文件是用于存储构造图形的脚本代码,需要将其注册到显示装置,供显示装置进行调用和执行图形构造。
第3部分设计实现输入接口层,用于实现输入图形构造基本点到Lua脚本程序中,在本发明中脚本语言是层次化图形构造的核心部分,但交互式图形输入功能和接口不在Lua脚本语言中进行实现。图形构造基本点交互式采集程序,采用C++接口层开发实现,通过Lua的虚拟栈输入到图形构造的Lua脚本中。
第4部分设计实现图形绘制元素输出接口层,用于实现从Lua脚本中输出图形轮廓、绘制属性、比例值、控制点、控制参数等图形绘制元素。
所述第1部分开发实现用于构造图形的Lua脚本程序主要内容和流程为:
A.为每个图形符号创建一个对应的Lua脚本文件,并进行规则命名,将创建的Lua脚本文件索引信息添加到符号管理器配置文件中,使得该脚本文件可以被注册程序调用。
B.在Lua脚本文件中声明该图形输出元素,主要包括几何对象、控制点对象、比例值、最多最少点数控制,其中几何对象的声明方式为PolyLine:new(),控制点对象的声明方式为controlHandle:new(),比例值对象的声明方式为scaleDouble/scaleDoubleF:new(参数值,"参数值说明"),最大最小点数控制变量为maxControlNum和minControlNum。
C.以function update(lstPoint)作为主函数,编写Lua脚本代码,Lua脚本代码需要实现的逻辑和功能主要包括:a,基本点由函数参数lstPoint传入,根据基本点构造特定图形的算法;b,将比例值做为参数加入到图形的构造算法中,使得可以通过改变比例值达到改变图形几何形态的效果;c,根据图形构造算法原理和控制点用途,设置控制点显示位置;d.实现每个控制点的posMove(pos)函数,设计程序算法,通过传入的鼠标移动控制点的实时位置,重新计算相应比例值对象的值,达到随着控制点移动,实时改变图形几何形态的作用。
D.定义和设置图形绘制的其它元素,包括线条是否闭合、是否启用填充、线条颜色及填充颜色、图形内嵌文字及文字显示位置、文字样式、线条样式等。
所述第2部分用于注册和管理Lua脚本文件的图形符号管理器主要通过四个层次来实现对图形符号的分类分层管理,包括:符号管理器(ISymbolContainer),符号类别容器(ISymbolLib),图形集合(ISymbolSet),图形符号(ISymbol)。其层次关系是符号管理器中可以添加多个符号类别容器中,符号类别容器中可以包含任意多个图形集合,图形集合中可以包括任意多个图形符号,用于实现图形构造的Lua脚本文件索引信息被注册在ISymbol接口中。
所述第3部分输入接口层主要包括三个层次,图形绘制元素初始化(initSymbol)、创建图形几何对象(buildSymbol)、实时更新图形绘制基本点(updateSymbol),其中图形绘制元素初始化主要用于初始化图形绘制的基本元素,包括存储图形轮廓的几何对象、图形控制参数、比例值、控制点对象等。在图形创建状态下,鼠标左键每次单击地图,都将添加图形构造基本点,Lua脚本程序中根据输入的基本点序列创建图形几何对象;在图形创建状态下,触发鼠标移动事件时,调用实时更新图形构造函数。在输入接口层当中,通过数据压栈的方式,动态传入由用户交互产生的所有图形绘制的基本点序列,其中输入接口层中基本点坐标信息保存在点序列存储对象中。
所述第4部分图形绘制元素输出接口层,主要实现图形绘制元素由Lua脚本程序输出到采用C++开发的显示装置当中,输出的内容包括绘制对象及属性描述信息,输出层的接口主要包括:用于输出图形轮廓对象的getPolyLine接口、用于输出文字对象的getText接口、用于输出控制点对象的getControlHandle接口、用于输出比例值对象的getScale接口、用于输出新增加的基本绘制点的line_addp接口、用于输出图形轮廓线是否为虚的line_dotted接口、用于输出对象填充属性的line_set_draw_state接口、用于输出线条绘制颜色的line_setColor接口、用于输出控制点位置的set_controlHandlePos接口、用于输出比例值的set_ScaleValue接口以及用于输出文字及线条其它样式的相关接口。
采用本方法构造的地图图形符号,实现了脚本语言驱动的交互式地图图形符号制作方法,基于符号制作和管理显示分离的原则,结合脚本语言解释器,实现了脚本驱动的地图图形符号文件注册、绘制元素及属性输入输出装置。
实施例1
本实施例提供一种脚本驱动的层次化图形构造方法,基于本方法的铁路图形其核心步骤流程如图1所示。具体实施时,包括以下步骤:
A.编写用于实现图形构造的Lua脚本代码文件,本实施例选取铁道线路图形,来说明基于本发明所述的技术方案构造图形的典型过程,铁道线路图形如图3所示:
1.定义实现图形构造所需要的几何存储对象,定义为全局变量。实现表示铁道线路图形所需要的存储对象为三个,即铁道的左右两条轨道的平行线和表示铁路轨枕的等间距平行横线。
2.设置输出图形的颜色,铁路轨道线为红色,铁路轨枕为黑色。
3.定义控制点,该图形定义两个控制点,分别用于调用图形整体宽度和轨枕间距。
4.定义比例值,该图形共定义两个比例值,用于辅助上述两个控制点实现其改变图形宽度和轨枕间距的功能。
5.定义图形构造最多最少控制点数,实现该图形构造最少需要2个基本点、最多支持3000个基本点。
6.声明其它全局对象,这些对象都是实现图形构造算法的辅助对象或变量,主要包括:表示铁道左右铁轨的曲线存储对象、比例尺、长度、角度等辅助对象或变量。
7.在update(lstPoint)函数中实现图形构造算法,图形构造基本点序列通过lstPoint.vertex[i]获取,将图形构造算法计算得到的构造图形的点序列存储在声明的几何对象中,图形构造算法中需要加入比例值参数,使得能通过改变比例值达到改变图形的效果。
8.在update(lstPoint)函数中设置控制点的显示位置,在本实施例中第一个控制点的显示位置定义在铁路左侧轨道的起点,第二个控制点的显示位置定义在铁道第二根轨枕的中点位置。
9.实现两个控制点的posMove(pos)函数,posMove函数的内容是为了根据鼠标实时移动控制点的位置去改变比例值,上述步骤6中已经实现将比例值作为参数加入在图形构造的算法之中,此处改变比例值便可实现图形形状的改变。
其具体的软件方法,主要编码流程和方法如下所示:
B.将用于实现图形构造的Lua脚本文件在符号管理器中进行注册,符号管理器的层次结构如图2所示,符号管理器组织层次从大到小依次为符号管理器、图形类别集、图形集、图形。符号管理器是设计在程序启动时最先进行初始化,初始化过程中会创建并实例化其符号工厂成员变量mSymbolFactory,图形类别集、图形集和图形都是通过符号工厂创建,将通过符号工厂创建的图形类别集添加到其父容器符号管理器中,图形集添加到父容器图形类别集中,图形添加到其父容器图形集当中。其具体的软件方法,如下代码所示:
ISymbolFactory*mFactory=pSymbolContainer->getSymbolFactory();//获取符号工厂
ISymbolLib*mLib=pFactory->createSymbolLib();//创建图形类别集
mLib->setLibName("名称");mLib->setLibID(ID);//设置分类集名称和ID
ISymbolSet*mSet=pFactory->createSymbolSet();//创建图形集
mSet->setSymbolSetName("名称");mSet->setSymbolSetID(ID);//设置名称ID
ISymbol*mSymbol=pFactory->createSymbol(类型,ID,"描述");//创建图形
mSet->addObject(pSymbol);mSymbol->setSymbolSet(pSet);//将图形绑定到图形集
mLib->addObject(pSet);mSet->setSymbolLib(pLib);//将图形集绑定到图形类别集
pSymbolContainer->addObject(mLib);//将图形类别集保存到图形容器当中。其中图形符号的索引组织形式为:symbolRegeister(15,"99/03/10/15.lua")。
C.输入图形构造所需要的基本点,将交互式图形构造过程分为三个阶段:(1)在激活符号后处于图形创建状态时,鼠标左键第一次单地图时进行图形初始化;(2)在创建状态下,鼠标左键每次单击地图,都会输入图形构造所需要的基本点,进行图形的重新构造;(3)在创建状态下,鼠标在地图上移动都会进行实时更新图形构造操作,实现图形实时动态交互。在第一阶段图形初始化阶段,主要依次完成以下处理流程:1.创建用于保存图形构造基本点序列的存储对象;2.根据符号对应的脚本文件注册信息,调用图形构造脚本文件解释器加载图形构造脚本文件和依赖算法库文件;3.初始化用于Lua脚本程序接收进行数据输入输出操作的Table对象,并把它放在栈顶。在图形构造阶段依次完成以下处理流程:1.将新增加的图形构造基本点添加到存储序列中;2.创建基本点序列中各点的对应的控制点(controlHandle)对象,并将这些控制点添加到控制点容器中。在实时更新图形阶段完成以下处理流程:1.根据鼠标移动位置,更新绘制基本点序列;2.将当前产生的基本构造点序列和地图比例尺参数进行进栈操作,为将这些构造信息传入脚本文件做准备;3.调用Lua脚本文件的update函数,将用于图形构造的基本点信息传入图形构造脚本代码当中。
D.基于Lua脚本构造完成的图形在绘制和显示之前需要输出到显示装置之中,图形输出的实施内容和流程主要包括:
1.输出用于绘制和显示的图形轮廓坐标点序列,显示装置中用于接收输出图形的函数为getPolyLine(lua_State*L),在该函数中将输出的轮廓对象创建为可以直接用于绘制和显示的对象,输出的轮廓对象包括有该对象是否闭合的属性。
2.输出控制点对象,显示装置中用于接收从Lua图形构造脚本中输出的控制点对象的函数为getControlHandle(lua_State*L),获取其坐标及onMove成员函数后,便能在显示装置中创建可交互的控制点对象。
3.输出比例值对象,显示装置中用于接收从Lua图形构造脚本中输出的比例值对象的函数为setParamValue(lua_State*L),通过该函数将接收到的比例值对象被创建为可以在显示装置中调整修改的成员变量。
4.输出图形轮廓颜色,本实例采用的铁道线路符号,设计为轨道为红色,轨枕为黑色,显示装置中用于接收图形轮廓线条颜色的接口为line_setColor(lua_State*L)。通过此接口可以实现在显示装置中设置线条颜色。
显示装置在拿到输出的铁路线路图形轮廓坐标点序列、控制点对象、比例值等对象后,即可调用图形绘制和显示接口,进行图形的绘制和显示。
实施例2
本实施例提供一种脚本驱动的层次化图形构造方法,其构造方法中的第二、三和四部分的实现流程对于每一个图形来说都是相同的,但第一部分,编写用于实现图形构造的Lua脚本代码部分对于每个图形都是不同的,本文以描述“受灾区域分布范围”和“人口聚集区域范围”图形为例,如图4所示,进一步说明实施图形构造的Lua脚本文件代码实施方法和流程。
受灾区域分布范围图形,该图形主要包括一个外接多边表、多边中心文字标注、多边形线条填充这三个对象,用于该构造图形的Lua脚本文件软件实施方法如下:
(1)定义图形输出元素及属性:
outLine=PolyLine:new();outLine:setFillType(ESF_Bias_L);//设置线条填充
outLine2=PolyLine:new(true);//输出表示折线区域和内部填充线的两个线条对象
minControlNum=2;maxControlNum=2000;//最少输入2个点,最多2000个点
sizeHandle=controlHandle:new();sizeParam=scaleDouble:new(0.1,"符号文字的大小");定义输出用于控制文字大小的控制点和比例值
text1=innerText:new(0);text1:setText("灾");//定义输出文字对象及内容
function update(lstPoint)
……//初始化数据处理
insertAll(lstPoint.vertex,vs);vs:bind(outLine);//将基本点插值成连续的线,并绑定在输出元素中
……//将需要的点插入或绑定到输出元素中
centerPos=Vector2:new(centerx,centery);//计算得到多边表中心点,作为文字显示位置
……
text1:setCenter(c);text1:setDst(c+dir*length*sizeParam:value());
sizeHandle:updatePos(c);//设置文字显示位置及尺寸大小,设置控制点位置
end
function sizeHandle:onMove(pos)//改变图形大小控制点函数
……
v,sig=getProjection(pos-centerPos,direction*-1);//计算控制点移动向量;
……
sizeParam:setValue(percent*5);//重新设置比例值参数
……
end
B.描述人口聚集区域范围图形,该图形主要包括表示区域的封闭曲线和曲线内部四个简单描述人物的图形,用于构造该图形的Lua脚本文件软件实施的主要方法如下:
(1)定义输出元素
outLine=PolyLine:new(true);shape1=PolyLine:new();//输出几何对象
peopleUp=scaleDouble:new(1,"内部符号的大小");//调整大小的比例值
peopleCenterX=scaleDouble:new(0.0,"内部符号位置X坐标");//调整X坐标比例值
peopleCenterY=scaleDouble:new(0.0,"内部符号位置Y坐标");//调整Y坐标比例值
peoplePosHandle=controlHandle:new();peopleSizeHandle=controlHandle:new();
//用于调整曲线区域内部人物图形位置和大小的控制点。
function effect.bind()//绘制人物图形函数
……//省略部分算法为,根据中心点,计算人物两条手臂的起始点和终点,保存在P1,P2,P3,P4这四个点对象中
shapeArm=PolyLine:new(true);//新建几何对象,用于保存表示人物手臂的图形
shapeArm:add(p2,p3);shapeArm:add(p3,p1);//将四个点添加到保存人物手臂的图形中
p5=(p2+p3)/2+ld:rotate(-90)*l*2.1;//以人物手臂中点为起点,求算正下方相隔一定距离的另一个点,以这两个点的线段做为表示人物腿部的线段
p6=(p1+p3)/2+ld:rotate(-90)*l*2.1;//表示另一条腿的线段
shapeLeg=PolyLine:new();//定义表示腿部的输出元素,
shapeLeg:add((p2+p3)/2,p5);shapeLeg:add((p1+p3)/2,p6);
//将计算好的表示人物两条腿的线段,添加到对应的输出元素中
p3=p3-d*l/2;c1=circle:new(0,p3,l/2);//计算表示头部的圆形及中心位置
shapeCircle=PolyLine:new(true);c1:bind(shapeCircle)//将该圆形输出
function update(lstPoint)//主函数部分
……//用于生成曲线封闭区划的代码
……//求得封闭曲线中心坐标,保存在变量c当中
effect.p=c;effect.bind();//根据曲线区域点,调用构造第一个人物
……以前类推,构造第二、三、四个人物
end
function triangleSizeHandle:onMove(pos)//移动改变大小的控制点时调用的函数。
function trianglePosHandle:onMove(pos)//移动改变区域内人物图形位置控制点时的调用函数。
Claims (6)
1.脚本驱动的层次化图形构造方法,其特征在于,该方法包括以下步骤:
(一)编写用于构造线面符号的脚本文件代码:
步骤1,定义构造交互式地图图形所需要的元素,这些元素类型包括:(1)用于描述和构造该交互式地图图形轮廓的几何图形算法;(2)用于存储描述几何对象样式的属性定义;(3)定义用于改变图形几何形状的控制点;(4)用于辅助控制点实现图形几何形状变化的比例值参数列表;(5)用于规定用户可交互式输入最多和最少点数;基于这些算法和绘制元素,构造可交互的线状地图图形和面状地图图形;交互式地图图形绘制所需要的几何图形信息均以线的形式存储,并都保存于由坐标序列组成的线条,线条分为闭合和非闭合两种,闭合线条即定义为面图形;
步骤2,编写实现交互式地图图形轮廓绘制的几何图形构造算法的脚本代码,其中实现不同类型的交互式地图图形所用到的几何图形算法各不相同;
步骤3,在交互式地图图形几何图形构造算法中定义比例值参数,通过改变比例值参数的值来实现对图形几何形态的改变;
步骤4,定义控制点在交互式地图符号中的显示位置,在脚本代码中实现各控制点的鼠标移动事件,在鼠标移动事件响应函数中编写根据控制点位置移动而合理改变对应比例值的算法,以通过比例值来动态交互式改变地图符号几何形态;
(二)注册用于图形构造的交互式脚本文件,将脚本文件注册到显示装置的符号管理器中,以供显示装置调用;
(三)实现图形构造所需要的输入层,用于输入图形基本绘制点信息,动态交互输入图形基本绘制点的过程包括:第一次单击后的初始化图形、基本点增加的重新构造、鼠标移动触发的实时更新三个阶段;
(四)通过显示装置中设计的接收脚本驱动的图形构造结果的输出层,使得显示装置获取所需要的图形绘制参数信息,这些绘制参数信息在所述步骤1中定义,调用并执行基于脚本语言实现的图形构造算法,传入由用户交互式输入的图形绘制基本点序列,交互式地图图形制作脚本执行完成后,完成交互式地图图形的构造。
2.根据权利要求1所述的脚本驱动的层次化图形构造方法,其特征在于,所述步骤2中,实现交互式地图图形轮廓绘制的几何图形构造算法的脚本程序是由更新函数作为主输入函数。
3.根据权利要求1所述的脚本驱动的层次化图形构造方法,其特征在于,所述步骤3中,以实例化比例值对象的方式定义可供显示装置调用的比例值,比例值在几何图形构造过程中以参数的形式作用于几何图形的长度、宽度、角度和位置值的计算结果,以实现通过改变比例值,达到实时动态改变图形的几何形状。
4.根据权利要求1所述的脚本驱动的层次化图形构造方法,其特征在于,所述步骤4中,以实例化控制点对象的方式定义可供显示装置调用和渲染的控制点对象,控制点对象是帮助用户以交互的方式改变图形形状和位置的控制器,在脚本程序中对控制点对象进行声明、定义显示位置、定义并实现其鼠标移动事件。
5.根据权利要求1所述的脚本驱动的层次化图形构造方法,其特征在于,所述步骤(二)中,脚本驱动的图形构造文件与图形的对应关系是一对一的关系;多个图形组成一个图形集合,多个图形集合组成一个图形类别集,符号管理器包含多个图形类别集。
6.根据权利要求1所述的脚本驱动的层次化图形构造方法,其特征在于,所述步骤(四)中,输出到显示装置中的交互式地图图形绘制所需元素包括:图形几何信息、控制点信息、控制比例值信息和绘制属性信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610577043.5A CN106251385B (zh) | 2016-07-20 | 2016-07-20 | 脚本驱动的层次化图形构造方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610577043.5A CN106251385B (zh) | 2016-07-20 | 2016-07-20 | 脚本驱动的层次化图形构造方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106251385A CN106251385A (zh) | 2016-12-21 |
CN106251385B true CN106251385B (zh) | 2019-01-18 |
Family
ID=57613472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610577043.5A Expired - Fee Related CN106251385B (zh) | 2016-07-20 | 2016-07-20 | 脚本驱动的层次化图形构造方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106251385B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107749074B (zh) * | 2017-09-30 | 2021-06-04 | 北京知道创宇信息技术股份有限公司 | 一种用于绘制地图的方法、装置和计算设备 |
CN107885863B (zh) * | 2017-11-21 | 2021-10-15 | 湖北大学 | 基于本体的地图符号表达方法及系统 |
CN112389506A (zh) * | 2019-08-14 | 2021-02-23 | 比亚迪股份有限公司 | 列车信号系统及其联动方法 |
CN111371809B (zh) * | 2020-03-27 | 2022-02-18 | 武大吉奥信息技术有限公司 | 一种基于反向代理架构的服务器及gis服务访问控制方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101206545A (zh) * | 2006-12-20 | 2008-06-25 | 英业达股份有限公司 | 图形输入方法 |
CN101587584A (zh) * | 2009-04-14 | 2009-11-25 | 北京壁虎科技有限公司 | 基于图形绘制引擎的资源设置方法和装置 |
CN101783023A (zh) * | 2010-02-03 | 2010-07-21 | 南京师范大学 | AutoCAD图块与基于路径的点状地图符号交换方法 |
CN101853162A (zh) * | 2010-06-01 | 2010-10-06 | 电子科技大学 | 一种可编辑的网页三维几何造型渲染方法 |
CN102073973A (zh) * | 2009-11-25 | 2011-05-25 | 新奥特(北京)视频技术有限公司 | 一种获取、编辑自定义图形的方法和字幕图形制作系统 |
CN103748860A (zh) * | 2011-08-10 | 2014-04-23 | 奥迪股份公司 | 用于在机动车内提供指示的方法和具有指示装置的机动车 |
CN104462682A (zh) * | 2014-12-02 | 2015-03-25 | 泰州学院 | 一种交互式焊接接头坡口图形绘制及参数标注方法 |
-
2016
- 2016-07-20 CN CN201610577043.5A patent/CN106251385B/zh not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101206545A (zh) * | 2006-12-20 | 2008-06-25 | 英业达股份有限公司 | 图形输入方法 |
CN101587584A (zh) * | 2009-04-14 | 2009-11-25 | 北京壁虎科技有限公司 | 基于图形绘制引擎的资源设置方法和装置 |
CN102073973A (zh) * | 2009-11-25 | 2011-05-25 | 新奥特(北京)视频技术有限公司 | 一种获取、编辑自定义图形的方法和字幕图形制作系统 |
CN101783023A (zh) * | 2010-02-03 | 2010-07-21 | 南京师范大学 | AutoCAD图块与基于路径的点状地图符号交换方法 |
CN101853162A (zh) * | 2010-06-01 | 2010-10-06 | 电子科技大学 | 一种可编辑的网页三维几何造型渲染方法 |
CN103748860A (zh) * | 2011-08-10 | 2014-04-23 | 奥迪股份公司 | 用于在机动车内提供指示的方法和具有指示装置的机动车 |
CN104462682A (zh) * | 2014-12-02 | 2015-03-25 | 泰州学院 | 一种交互式焊接接头坡口图形绘制及参数标注方法 |
Non-Patent Citations (4)
Title |
---|
Virtual Geographic Environments (VGEs): A New Generation of Geographic Analysis Tool;Hui Lin 等;《Earth-Science Reviews》;20130814;74-84 |
一种骨架线驱动的产品曲面变形设计方法;程丰备 等;《机械工程学报》;20141031;第50卷(第19期);120-127 |
公共安全应急平台中符号库的设计与实现;周玉清 等;《地理空间信息》;20070430;第5卷(第2期);43-44 |
利用Java 3D实现Web上的真实感地形显示;温永宁 等;《江苏测绘》;20020930;第25卷(第3期);35-38、42 |
Also Published As
Publication number | Publication date |
---|---|
CN106251385A (zh) | 2016-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106251385B (zh) | 脚本驱动的层次化图形构造方法 | |
Cui et al. | Geometry-based edge clustering for graph visualization | |
CN105069020B (zh) | 自然资源数据三维可视化方法和系统 | |
CN104766366B (zh) | 一种三维虚拟现实演示的建立方法 | |
US20180052593A1 (en) | Providing visual selection of map data for a digital map | |
CN108803876A (zh) | 基于增强现实的水利工程展示交互方法及系统 | |
US8525827B2 (en) | Integrated GIS system with interactive 3D interface | |
CN100527169C (zh) | 一种三维场景实时绘制系统 | |
KR100915209B1 (ko) | 엑스엠엘 기반의 입체 건물 입면 및 내부 자동 모델링 및내비게이션 시스템 및 그 방법 | |
CN106354786A (zh) | 一种可视分析方法及系统 | |
Chen et al. | 3D AR-based modeling for discrete-event simulation of transport operations in construction | |
CN101930624A (zh) | 三维道路交叉口的模型化方法及装置 | |
CN113593051B (zh) | 一种实景可视化方法及大坝可视化方法及计算机设备 | |
CN104090827A (zh) | 集成二、三维平台的管线数据同步及联动方法 | |
CN115017569A (zh) | 一种二、三维联动的桥梁参数化建模、出图方法、装置、设备及介质 | |
CN110990919A (zh) | 城市轨道交通三维gis选线设计分析方法 | |
CN111221514B (zh) | 基于OsgEarth的三维可视化组件实现方法及系统 | |
CN112446937A (zh) | 基于bim技术的项目进度三维可视化方法 | |
CN109191590A (zh) | 一种用于制作虚拟现实应用的处理系统及处理方法 | |
Zhang et al. | Urban landscape design based on data fusion and computer virtual reality technology | |
Zhu et al. | Design and realization of virtual classroom | |
CN115035225B (zh) | 基于osg的战场威胁评估示警方法 | |
CN115810064A (zh) | 基于开源gis技术的地图制图与发布平台的构建方法 | |
Giertsen et al. | 3D Visualization for 2D GIS: an Analysis of the Users' Needs and a Review of Techniques | |
CN112184874A (zh) | 一种轻量化三维模型高性能图形标记、进度模拟及导航方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190118 Termination date: 20210720 |