你能实现吗?关于MO中的地图投影。挑战顶尖高手,UP者勿进!在线等

zswzwy 2004-09-10 10:37:20
开发工具:VC++6.0 & MapObject2.2

我现要将世界地图投影成地球的形状,即圆球状。使用如下代码可以实现:

CMoProjCoordSys CSMap;
if(!CSMap.CreateDispatch("MapObjects2.ProjCoordSys"))
return;
CSMap.SetType(54019);
VARIANT vt;
vt.vt = VT_DISPATCH;
vt.pdispVal = CSMap;
m_Map.SetCoordinateSystem(vt);

但是这样做地图只是固定投影方式,现在想让地球转动起来,我想通过不停的改变投影坐标系的
投影点来实现,该怎么做?另外投影后的经纬度坐标如何转换为原来的-180~180?

zswzwy@163.com
...全文
308 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
xfzzmzj 2004-12-20
  • 打赏
  • 举报
回复
首先你得搞清楚一个概念
一个shp,它的投影(应该叫CoordinateSystem)是固定的,固有的属性(一对一的关系),
就算你没有设置它的CoordinateSystem类型,m_Map.SetCoordinateSystem(vt)。它的CoordinateSystem是一定的(唯一的一种)。
如果你想用m_Map.SetCoordinateSystem(vt)设置它的CoordinateSystem的话,
必需设为正确的CoordinateSystem,设为其他的CoordinateSystem是不正确的.
当然也可以不设置,因为它是唯一的

你的目的是想把 shpA,CoordinateSystem为csA转换为shpB,CoordinateSystem为csB;
Set newShape = ProjCoordsysobject.Transform fromCoordSys, fromShape,
densifyTol, geoTrans
可以做到.

还有一个问题是CoordinateSystem的两种类型,
CoordinateSystem有两种类型:ProjCoordsys和GeoCoordsys,这两种Coordsys有联系
一个ProjCoordsys与一个GeoCoordsys对应,这一点对你实现动画非常重要

一个GeoCoordsys与一个PrimeMeridian object 对象关联,
通过改变shpA的csA的GeoCoordsys的PrimeMeridian的Longitude属性(哈哈...),
来定义 shpB的csB
由csB,csA,ShpA,用ProjCoordsysobject.Transform fromCoordSys, fromShape
可以得到shpB
//伪代码
ProjCoordsys csA;
csA.settype(54019);
ProjCoordsys csB;
csB.settype(54019);
csB.geocoordsys.PrimeMeridian.Longitude =
csA.geocoordsys.PrimeMeridian.Longitude + 10;//10表示每一次旋转的经线的度数
csB.geocoordsys.Datum.settype(...);//选择一个Datum
shpB= csB.Transform (csA,shpA) ;







asd123yx 2004-10-25
  • 打赏
  • 举报
回复
这个问题比较新亚
我刚来到
赫赫
悲酥清风 2004-10-13
  • 打赏
  • 举报
回复
帮你顶
syy64 2004-09-24
  • 打赏
  • 举报
回复
看看地图投影的书,有公式的。
BombZhang 2004-09-24
  • 打赏
  • 举报
回复
富融原来有高手,现在已经走了。上学时用MO和VC做了个大的GIS系统,毕业后做手机软件了。现在看到GIS挺亲切的
zswzwy 2004-09-21
  • 打赏
  • 举报
回复
我实现了,但是还有点问题,大陆部分两侧会连到一起
hehou 2004-09-21
  • 打赏
  • 举报
回复
大陆部分两侧会连到一起
正确呀,那是中国与台湾实现了祖国的统一呀.

HEHE~~路过,不懂.UPUP
walkly 2004-09-10
  • 打赏
  • 举报
回复
目前正在用MO,但对投影还不是很熟悉。
“让地球转动起来”?
不同比例的地图采用的投影方法也不同啊
kvls 2004-09-10
  • 打赏
  • 举报
回复
这个问题太××,找GIS的人吧
hjcy_2002 2004-09-10
  • 打赏
  • 举报
回复
up
rwdx 2004-09-10
  • 打赏
  • 举报
回复
up
zswzwy 2004-09-10
  • 打赏
  • 举报
回复
我的思路是这样的:
创建CMoProjCoordSys,设置其Unit, Projection, GeoCoordSys.
但是有些问题不能解决,如projection如何设置中心子午线,从MAP得来的GeoGoordsys如何附值线CMoProjCoordSys等,请各位大侠帮忙.
Mr-Chen 2004-09-10
  • 打赏
  • 举报
回复
没用过MapObject2.2
yeedward 2004-09-10
  • 打赏
  • 举报
回复
不懂
dawn17 2004-09-10
  • 打赏
  • 举报
回复
哇 你很牛X啊 看着烦
zswzwy 2004-09-10
  • 打赏
  • 举报
回复
富融的人是一堆狗屎,什么都不会!
toxyboy 2004-09-10
  • 打赏
  • 举报
回复
查看MO的vb代码帮助吧,以前用vc开发过MO但是,没有用到楼主说到的这些!实在不行就打电话找富融的牛人问问阿!!
zswzwy 2004-09-10
  • 打赏
  • 举报
回复
在ArcMap中试验成功了,但是如何用代码实现呢??

帮忙各位!

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