MapObject 地图坐标系转换

问题描述

本人初学MO,现在用C#做一个中国地图的练习,现已知道怎样显示地理坐标和投影坐标,用GeoCoordSys和ProjCoordSys。使用如下代码设置地图使用地理坐标系显示。ESRI.MapObjects2.Core.GeoCoordSysgcs=newGeoCoordSysClass();gcs.Type=GeographicCoordSysConstants.moGeoCS_WGS1984;axMap1.CoordinateSystem=gcs;但是给地图使用这些坐标系后,添加标记点功能就不好用了(不设置地图坐标系时,添加标记点功能好用的)请问如何解决此问题?另外看教程说可以转换坐标系,但是给的例子都是VB的代码,看不懂,能给C#代码就更好了,请高手帮忙,指点。转贴的先看一下下面的帖子,里面有的就不用转了,谢谢!http://topic.csdn.net/u/20091026/14/715b9666-bd1b-429e-a020-fd94f4a3c0d9.html

解决方案

解决方案二:
地图坐标系应该跟数据坐标系吻合吧!!!
解决方案三:
数据坐标系是什么?我只知道设置地理坐标系(GeoCoordSys)和设置投影坐标系(ProjCoordSys)。
解决方案四:
MO没怎么用过.MapX的话,添加标注的图层有范围设置的。不在范围内的会添加不了不知道MO是不是也有这个问题
解决方案五:
MapObjects2.GeoTransformation这个类有会用的么?教程上就是用这个类转换的。可惜是VB的代码看不太懂。
解决方案六:
把VB代码贴出来,大家帮你翻译。
解决方案七:
DimfromPTasNewMapObjects2.pointDimtoPTasNewMapObjects2.pointDimcurMapasIntegerDimsymPTasNewMapObjects2.SymbolDimgcsasNewMapObjects2.GeoCoordSysDimpcsasNewMapObjects2.ProjCoordSysPrivateFuntiontransformPoint(directionAsMapObjects2.DirectionConstants,ptlnAsMapObjects2.Point)AsPoint'Here,anappropriateGeoTransformationiscreatedfortransformingtheselected'Point.ThisshouldbechangedappropriatelyfortheCoordinateSystemofyourMap2MapLayer.DimmyGTasNewMapObjects2.GeoTransformationDimgcsBJ54asNewMapObjects2.GeoCoordSysDimgceWGS84asNewMapObjects2.GeoCoordSysgcsBJ54.Type=moGeoCS_Beijing1954gceWGS84.Type=moGeoCS_WGS1984SetmyGT.ToGeoCoordSys=gcsWGS84SetmyGT.FromGeoCoordSys=gcsBJ54myGT.Method=moMethod_PositionVectormyGT.SetParametermoParm_DeltaX,24myGT.SetParametermoParm_DeltaY,-123myGT.SetParametermoParm_DeltaZ,-94myGT.SetParametermoParm_RotationX,-0.02myGT.SetParametermoParm_RotationY,-0.25myGT.SetParametermoParm_RotationZ,-0.13myGT.SetParametermoParm_DeltaScale,1myGT.direction=moDirection_ForwardmyGT.Name="BJ54_To_WGS1984"'myGT.Type=moGeoTransformation_Tokyo_To_WGS1984_3'Settheappropriatedirection,FromGeoCoordSysandToGeoCoordSysmyGT.direction=direction'ACoordinateSystemmaybeeitherProjCoordSysorGeoCoordSys.'WeneedtocheckifthetypebeforeassigningtheFromGeoCoordSysandToGeoCoordSysDimmap1ProjectedasBooleanDimmap2ProjectedasBooleanIfMap1.CoordinateSystem.IsProjectedThenmap1Projected=TrueElsemap1Projected=FalseEndIfIfMap2.CoordinateSystem.IsProjectedThenmap2Projected=TrueElsemap2Projected=FalseEndIf'IfchangingfromWGS1984tootherdatumIfdirection=moDirection_ForwardThenIfmap1ProjectedThenmyGT.FromGeoCoordSys=Map1.CoordinateSystem.GeoCoordSysElsemyGT.FromGeoCoordSys=Map1.CoordinateSystemEndIfIfmap2ProjectedThenmsGT.ToGeoCoordSys=Map2.CoordinateSystem.GeoCoordSysElsemsGT.ToGeoCoordSys=Map2.CoordinateSystemEndIfSettransformPoint=Map2.CoordinateSystem.Transform(Map1.CoordinateSystem,fromPt,,myGT)ElseIfdirection=moDirection_ReverseThenIfmap1ProjectedThenmsGT.ToGeoCoordSys=Map1.CoordinateSystem.GeoCoordSysElsemsGT.ToGeoCoordSys=Map1.CoordinateSystemEndIfIfmap2ProjectedThenmyGT.FromGeoCoordSys=Map2.CoordinateSystem.GeoCoordSysElsemyGT.FromGeoCoordSys=Map2.CoordinateSystemEndIfSettransformPoint=Map2.CoordinateSystem.Transform(Map2.CoordinateSystem,fromPt,,myGT)EndIfEndFunction--------------------------------------------------------------------PrivateSubMap1_AfterTrackingLayerDraw(ByValhDCAsstdole.OLE_HANDLE)If(NotfromPtIsNothing)AndcurMap=1Thensym.Color=moBlueMap1.DrawShapefromPt,symEndIfIf(NottoPtIsNothing)AndcurMap=2Thensym.Color=moRedMap1.DrawShapetoPt,symEndIfEndSub----------------------------------------------------------------------PrivateSubMap1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)SetfromPt=Map1.ToMapPoint(X,Y)SettoPt=transformPoint(moDirection_Forward,fromPt)curMap=1Map1.TrackingLayer.Refresh(true)Map2.TrackingLayer.Refresh(true)EndSub-----------------------------------------------------------------------PrivateSubMap2_AfterTrackingLayerDraw(ByValhDCAsstdole.OLE_HANDLE)If(NotfromPtIsNothing)AndcurMap=2Thensym.Color=moBlueMap2.DrawShapefromPt,symEndIfIf(NottoPtIsNothing)AndcurMap=1Thensym.Color=moRedMap2.DrawShapetoPt,symEndIfEndSub----------------------------------------------------------------------PrivateSubMap2_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)SetfromPt=Map2.ToMapPoint(X,Y)SettoPt=transformPoint(moDirection_Reverse,fromPt)curMap=2Map1.TrackingLayer.Refresh(true)Map2.TrackingLayer.Refresh(true)EndSub-----------------------------------------------------------------------PrivateSubForm_Load()'Map1shouldcontainaMapLayerbasedontheWGS1984Datum,forexampletheWorldCountriessampledataset.Dimdc1AsNewMapObjects2.DataConnectionDimmlyr1AsNewMapObjects2.MapLayerDimmlyr2AsNewMapObjects2.MapLayerdc1.Database=App.PathSetmlyr1.GeoDataset=dc1.FindGeoDataset("china")Map1.Layers.Addmlyr1Setmlyr2.GeoDataset=dc1.FindGeoDataset("china_prj")Map2.Layers.Addmlyr2'Map2shouldcontainaMapLayerbasedonadifferentDatum'YoushouldensuretheCoordinateSystemofbothlayersissetcorrectly.pcs.Type=moProjCS_Beijing1954GK_17NMap2.Layers(0).CoordinateSystem=pcsgcs.Type=moGeoCS_WGS1984Map1.Layers(0).CoordinateSystem=gcs'HeretheCoordinateSystemofeachmapissettotheCoordinateSystemofitsMapLayerMap1.CoordinateSystem=Map1.Layers(0).CoordinateSystemMap2.CoordinateSystem=Map2.Layers(0).CoordinateSystemWithsym.SymbolType=moPointSymbol.Size=4.Outline=False.Style=moTriangleMarkerEndWithEndSub

