首页 > 其他分享 >GIS组件应用笔记2

GIS组件应用笔记2

时间:2022-12-07 19:00:08浏览次数:50  
标签:类库 GIS 一个 接口 问题 笔记 组件 图层 引用

赘述(可跳过)

今天上课相对于昨天还是比较顺利,没有第一次使用Engine时候的慌张,但是多多少少也还遇到了一些问题,也找了一点资源来分享,或许不一定有用。

今天上课的一个感受:
不知道每个接口属于哪一个引用类库,属于哪一个命名空间,我觉得有可能是软件跨版本遇到的一些问题,使用时候没有遇到编写其他代码时候的提示信息,当然也可能是因为ArcSDK是非VS本身自带的语言环境,还没探索清楚。

关于几个接口的个人理解

正文开始:我记得组件GIS操作课之前老师讲了一大堆类库和一大堆的命名空间,当时因为一下子讲了很多而且内容很抽象,所以大多没记住,以后会争取一点点联系,一点点对应。

PS:对于接口这个概念,或许稍微有一点抽象,我自己的理解就是它就是一个协议,协议里没有具体实现内容。它设计来让后来人在继承时保证功能的完整性,每一个接口实现一个特定的功能,实现这个功能时有一系列必须的方法和属性,所以继承接口时需要实现接口的所有内容。
推荐一个B站关于C#接口的视频.(不是打广告啊),我觉得还不错,老师也很棒,版本用的是VS2010。这个老师的其他视频也还不错,有时间可以看看。

IMap

接口命名时常用大写字母I作为前缀来表示这是一个接口,然后后面紧接着一个Map,所以它就是与地图处理相关的接口,实现的功能也自然是与地图相关。
课本上关于这个接口的介绍时这样的

IMap是对地图进行操作的起点,主要用于管理Map对象中的图层对象、要素选择集和空间参考等对象。使用IMap接口,可以获取Map对象中图层个数,对图层进行添加、删除,还可以利用IMap接口实现查询的高亮显示等。[1]

对于书上内容的功能介绍部分的理解,可以联想使用ArcMap的过程,理解起来会更加方便。而对于代码部分,最好的办法还是自己敲一遍。

ILayer

其实与上面的理解也类似,由于时间的关系,就先简单写一下我的理解,不一定准确,仅供参考。
其实学习面向对象的编程语言时,“顾名思义”是一种不错的方法。就像刚才所说的,I开头表明这是一个接口,Layer则是提示接口的功能实现。所以它就会说图层对象的通用接口。

IFeatureLayer

通过名字也可以看出,这个接口中有Layer,它是一个继承自ILayer的接口,提供了访问基于矢量数据图层的“协议”,也就是一些属性和方法。因为在ArcGIS中,我们知道在描述不同地理实体之间的拓扑关系时,我们需要在地理数据库中新建一些要素类(FeatureClass),然后才可以添加拓扑关系。所以在这里我们不妨就把Feature当作一些矢量数据来理解。

IFeatureClass

从名字可以看出这是一个要素类的接口,所以实现的功能就是关于要素类的“协议”。可以获取类型、数量,查询时获得的一些符合条件的要素个数,或是在要素类中新建一个功能(我理解的就是添加拓扑这类的)。

IMapControl

控制地图——对应于ArcMap的数据视图,使用它的时候一般都是拖拽了一个AxMapControl的控件。它有很多代的接口:1234和Default,默认的也就是最新的。

IMapDocument

这是一个操作地图文档的接口,处理的也就是跟地图文档相关的一些内容。

IWorkspace and IWorkspaceFactory

WorkSpace叫做工作空间,我理解是一个保存文件的文件夹。而这个工厂,则是用来创建工作空间的一个接口。

今天找到的一些帮助文档

今天上课看到ppt上的一些代码截图,直觉告诉我这是帮助文档,但是我在我的开始菜单中找了一个Help,但是无法打开。不过如果是VS2010版本应该可以打开。

位置
遇到的问题

所以我又百度了一下,找到了两个帮助文档,不过都是全英,而且加载稍微有点慢。

链接1: ArcObjects Help for .NET developers.
链接2: ArcObjects Help for .NET developers (ArcObjects .NET 10.8 SDK).

