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 '如果没有找到记录,则返回空字符串 '如果找到多于一条的记录,则通过"<>"来暗示含有多条业主信息 '可以做循环,直到标注出所有的业主信息 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 ...