惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
有赞技术团队
有赞技术团队
J
Java Code Geeks
H
Hackread – Cybersecurity News, Data Breaches, AI and More
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hugging Face - Blog
Hugging Face - Blog
人人都是产品经理
人人都是产品经理
酷 壳 – CoolShell
酷 壳 – CoolShell
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
Check Point Blog
博客园 - 【当耐特】
The GitHub Blog
The GitHub Blog
Recent Announcements
Recent Announcements
The Cloudflare Blog
Microsoft Azure Blog
Microsoft Azure Blog
腾讯CDC
Vercel News
Vercel News
IT之家
IT之家
MyScale Blog
MyScale Blog
博客园_首页
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
罗磊的独立博客

博客园 - WolfのPL

数学地理 ArcGIS Server9.2的Cache! ArcGIS Server连接方式介绍 远程连接server问题 ArcGIS Explorer build480即将发布! ArcGIS Engine中加载数据 ArcGIS9.2 SP5已发布! ArcSDE中间件技术的生命力(原文作者:蔡晓冰) GeoDatabase设计之拓扑 arcsde9.2远程安装(ORACLE) ArcGIS9.2支持多种数据格式导入导出 ArcSDE服务介绍 巧用Arcmap中字段计算器(field calculations) ArcGIS中应用Expressions标注(Label)之一—上下标、分数等特殊形式标注 创建一个简单的ArcGIS Server ASP.NET网页(转载) ArcGIS Server--揭开你的神秘面纱 VC杂记 ArcGIS Server9.2安装过程 The Digital Earth: Understanding our planet in the 21st Century.(转载)
ArcGIS中应用Expressions标注(Label)之二—使用外部数据库中数...
WolfのPL · 2008-02-26 · via 博客园 - WolfのPL

标注的具体步骤:

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对象关闭并且置空。