c#发展

首页 » 常识 » 诊断 » ArcGIS平台下标注效果优化方法的探讨
TUhjnbcbe - 2021/2/24 4:24:00
ldquo醒醒村医永远不可能有编 http://www.jhkqk.com/bdfnzym/10167.html

侯辉娇子

来源:测绘通报年增刊

摘要:

针对大量复杂注记的特点,着重介绍了ArcGIS平台的Maplex高级智能标注引擎,从地图的点、线、面三要素出发,提供多种对应关系供选择和设置,有效利用了多余空间;提供自适应策略和冲突检测方式,设置优先级等减小与其他注记间的冲突,很好地解决了标注冲突问题。同时,使用ArcGIS的二次开发功能,探讨了超长注记的换行处理方法,有效利用空间的同时加强了注记与兴趣点的关联性。通过实例验证,此方法能解决大部分要素标注冲突问题,取得了理想的效果,在实践操作中值得探索和推广。

关键词:

地图制图;Maplex;地图标注

一、引言

地图注记是指在地图上起说明作用的各种文字、数字等[1]。随着我国地理信息产业与技术的发展,地图注记在地图上的表现及使用中扮演着极为重要的角色。地图注记常常和地图符号结合在一起来使用,说明地图中各个地物的名称、位置、范围等信息[1],地图注记对地图具有点晴之功效[2]。没有注记的地图,只能表达空间地理区域的一般空间概念,无法反映地理对象的名称和某些数量及质量特征,这将直接影响读图者对地图信息的接收,无法达到人们利用地图进行信息传输和交流的目的[3]。因此,地图注记在地图中具有不可替代的作用。

地图标注是随着计算机技术和地图学的发展应运而生的。用户能够根据地理属性表中的信息将其灵活地标注到地图上,从而实现更加灵活、多变的地图内容[1]。如今,地图数据越来越丰富,需要在地图上显示的内容也相应增加,在地图制图过程中经常需要对大量复杂的注记进行处理,以满足纸质地图的美观、易辨识的要求。在地图制图的实际运用过程中,如何保证图面表达清晰易读,满足信息传输要求,同时又要在符合设计原则的前提下,尽可能使得图面艺术美观,是地图制图的重点和难点。

本文在ArcGIS平台上,重点探讨使用Maplex高级智能标注引擎的使用,以及标注换行计算的方法,对大量复杂数据地图进行标注处理,使地图展现更好的效果。

二、高级智能标注引擎(Maplex)的特点及使用

在编制地图时,通常使用的是Esri标准引擎,但是标准引擎下的标注设置有较多的局限性,标注的位置摆放及文字格式的设置都未能满足日常制图工作的需求,甚至会出现各种冲突。笔者通过在实际操作过程中的经验积累,采用ArcGIS的Maplex高级智能标注拓展模块能够有效地创建高质量的动态标记,优化地图标记的数量和质量,提高地图标注的质量及工作效率,更好地利用地图的有限空间,把地图要素信息尽量多地标注在地图上。

1.Maplex标注引擎准备

ArcGIS软件并没有默认开启Maplex标注引擎,需要手动进行开启才能使用。

1)在ArcMap的“自定义→扩展模块”面板上,勾选“Maplex”项,打开Maplex扩展模块。

2)在内容列表栏的layers处单击右键,选择属性,打开“数据框属性”对话框,在“常规”选项卡下的标注引擎处选择“EsriMaplex标注引擎”;或右键单击菜单栏,打开“标注”工具条,点击“Labeling”下拉菜单,选择“使用Maplex标注引擎”。

2.Maplex标注引擎的特点

Yoeli于年提出了地图注记的通用原则[4],将注记分为点状要素、线状要素和面状要素3种类型加以处理,认为注记和对应要素间应该有精确的对应关系,注记与地图要素、注记与其他注记相互间的冲突应实现最小化[5]。Maplex标注引擎的特点正是从地图的点、线、面三要素出发,更精确地对应关系的同时减小与其他注记间的冲突。

(1)标注位置更灵活

①点要素的标注位置

