.ArcGIS中标注之一上下标、分数等特殊形式标注_第1页
.ArcGIS中标注之一上下标、分数等特殊形式标注_第2页
.ArcGIS中标注之一上下标、分数等特殊形式标注_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ArcGIS中标注之一上下标、分数等特殊形式标注分数形式标注要素:首先将分母和分子的内容分别放在两个字段中,然后在标注的时候,标注内容选择用表达式标注,在表达式的输入框中输入""&[分子的字段]&""&vbNewLine&[分母的字段],即可实现分数形式的标注。上下角标形式标注要素:将标注的主体内容、上角标内容和下角标内容分别用三个字段保存。假设这三个字段分别是:text、super_text和sub_text。步骤如下:1.在被标注的图层的属性里,点击“experssion(表达式)”。2.在弹出的“表达式”窗口中书写表达式如下[text]&""&[super_text]&""&""&[sub_text]&""其中:""&[super_text]&""表示将super_text字段里的内容作为上角标""&[sub_text]&""表示将sub_text字段里的内容作为下角标补充:比如在:对BlockName和Company进行标注时候,使用下面语句实现BlockName红色显示,而Company黑色显示""&[BlockName]&""&VbNewLine&[Company]今天发现了一个小问题,如果BlockName或者Company中有特殊字符如&或者>等,会出现将这些特殊字符作为Script语句一部分处理情况,导致无法正常显示标注内容(无法解析VBScript语法).这个和网页编程时候非常类似,于是参考网页编程方法对代码做了一下修改,用"&"替代"&"FunctionFindLabel([BlockName],[Company])strBlockName=Replace([BlockName],"&","&")strCompany=Replace([Company],"&","&")FindLabel=""&strBlockName&""&VbNewLine&strCompanyEndFunction补充2:以前用ArcGISLabel一般也就在图层的Properties里面定义一下Label字体大小和粗细。这两天遇到一个问题,需要在Label中显示多个字段的内容,比如BlockName和CompanyName。其实这个本来不是很难的问题,因为Label中支持VBScript,使用[BlockName]&VbNewLine&[CompanyName]。就可以实现标注中第一行显示BlockName,第二行显示CompanyName.现在问题出来了,出图时候希望突出BlockName效果,希望加粗显示,而CompanyName使用一般字体。考虑了很长时间终于从ArcGIS帮助中找到了相关的内容,原来Label的VBScript里面支持类似于Html的VBScript标签,比如加粗就是用,上面问题就可以使用下面语句解决:""&[BlockName]&""&VbNewLine&[CompanyName]除了加粗,ArcGIS中还支持下面的文本格式标签:Font:""&[LABELFIELD]&""Color:""&[LABELFIELD]&""""&[LABELFIELD]&""Bold:""&[LABELFIELD]&""Italic:""&[LABELFIELD]&""Underline:""&[LABELFIELD]&""Allcaps:""&[LABELFIELD]&""Smallcaps:""&[LABELFIELD]&""Superscript""&[LABELFIELD]&""Subscript:""&[LABELFIELD]&""Characterspacing(%):""&[LABELFIELD]&""Wordspacing(%):""&[LABELFIELD]&""Leading(pts):""&[LABELFIELD]&"</LIN需要注意的是,使用这些标签后,生成的Label语句在Verify按钮中是不生效的,只对最终的显示结果生效ArcGIS中应用Expressions标注(Label)之二—使用外部数据库中数据标注要素标注的具体步骤:1.打开ArcMap,添加需要标注的图层。2.点击该图层属性(layerproperties)对话框中的标注(label)标签,点击Expression按钮。3.在LabelExpression对话框中,选中Advanced复选框,在Expression框里即可见FindLabel()函数的桩代码。4.将光标移至FindLabel后面的括号里,在LabelFields中双击需要使用的字段的字段名。5.在Expression表达式里书写VBScript代码(如下)。6.通过给函数名赋值返回字符串(例如:FindLabel=aString)。7.最后点击Verify按钮,验证代码是否正确,如果代码无误,ArcMap将显示标注的样例。该方法的优点就是迅速,只需几秒钟就可以标注上百个多边形(尽管标注的速度与PC机性能及网络速度有关)。该方法的缺点是它要创建、打开再关闭数据库连接,并且为地图上的每一个可见要素做查询。需要做很多要素的标注时,这样的动作会使处理速度减慢,增加网络流量。解决此问题的一个方法就是设置可见比例尺(ScaleRange)。在LayerProperties对话框的Label标签里,点击ScaleRange按钮,定义标注的可见比例尺范围。VBScript代码如下:FunctionFindLabel([OBJECTID])DimstrPrclQry,strInfostrPrclQry="SELECTOWNER_NAMEFROMaTABLEWHEREOBJECTID='"&[OBJECTID]&"'"DimADOConnsetADOConn=createobject("ADODB.Connection")DimrsPrclsetrsPrcl=createObject("ADODB.Recordset")ADOConn.Open"PROVIDER=MSDAORA;DataSource=aDatabaseService;UserID=aUserName;Password=aPassword"ADOConn.CursorLocation=3rsPrcl.OpenstrPrclQry,ADOConn,3,1,1'如果没有找到记录,则返回空字符串'如果找到多于一条的记录,则通过"<<More>>"来暗示含有多条业主信息'可以做循环,直到标注出所有的业主信息SelectCasersPrcl.RecordCountCase-1,0strInfo=""Case1'只读取第一条记录strInfo=trim(rsPrcl.Fields("OWNER_NAME").Value&"")'在空值的情况下将出错CaseElsestrInfo=rsPrcl.Fields("OWNER_NAME").Value&"<<More>>"EndSelect'关闭连接rsPrcl.CloseADOConn.CloseSetrsPrcl=NothingSetADOConn=Nothing'返回字符串用于标注FindLabel=strInfoEndFunction注意:在VBScript中,创建任何对象都要使用CreateObject()函数,并且要含有正确库名和对象名(例如:ADODB.Connection)。只要创建了Connection和RecordSet对象,就可以使用正确的连接字符串打开数据库连接,通过一个正确的SQL语句打开RecordSet,使用带有字段名的RecordSet对象的Value属性获取数据。当获取数据之后,必须确保RecordSet和Connection对象关闭并且置空。ArcGIS中应用Expressions标注(Label)之一—上下标、分数等特殊形式标注分数形式标注要素:首先将分母和分子的内容分别放在两个字段中,然后在标注的时候,标注内容选择用表达式标注,在表达式的输入框中输入"<UND>"&[分子的字段]&"</UND>"&vbNewLine&[分母的字段],即可实现分数形式的标注。上下角标形式标注要素:将标注的主体内容、上角标内容和下角标内容分别用三个字段保存。假设这三个字段分别是:text、super_text和sub_text。步骤如下:1.在被标注的图层的属性里,点击“experssion(表达式)”。2.在弹出的“表达式”窗

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论