开发工具: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?[email protected]

解决方案 »

  1.   

    我的思路是这样的:
    创建CMoProjCoordSys,设置其Unit, Projection, GeoCoordSys.
    但是有些问题不能解决,如projection如何设置中心子午线,从MAP得来的GeoGoordsys如何附值线CMoProjCoordSys等,请各位大侠帮忙.
      

  2.   

    在ArcMap中试验成功了,但是如何用代码实现呢??帮忙各位!
      

  3.   

    大陆部分两侧会连到一起
    正确呀,那是中国与台湾实现了祖国的统一呀.HEHE~~路过,不懂.UPUP
      

  4.   

    富融原来有高手,现在已经走了。上学时用MO和VC做了个大的GIS系统,毕业后做手机软件了。现在看到GIS挺亲切的
      

  5.   

    首先你得搞清楚一个概念
    一个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) ;