优质试验五数据查询与简单空间分析_第1页
优质试验五数据查询与简单空间分析_第2页
优质试验五数据查询与简单空间分析_第3页
优质试验五数据查询与简单空间分析_第4页
优质试验五数据查询与简单空间分析_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验五数据查询与简单空间分析实验数据:country.shp、 rivers.shp、cities.shp实验内容:1. 数据查询2. 简单空间分析实验要求1、数据查询这部分实验要求基于FeatureCursor对象和IFeatureCursor 接口提供的属性和方法,扩展TOCControl的功能,通过鼠标右键点击某个图层,弹出快捷菜单,打开相应的属性信 息表(属性表显示可以用VB自带的MSFIexGrid控件)。右键点击某个图层弹出“打开属性表”的快捷菜单示意图打开属性表后的示意图MHMneno置 9Ml-ByelrV5:0 - n B . 盛 P记匸1 H : 曰一下 f IIIT n

2、9 i 3 i 7 & I 3 I-h - Id Fill -4 ttg 豊r.怎兰:AU#h g sJTjSet pQFilt = New QueryFilterForm16.MSFIexGrid.Rows = 2Form16.MSFlexGrid.TextMatrix(i, j)=pFeatureLayer.FeatureClass.FeatureCo un t(pQCStr(pFeatureLayer.FeatureClass.GetFeatureFilt) + 1(i).Value(j) + i = 1Next jFori = 1 ToNext ipFeatureLayer.Featu

3、reClass.FeatureCo un t(pQEnd FunctionFilt)Form16.MSFlexGrid.Cols =Forj = 0 TopFeatureLayer.FeatureClass.Fields.FieldCoupFeatureLayer.FeatureClass.Fields.FieldCountnt - 1For i = 0 TopFeatureLayer.FeatureClass.GetFeature(i).VpFeatureLayer.FeatureClass.Fields.FieldCoualue(j)nt - 1CStr(pFeatureLayer.Fea

4、tureClass.GetFeatureForm16.MSFlexGrid.TextMatrix(0, i)=1) QueryFilter 对象2) SpatialFilter 对象QueryFilter 过滤器对象主要用于对属性数据查询条件的设置,它主要实现 IQueryFilter接口从而实现属性查询功能。它用于限制从单个表或特征类获取的行集或列集。它也用在许多需要指定表中的数据子集的情形中。这个对象及IQueryFilter接口在实验三的“从属性到图形要素的综合查询”部分已经使用过,请同学们再回顾下它的具体用法。基于SpatialFilter对象实现点图选择及查询功能点击国家图层中的某个

5、国家,在列表框中返回所点击国家的名字。点图查询国家示意图基于SpatialFilter对象实现拉框、拉圆、多边形选择及查询功能通过拉矩形框、拉圆、画多边形方式选择城市图层中的城市,在列表框中返回所选择 城市的名字。拉框选择城市示意图代码:Set pFeatSelecti on = pFeatlyr2Set pFeatlyr2 = Map Co ntrol1. Layer(O)获取索Set pFeatSelectio n1 = pFeatlyr2引号为2的图层pFeatSelectio n1.SelectFeaturesDim penv As IGeometrypfilter1, esriSel

6、ecti on ResultNew, FalseSet penv = MapC on trol1.TrackRecta ngleDim pCursor1 As ICursorpPoi nt.PutCoords mapX, mapY 设置点的坐标为pFeatSelectio n1.Selectio nSet.Search鼠标点击处的地图坐标Noth ing. False, pCursor1Dim pfilter1 As ISpatialFilterSet pFeatCorsor = pCursor1Set pfilter1 = New SpatialFilterDim pFeat1 As IFe

7、ature设置空间过滤器的三个必须的属性值Set pFeat1 = pFeatCorsor.NextFeatureWith pfilter1If Not pFeat1 Is Nothing ThenSet .Geometry = penvMapCo ntrol1.DrawSh ape pFeat1.Shape.GeometryField = SHAPEEnd if.SpatialRel = esriSpatialRelCo nta ins 设置空间过滤器空间关系类型End With拉圆选择城市示意图Dim penv As IGeometrySet pe nv = MapCo ntroll.Tr

