问题:如何使用散点图或地理图形函数(或任何最佳函数)绘制GPS经度和纬度坐标
大家好
我有这个GPS装置我想分析所以我出去测试它,得到几页NMEA句子(在同一个领域的3个不同的点)我喜欢用Matlab的散射函数(或geoshow)绘图功能......无论有效吗。
由于NMEA句子提供了大量我不需要的信息;我整理并简化了数据,只包含一个文件中的经度和另一个文件中的纬度(我有几个位置)。
我制作了两个文件.csv文件,所以我可以使用Matlab的csvread函数读取这些文件,而不必手动将这些数字输入到矩阵中。
我遇到的问题是,当我去绘制这些斑点时,我一次只能在1张图上显示1个斑点。这实际上违背了绘制坐标图的目的......我如何使用我制作的.csv文件或您知道的任何方法在同一图表上绘制所有3个点?
以下是我尝试过的内容:
SW_latitude = csvread('SW_latitude.csv');
SW_longitude = csvread('SW_longitude.csv');
CENTER_latitude = csvread('center_latitude.csv');
CENTER_longitude = csvread('center_longitude.csv');
WALKING_latitude = csvread('WALKING_latitude.csv');
WALKING_longitude = csvread('WALKING_longitude.csv');
scatter(SW_latitude,SW_longitude)
hold on
scatter(CENTER_latitude,CENTER_longitude)
scatter(WALKING_latitude,WALKING_longitude)
hold off
答案 0 :(得分:2)
1)NMEA消息通常具有格式3246.4270,11704.3785等的经度和纬度。
小数点前的两个数字和后面的分数是分钟,前面的两个/三个数字是度数,即32度,46.4270分钟,117度,04.3785分钟等。你可以将这些转换为十进制度数加载(不需要三行,但希望这会使过程更加清晰):
degrees = floor(lat/100); % number of degrees
minutes = lat-degrees*100; % number of minutes
lat2 = degrees + minutes/60;
2)如果您的值都来自一个小区域,那么纬度和经度的变化就不会很大。因此,请注意您的轴限制。如果您知道要检查的大致范围,则可以在绘图后使用xlim
和ylim
进行设置。
3)有一个免费的地图工具箱,m_map,我非常喜欢。否则,如果使用geoshow
,则可能必须将显示类型设置为Point
。您也可以设置各种颜色/标记设置。在绘图时握住句柄,然后使用get
和set
检查您可以调整的设置类型。
h = geoshow(lat, lon, 'DisplayType', 'Point')