当前位置: 代码迷 >> QT开发 >> QT下做电子map摊上事了,各位帮帮忙
  详细解决方案

QT下做电子map摊上事了,各位帮帮忙

热度:31   发布时间:2016-04-25 03:55:16.0
QT下做电子地图摊上事了,各位帮帮忙
各位大神,小弟在搞电子地图,读取的是mif格式的文件数据,把经纬度读取出来后,转换为了大地坐标,发现转换后的大地坐标太大。但我想在场景上画出地图来怎么办?走过路过的还请赐教。

------解决方案--------------------
引用:
灰常感谢!这倒不是,是这样1、经纬度转大地坐标是按某一经纬度作为参照点来转换,但我发现转换后的坐标XY怎么那么大?(都怀疑自己,但转换是没问题的)2、要想在场景中画出来,但场景是以中心点为原点。而我转化的大地发现都是正数,也就是说都在第四象限,根本不可能充满整个屏幕?还请各位懂的、帮助我这个刚出道的小弟。在此感激涕零!

哦。。如果你是用的Graphics system...
我猜你的实现是把东西放到QGraphicsItem上,再把这个QGraphicsItem放到GraphicsScene上,最后用QGraphicsView来呈现。

QGraphicsView , QGraphicScene上的坐标系统是这样的.左上角的顶点坐标是(0,0),x正方向是右,y正方向是下

但是QGraphicsItem的(0,0)点有所不同。是根据你的boundingrect()的返回值来确定的,
如果你的bounding rect 返回的是QRectF(-4,-4,8,8 ),那么中心点就是(0,0).
如果返回的是QRect(0,0, x, y),那么中心点就是(x/2,y/2).

x,y轴正方向同上
------解决方案--------------------
本人没做过电子地图的显示,坐标转换多少了解一点,不知道楼主使用的是那种转换方法,大地坐标应该是经度、纬度、高程三个量吧?http://baike.baidu.com/view/284381.htm
看数字感觉好像是地心坐标,但貌似转换成地心坐标应该包括东北天三个方向的值,不知道你转换的是不是地心坐标?
如果是地心坐标的话,感觉你的计算结果好像不是很正确
假设高程是0,则(118.98042  31.917395,0 )转换成地心坐标应该是
(-2625518.363,4740380.2201970713 3352659.5624820348);
算法参考:
    http://www.epsg.org/guides/docs/G7-2.pdf

这本书有戴勤奋先生的一个译本,
    http://www.gissky.net/Article/1673.htm
    涉及的是 《非地图投影坐标运算公式》的内容

关于象限的问题,一般来说地图上有关系的实体,位置上的差距可能不会超过一两个经纬度吧(已经200~300公里了),如果不考虑洲际导弹打击,在以地心为核心的场景中,你的实体位于一个象限内不是很正常吗?
  相关解决方案