geyeg
路人甲
路人甲
  • 注册日期2005-12-02
  • 发帖数4
  • QQ
  • 铜币118枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2105回复:7

[求助]写一个GPS定位的软件时,坐标问题如何处理

楼主#
更多 发布于:2005-12-19 19:47
<P>请问写一个GPS定位的软件时,处理坐标问题的顺序应该如何,读出的数据要如何处理,地图又如何处理,这个问题困扰了我很久了,有个大体流程也可以了,请各位帮忙,先谢了。(主要是出现定位不准的问题,地图设成bj54也没用)</P>
喜欢0 评分0
geyeg
路人甲
路人甲
  • 注册日期2005-12-02
  • 发帖数4
  • QQ
  • 铜币118枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2005-12-20 14:03
我的地图是广东省1:50000,有的文章说用高斯-克吕格投影,有的又说要用兰勃特投影,我下载了Mapinfow.prj文件把地图设成bj54,要用6度还是3度分带还没找到答案,又使用了以下程序(从网上找的):
<P>procedure TMain.DefineMapParam(); <BR>var <BR>  MapDatum: Variant;//地球基准面 <BR>begin  <BR> try <BR>  MapDatum := CreateOleObject('MapX.Datum.4'); <BR>  //建立基准面对象 <BR>  //定义北京54坐标系基准面 <BR>  // (Ellipsoid, ShiftX, ShiftY, ShiftZ, RotateX, RotateY, RotateZ, ScaleAdjust,PrimeMeridian) <BR>  MapDatum.set(3, 24, -123, -94, -0.02, 0.25, 0.13, 1.1, 0); <BR>  //定义北京54坐标系经纬度作为内部计算坐标系 <BR>  Map1.NumericCoordSys.Set_(1, MapDatum); <BR>  //定义北京54坐标系30度标准纬线麦卡托投影作为显示坐标系,单位为米 <BR>  Map1.DisplayCoordSys.Set_(26,MapDatum,7,0,0,30); <BR> finally <BR>  VarClear(MapDatum); <BR>end; </P>
<P>我从GARMIN 15 H/L GPS 模块中读出经纬度转换成</P>
<P>经度X:113.178667 纬度Y:23.061669</P>
<P>写入MapX,结果往左下偏移到另一个城市去了。</P>
<P><IMG src="http://bbs.gissky.net/images/Emotions/10.gif" border=0><IMG src="http://bbs.gissky.net/images/Emotions/10.gif" border=0><IMG src="http://bbs.gissky.net/images/Emotions/10.gif" border=0></P>
<P>知道的朋友请发挥网络互助的精神告知一下,本人有很多GPS相关的开发资料可以跟大家分享,不作任何有偿交换。</P>
举报 回复(0) 喜欢(0)     评分
winter_ice
路人甲
路人甲
  • 注册日期2005-12-24
  • 发帖数3
  • QQ
  • 铜币110枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2005-12-24 13:59
<P>也碰到同样的问题,请高手回复 !</P>
[此贴子已经被作者于2005-12-24 14:11:05编辑过]
举报 回复(0) 喜欢(0)     评分
ultravirs110
路人甲
路人甲
  • 注册日期2006-07-25
  • 发帖数3
  • QQ
  • 铜币113枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2006-07-25 13:39
你的地图是什么坐标系就用什么坐标系吧,GPS的坐标系最好处理,WGS84。
举报 回复(0) 喜欢(0)     评分
lifeixie
路人甲
路人甲
  • 注册日期2004-12-19
  • 发帖数13
  • QQ
  • 铜币139枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2006-07-28 18:56
那不行,地图如果上什么坐标用什么坐标系那经度纬度,弄出来后,偏移很大。
举报 回复(0) 喜欢(0)     评分
ultravirs110
路人甲
路人甲
  • 注册日期2006-07-25
  • 发帖数3
  • QQ
  • 铜币113枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2006-08-03 10:41
GPS使用WGS84坐标系,最好把地图也设为84坐标系。
举报 回复(0) 喜欢(0)     评分
jackxu302
路人甲
路人甲
  • 注册日期2006-03-05
  • 发帖数51
  • QQ
  • 铜币322枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2006-08-05 14:49
你看看所接受的GPS数据是采用度 分 秒的格式,还是度.你的应用程序处理的数据要采用相同的格式.不同就需要转换. 至于坐标应该要 GPS使用的WGS84坐标系.
举报 回复(0) 喜欢(0)     评分
lifeixie
路人甲
路人甲
  • 注册日期2004-12-19
  • 发帖数13
  • QQ
  • 铜币139枚
  • 威望0点
  • 贡献值0点
  • 银元0个
7楼#
发布于:2006-08-19 17:06
<P>GPS使用WGS84坐标系,最好把地图也设为84坐标系。</P>
<P>然后把  GPS中的数据转换一下.</P>
<P>/// <summary><BR>  /// Converts Longitude and Latitude to Degrees<BR>  /// </summary><BR>  /// <param name="original"></param><BR>  /// <param name="direction"></param><BR>  /// <returns></returns><BR>  public double LonLatToDegrees(double original, string direction)<BR>  {<BR>   //  y = m_dLatOrig / 100<BR>   //   m_dLat = (((y - Int(y)) * 100) / 60) + Int(y)<BR>   double temp = original / 100 ;<BR>   int tempAsInt = (int) temp ;<BR>   double result = (((temp - tempAsInt) * 100) / 60) + tempAsInt ;</P>
<P>   return direction == "S" || direction == "W" ? -result : result ;<BR>  }</P>

<P>然后 换算完,显示在地图上就可以勒</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部