Maplex针对点要素提供了10种放置选项,包括点周围的最佳位置选项,该项可以进行点要素摆放位置的权重的设置,如图1所示,比标准标注的选择更灵活。

可以设置标注偏移,指定要素与放置标注间的固定距离,也可以设置最大距离,允许标注放置在可接受的距离范围内。

图1点要素标注位置设置

②线要素的标注位置

Maplex针对线要素提供了8种放置选项,这些方式并不是Maplex独有的,在标准标注引擎中同样可以设置。不同点在于Maplex可以设置固定间距的重复标注,也可以进行展开字符的设置,使线要素的标注方式呈现多样化,如图2所示。

图2线要素放置属性设置

③面要素的标注位置

Maplex针对面要素提供了5种放置选项。除了与线要素标注相同的重复标注和展开字符标注外,和标准标注引擎相比,在面要素中添加了弯曲标注。对放置在面要素内的标注可以排定放置的顺序;对放置在面要素外面的标注可以制定首选区域,也可以排定标注放置的顺序,允许标注偏移。经过不同的组合,可以满足对面要素标注的需求。

(2)更好地解决冲突

生成地图时使用的比例尺不同,比例尺越小,数据量越大,标注会有很多冲突,出现标注压盖、不显示等情况。Maplex标注引擎的自适应策略和冲突检测可以更好地解决这种标注冲突。

①自适应策略

在Maplex引擎下,标注可以堆叠标注、延伸至超限要素、减小字号、缩写标注来适应标注放置的原则。对于线要素和面要素,可以指定要素大小,超过这一标准则不进行标注。使用这些方法中的一个或多个,可以节省空间,使地图呈现最佳的效果。

②冲突解决

Maplex提供的冲突解决方式有5种,其中要素权重、标注缓冲区、允许压盖都是标准标注引擎中有的。背景标注是将标注设置为背景,始终允许其他标注放置在该标注之上。移除同名标注是在设定的半径内搜索同名的标注,如果有则会移除,降低重复显示一个标注的概率。

三、标注换行计算

有的要素需要表示的名称太长,ArcGIS默认是一行显示所有的标注内容,如果没有足够的空间,则不标注此要素的名称。对这种名称过长的标注,可以使用VBA语言编写一个小程序,实现标注的换行,有效利用空间,如图3所示。

图3标注换行设置

在要素属性的标注选项卡中,单击表达式,打开标注表达式对话框,勾选高级复选框。在对话框中输入分行代码后,确定,完成标注的分行处理。示例换行代码如下:

FunctionFindLabel([标准名称])

str=[标准名称]

中国食品行业参与改革开放进程的四十年,是砥砺创新、奋发图强的四十年,是锐意变革、担当有为的四十年,更是创先争优、影响世界的四十年。

ifn>=9then

m=int(n/2)

str1=left(str,n-m)

str2=right(str,m)

FindLabel=str1+VBNewLine+str2

elseifn<9then

FindLabel=str

Endif

EndFunction

此代码意为,如果“标准名称”这个属性的字符数大于9,那么就分2行显示。

四、标注效果优化实例

1.默认标注效果

为了验证使用高级智能标注引擎(Maplex)及标准换行计算后的效果优越性,选取一片标注比较复杂的区域,使用默认标注,结果如图4所示。在注记比较稀疏的地方,标准引擎标注可以把需要的信息标注出来,但是,在poi较多的地方,标注间出现互相压盖的情况,且因为标注名称过长,显示效果不佳。

2.使用高级智能标注引擎(Maplex)标注效果

使用Maplex引擎进行标注,调整标注要素的放置权重,设置自适应原则和冲突解决方案,得到如图5所示的结果。可以看出,标注间相互压盖的情况已经基本解决,标注的空间使用更充分,标注压盖显现明显减少。根据Imhof提出了地图注记的3个基本规则:易读性、清晰性和美学平衡性[6]。Maplex标注引擎的使用就使该片区的注记达到了易读性和清晰性这两个基本规则。

3.名称冗余内容简化

