wangjh
论坛版主
论坛版主
  • 注册日期2003-08-22
  • 发帖数994
  • QQ55359982
  • 铜币2579枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:11166回复:34

VB+MapX 实现地图上GPS数据显示(GPS+GIS)

楼主#
更多 发布于:2004-09-05 21:46
<P>在帖子:<B>VB读取、显示、保存、回放GPS数据的源程序</B></P>
<P><a href="http://www.gisempire.com/bbs/dispbbs.asp?boardID=13;ID=18641;page=1" target="_blank" >http://www.gisempire.com/bbs/dispbbs.asp?boardID=13;ID=18641;page=1</A></P>
<P>的基础上,对其进行简单的处理就可实现地图上的GPS数据显示。</P>
<P>只需对显示模块modTransFun中的进行修改即可,具体实现部分自己看吧:</P>
<P>Public Sub playNMEA(sArray As Variant)
'读取存有GPS信息的回放文件
Dim rmc As GPRMC
Dim Utils As New CParseUtils
Dim Sentence As Integer</P>
<P>Dim mapDest As MapXLib.Map
Dim mobileObj As New MapXLib.Feature
Dim mobileFtr As New MapXLib.Feature
Dim lnFeat As New MapXLib.Feature
Dim FeatFact As MapXLib.FeatureFactory</P>
<P>Dim GPSPoints As New MapXLib.Points, aPoint As New MapXLib.Point
Dim NewStyle As New Style</P>
<P>Dim GPSLayerID As Integer
Dim intReg As Integer
Dim DD_X As Double, DD_Y As Double
</P>
<P>Dim yy As String, mm1 As String, dd As String   '年、月、日
Dim hh As String, mm2 As String, ss As String   '时、分、秒</P>
<P>intReg = 0.00012</P>
<P>Set mapDest = <FONT color=#ff0000>frmMain.mapMain </FONT><FONT color=#000000>'这里是用于显示地图的表单及控件名</FONT></P>
<P>GPSLayerID = 1 'mapDest.Layers.Count
Set mapDest.Layers.AnimationLayer = mapDest.Layers(GPSLayerID)</P>
<P>mobileFtr.Attach mapDest
mobileFtr.Type = miFeatureTypeSymbol
'mobileFtr.Style = mapDest.DefaultStyle</P>
<P>With NewStyle
    .SymbolFont.Name = "Mapinfo symbols"
    .SymbolCharacter = 50 ';H40 '塔符号0X40,圆形符号0X2F
    .SymbolFont.Size = 4 ' set the size of the symbol to be 18...
    .SymbolFontRotation = 0
    .SymbolFontShadow = False
    .SymbolFontHalo = False ' turn Halo effect on...
    .SymbolFontColor = vbRed  ' 红...
    .SymbolFontBackColor = miColorWhite ' change the Halo color to White
End With
mobileFtr.Style = NewStyle</P>
<P>For Sentence = 0 To sCnt - 1
    If Utils.Parse(sArray(Sentence), 1) = "$GPRMC" Then
    Set rmc = New GPRMC
            DoEvents
            With rmc
                .Sentence = sArray(Sentence)
              If Not Val(.Longitude) = 0 Then
                DD_X = DM2DD(.Longitude)
                DD_Y = DM2DD(.Latitude)
                frmGPS_Disp.lblX.Caption = "X: " ; Format(DD_X, "000.0000") ; " " ; .LonHemis
                frmGPS_Disp.lblY.Caption = "Y: " ; Format(DD_Y, "  00.0000") ; " " ; .LatHemis
                
                If mapDest.MapUnit = miUnitDegree Then
                    
                Else
                    
                End If
                mobileFtr.Point.Set DD_X, DD_Y
                Set mobileObj = mapDest.Layers(GPSLayerID).AddFeature(mobileFtr)
                
                mapDest.Layers(GPSLayerID).Refresh
                
                If mobileFtr.Point.X > mapDest.Bounds.XMAX - intReg Or _
                   mobileFtr.Point.X < mapDest.Bounds.XMin + intReg Or _
                   mobileFtr.Point.Y > mapDest.Bounds.YMAX - intReg Or _
                   mobileFtr.Point.Y < mapDest.Bounds.YMin + intReg Then
                  
                   mapDest.CenterX = mobileFtr.Point.X
                   mapDest.CenterY = mobileFtr.Point.Y
                End If
                
                '去除速度前的0
                frmGPS_Disp.lblSpeed.Caption = "速度: " ; Val(.Speed) ; " Km/h"
                '日期的格式转换: 250503 -> 03/05/25
                dd = Mid$(.UTDate, 1, 2)
                mm1 = Mid$(.UTDate, 3, 2)
                yy = Mid$(.UTDate, 5, 2)
                frmGPS_Disp.lblDate.Caption = "日期: " ; Format(yy + mm1 + dd, "00/00/00")
               'UTC时间转换为北京时间
                hh = Mid$(.UTC, 1, 2) + 8
                mm2 = Mid$(.UTC, 3, 2)
                ss = Mid$(.UTC, 5, 2)
                frmGPS_Disp.lblUTC.Caption = "时间: " ; Format(hh + mm2 + ss, "00:00:00")
              Else
                MsgBox "接收卫星太少,不能定位!"
                
                frmGPS_Disp.lblX.Caption = "X: "
                frmGPS_Disp.lblY.Caption = "Y: "
                frmGPS_Disp.lblSpeed.Caption = "速度: "
                frmGPS_Disp.lblDate.Caption = "日期: "
                frmGPS_Disp.lblUTC.Caption = "时间: "
                
                Exit Sub
              End If
              
            End With
    End If
