ArcEngine中WKSPoint、WKSPointZ与IPoint的区别
1、最近忙着做毕业设计,在开发时用到了点对象,发现ArcEngine中定义了三个点对象(结构),到底我该用哪个呢?于是想钻一下牛角尖,弄清楚其区别是什么。往下看:
2、一、第一步,先来看一下我查到的相关类库和接口。首先是找到了ESRI.ArcGIS.esriSystem类库,其中定义了两种structure结构,这两个结构变量比较类似,如下图:

4、三、第三步,再看一下WKSPointZ对象,如图,这是一个三维点对象,除了X/Y值,还定义了Z坐标属性。


8、七,第七步,或者再对比下面两个图,即可明显地看出区别。

9、八,第八步,再来看一下对Point对象的Z值属性的解释,如下图,描述信息翻译过来为“返回或设置Point点对象的Z属性。虽然Z属性是指点的三维深度,但点在空间上仍然只存在于具有Z属性的2维中。此外,点必须成为ZAware对象才能使用Z属性。”在C#开发环境使用时,下图中的代码是很好的例子。

11、十,第十步,从上面的对比中可以得出结论,ArcGIS乃至ArcEngine开发中点对象(IPoint)是0维的,而不是一维或二维。那么以此类推,线对象是一维,面对象是二维的。对于GISer来说,这是一个很重要而且基础的知识点。笔者做的是ArcEngine三维开发,需要定义点的坐标,因此选择IPoint和WPSPointZ对象均可。