8、ackCircle多边形选择城市示意图Dim penv As IGeometrySet pe nv = MapCo ntrol1.TrackPolygon基于SpatialFilter对象实现画线选择及查询功能在地图上画一条线,选择上和这条线相交的国家,在列表框中返回所选择国家的名字。画线选择国家示意图代码:Set pFeatSelect ion = pFeatlyr2Set pFeatlyr2 = MapCo ntroll.Layer(O)获取索引Set pFeatSelectio n1 = pFeatlyr2号为2的图层pFeatSelect ion 1.SelectFeaturespfi

9、lter1,Dim penv As IGeometryesriSelecti on ResultNew, FalseSet penv = MapC on trol1.Trackli neDim pCursor1 As ICursorpPoi nt.PutCoords mapX, mapY 设置点的坐标为鼠pFeatSelectio n1.Selectio nSet.SearchNothi ng,标点击处的地图坐标False, pCursor1Dim pfilter1 As ISpatialFilterSet pFeatCorsor = pCursor1Set pfilter1 = New Sp

10、atialFilterDim pFeat1 As IFeature设置空间过滤器的三个必须的属性值Set pFeat1 = pFeatCorsor.NextFeatureWith pfilter1If Not pFeat1 Is Nothing ThenSet .Geometry = penvMap Co ntrol1.DrawShape pFeat1.Shape.GeometryField = SHAPEEnd if.SpatialRel = esriSpatialRelCrosses 设置空间过滤器空间关系类型End With1.简单空间分析1)空间拓扑运算(2 )实验要求(交集,并集,差

11、集) 在地图上任意画两个多边形,分别实现两个多边形的逻辑运算 任意画两个多边形示意图求交集运算示意图并集运算示意图求差集运算示意图If j = 1 The n/求并集Set plyl = MapCo ntroll.TrackPolygo nSet ptopa = ptop1. Union( ply2)MapCo ntrol1.RefreshMap Co ntrol1.FlashShape ptopa, 2End If/求差集If j = 2 ThenSet ptopa = ptop1.Differe nce(ply2)Set ply2 = MapCo ntrol1.TrackPolygo nM

12、ap Co ntrol1.FlashShape ptopa, 2MapCo ntrol1.RefreshEnd IfIf Not ply1 Is Nothing ThenPrivate Sub Comma nd3_Click()Map Co ntrol1.DrawShape ply1If (Not ply1 Is Nothing) And (Not ply2Is Nothing)End IfThe nIf Not ply2 Is Nothing ThenDim ptop1 As ITopologicalOperatorMap Co ntrol1.DrawShape ply2Dim ptop2

13、As ITopologicalOperatorEnd IfSet ptop1 = ply1If Not ptopa Is Nothing ThenSet ptop2 = ply2MapC on trol1.DrawShape ptopa, pfilsptop1.SimplifyEnd Ifptop2.Simplify 在地图上点击某条河流,做出这条河流的缓冲区。先选择河流图层,图层会自动将其它图层设置为不可见,其次进行缓冲阈值的选择设置;得到最后的结果:河流缓冲区示意图IfForm13.Combo1.List(Form13.Combo1 .L istI ndex)=Dim compfeat A

14、s IFeatureRIVERS The nSet pfetcor = pFeatlyr.Search(pFilter,Dim pFeatlyr As IFeatureLayerTrue)获取索引号为2的图层Set pfeat4 = pfetcor.NextFeatureSet pFeatlyr = Map Co ntrol1.Layer(1)Map Co ntrol1.FlashShapeSet pPoi nt1 = New esriGeometry.Poi ntpfeat4.ShapepPoi nt1.PutCoords mapX, mapYDim rivcol As IRgbColorD

15、im poittop As ITopologicalOperatorSet rivcol = New RgbColorDim pli ntop As ITopologicalOperatorIf Not pfeat4 Is Nothing ThenSet poittop = pPoi nt1Setsymli ne=NewSet pbufferpo int = poittop.Buffer(1)SimpleLi neSymbolDim pFilter As ISpatialFilterEnd IfSet pFilter = New SpatialFilterSet pli ntop = pfea

