『公告』 预祝您龙年大吉,万事如意, 过节期间, 大家如需数据服务,请拨打400 或直接添加客服微信,再祝大家龙年,心想事成。
关注我们 新浪 腾讯

ArcGIS标注与注记

ArcGIS标注与注记
在ArcMap中可以使用标注(Label)和注记(Annotation)来识别要素,选择Label或Annotation取决于你需要如何控制文本显示以及在ArcMap中如何存储文本。

ArcGIS中的标注与注记(Label与Annotation)关系与区别讲解: 

       在ArcMap中可以使用标注(Label)和注记(Annotation)来识别要素,选择Label或Annotation取决于你需要如何控制文本显示以及在ArcMap中如何存储文本。对一个图层中的部分或所有要素的标注(Label)可以独立或者动态的创建,但有的时候用注记(Annotation)会更好些,注记(Annotation)可以由标注(Label)转成或从一个Coverage导入。 
       动态创建的标注(Label)将在漫游和缩放后按照当前地图比例尺下的最佳位置重画,因为动态创建的标注(Label)被作为一个图层属性存储,改变设置,诸如等级分类,符号或者标注位置将影响到图层中的标注(Label)。 
       注记(Annotation)可以从一个草图创建或从一个已有的Coverage中转换,当你使用其中的方法创建注记(Annotation)时,当前的比例尺将被作为参考比例尺,注记要素总是用参考比例尺规定的尺寸显示。 
       注记(Annotation)可以作为地图的图形或者GeoDatabase的要素被存储,每个注记(Annotation)文本可以被独立操作,因为注记(Annotaion)不过是一种类型的要素,它的大小相对地图上的其它要素保持不变。存储在GeoDatabase中的注记(Annotaion)可以或者不链接到一个要素上,非链接的注记(Annotaion)是一个地理位置文本字符串,和别的要素类中的要素没有关联。链接要素注记中的文本来自一个相关的点,多边形或者线要素的属性表的一个或多个字段。当相关要素移动时,要素链接注记(Annotation)也跟着移动。 

       如果你使用了标注(Label),如何标注要素取决于如何使用地图以及数据显示方式,这些考虑将帮助你决定在一个给定的情势下使用哪种标注方法。你可以使用Text工具来标注一些要素,或者你可以利用ArcMap内置的功能--基于一个图层相关的属性数据交互或动态来标注要素。

       ArcGIS中应用Expressions标注(Label)之一—上下标、分数等特殊形式标注 

分数形式标注要素:
       首先将分母和分子的内容分别放在两个字段中,然后在标注的时候,标注内容选择用表达式标注,在表达式的输入框中输入"<UND>" & [分子的字段] & "</UND>" & vbNewLine & [分母的字段],即可实现分数形式的标注。

上下角标形式标注要素:
       将标注的主体内容、上角标内容和下角标内容分别用三个字段保存。假设这三个字段分别是:text、super_text和sub_text。步骤如下:

       1.在被标注的图层的属性里,点击“experssion(表达式)”。

       2.在弹出的“表达式”窗口中书写表达式如下
       [text] & "<sup>" & [super_text] & "</sup>" & "<sub>" & [sub_text] & "</sub>"

       其中:
       "<sup>" & [super_text] & "</sup>"表示将super_text字段里的内容作为上角标
       "<sub>" & [sub_text] & "</sub>"表示将sub_text字段里的内容作为下角标


       ArcGIS中应用Expressions标注(Label)之二—使用外部数据库中数据标注要素

 

       标注的具体步骤:

       1. 打开ArcMap,添加需要标注的图层。

       2. 点击该图层属性(layer properties)对话框中的标注(label)标签,点击Expression按钮。

       3. 在Label Expression对话框中,选中Advanced复选框,在Expression框里即可见FindLabel()函数的桩代码。

       4. 将光标移至FindLabel后面的括号里,在Label Fields中双击需要使用的字段的字段名。

       5. 在Expression表达式里书写VBScript代码(如下)。

       6. 通过给函数名赋值返回字符串(例如:FindLabel = aString)。

       7.最后点击Verify按钮,验证代码是否正确,如果代码无误,ArcMap将显示标注的样例。

       该方法的优点就是迅速,只需几秒钟就可以标注上百个多边形(尽管标注的速度与PC机性能及网络速度有关)。

       该方法的缺点是它要创建、打开再关闭数据库连接,并且为地图上的每一个可见要素做查询。需要做很多要素的标注时,这样的动作会使处理速度减慢,增加网络流量。解决此问题的一个方法就是设置可见比例尺(Scale Range)。在LayerProperties对话框的Label标签里,点击Scale Range按钮,定义标注的可见比例尺范围。

       VBScript代码如下:
Function FindLabel ( [OBJECTID] )
     Dim strPrclQry, strInfostrPrclQry = "SELECT OWNER_NAME FROM aTABLE WHERE OBJECTID = ' " & [OBJECTID] & " ' "Dim ADOConnset ADOConn = createobject("ADODB.Connection")Dim rsPrcl 
     set rsPrcl = createObject("ADODB.Recordset")
     ADOConn.Open "PROVIDER=MSDAORA;Data Source=aDatabaseService;
     User ID=aUserName;Password=aPassword"
     ADOConn.CursorLocation = 3
     rsPrcl.Open strPrclQry, ADOConn, 3, 1, 1

       如果没有找到记录,则返回空字符串
       如果找到多于一条的记录,则通过"<<More>>"来暗示含有多条业主信息

       可以做循环,直到标注出所有的业主信息
     Select Case rsPrcl.RecordCount
Case -1, 0
     strInfo = ""
Case 1
'只读取第一条记录
     strInfo = trim(rsPrcl.Fields("OWNER_NAME").Value & " ") '在空值的情况下将出错
Case Else
     strInfo = rsPrcl.Fields("OWNER_NAME").Value & "<< More >>"
     End Select
     '关闭连接
     rsPrcl.Close
     ADOConn.Close
     Set rsPrcl = Nothing
     Set ADOConn = Nothing
     '返回字符串用于标注
     FindLabel = strInfo
End Function

       注意:在VBScript中,创建任何对象都要使用 CreateObject()函数,并且要含有正确库名和对象名(例如:ADODB.Connection)。只要创建了Connection和 RecordSet 对象,就可以使用正确的连接字符串打开数据库连接,通过一个正确的SQL语句打开RecordSet,使用带有字段名的RecordSet对象的 Value属性获取数据。当获取数据之后,必须确保RecordSet和Connection对象关闭并且置空。

 

       arcgis分子式标注

       A&chr(13)&"——"&chr(13)&B

       A为分子,B为分母

 


      京ICP备08100627号-22 京公网安备 11010802030428号