实例为广州市某区的地名地址数据,很多要素名称都带有“广州”或“广州市”字样,在实际使用中这些文字可以进行简化,去掉删减后不改变其意思的部分文字,单独作为标注属性,使标注言简意赅,同时也节约空间,使标注表达效果更好,如图6所示。

4.标注换行计算

在标注中使用换行计算,把超过9个字符的字符串分两行显示,效果如图7所示,已经基本满足出图要求。

5.地图标注的美化升级

虽然经过以上处理后,减少了标注压盖的现象,也使图面清晰整洁。但是地图标注毕竟是通过计算机,对要素的属性进行自动标注的结果。经过自动处理的标注,还可以把标注转换为地图注记,再对注记的一些细节进行人工调整,从而使得地图表达的信息更加美观、全面。

好的地图需要整体和局部协调一致,色彩搭配协调,注记疏落有致[7]。对注记的成果,配合地图要素的表达进行字体、字号、颜色的设置,使每一类要素的特点突出,表达清晰明了;达到Imhof提出的地图注记美学平衡性的规则。

五、结束语

本文针对日常制图工作中经常遇到的大量数据标注压盖、冲突等问题,在ArcGIS平台下,使用Maplex高级智能标注引擎和标注换行计算相结合的方法,进行要素标注的优化设置,结果能够解决大部分要素标注冲突问题。使用该方法,便于更直观地展现地图中的地理要素信息,效果更美观。在实际操作中值得探索和推广,制作尽可能完美的各类地图。

参考文献:

[1]乔占明,闫浩文.地图标注和地图注记的探讨[J].测绘与空间地理信息,,34(1):-.

[2]何丽华,徐之俊.地图注记设计若干问题的探讨[J].地理空间信息,,9(6):-.

[3]杨圣枝.地图注记在地图信息传输中的功能分析[J].测绘通报,(9):66-71.

[4]YOELIP.TheLogicofAutomaticMapLettering[J].CartographicJournal,,19(2):99-.

[5]赵静,罗兴国,张汝云.一种新的电子地图注记算法——格网法[J].计算机工程,,34(7):-.

[6]CHRISTENSONJ,MARKSJ,SHICBERS.AnEmpiricalStudyofAlgorithmforPoint-featureLabelPlacement[J].ACMTransactiononGraphic,,14(3):-.

[7]宋艳节,崔文明.基于ArcMap的地图制作研究[J].测绘工程,,(32):34-35.

智能出图打印小程序,是制作大型专题图的关键。效率的快慢将体现的尤为重要,提升了效率也就提高了项目的完成进度。本文基于ArcGisEngine的研究,让ArcGis的利用外接更上一层。虽是年的文章,还是可以从中学习一些深度专业的应用,学习就是一场修行,大家都一样就看个人悟性和努力程度了。

赵振峰罗志清张晓晓

来源:科学技术与工程年6月

摘要

利用ArcgisEngine组件开发地图整饰和打印智能化的研究。在介绍ArcgisEngine中用于地图整饰和打印功能的组件基础上,阐述了该系统的总体设计方案和主要功能实现。基本达到地图整饰和打印智能化的目的。这种基于ArcgisEngine的开发方法,方便快捷且能实现较好的打印效果,大大节省劳力和财力。

关键词

ArcgisEngineC#地图整饰和打印智能化地图打印是地理信息系统的一个基本功能,也是数字制图的目的之一。在许多地理信息系统的开发中,地图整饰与打印都是一个必不可少的基本功能。一般来讲,地图整饰和打印主要需要实现两个功能[1]:一是按不同比例尺打印地图,二是可以添加和修改地图整饰要素。

目前,众多地图打印输出软件的开发中,ESRI公司的ArcGlSEngine作为一个GIS组件库,它在实现地图打印输出功能中,能够大大提高开发效率,而且使用可视化软件开发工具开发出来的应用程序具有更好的外观效果。本文中开发的程序有两个创新点:(1)如果土地整饰的排版相同,可一次处理一批排版相同的图,如果排版不同,只能人工干预,但只需点出整饰要素的位置;(2)实现A3,A4横向纵向的多种比例尺布局方式的打印,可一次打印排版相同的一批图,也可以批量生成JPG格式的图片,这些不需人工干预,真正做到智能化。

