介绍凤凰台上凤凰游,凤去台空江自流

Arcgis Engine 基础篇
时隔一年没发任何东西了,实在是惭愧,偶尔忙着忙着就不想更新了,现在闲了一阵子,就想起来还有公众号要维护,以后尽量不会再拖延症了QAQ(就是容易拖着拖着就不想做了,哈哈哈)。
新的内容,接着上一个基础篇,本期主要介绍常见的主要操作。
1.地图文档加载
(1) 使用 AxMapControl的LoadMxFile
(2) 使用IMapDocument接口加载
(3) 使用ControlsOpenDocCommandClass加载地图

2.shape文件加载
(1) 通过工作空间加载ShapeFIle文件
(2) 通过MapControl的AddShapefile方法加载Shapefile文件

3.加载个人地理数据库
看书吧。。。。。。
(个人觉得,后面数据加载不是重点,因为Arcgis主要处理矢量数据的,后面的栅格,cad,等等,可能是额外的内容吧,个人观点,若觉得可以学习,可以自己书上再看看)
4.地图文档保存和另存为
(1)保存和另存为:
使用IMapDocument接口加载
(2)另存为;
使用ControlsSaveAsDocCommandClass

5.地图浏览
(1)放大与缩小
主要是通过过改变MapControl中当前视图的范围即Extent属性,该属性返回的结果是IEnvelope接口,可以通过Expand方法来放大或者缩小

(2)拉框放大与缩小
使用TrackRectangle方法,该方法在MapContrl的OnMouseDown事件中触发,会在MapControl上生成一个由用户鼠标轨迹定义的矩形橡皮筋。
该方法返回一个IPolygon接口的几何对象
(这个能用工具,就用工具实现,但是这个方法应该是通过这个功能应该去了解一下的
(3)漫游

(4)全图显示
把axMapControl控件的FullExtent属性赋给当前地图的Extent

(5)历史视图切换
通过IExtentStack接口,即堆扩展接口。
可以通过axMapControl.ActiveView.ExtentStack获得该接口


(6)书签
IMapBookmarks,ISpatialBookmark和IAOIBookmark三个接口
(主要是去了解这三个接口吧,其余内容在书上看吧,这个也有点多。。。。。。。)
6.量测
(1)状态栏坐标显示
根据axMapControl.Map.MapUnits获得当前地图的单位,然加到toolStripStatusLabel控件中

(2)距离量测
INewLineFeedback和IScreenDisplay两个接口
INewLineFeedb接口:

IScreenDisplay接口:
MapControl中的每个视图都有一个ScreenDisplay对象,用于控制视图中的图形绘制。
ScreenDisplay对象除了管理窗体屏幕的显示属性外,也管理缓存和视图屏幕的变化等。可以通过IActiveView接口的ScreenDisplay属性获取ScreenDisplay对象。通过ScreenDisplay对象的DisplayTransformation属性进行设备单位和地图单位的转换。
(3)面积量测
INewPolygonFeedBac接口
7. 要素选择
(1)要素选择
a. 使用IMap接口的SelectByShape方法。
该方法可以查询到与输入的形状相交的图层中所以的IFeatureLayer接口类型的Features,但前提是FeatureLayer图层的selectable属性为true。

b. 使用ControlsSelectFeaturesTool

(2)缩放至选择
a. 遍历所选要素,然后用IEnvelope接口的Union方法获取所有选中要素的外包框范围,使地图视图缩放至该范围
b. 使用ControlsZoomToSelectedCommand

(3)清除选择
a. 常规方法 ClearSelection

b. 使用ControlsClearSelectionCommand

8. 地图导出
(内容比较多,还是看书吧,主要是那个封装的ExportMap类)
9. 视图同步
(这个部分的话,主要是不是工具能够直接提供的,感觉也会是一个重点,但是不确定,内容也比较多,还是看书)
简单总结一下涉及的事件和自定义的方法
与主地图有关的事件:
OnMapRelaced和OnExtentUpdate
与鹰眼地图有关的事件:
OnMouseDown,OnMouseMove和OnMouseUp
自定义的两个方法:
SynchrmizeEagleEye和DrawReactangle
10. 图层显示顺序调整
(1)通过控件属性设置TOCControl中图层顺序的拖拽调整
在TOCControl控件上右键单击,选择【Properties】选项,弹出【属性】对话框,然后选择【General】选项卡,勾选【Enable Layer Drag and Drop】,即可以实现图层的拖曳调整。
(2)通过代码实现TOCControl中图层顺序的调整
主要涉及控件的OnMouseDown和OnMouserUp事件和HitTest方法
11. TOCControl的右键菜单
(1)查询图层属性表
(2)缩放至图层
根据IFeatureLayer接口的AreaOfInterst属性获取图层的范围,并赋予数据视图的范围

(3)移出图层
调用Map对象的DeleteLayer方法

(4)图层可选,不可选
主要使用IFeature接口的Selectable属性

以上就是本期所有内容了,由于时隔了一年,ArcEngine的知识,我都不太熟练了,这次内容是去年的笔记留下的,若有不正确的地方,希望留言加以指正。应该最后还有一期的内容是关于ArcEngine的,之后就很少再更新这个系列,我将会补充平时Java,Python和专业三个板块,总结平时从学习中,项目中以及杂七杂八中的东西,希望能够一直坚持下去。
在这个寒冷的时节里
因为有你的关注
而变得温暖