Next Sentence
End Sub</P>


[此贴子已经被作者于2004-9-5 21:58:23编辑过]
喜欢0 评分0
网 站: www.52xoo.com (3S,信息融合,数字图像处理,模式识别与人工智能等专业电子书、学术文章及源代码共享) E-mail: Jianhong72@163.com QQ: 88128745 (55359982用了近10年,最近被盗了,郁闷!!!)
wangjh
论坛版主
论坛版主
  • 注册日期2003-08-22
  • 发帖数994
  • QQ55359982
  • 铜币2579枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2004-09-05 21:55
<P>当然还需要建立一个用于显示地图的表单 frmMain,其地图控件为 mapMain</P>
<P>上述代码中注释少了点,如有不明白的地方,我再解释</P>

[此贴子已经被作者于2004-9-5 22:08:15编辑过]
网 站: www.52xoo.com (3S,信息融合,数字图像处理,模式识别与人工智能等专业电子书、学术文章及源代码共享) E-mail: Jianhong72@163.com QQ: 88128745 (55359982用了近10年,最近被盗了,郁闷!!!)
举报 回复(0) 喜欢(0)     评分
edward22
路人甲
路人甲
  • 注册日期2004-07-01
  • 发帖数121
  • QQ
  • 铜币506枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-09-07 11:38
<P>3x,顶</P>
如果你爱他就让他学GIS,如果你恨他就让他学GIS!
举报 回复(0) 喜欢(0)     评分
tlw_ray
路人甲
路人甲
  • 注册日期2003-12-03
  • 发帖数23
  • QQ
  • 铜币169枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2004-09-07 18:22
<P>强啊!</P>
举报 回复(0) 喜欢(0)     评分
mingl
大内密探
大内密探
  • 注册日期2004-04-30
  • 发帖数5343
  • QQ
  • 铜币1199枚
  • 威望-1点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2004-09-08 15:11
<img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" />
举报 回复(0) 喜欢(0)     评分
wjm8078
路人甲
路人甲
  • 注册日期2004-09-09
  • 发帖数58
  • QQ
  • 铜币101枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2004-10-27 10:07
<img src="images/post/smile/dvbbs/em05.gif" />
举报 回复(0) 喜欢(0)     评分
ddddf
路人甲
路人甲
  • 注册日期2004-08-03
  • 发帖数42
  • QQ
  • 铜币222枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2004-10-27 12:58
不错,谢谢楼主
[URL=http://www.carjp.com]中国汽车精品资讯网[/URL]
[URL]http://www.carjp.com[/URL]
车载GPS、液晶、音响、防盗等资料、技术探讨
[URL=http://www.yilee.com][/URL]
举报 回复(0) 喜欢(0)     评分
JR_2046
路人甲
路人甲
  • 注册日期2004-10-08
  • 发帖数55
  • QQ
  • 铜币217枚
  • 威望0点
  • 贡献值0点
  • 银元0个
7楼#
发布于:2004-11-03 22:10
3Q,楼主
举报 回复(0) 喜欢(0)     评分
JR_2046
路人甲
路人甲
  • 注册日期2004-10-08
  • 发帖数55
  • QQ
  • 铜币217枚
  • 威望0点
  • 贡献值0点
  • 银元0个
8楼#
发布于:2004-11-07 16:28
<img src="images/post/smile/dvbbs/em05.gif" /><img src="images/post/smile/dvbbs/em05.gif" /><img src="images/post/smile/dvbbs/em05.gif" />
举报 回复(0) 喜欢(0)     评分
wangjh
论坛版主
论坛版主
  • 注册日期2003-08-22
  • 发帖数994
  • QQ55359982
  • 铜币2579枚
  • 威望0点
  • 贡献值0点
  • 银元0个
9楼#
发布于:2004-11-08 17:16
<P>根据地图的坐标系(WGS84 or BJ54)来,显示GPS坐标的改进。(就是第1帖中空的那个判断语句)</P>
<P>                    If mapDest.NumericCoordSys.Units = miUnitDegree Then '度
                        mobileFtr.Point.Set DD_X, DD_Y
                    Else '米 BJ54坐标系
                        '经纬度BL换算到高斯平面直角坐标XY(高斯投影正算)
                        Deg2XY DD_X, DD_Y, CC_X, CC_Y
                        mobileFtr.Point.Set CC_X, CC_Y
                    End If
</P>

[此贴子已经被作者于2004-11-8 17:34:18编辑过]
网 站: www.52xoo.com (3S,信息融合,数字图像处理,模式识别与人工智能等专业电子书、学术文章及源代码共享) E-mail: Jianhong72@163.com QQ: 88128745 (55359982用了近10年,最近被盗了,郁闷!!!)
举报 回复(0) 喜欢(0)     评分
上一页
游客

返回顶部