1ArcgisEngine简介

ArcisEngine是ESRIArcGIS9系列中推出的一组完备的嵌入式GIS组件库和工具库,供开发人员创建新的或扩展已有的桌面应用程序。它包括两个部分:开发包和运行包,其中开发包是开发人员用来构建和开发桌面应用程序的开发工具,而运行包是用来支持用户能在自己的计算机里运行基于ArcEngine开发包开发的应用程序。与AO(ArcObject)相比,ArcEingine的结构合理灵活,具有更为强大的开发功能和独立性[2]。

利用ArcGISEngine,开发者能将ArcGIS功能集成到一些应用软件如MicrosoftWord和Excel中,还可以为用户提供针对GIS解决方案的定制应用。本文实例以VisualStudio.NET为开发平台,采用C#可视化编程语言,建立基于ArcGisEngine组件的地图打印输出模块,主要实现在生成的电子地图基础上,对其进行图面整饰,最后实现制图输出。

2地图打印功能模块的设计与实现

2.1国内外研究现状

在GIS地图输出领域,赵*喜[3]等总结在GIS中地图输出的特点,并对地图输出过程中的关键技术问题加以总结。在地图输出的地图符号库中,王伟[4]等研究了基于COM技术的地图符号库结构的设计与实现。

2.2地图打印模块的总体设计

对于国家标准比例尺地形图来说地图整饰必须符合有关规范和图示要求,对于专题图而言,则可以根据用户的需要,灵活对待,以合理和美观为原则。一般说来,一个基本的地图整饰与打印功能必须包含以下几个方面(如图1所示)。

2.3整饰要素编辑功能的实现

地图整饰在很大程度上影响了打印地图的效果。地图整饰可以分为解释性整饰和装饰性整饰两种类型。其中解释性整饰的作用是向读者提供某些必要的信息,提高地图的可读性,如图名、比例尺、图例和文字说明等,这类整饰的设计要以便于读者阅读为基本依据,兼顾美观性;装饰性整饰如图框主要起到装饰的作用,因此要注意其艺术性以及与地图主题的匹配。图面的配置要有一定的灵活性,如图名的位置、图名字体的大小等;但还要遵循一定的原则,如图名字的大小不得超过图边长度的一半、说明性文字尽量放置在图的下方等。地图整饰模块的界面如图2所示。

2.4地图打印的模块实现

通过纸张和打印机的设置,可以实现调节地图打印方向、打印纸张类型、打印机设备等功能。这个模块的设置是实行整体性一次性打印的功能,不管以往的以ARCGIS人工进行页面设置的打印还是以往程序开发的打印,其都不能真正地实现智能化。

本程序的打印模块是在地图整饰都整理好的前提下才能进行的。打印模块的界面如图3所示。

2.5程序代码

以生成A3横向1:图片的程序为例,功能模块中的部分关键代码如下:

StreamReadersr=newStreamReader(Application.StartupPath+“/

profile.txt”,Encoding.Default);

axMapControl1.Map=m_MapDocument.getMap(0);

axMapControll.Map.MapScale=;

axMapControll.MapScale=;

axMapControll.MapUnits=ESRI.ArcGis.esriSys-

tem.esriUnits.esriMeters;

IActiveViewpActiveView=this.axMapControll.ActiveView;

this.toolStripStatusLabelNow.Text=“正在生成现

状图.....”+mxdDirectoryPath;

Application.DoEvents();

if(File.Exists(mxdDirectoryPath+“/”+max-

Name+“现状图.”+pictype))

{

File.Delete(mxdDirectoryPath+“/”+max-

Name+“现状图.”+pictype);

}

ArcHelper.ExportMapTolmage(pActiveView,mxd-

DirectoryPath+“/”+maxName+“现状图.

+pictype,typepic);

以上只是程序的一小部分,本文的程序在打印方面突破先前的思想,以一个全新的思想来处理打印模块,真正实现了大批量的打印,真正做到了智能化。

