0

问题:如何使用 scatter 或 geoshow 函数(或任何最有效的函数)绘制 GPS 经度和纬度坐标

大家好

我有这个我想分析的 GPS 单元,所以我出去测试了它,得到了几页 NMEA 句子(针对同一领域的 3 个不同点),我喜欢使用 Matlab 的 scatter 函数(或 geoshow 函数.. .whatever 工作)。

由于 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

绘制一个坐标的屏幕截图...为什么只有 1 个点? 我应该看到一个分散?

4

1 回答 1

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。您也可以设置各种颜色/标记设置。绘制时请把握好手柄,然后使用getset检查可以调整的设置类型。

h = geoshow(lat, lon, 'DisplayType', 'Point')
于 2014-02-24T22:29:15.893 回答