MapInfo Professional中的三个投影 之实战


    在MapInfo Professional中有三个投影概念分别用于不同的对象(实际上MapInfo将投影和坐标系混在了一起,所以这里的投影包括坐标系投影选择对话框内的所有选项),这三个投影分别是表投影、会话投影和视图投影.

表投影实际上是表本身的投影设置,尽管投影在经纬度坐标系的地图存储中没有什么意义,但是在打开数据的时候总是需要一种默认的投影方式进行打开,这个默认的方式本身就是表投影,当然,一旦打开成地图,那么表投影就成了默认的视图投影。因为数据本身的存储也和采用什么坐标系和投影方式有一定的关系,因此,表投影还是非常重要的。影响表投影的操作有两个,一个是在建立新表的时候,构建表结构时需要选择的投影方式,这个投影一旦选择将不可再更改,所以在做矢量化的时候一定注意;另一个是在菜单 选项-》参数设置-》地图窗口-》缺省投影-》表投影,在点击此按钮之后进行选择的投影将成为新建表时默认的投影选项,如果你经常绘制工程图,那么设置默认成非地球坐标系应该是比较方便的。

会话投影是一种内置的坐标系转换机制,它允许你采用不同的坐标系和投影去获得同一个点的坐标,比如这个表本身是高斯克吕格投影,坐标值采用的是平面直角坐标系,单位是米,但是现在需要获得经纬度的数值,可以通过将会话投影设置为经纬度的投影方式,就可以通过CentroidX()、CentroidY()获取经纬度坐标值了。会话投影的更改可以通过MapBasic语句Set CoordSys来改变,也可以通过菜单 选项-》参数设置-》地图窗口-》缺省投影-》会话投影进行改变,即使生效,只不过语句修改是一次性的,菜单对话框将成为professional中默认的。另外,会话投影的改变不影响地图的显示。详细请参考MapBasic帮助文档中有关Set CoordSys语句一段。
视图投影是经常用到的。我们知道矢量数据本身不具有固定的投影,可以根据需要将他们动态调整为各种投影方式。通过菜单 地图-》选项-》投影进行修改。由于这个比较简单,就不做太多叙述了。


以上是网上找到相关资料,不过今天用了以后才发现,不是这么回事,MAPBASIC 写完的代码,读取地方坐标如:501699.9760 ,298524.3716 用CentroidX()、CentroidY()获取的坐标是 4.23423,6.32345 这样格式,那是哪里出了问题呢?

改表投影,会话投影,视图投影,问题依旧。

经过一段时间的研究(5小时),发现由于代码使用不当造成的问题,但是又不知道错的位置,一不做二不休,干脆关于坐标和单位的定义,全部定义上,发现好使了
    Set Map XY Units "m"
    Set CoordSys NonEarth Units "m" Bounds (XXXXX,XXXXX)(XXXXX,XXXXX)
    Set  Distance Units "m"
    Set  Paper Units "mm"
    Set Map CoordSys LayOut Units "m"

     总结了一下,觉得最关键的语句还是定义会话投影,如果不定义会话投影,MAPINFO自带的默认投影对程序读取地方坐标不利。

[本日志由 牛仔酷 于 2007-01-18 07:09 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: MapInfo 表投影 会话投影 视图投影 坐标系 MapBasic
相关日志:
评论: 2 | 引用: 0 | 查看次数: 2052
回复回复ygdx1986[2010-05-18 02:25 PM | del]
MapInfo中修改地图投影方法
以不同投影(缺省坐标系统)保存:
1. 执行下述操作之一:
•如果只有一个打开表,选择“文件”>“另存为”。“另存表为”对话框出现。
•如果有几个打开表,选择“文件”>“另存为”。“另存表”对话框出现。从下拉列表中选择表。选择“保存”,“另存表为”对话框出现。
2. 在该对话框的“文件名”框中键入新表名。
2.1 设定保存新表的驱动器和目录。
2.2 单击“投影”按钮。“选择投影”对话框出现。
2.3 选择一种投影类别,并在该类别中选择一个投影。
2.4 单击“确定”。MapInfo Professional返回到“另存表”对话框。
2.5 单击“保存”。
回复回复YYY[2007-10-08 04:44 PM | del]
我也研究了好久
终于在你这找到了
感激不尽那
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