- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
最近下载
- 教育、科技、人才一体化与新质生产力发展.pptx VIP
- 2024年湖南水利水电职业技术学院单招职业技能测试题库含答案(研优卷).docx VIP
- 教育、科技、人才一体化视域下发展新质生产力的四重逻辑和实践路径.docx VIP
- 教育、科技、人才一体化视域下发展新质生产力的四重逻辑和实践路径.docx VIP
- 《大棚番茄基质槽式栽培技术规程》.docx
- 立体车库 毕业论文外文翻译.docx VIP
- 教育、科技、人才一体推进新质生产力发展.docx VIP
- 2024年湖南水利水电职业技术学院单招职业技能测试题库含答案(考试直接用).docx VIP
- 社交礼仪教程(第7版 微课版)课件 第五章 餐饮礼仪.pptx
- 2025清华:DeepSeek从入门到精通.pdf
文档评论(0)