解决方案八:
请高手帮忙翻译成C#代码,感激不尽!
解决方案九:
mark
解决方案十:
唉!哪个高手来帮帮忙啊!!!
解决方案十一:
回复内容太短了!学习...

时间: 2024-09-14 21:10:05

MapObject 地图坐标系转换的相关文章

ArcMap怎么把坐标系转换成投影坐标系

  1.打开已有的地图,并打开工具箱,如下图所示: 2.按照箭头指向,依次展开节点后,选择"Project"工具,如下图所示: 3.在打开的Project窗口中,选择输出的空间坐标系统,然后,点击"Select",如下图所示: 4.选择"Projected Coordinate System",如下图所示: 5.选择"World",点击"Add",如下图所示: 6.找到WGS 1984 Web Mercat

ArcCatalog 投影坐标系转换问题

问题描述 请教Xian_1980_3_Degree_GK_CM_99E转Xian_1980_GK_Zone_23能转吗?都是投影坐标系谢谢 解决方案 解决方案二:参考:解决方案三:引用1楼clever101的回复: 参考: 3q这个问题已经解决了?请问在二维图中怎么创建热区了?解决方案四:引用2楼jianglang_a的回复: Quote: 引用1楼clever101的回复: 参考: 3q这个问题已经解决了?请问在二维图中怎么创建热区了? 参考:

