使用外部数据库中的属性值标注要素.doc

使用外部数据库中的属性值标注要素.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
使用外部数据库中的属性值标注要素 空间要素的属性信息通常是存储在一个外部的数据库中。例如,地方政府一般都会以shapefile、geodatabase或者其他GIS的格式存储宗地信息,而宗地的业主信息则可能存储在土地管理部门的一个数据库中。为了打印一幅印有业主姓名的宗地地图,我们需要将带有业主信息的表格从外部的数据库中连接(join)到宗地这个要素类上。 当空间数据与非空间数据是一对一或多对一时,上述操作能顺利进行。但是,如果空间数据与属性数据是一对多或多对多时,空间要素则会被标注一个值,而不是多个值。多个单位共用的宗地就是这一弊病的好例子:这块宗地可以用一个单独的多边形来表示,但是在税务数据库中,这块宗地上的每一个单位都会相应有一条记录。 使用ArcMap中的高级标注选项可以轻松地解决这个问题。通过ArcMap中的VBScript解析器,我们可以编写VBScript代码来自定义标注内容(ArcMap也支持JScript)。可以利用ActiveX Data Objects(ADO)访问外部数据库,以获取属性信息。ADO是建立在OLE DB基础上的基于对象的高层数据接口,能够访问任何类型的数据(可以是相关数据库,也可以是外部数据库、文件夹、文件甚至e-mail信息)。 在编写代码之前,有两件重要的事必须做。在客户端PC机上必须安装适当的数据库连接驱动程序。对于大多数的Windows PC机,Microsoft Access和Microsoft SQL Server的驱动程序都默认安装了。Oracle或者MySQL等其他数据库的专用驱动程序可以从软件提供商的网站下载。数据库连接字符串(ConnectionString)是ADO最重要的属性,它包含了ADO定位和配置驱动程序所需要的信息。各种数据库的连接字符串可以在 查询。 数据库 连接字符串 Oracle PROVIDER=OraOLEDB.Oracle;Data Source=aDatabaseName;UserID=aUserName; Password=aPassword MySQL driver={MySQL ODBC 3.51 Driver}; erver=aServerName;Database=aDatabaseName;uid=aUserName; PWD=aPassword Microsoft Access PROVIDER=Microsoft.Jet.OLEDB.4.0; Data Source=c:\myDatabase. mdb; Microsoft SQL Server(using Windows NTIntegrated security) Provider=SQLOLEDB; Integrated Security=SSPI; Persist Security Info=False; Initial Catalog=aDatabaseName; DataSource=aServerName 表1 部分数据库的典型连接字符串 在VBScript中,创建任何对象都要使用CreateObject()函数,并且要含有正确库名和对象名(例如:ADODB.Connection)。只要创建了Connection和RecordSet 对象,就可以使用正确的连接字符串打开数据库连接,通过一个正确的SQL语句打开RecordSet,使用带有字段名的RecordSet对象的Value属性获取数据。当获取数据之后,必须确保RecordSet和Connection对象关闭并且置空。 安装完适当的驱动程序,并且找到正确的连接字符串之后,可以按下列步骤,利用外部数据库中的属性信息对地图进行标注。 1. 打开ArcMap,添加需要标注的图层。 2. 点击该图层属性(layer properties)对话框中的标注(label)标签,点击Expression按钮。 3. 在Label Expression对话框中,选中Advanced复选框,在Expression框里即可见FindLabel()函数的桩代码。 4. 将光标移至FindLabel后面的括号里,双击需要使用的字段的字段名。 5. 在Expression表达式里书写表2所示的VBScript代码。 6. 通过给函数名赋值返回字符串(例如:FindLabel = aString)。 图1 标注表达式对话框 点击Verify按钮,验证代码是否正确。如果代码无误,ArcMap将显示标注的样例。 使用这种方法是十分便捷的,业主信息是存储在一个外部数据库中,而宗地分布信息则存储在一个personal geodatabase里,并且只含有一个ID属性。这种方法的一个优点就是迅速,只需几秒钟就可以标注上百个多边形(尽管标注的速度与

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档