第八章-图元查找.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章??????? 图元查找 ??? 图元是GIS图上的各种元素的统称,如图形对象(点、线、多边形等)以及它们的基本结构(结点、弧段、标识点等)、各种符号和标注等。图元是描述地图的最基本的数据单位。因此我们把和GIS图有关的查找都称之为图元查找。 ??? 我们可以通过属性数据查找空间数据,也可以通过一个空间数据来查找另外的空间数据,还可以通过空间数据查找属性数据。另外,我们还可以用SQL语言来加入复杂的限制条件进行查找。 在MO中可以用SearchExpression(表达式查找)、SearchByDistance(距离查找)和SearchShape〔图形查找)来实现各种复杂的查找关系。 8.1 SearchExpression(表达式查找) 8.1.1 SearchExpression定义 SearchExpression方法是利用查找属性数据库(dbf)中的数据,实现对GIS图元的查找。该方法定义为: Set variable=object.SearchExpression(expression) 其中: Variable:记录集变量; Object:对象,一般为图层对象; Expression:以SQL语言说明的字符串表达式。 注意: (1)由于已经指定了图层,也就是指定了数据表,因此不需前面的select部分,只要后面的where字句即可。 (2)表达式中的字符要用单引号,如states=’california’。 (3)用%表示多种选择,如STATE_NAME like ‘M%’。 (4)用下划线_表示位数,如STATE_NAME like ‘M____’(4个下划线),只能返回Maine州。 (5)如果表达式为空(“”),则返回所有记录。 (6)如果要操作较大的记录集,建议采用SDE,不要用shapefiles。 8.1.2 使用SearchExpression进行简单查找 以下例子用表达式“STATE_ID=24”来查找墨西哥地图上序号为24的州,并用另外一种颜色来显示它。 Dim g_symselection as mapobjects2.symbol Dim recselection as mapobjects2.recordset Private sub form_load() Dim strexpression as string Drawlayer ‘查找 Strexpression=”STATE_ID=24” Set recselection=map1.layers(“states”).searchexpression(strexpression) ‘设置显示模式 Set g_symselection=new mapobjects2.symbol G_symselection.symboltype=map1.layers(0).symbol.symboltype G_symselection.color=modarkgreen End sub Private Sub Map1_AfterTrackingLayerDraw(ByVal hDC As stdole.OLE_HANDLE) ??? Map1.drawshape recselection,g_symselection End Sub 8.2 SearchByDistance(距离查找) 8.2.1 SearchByDistance定义 SearchByDistance方法查找并返回一个地图对象的给定距离范围内的图元的记录集,并可满足一个SQL表达式。如果表达式缺省,则返回所有图元。 SearchByDistance方法的语法为: Set variable=object.SearchByDistance(shape,tolerance,expression) 其中: Variable:一个记录集对象; Object:对象; Shape:图元对象; Tolerance:误差范围。 Expression:SQL表达式; ? 8.2.2 查找对象周围的图元 本例通过点击地图,查找点击位置附近的城市数量,查找到的城市用较大的三角形符号显示。误差范围(tolerance)可以在TextBox中设置。 Private Sub Map1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) ‘将点击转换为点对象; Set pp=Map1.ToMapPoint(x,y) ‘距离查找; Set recset=map1.Layers(0).searchBydistance(pp,10,””) ‘调用Map1_AfterLayerDraw显示查找结果; Map1.Refre

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档