暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Arcgis Engine 那些事 | 基础篇2

Snake与Gis 2019-10-29
905

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

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和专业三个板块,总结平时从学习中,项目中以及杂七杂八中的东西,希望能够一直坚持下去。

在这个寒冷的时节里

因为有你的关注

而变得温暖


文章转载自Snake与Gis,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论