当前位置:甜馍馍地理信息网 >> 地理信息系统GIS >> 组件式GIS >> 正文 >>  [阅读资讯:MapX开发疑问之坐标问题讲解]

MapX开发疑问之坐标问题讲解

[ 来源:互联网 | 时间:2007年10月07日 | 收藏本文 ] 【

对于GIS系统,坐标系是和每个对象对应的,也就是说,任何一个空间对象(Feature)都必须有一个空间参考,但在实现中,一般是一个图层对应一个空间 参考,也就是坐标系。而整个地图也有一个空间参考,并且有的系统,这个参考还分为实际内部数据的和显示的(例如MapX)。

MapX的空间参考可以通过CoordSys object来设置。设置的类型包括平面坐标(笛卡尔坐标,Non-Earth),经纬度以及各类投影坐标系统。然后这个CoordSys对象可以和图 层、Map对象关联,或者说,每个Layer对象和Map对象都有自己的空间参考。

我们知道,一个GIS开发包或者GIS平台,和一般的图形系统的差别就在于其管理的对象都是有空间参考(或者叫地理参考)的,简而言之,空间参考就是坐标系,但坐标系不是简单的笛卡尔坐标系,因为地球是圆的。有关的文献可以参考一般的地图学教材。

在MapX中,图层的空间参考可以通过Layer.CoordSys属性来获取或者设置。

MapX 的Map对象的空间参考则可以通过Map.DisplayCoordSys和Map.NumericCoordSys属性来设置,前者是显示的坐标,后者 是实际的坐标。如果你把前者设置为经纬度,后者设置为投影坐标,那么通过Map的工具量测得到就是前者的坐标单位,而通过FeatureFactory对 象添加属性,使用的坐标就是后者。 字串1

那么对应层和Map对象空间参考不一致的情况,显示的时候就要实时(onfly)变换。

在我们使用FeatureFactory添加坐标的时候,一定要清楚当前地图的NumericCoordSys属性的设置。

而创建一个Point的对象的时候,使用的也是NumericCoordSys这个坐标体系。

对于一个没有添加任何数据的MapX控件,其Map的NumericCoordSys属性为平面坐标,如果使用Layers.Add添加图层,这个属性就自动变为添加的第一个图层的空间参考。

如果加载GeoSet,则坐标体系通过GeoSet创建。

通过MapX的Layers.Add方法新建图层,一般不需要指定图层的空间参考,也无法在LayerInfo对象中指定文件图层对象的空间参考,这时,创建的图层的空间参考为MapX的空间参考(NumericCoordSys)。

另外,使用平面坐标(Non-Earth)时,需要指定其范围,缺省好像是-100到100,太小,但也不能太大,不确定的情况下,使用int.max就合适,太大数据溢出,就等于很小了。

坐标是GIS开发一个比较头疼的问题,遇到类似的问题的朋友,希望这篇东西会有益处。

【推荐本文】 【打印本页】 【返回顶部

>> 相关文章:

● 上一篇文章:ARC命令说用说明及详细讲解
● 下一篇文章:MapX图层样式替换的VB源代码
最新文章
推荐文章