从您的移动设备获取GPS数据,并在地图上绘制您的位置和速度
这个例子展示了如何从Android™或iOS移动设备收集位置数据并将其显示在地图上。纬度和经度坐标用于标记设备的路线。速度信息用于为路由添加颜色。最终的结果是设备的位置和速度的可视化表示。
此示例需要Mapping Toolbox™。
设置你的移动设备
为了在MATLAB®中接收来自移动设备的数据,您需要在移动设备上安装和设置MATLAB mobile™应用程序。
从MATLAB移动设置登录到MathWorks®Cloud。
创建到移动设备的连接
在命令屏幕的MATLAB移动,使用mobiledev
命令创建一个表示您的移动设备的对象。
M = mobiledev;
显示的输出应该显示出来联系:1
,表明mobiledev
对象已成功建立到应用程序的连接。
准备从位置传感器获取数据
为了收集GPS数据,首先确保你的设备的GPS是打开的。如果在移动设备的位置设置上启用,移动网络和Wi-Fi也可以用来确定位置。
启用移动设备上的位置传感器。
m.PositionSensorEnabled = 1;
上显示数据可能需要一段时间传感器屏幕的MATLAB移动,作为设备将需要搜索GPS信号。GPS信号一般在室内无法接收。
开始获取数据
使能传感器后,将传感器MATLAB Mobile屏幕将显示传感器测量到的当前数据。的日志记录
属性允许您开始将传感器数据发送到mobiledev
.
m.Logging = 1;
收集位置数据
记录在设备上的所有位置传感器数据现在正在被记录mobiledev
.
在这个例子中,设备在MathWorks周围进行了短暂的驾驶。
停止记录数据
使用mobiledev
的日志属性来停止记录数据。
m.Logging = 0;
检索已记录位置数据
要创建地图,需要纬度、经度和速度数据。的poslog
函数可用于检索此信息mobiledev
.
[lat,lon,t,spd] = poslog(m);
对于本例,数据已经被记录和保存。
负载drivingAroundMathWorks纬度朗社会民主党;
Bin速度进入颜色值
速度值被分箱,以便使用离散数量的颜色来表示观察到的速度。
nBins = 10;binSpacing = (max(spd) - min(spd))/nBins;binRanges = min(spd):binSpacing:max(spd)-binSpacing;在binRanges中添加inf,将最后一个bin以上的值括起来。binRanges(end+1) = inf;% |histc|决定每个速度值落在哪个bin中。[~, spdBins] = histc(spd, binRanges);
分裂纬度和经度数据的速度
为每个速度箱创建一个不连续的线段。每个片段将被分配一个单一的颜色。这样创建的总线段比将每个相邻的纬度和经度值对作为它们自己的线段要少得多。
单独的段存储为地理特征使用geoshape
从映射工具箱。
Lat = Lat ';Lon = Lon ';spdBins = spdBins';创建地理形状向量,将线段存储为%的特性。S = geoshape();为k = 1:表示nins只保留与当前bin匹配的lat/lon值。离开% rest作为NaN,它们被解释为线段中的断点。latValid = nan(1, length(lat));latValid(spdBins==k) = lat(spdBins==k);lonValid = nan(1, length(lon));lonValid(spdBins==k) = lon(spdBins==k);使路径连续,尽管被分割成不同的的颜色转换后出现的纬度/lon值%当前速度箱到另一个速度箱将需要保持。transitions = [diff(spdBins) 0];insertionInd = find(spdBins==k & transitions~=0) + 1;预分配空间,并插入额外的lat/lon值。latSeg = 0 (1, length(latValid) + length(insertionInd));latSeg(insertionInd + (0:length(insertionInd)-1)) = lat(insertionInd);latSeg(~latSeg) = latValid;lonSeg = 0(1,长度(lonValid) +长度(insertionInd));lonSeg(insertionInd + (0:length(insertionInd)-1)) = lon(insertionInd);lonSeg(~lonSeg) = lonValid;将仰角/仰角段添加到地理形状向量。s(k) = geoshape(latSeg, lonSeg);结束
创建一个Web地图和路由覆盖
这些碎片现在可以组合成一个网络地图显示。经度和纬度数据已经过处理,以组成要覆盖在地图上的单独线段。每个线段都有一个颜色,对应于在各自位置记录的速度。
“映射工具箱”提供了许多用于使用web地图的功能。
使用webmap
在浏览器中打开网络地图。
网络地图(“公开街道地图”);
作为参考,MathWorks在地图上有标记。
mwLat = 42.299827;mwLon = -71.350273;name =“MathWorks”;iconDir = fullfile(matlabroot,“工具箱”,matlab的,“图标”);iconFilename = fullfile(iconDir,“matlabicon.gif”);wmmarker (mwLat mwLon,“FeatureName”、名称、“图标”, iconFilename);
属性生成与速度箱对应的颜色列表秋天
colormap。这将创建一个[nbnins x 3]
矩阵,每个bin的RGB值。
颜色=秋天(nins);
使用地理形状向量在网络地图上绘制一条线。形状向量的每个元素都对应于一个不连续的线段,以获得分箱速度值。这些元素与刚才创建的颜色列表中的元素相匹配。
wmline(年代,“颜色”、颜色、“宽度”5);
把地图放大到路线上。
wmzoom (16);
最后的显示提供了整个路线的位置和速度的可视化表示。该设备在停车场和转弯时明显比在直道上行驶得慢。
清理
关闭位置传感器并清除mobiledev
.
m.PositionSensorEnabled = 0;清晰的米;