- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第章特征查找
第8章 特征查找
特征是GIS图上的各种元素的统称,如图形对象(点、线、多边形等)以及它们的基本结构(结点、弧段、标识点等)、各种符号和标注等。特征是描述地图的最基本的数据单位。因此我们把和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州。
(6)如果要操作较大的记录集(比如100000条记录),建议采用SDE,而不是用Shapefiles。但是SDE不支持ORDER BY语句。
8.1.2 使用SearchExpression进行简单查找
以下例子用表达式”STATE_ID = 24”来查找墨西哥地图上序号为24的州,并用另外一种颜色来显示它。
(工程Chapter801—Form01)
Option Explicit
Dim g_symSelection As MapObjects2.Symbol
Dim recSelection As MapObjects2.Recordset
Private Sub Form_Load()
Dim strExpression As String
DrawLayer
查找
strExpression = STATE_ID 24 AND STATE_ID 27
strExpression = STATE_ID = 24
Set recSelection = Map1.Layers(0).SearchExpression(strExpression)
设置显示模式
Set g_symSelection = New MapObjects2.Symbol
g_symSelection.SymbolType = Map1.Layers(0).Symbol.SymbolType
g_symSelection.color = moDarkGreen
End Sub
Sub DrawLayer()
Dim dc As New DataConnection
Dim layer As MapLayer
dc.Database = App.Path + \..\ + Mexico
If Not dc.Connect Then
MsgBox 在指定的文件夹下没找到图层数据文件!
End
End If
Set layer = New MapLayer
Set layer.GeoDataset = dc.FindGeoDataset(States)
layer.Symbol.color = moYellow
Map1.Layers.Add layer
Map1.Refresh
End Sub
Private Sub Map1_AfterLayerDraw(ByVal index As Integer, ByVal canceled As Boolean, ByVal hDC As stdole.OLE_HANDLE)
Map1.DrawShape recSelection, g_symSelection
End Sub
8.1.3 查找结果闪烁显示
本例在上一个简单示例的基础上进行扩展,实现点击Command1查询,从STATE_ID为1起,到最后为止循环显示,并用FlashShap
文档评论(0)