16、t4.Shape设置空间过滤器的三个必须的属性值Set priverbuf = pli ntop.Buffer(3)With pFilterMapCo ntrol1.FlashSh apeSet .Geometry = pbufferpo intpriverbuf.GeometryField = SHAPEMapCo ntrol1.Refresh设置空间过滤器空间关系类型.SpatialRel = esriSpatialRelCrossesEnd WithEnd If 在地图选择某个城市, 得到该城市周围1000公里范围内的城市,在列表框中显示出这些 城市的名称。选择某个城市1000公里范围内

17、的城市示意图2)空间关系运算点击一条河流,得到该河流所流经的地区,并要求同时闪烁显示 河流流经的国家示意图Set pFeatlyr = MapCo ntroll.LayerSet priverbuf = Nothi ngSet pbufferpo int = poittop.Buffer(1)Dim pFilter As ISpatialFilterSet pFilter = New SpatialFilter 设置空间过滤器的三个必须的属性值With pFilterSet .Geometry = pbufferpo int .GeometryField = SHAPE 设置空间过滤器空间关系

18、类型 .SpatialRel = esriSpatialRelCrosses End WithDim compfeat As IFeatureSet pfetcor = pFeatlyr.Search(pFilter, True)Set pfeat4 = pfetcor.NextFeatureEnd IfIf Not pfeat4 Is Nothing ThenMapCo ntrol1.FlashShape pfeat4.ShapeSet pfeatlyr1 - Map Co ntrol1.Layer(2)获取索引号为 2 的图层Dim pFeatSelect ion As IFeatureS

19、elect ionSet pFeatSelecti on = pfeatlyr1与国家相交的Dim RelOperator As IRelati on alOperatorSet RelOperator = pfeat4.Sh apeDim pFeatCorsor As IFeatureCursor查找相邻的要素,并放到选择集中Set pFeatCorsor = pfeatlyr1.Search(Noth ing, True)设置图层中的要素为比较的几何对象Set CompareFeat = pFeatCorsor.NextFeatureDo Un til CompareFeat Is Not

20、h ing若比较几何对象和参考几何对象相接触,If RelOperator.Crosses(CompareFeat.Shape) = True ThenMapC on trol1.map.SelectFeature pfeatlyr1, CompareFeatEnd IfSet CompareFeat = pFeatCorsor.NextFeatureLoopEnd If点击一个国家,得到该国家所包含的城市,同时闪烁加以显示国家包含的城市示意图选择一个国家,将国家包含的城市用蓝色显示出来:将选中的国家进行边界的显示。Set pFeatlyr2 = MapCo ntrol1.Layer(2)获取

21、索引号为 2 的图层Point.PutCoords mapX, mapY 设置点的坐标为鼠标点击处的地图坐标Set pFilter = New SpatialFilter设置空间过滤器的三个必须的属性值With pFilterSet .Geometry = pPo int.GeometryField = SHAPE.SpatialRel = esriSpatialRelWithin 设置空间过滤器 空间关系类型End With按照过滤条点击一个国家,得到和该国家相毗邻的国家,同Set pFeatS闪烁加o以显示Featlyr2“设被选择个国家相毗邻色为蓝示意图选择鼠标 点击处的多边形pFeat

22、Selectio n1.SelectFeaturespFilter,esriSelectio nResultNew, FalsepFeatSelect ion 1.Selecti on Set.SearchNoth ing.False,pCursorSet pFeatCorsor = pCursorSet pFeat = pFeatCorsor.NextFeatureIf Not pFeat Is Nothing Then设置被选择的几何对象为参考集合对象Dim pfeatlyr3 As IFeatureLayerSet pfeatlyr3 = MapCo ntrol1.Layer(0)查找相

23、邻的要素,并放到选择集中Dim pFeatCorsor1 As IFeatureCursorSet pFeatCorsor1 = pfeatlyr3.Search(Nothing, True)设置图层中的要素为比较的几何对象Dim CompareFeat1 As IFeatureSet CompareFeat1 = pFeatCorsor1.NextFeatureDim pFeatSelectio n2 As IFeatureSelect ionSet pFeatSelectio n2 = pfeatlyr3 选择鼠标点击处的多边形Set pFeatSelecti on 2.Selectio nColor = pColor3Do Un til CompareFeat1 Is Nothi ng若比较几何对象和参考几何对象相接触,则把比 较几何对象放入选择集合中If RelOperator1.Co ntai ns(CompareFeat1.Shape)= True The nMapCo ntrol1.map.SelectFea

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论