今天遇到的一些小问题

最主要的两个问题就是关于引用类库和命名空间的问题,还有一个我自己瞎搞搞出来的一个问题。

  1. 问题1:关于引用类库不全的设置:报错说未找到类型。

一般是缺少引用类库和命名空间:

增加引用类库

法1
2
选择内容

这个菜单也可以在最上面的工具栏找到。

项目菜单下

增加命名空间引用:使用using语句。
添加引用类库以后,显示修补程序就会有一些有用的东西了。
直接选择就好了。



以此按提示选择就可以了,也可以通过这个方法验证刚刚选择的引用类库玩不完整,每个接口属于那个引用类库等。

  1. 问题2:无法插入互操作类型(别学我瞎改哈)
    这个是我瞎搞出来的,如果你遇到了一些百度找不到答案的问题,建议先重新建立一个项目试一试,如果没有问题了,就再去回想自己做了什么改动。
    报错内容:

问题原因与解决: 我调了一下引用的互操作类型属性,所以出现问题,调回去就没问题了。

  1. 问题3:重复引用:

这个问题也是我作为一个初学者犯的小错误,在引用类库时,开始选了COM选项卡的,后来又在上面引用了一遍,所以重复了。

小结

虽然已经学了好几节课,但是说到底也还是一个初学者,遇到了很多问题,还有很多不懂,不过一切都要循序渐进嘛,慢慢来,接着复习!


  1. 《ArcGIS Engine地理信息系统开发教程 基于C#.NET》 测绘出版社 牟乃夏等老师编写。 ↩︎

标签:类库,GIS,一个,接口,问题,笔记,组件,图层,引用
From: https://www.cnblogs.com/wangn908/p/16964265.html

相关文章

  • GIS组件应用笔记1
    关于新建项目在课程操作之前,需要新建一个windows窗体应用程序(.NetFramework)括号里的内容一定要注意,不要选没有(.NetFramework)的窗体应用。(非VS2019版本应该没有这个问......
  • vim 使用、设置笔记
    设置.vimrc(windows下通常为_vimrc)设置vim中tab的缩进setts=4(注:ts是tabstop的缩写,设TAB宽4个空格)setexpandtab(注:用4个空格代替一个TAB,不设置的话就是一个宽为4......
  • ES6笔记 - proxy简介
    Proxy目录Proxy1.Proxy简介2.注意事项3.Proxy支持的所有拦截操作4.使用示例1.Proxy简介Proxy可以理解为在目标对象前架设一个"拦截层",外界对该对象的访问都必须......
  • 【JAVA笔记】JAVA-入门基础-面向对象04
    一、OOP详解面向对象编程(Object-OrientedProgramming,OOP)面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据。抽象三大特性:封装、继承、多态、1、cla......
  • SPARK组件
    1. SparkSQL 支持多种数据源,包括Hive,Avro,Parquet,ORC,JSON和JDBC2. SparkStreamingSparkStreaming主要用于快速构建可扩展,高吞吐量,高容错的流处理程序。支持从HDFS......
  • vue父子组件的传值总结
    情况一:父组件给子组件传值方法,使用props父页面:parent.vue<template><divclass="sidebar_contianer"><sidebar-item:routerData="transmitData"></sideb......
  • vue2 中实现全局事件组件通信
    Date:2022-11-1117:38:37Author:gavin目的:实现兄弟组件数据传输First:insertbelowcodeSecond:发布事件,aSecond:订阅事件,a识别一个好的前端开源项目的方法......
  • Markdown笔记
    Markdown学习标题字体helloword!helloword!helloword!helloword! 引用我要学Java 分割线 图片 超链接点击跳转到王者官网 列表AC......
  • SublimeText3使用笔记
    说明:此文章为使用SublimeText3的笔记,所以会不定期更新安装PackageControl参考:​​https://packagecontrol.io/installation#st3​​打开编辑器的控制台,View>ShowConsole......
  • CWnd直接派生的窗口下使用CToolBar笔记
    问题按msdn上的教程在CWnd派生的窗口的OnCreate下创建CToolBar,工具栏不显示。Createatoolbarresource.ConstructtheCToolBarobject.CalltheCreate(orCreateEx)fu......