第六章 地图和图层
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Next i
End Sub
七、如何使用图层的属性
所有Layers继承Layer类 ILayer属性:
Name,Visible,ShowTips,MaximumScale,MinimumScale,ect.
IGeoDataset属性:Extent,SpatialReference
地理数据集的特性:控件 的范围、空间参考(坐标 系统、精度)
Next <index>
0 1
' Map Dim Dim Set
collection example … intIndex As Integer pMaps As IMaps pMaps = pMxDoc.Maps
2
For intIndex = 0 To pMaps.Count - 1 MsgBox pMaps.Item(intIndex).Name Next intIndex
获得所有地图(IMaps)
Dim pAllMaps As IMaps Set pAllMaps = pMxDoc.Maps 地图对象的集合,帮助F2 Imxdocument
四、如何遍历地图
(一)遍历Maps集合
' Syntax Example For <index = start> To <end> ' process each item …
六、层的枚举
IMap的Layers属性返回IEnumLayers
Next返回ILayer Reset移到最顶层
Dim pLayer As ILayer Dim pLayers As IEnumLayer Set pLayers = pMap.Layers
Set pLayer = pLayers.Next Set pLayer = pLayers.Next Set pLayer = pLayers.Next
Table
FeatureLayer
0 .. 1 FeatureClass
*
FeatureDataset
相关类说明:
1、Map组件类:是地图图层数据显示和操作的 一个平台。一个Map对象,可以包含各种图层, 可以是图形层,也可以是要素层,还可以是栅 格图层。
2、DataSet抽象类:表示数据集,是 Workspace中数据的集合。不能创建对象,从 Dataset直接或间接派生出来的有GeoDataset类、 Table组件类、FeatureDataset组件类、 RasterDataset组件类。
FeatureClass的例子有Shapefiles,Coverage和 Geodatabase数据集。 由于FeatureClass属性是可读的属性,因此, 不但可以获得数据源,还可以设定它。
FeatureClass属性
必须使用Set关键字
'创建一个新的FeatureLayer Dim pFLayer As IFeatureLayer Set pFLayer = New FeatureLayer
pMap.AddLayer pFLayer
拷贝演示
九、设置图层的数据源
使用IFeatureLayer的FeatureClass属性
要素层是基于一种FeatureClass类型的数据集,
FeatureClass是具有简单要素类型(点、线、多 边形)、普通属性集和普通空间参考的数据集,它 是要素及其相应属性的集合。
3、FeatureLayer组件类 要素层,要素Feature的集合及其可视化表达。 4、要素类(FeatureClass):它是具有行为和
属性的空间实体的集合。要素类中所有的要素都
有同样的属性字段。另外,它有一个专门存放几 何图形的字段。
Table
FeatureClass
1
2
3
4
Shape
空间列:存储了空间坐标集空间信息
示例
(二)访问一个已知名字的地图
当一个条件为真时,永久退出循环
For Next循环:Exit For Do While和Do Until Loops:Exit Do
Dim pCityMap As IMap Dim X As Integer For X = 0 To pMaps.Count - 1 If pMaps.Item(X).Name = "Cities" Then Set pCityMap = pMaps.Item(X) Exit For End If Next X MsgBox "All Done", vbInformation
十、图层控制 利用GIS进行分析和研究,往往需要多个 图层文件的信息综合,所以,图层进行控制和 管理对GIS来说非常重要。 一般来说,用户对图层的控制需求包括:
(1)图层插入、移除
(2)图层压盖关系调整
(3)图层是否显示的控制
(一)图层的添加和删除 图层的移除是指将图层对象从内存中删除, 而不是把数据从硬盘上删除。图层的移除包括 删除某个具体图层和删除全部图层两种情况。 (1)移除一个具体图层(IMap) Object.DeleteLayer (iLayer )
获得所有图层(IMap)
Dim pAllLayers As IEnumLayer Set pAllLayers = pMap.Layers 枚举图层接口
集合相当于数组
Maps
0
1 2 3 4
此知道明确多少个
Layers是一个枚举,相当于不知道个数的集合, 通过指针访问每一个元素,指针下移访问。通过 位置顺序访问,Next操作访问。
Object.MoveLayer (Layer, toIndex )
Public Sub MoveLayer() Dim pMxDocument As IMxDocument Dim pMap As IMap Dim pLayer As ILayer Set pMxDocument = Application.Document Set pMap = pMxDocument.FocusMap Set pLayer = pMxDocument.SelectedLayer pMap.MoveLayer pLayer, pMap.LayerCount - 1 End Sub
'获取另外一个图层的FeatureClass Dim pFClass As IFeatureClass Set pFClass = pSomeOtherLayer.FeatureClass
'设置新图层的FeatureClass属性 Set pFLayer.FeatureClass = pFClass
十、添加栅格影像文件
栅格数据是GIS中重要的数据源之一。它 有很强的表达能力,可以描述很多目标和事 物,如高程和植被等。一般的栅格数据有卫 星图像、扫描的地图、照片等。由于存储格 式的不同,栅格数据可以分为bmp, tiff, jpg, grid等,这些都是ArcGIS所支持的。 实际应用中,可以将它们作为图层添加到 工程中,然后进一步分析和利用。
(2)移除全部图层
Object.ClearLayers
(二)图层间关系的调整 实际应用中,地图多为分层表示,一个Map 中往往存在多个图层。图层间关系的调整就显 得很必要。通过图层间关系的调整,用户可以 选择图层之间的压盖顺序,保证用户可以将最 关系的内容摆到最上层。 改变图层之间的压盖关系可以用IMap接口 中的MoveLayer函数。
示例
五、地图中获取图层
获取地图Map或地图文档MxDocument的图层
获取所选图层(IMxDocument)
Dim pLayer As ILayer Set pLayer = pMxDoc.SelectedLayer(示例程序)
获取指定图层(IMap)
Dim pLayer As ILayer Set pMap = pMxDoc.FocusMap Set pLayer = pMap.Layer(3) 示例
FeatureClass本身也是一张表,表的所有属性要素类都有,但 本身也有一个空间列
三、如何获取地图
获取地图文档中的地图
获得焦点地图
Dim pMxDoc As IMxDocument Set pMxDoc = ThisDocument ‘QI Dim pMap As IMap Set pMap = pMxDoc.FocusMap
IEnumLayer Top
pLayers.Reset
Set pLayer = pLayers.Next
Nothing
Dim pMxDoc As IMxDocument Set pMxDoc = ThisDocument Dim pMap As IMap Set pMap = pMxDoc.FocusMap Dim pLayer As ILayer Dim pMapLayers As IEnumLayer Set pMapLayers = pMap.Layers Set pLayer = pMapLayers.Next Do Until pLayer Is Nothing MsgBox pLayer.Name Set pLayer = pMapLayers.Next Loop 不知多少个,直到该条件为空,跳出循环
小心无限循环(Ctrl+Break)
Do While Not MsgBox("添加一个记录") = vbYes MsgBox "增加记录" Loop
二、对象模型概述
Application
ArcMap UI
MxDocument * Map * Layer
DataSet
Geodatabase Carto
Dim pMxDoc As IMxDocument Set pMxDoc = ThiBaidu NhomakorabeaDocument Dim pMap As IMap Set pMap = pMxDoc.FocusMap Dim pFLayer As ILayer Set pFLayer = New FeatureLayer
pFLayer.Name = "新建图层"
Dim pLayer As ILayer Set pLayer = pMxDoc.SelectedLayer pLayer.Name = "街道" pLayer.Visible = True pLayer.ShowTips = False
七、给地图加入新图层
Layer是一个抽象类,不可创建,可创建的为 子类:TinLayer,FeatureLayer,RasterLayer
第六章 地图和图层
课程预览
循环 获取地图和图层 通过地图和图层的循环
集合、枚举
创建新图层
层属性
为层指定数据源
一、循环
循环一个确切次数
语法: For <index=start> To <end> Next i
基于条件的循环(当后面表达式为真,进入循环)
Do Until/While <a condition is a true> ‘Run this code Loop
添加栅格影像文件主要用到的接口有IMap, ILayer,IRasterLayer等。
如何遍历图层?
Public Sub test() Dim pMxDoc As IMxDocument Set pMxDoc = ThisDocument Dim pMap As IMap Set pMap = pMxDoc.FocusMap
Dim i As Integer Dim pLayer As ILayer For i = 0 To pMap.LayerCount - 1 MsgBox pMap.Layer(i).Name
(三)图层显示状态的控制 图层的显示状态:是指图层是否可见。 调整图层的显示状态,允许用户暂时地 “关闭”某些图层,一方面简化了显示内容, 便于阅读地图;另一方面可以提高显示刷新的 效率。 ILayer接口的Visible属性决定图层是否可以 显示。 Object.Visible = [ value ]
End Sub
七、如何使用图层的属性
所有Layers继承Layer类 ILayer属性:
Name,Visible,ShowTips,MaximumScale,MinimumScale,ect.
IGeoDataset属性:Extent,SpatialReference
地理数据集的特性:控件 的范围、空间参考(坐标 系统、精度)
Next <index>
0 1
' Map Dim Dim Set
collection example … intIndex As Integer pMaps As IMaps pMaps = pMxDoc.Maps
2
For intIndex = 0 To pMaps.Count - 1 MsgBox pMaps.Item(intIndex).Name Next intIndex
获得所有地图(IMaps)
Dim pAllMaps As IMaps Set pAllMaps = pMxDoc.Maps 地图对象的集合,帮助F2 Imxdocument
四、如何遍历地图
(一)遍历Maps集合
' Syntax Example For <index = start> To <end> ' process each item …
六、层的枚举
IMap的Layers属性返回IEnumLayers
Next返回ILayer Reset移到最顶层
Dim pLayer As ILayer Dim pLayers As IEnumLayer Set pLayers = pMap.Layers
Set pLayer = pLayers.Next Set pLayer = pLayers.Next Set pLayer = pLayers.Next
Table
FeatureLayer
0 .. 1 FeatureClass
*
FeatureDataset
相关类说明:
1、Map组件类:是地图图层数据显示和操作的 一个平台。一个Map对象,可以包含各种图层, 可以是图形层,也可以是要素层,还可以是栅 格图层。
2、DataSet抽象类:表示数据集,是 Workspace中数据的集合。不能创建对象,从 Dataset直接或间接派生出来的有GeoDataset类、 Table组件类、FeatureDataset组件类、 RasterDataset组件类。
FeatureClass的例子有Shapefiles,Coverage和 Geodatabase数据集。 由于FeatureClass属性是可读的属性,因此, 不但可以获得数据源,还可以设定它。
FeatureClass属性
必须使用Set关键字
'创建一个新的FeatureLayer Dim pFLayer As IFeatureLayer Set pFLayer = New FeatureLayer
pMap.AddLayer pFLayer
拷贝演示
九、设置图层的数据源
使用IFeatureLayer的FeatureClass属性
要素层是基于一种FeatureClass类型的数据集,
FeatureClass是具有简单要素类型(点、线、多 边形)、普通属性集和普通空间参考的数据集,它 是要素及其相应属性的集合。
3、FeatureLayer组件类 要素层,要素Feature的集合及其可视化表达。 4、要素类(FeatureClass):它是具有行为和
属性的空间实体的集合。要素类中所有的要素都
有同样的属性字段。另外,它有一个专门存放几 何图形的字段。
Table
FeatureClass
1
2
3
4
Shape
空间列:存储了空间坐标集空间信息
示例
(二)访问一个已知名字的地图
当一个条件为真时,永久退出循环
For Next循环:Exit For Do While和Do Until Loops:Exit Do
Dim pCityMap As IMap Dim X As Integer For X = 0 To pMaps.Count - 1 If pMaps.Item(X).Name = "Cities" Then Set pCityMap = pMaps.Item(X) Exit For End If Next X MsgBox "All Done", vbInformation
十、图层控制 利用GIS进行分析和研究,往往需要多个 图层文件的信息综合,所以,图层进行控制和 管理对GIS来说非常重要。 一般来说,用户对图层的控制需求包括:
(1)图层插入、移除
(2)图层压盖关系调整
(3)图层是否显示的控制
(一)图层的添加和删除 图层的移除是指将图层对象从内存中删除, 而不是把数据从硬盘上删除。图层的移除包括 删除某个具体图层和删除全部图层两种情况。 (1)移除一个具体图层(IMap) Object.DeleteLayer (iLayer )
获得所有图层(IMap)
Dim pAllLayers As IEnumLayer Set pAllLayers = pMap.Layers 枚举图层接口
集合相当于数组
Maps
0
1 2 3 4
此知道明确多少个
Layers是一个枚举,相当于不知道个数的集合, 通过指针访问每一个元素,指针下移访问。通过 位置顺序访问,Next操作访问。
Object.MoveLayer (Layer, toIndex )
Public Sub MoveLayer() Dim pMxDocument As IMxDocument Dim pMap As IMap Dim pLayer As ILayer Set pMxDocument = Application.Document Set pMap = pMxDocument.FocusMap Set pLayer = pMxDocument.SelectedLayer pMap.MoveLayer pLayer, pMap.LayerCount - 1 End Sub
'获取另外一个图层的FeatureClass Dim pFClass As IFeatureClass Set pFClass = pSomeOtherLayer.FeatureClass
'设置新图层的FeatureClass属性 Set pFLayer.FeatureClass = pFClass
十、添加栅格影像文件
栅格数据是GIS中重要的数据源之一。它 有很强的表达能力,可以描述很多目标和事 物,如高程和植被等。一般的栅格数据有卫 星图像、扫描的地图、照片等。由于存储格 式的不同,栅格数据可以分为bmp, tiff, jpg, grid等,这些都是ArcGIS所支持的。 实际应用中,可以将它们作为图层添加到 工程中,然后进一步分析和利用。
(2)移除全部图层
Object.ClearLayers
(二)图层间关系的调整 实际应用中,地图多为分层表示,一个Map 中往往存在多个图层。图层间关系的调整就显 得很必要。通过图层间关系的调整,用户可以 选择图层之间的压盖顺序,保证用户可以将最 关系的内容摆到最上层。 改变图层之间的压盖关系可以用IMap接口 中的MoveLayer函数。
示例
五、地图中获取图层
获取地图Map或地图文档MxDocument的图层
获取所选图层(IMxDocument)
Dim pLayer As ILayer Set pLayer = pMxDoc.SelectedLayer(示例程序)
获取指定图层(IMap)
Dim pLayer As ILayer Set pMap = pMxDoc.FocusMap Set pLayer = pMap.Layer(3) 示例
FeatureClass本身也是一张表,表的所有属性要素类都有,但 本身也有一个空间列
三、如何获取地图
获取地图文档中的地图
获得焦点地图
Dim pMxDoc As IMxDocument Set pMxDoc = ThisDocument ‘QI Dim pMap As IMap Set pMap = pMxDoc.FocusMap
IEnumLayer Top
pLayers.Reset
Set pLayer = pLayers.Next
Nothing
Dim pMxDoc As IMxDocument Set pMxDoc = ThisDocument Dim pMap As IMap Set pMap = pMxDoc.FocusMap Dim pLayer As ILayer Dim pMapLayers As IEnumLayer Set pMapLayers = pMap.Layers Set pLayer = pMapLayers.Next Do Until pLayer Is Nothing MsgBox pLayer.Name Set pLayer = pMapLayers.Next Loop 不知多少个,直到该条件为空,跳出循环
小心无限循环(Ctrl+Break)
Do While Not MsgBox("添加一个记录") = vbYes MsgBox "增加记录" Loop
二、对象模型概述
Application
ArcMap UI
MxDocument * Map * Layer
DataSet
Geodatabase Carto
Dim pMxDoc As IMxDocument Set pMxDoc = ThiBaidu NhomakorabeaDocument Dim pMap As IMap Set pMap = pMxDoc.FocusMap Dim pFLayer As ILayer Set pFLayer = New FeatureLayer
pFLayer.Name = "新建图层"
Dim pLayer As ILayer Set pLayer = pMxDoc.SelectedLayer pLayer.Name = "街道" pLayer.Visible = True pLayer.ShowTips = False
七、给地图加入新图层
Layer是一个抽象类,不可创建,可创建的为 子类:TinLayer,FeatureLayer,RasterLayer
第六章 地图和图层
课程预览
循环 获取地图和图层 通过地图和图层的循环
集合、枚举
创建新图层
层属性
为层指定数据源
一、循环
循环一个确切次数
语法: For <index=start> To <end> Next i
基于条件的循环(当后面表达式为真,进入循环)
Do Until/While <a condition is a true> ‘Run this code Loop
添加栅格影像文件主要用到的接口有IMap, ILayer,IRasterLayer等。
如何遍历图层?
Public Sub test() Dim pMxDoc As IMxDocument Set pMxDoc = ThisDocument Dim pMap As IMap Set pMap = pMxDoc.FocusMap
Dim i As Integer Dim pLayer As ILayer For i = 0 To pMap.LayerCount - 1 MsgBox pMap.Layer(i).Name
(三)图层显示状态的控制 图层的显示状态:是指图层是否可见。 调整图层的显示状态,允许用户暂时地 “关闭”某些图层,一方面简化了显示内容, 便于阅读地图;另一方面可以提高显示刷新的 效率。 ILayer接口的Visible属性决定图层是否可以 显示。 Object.Visible = [ value ]