3地图整饰和打印模块与以往程序进行比较

本文比较是建立在用以往的程序和本文的程序共同处理云南省昭阳区土地利用1:0的现状图,昭阳区现状图一共85幅分幅图,用程序分别输出图片从工作步骤、工作效率和正确率进行比较:

3.1工作步骤

以往程序设计的实现:

虽然不需要打开ARCMAP进行页面设计,打印预览的过程,自己开发了一个打印系统,但是只是针对一个工程文件的打印,对于多个工程文件需要一个一个地设置。

本文程序设计的实现:

本文的程序设计开发了独立的窗口界面,对于大批量的工程文件,只需要在程序中输入这大批量的工程文件所在的路径就可以一次性处理完毕,可以直接输出图片,如果和打印机相连可以直接出图。

3.2工作效率

以往程序设计的实现:

需要人工干预,浪费了人力,而且需要一次一次地设置,大大浪费了时间。需要看打印预览,才能确定地图的位置是否合适。本文使用了云金地农村出图软件(云南省云金地公司开发研究的)进行了云南省昭阳区1:横向出图,85幅图花费了5.5h。

本文程序设计的实现:

本文的程序不需人工干预,只需把电脑和打印机开着,程序会自动运行,而且程序完全在花费时间上做了许多调试,由此节省了大量的人力和时间。不需要打印预览,因为程序会自动把地图放在页面的正中间。本程序进行云南省昭阳区1:横向出图,85幅图花费3h45min。

本程序相比于其他程序节省了大量的时间,是因为程序会自动把图放在版面的正中间,从而节省了大量的打印预览的时间,而且程序不复杂,运行速度相对快。

3.3正确率

以往程序设计的实现:

云南省昭阳区一共85幅图,正确的为79幅,正确率为92%。

本文程序设计的实现:

云南省昭阳区一共85幅图,正确的为81幅,正确率为95%。

从正确率的比较可以看出,本程序更能提高准确性,因为本程序把各种打印排版的模式都分别进行了程序编写,比如如果打印1:横向的图,程序很快速并准确地调用函数,这样就能提高正确率。

本程序分别进行了云南省昭阳区1:土地利用现状图的整饰与打印,还进行了昭阳区1:基本农田图,坡度图的整饰与打印,还进行了昭阳区1:7.5万横向挂图的输出,程序根据昭阳区的面积自定义挂图的打印尺寸,输出的挂图尺寸为了×mm的1:7.5万昭阳区的挂图,输出的图片清晰,要素全面,整体比较美观。

4结束

电子地图的整饰和打印输出是--个完整的地理信息系统所不可缺少的功能模块,采用ArcGisEngine组件在开发此模块中具有简单快捷、高效、方便等诸多优点。它和面向对象的高级计算机编程语言结合的方式使得它既能充分发挥管理空间地图数据的优势,又能使开发者快速生成友好的用户界面,便于实际应用。本系统就是在ArcGisEngine和C#为开发平台,介绍了地图整饰与打印模块的技术思路和一些具体细节,不难看出,通过ArcEngine可以轻松实现地图整饰与打印模块的各种功能和应用,节省了大量的时间和人力,然而,本程序也有不足之处,在于地图整饰的部分的指北针,图例的添加没有很大程度地考虑美观问题。虽然系统在某些方面还不是十分成熟,但表明利用ArcGISEngine组件的基本功能可以实现地图整饰和输出的智能化。

参考文献:

[1]潘宸,谈帅,朱周华,等.地图整饰及打印模块的设计与实现.测绘与空间地理信息,;-

[2]ESRi.ArcGisEngineDeveloperCuide.USA:ESRI,

[3]赵*喜,华一新.CIS中地图输出的表现形式田.测绘通报,;(2):9-11

[4]王伟,张波,殷赣华.基于COM技术的地图符号库结构设计与实现田.武汉大学学报(信息科学版),;(3):-

最后,小编提醒,由于
1
查看完整版本: ArcGIS平台下标注效果优化方法的探讨