MapObject 地图打印问题

问题描述 使用MO做地图打印输出我目前仅仅看到AxMap的PrintMap方法,但是目前我发现只能输出A4纸,现在客户要求打印到A3或更大的纸上,因为A4纸张太小,AxMap选择的区域比较大打印出来看不清,能不能打印到其它纸张类型上呢?如果MO没办法实现有没有其它变通的方法呢? 解决方案 解决方案二:打印多大的图其实跟地图和窗口大小有关系的吧可以直接使用DC打印的不用专门的使用MO提供的打印方法的吧解决方案三:不行就使用WindowsAPI函数打印吧.

对互联网中常见地图的坐标系探讨

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 目前项目中使用百度地图.高德地图.谷歌中国地图.天地图的需求越来越多,这里我跟大家一起对各地图使用的坐标系做一个简单的探讨. 2.百度地图--BD-09 百度地图是在GCJ-02坐标系上,又自己对坐标加密了一次,它官方文档里说叫BD-09,目前从GPS坐标转到百度坐标有接口提供,反过来不提供. 当然,目前反转方法在我们实际项目中已经解决,精确度可以达到0.5

开源地图编辑器 MarbleMap,支持Cocos2d-x坐标系

一.功能简述 由9秒社团开发并维护的MarbleMap是支持Cocos2d-x坐标系和as3坐标系的地图编辑器,功能完善高效.这里详细介绍一下它的使用方法! 二. 控制面板 具体功能将在之后分别介绍. A. 新建 点击"浏览",可以导入地图图片资源.可编辑属性包括:地图名称,网格宽度(像素).网格高度(像素),左下角坐标系选择(取消勾选,使用左上角坐标系). 点击"确定"完成新建. 如下图所示: B. 路径操作 该功能可设置阻挡标记网格,以实现寻路等功能.使用鼠标右

去百度API的百度地图准确叠加和坐标转换的解决方案研究

原文:去百度API的百度地图准确叠加和坐标转换的解决方案研究 1.背景 目前项目上如果要使用百度地图,得加载百度的开发包,然后通过百度提供的接口来调用百度地图以及将需要标记的点显示在百度地图中等等. 此方案存在明显劣势: a.对原系统的破坏.一套从底层开发的系统,其地图的加载方式均是从底层通过换算行列号来进行加载的.而百度地图却必须脱离此方案通过调用百度API来实现,破坏了整个系统的架构,并且导致很多基于原架构的功能无法使用. b.自身发布的矢量服务等无法使用.因为百度采用的是非标准火星坐标,自

PHP计算百度地图两个GPS坐标之间距离的方法_php技巧

本文实例讲述了PHP计算百度地图两个GPS坐标之间距离的方法.分享给大家供大家参考. 具体实现方法如下: 复制代码 代码如下: /**  * 计算两个坐标之间的距离(米)  * @param float $fP1Lat 起点(纬度)  * @param float $fP1Lon 起点(经度)  * @param float $fP2Lat 终点(纬度)  * @param float $fP2Lon 终点(经度)  * @return int  */ function distanceBetw

腾讯SOSO地图 iPhoneV2.0项目设计总结

版本特色 Version features 2D/3D地图完美转换 炫酷3D地图,领略立体城市.最高精确到5米,带你看清大楼每一面.看清立交桥层次,不再错过出口. 高清卫星图 400个城市的高清卫星图,带你看看自家的屋顶. SOSO地图大换装 2012最新地图数据,全新本色,地点道路信息更加丰富清晰. 设计过程 Design process 用研同学通过对竞品.用户.数据等多个维度进行深度分析,并以用户问卷调查的方式采集了大量的数据,以帮助产品团队对产品进行精准定义,同时用研结果将有效指导后续设

Cocos-2d 坐标系及其坐标转换

 原作者:jlins  出处:博客园http://www.cnblogs.com/dyllove98/p/3231175.html  Cocos-2d中,涉及到4种坐标系: GL坐标系Cocos2D以OpenglES为图形库,所以它使用OpenglES坐标系.GL坐标系原点在屏幕左下角,x轴向右,y轴向上.  屏幕坐标系苹果的Quarze2D使用的是不同的坐标系统,原点在屏幕左上角,x轴向右,y轴向下.ios的屏幕触摸事件CCTouch传入的位置信息使用的是该坐标系.因此在cocos2d中对