zoukankan      html  css  js  c++  java
  • 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对象关闭并且置空。

  • 相关阅读:
    webpack4从0开始构建前端单页项目(8)处理css的loader
    webpack4从0开始构建前端单页项目(7)用babel-loader处理js㈣transform-runtime
    webpack4从0开始构建前端单页项目(6)用babel-loader处理js㈢babel-polyfill
    webpack4从0开始构建前端单页项目(5)用babel-loader处理js㈡.babelrc文件
    webpack4从0开始构建前端单页项目(4)用babel-loader处理js㈠配置
    webpack4从0开始构建前端单页项目(3)用webpack-dev-server搭建热加载开发环境
    webpack4从0开始构建前端单页项目(2)用html-webpack-plugin生成html文件
    webpack4从0开始构建前端单页项目(1)整理目录
    webpack二刷笔记(4)webpack的核心概念-插件(plugin)
    webpack二刷笔记(3)webpack的核心概念-loader
  • 原文地址:https://www.cnblogs.com/floodwater/p/15617873.html
Copyright © 2011-2022 走看看