load lon load lat
时间: 2024-06-07 18:06:49 浏览: 16
这两个词一般指经度和纬度,是地理坐标系中的概念。经度(Longitude)是指一个地点距离本初子午线的角度,通常用东经和西经表示,取值范围为0°~180°和0°~(-180°)。纬度(Latitude)是指一个地点距离地球赤道的角度,通常用北纬和南纬表示,取值范围为0°~90°和0°~(-90°)。在地图上,经度和纬度可以确定地球上的任何一个位置。
相关问题
逐步解释% matlab mobile传感器数据,从手机导入到本地即可 clear;close all;clc; load('sensorlog_20230601_123433.mat'); lat = Position.latitude; lon = Position.longitude; altitude = Position.altitude; timestamp = Position.Timestamp; spd = Position.speed; nums = length(lat); nBins = 10; binSpacing = (max(spd) - min(spd))/nBins; binRanges = min(spd):binSpacing:max(spd)-binSpacing; % 添加下确界 binRanges(end+1) = inf; % |histc| 确定值落入哪一个bin [~, spdBins] = histc(spd, binRanges); lat = lat'; lon = lon'; spdBins = spdBins'; % 创建一个地理形状矢量,该矢量将线段存储为features s = geoshape(); for k = 1:nBins % 保留与当前bin匹配的经纬度,其余部分保留为NaN,NaN为线段中的中断 latValid = nan(1, length(lat)); latValid(spdBins==k) = lat(spdBins==k); lonValid = nan(1, length(lon)); lonValid(spdBins==k) = lon(spdBins==k); % 保留从当前速度bin转换到另一个速度bin后出现的经纬度使路径连续 transitions = [diff(spdBins) 0]; insertionInd = find(spdBins==k & transitions~=0) + 1; % 预分配空间并插入额外的经纬度 latSeg = zeros(1, length(latValid) + length(insertionInd)); latSeg(insertionInd + (0:length(insertionInd)-1)) = lat(insertionInd); latSeg(~latSeg) = latValid; lonSeg = zeros(1, length(lonValid) + length(insertionInd)); lonSeg(insertionInd + (0:length(insertionInd)-1)) = lon(insertionInd); lonSeg(~lonSeg) = lonValid; % 将经纬度线段添加到地理形状矢量 s(k) = geoshape(latSeg, lonSeg); end wm = webmap('World Imagery'); mwLat = 26.053376; mwLon = 119.187501; name = 'School'; iconDir = fullfile(matlabroot,'toolbox','matlab','icons'); iconFilename = fullfile(iconDir, 'fzu.png'); wmmarker(mwLat, mwLon, 'FeatureName', name, 'Icon', iconFilename); colors = autumn(nBins); wmline(s, 'Color', colors, 'Width', 5); wmzoom(16);
这段 MATLAB 代码的功能是将从手机传感器中获取的位置、速度等信息可视化在地图上,并将速度分成 nBins 个区间,对于每个区间将对应的位置信息连接成线段,最终将所有线段可视化在地图上。
下面是代码的逐行解释:
```matlab
clear; close all; clc;
load('sensorlog_20230601_123433.mat');
```
清空工作区,关闭所有窗口,加载存储在 mat 文件中的数据。
```matlab
lat = Position.latitude;
lon = Position.longitude;
altitude = Position.altitude;
timestamp = Position.Timestamp;
spd = Position.speed;
nums = length(lat);
```
从存储在 mat 文件中的 Position 变量中获取经度、纬度、高度、时间戳和速度等信息,并计算经度和纬度的数量。
```matlab
nBins = 10;
binSpacing = (max(spd) - min(spd))/nBins;
binRanges = min(spd):binSpacing:max(spd)-binSpacing;
% 添加下确界
binRanges(end+1) = inf;
% |histc| 确定值落入哪一个bin
[~, spdBins] = histc(spd, binRanges);
```
将速度分成 nBins 个区间,并确定每个速度值所属的区间。
```matlab
lat = lat'; lon = lon'; spdBins = spdBins';
```
转置经度、纬度和速度值,以便后面的操作。
```matlab
% 创建一个地理形状矢量,该矢量将线段存储为features
s = geoshape();
for k = 1:nBins
% 保留与当前bin匹配的经纬度,其余部分保留为NaN,NaN为线段中的中断
latValid = nan(1, length(lat));
latValid(spdBins==k) = lat(spdBins==k);
lonValid = nan(1, length(lon));
lonValid(spdBins==k) = lon(spdBins==k);
% 保留从当前速度bin转换到另一个速度bin后出现的经纬度使路径连续
transitions = [diff(spdBins) 0];
insertionInd = find(spdBins==k & transitions~=0) + 1;
% 预分配空间并插入额外的经纬度
latSeg = zeros(1, length(latValid) + length(insertionInd));
latSeg(insertionInd + (0:length(insertionInd)-1)) = lat(insertionInd);
latSeg(~latSeg) = latValid;
lonSeg = zeros(1, length(lonValid) + length(insertionInd));
lonSeg(insertionInd + (0:length(insertionInd)-1)) = lon(insertionInd);
lonSeg(~lonSeg) = lonValid;
% 将经纬度线段添加到地理形状矢量
s(k) = geoshape(latSeg, lonSeg);
end
```
将速度分成的每个区间对应的经纬度信息连接成线段,并将所有线段存储在地理形状矢量 s 中。
```matlab
wm = webmap('World Imagery');
mwLat = 26.053376; mwLon = 119.187501;
name = 'School';
iconDir = fullfile(matlabroot,'toolbox','matlab','icons');
iconFilename = fullfile(iconDir, 'fzu.png');
wmmarker(mwLat, mwLon, 'FeatureName', name, 'Icon', iconFilename);
```
创建一个 Web 地图,设置地图底图为 World Imagery,添加一个标记点用于标记地图的中心点。
```matlab
colors = autumn(nBins);
wmline(s, 'Color', colors, 'Width', 5);
wmzoom(16);
```
将线段可视化在地图上,并设置线段颜色为彩虹色,线段宽度为 5 像素。最后将地图缩放至级别 16。
%Matlab程序读取sst数据: close all clear all oid='sst.mnmean.nc' sst=double(ncread(oid,'sst')); nlat=double(ncread(oid,'lat')); nlon=double(ncread(oid,'lon')); mv=ncreadatt(oid,'/sst','missing_value'); sst(find(sst==mv))=NaN; [Nlt,Nlg]=meshgrid(nlat,nlon); %Plot the SST data without using the MATLAB Mapping Toolbox figure pcolor(Nlg,Nlt,sst(:,:,1));shading interp; load coast;hold on;plot(long,lat);plot(long+360,lat);hold off colorbar %Plot the SST data using the MATLAB Mapping Toolbox figure axesm('eqdcylin','maplatlimit',[-80 80],'maplonlimit',[0 360]); % Create a cylindrical equidistant map pcolorm(Nlt,Nlg,sst(:,:,1)) % pseudocolor plot "stretched" to the grid load coast % add continental outlines plotm(lat,long) colorbar % sst数据格式 % Variables: % lat % Size: 89x1 % Dimensions: lat % Datatype: single % Attributes: % units = 'degrees_north' % long_name = 'Latitude' % actual_range = [88 -88] % standard_name = 'latitude_north' % axis = 'y' % coordinate_defines = 'center' % % lon % Size: 180x1 % Dimensions: lon % Datatype: single % Attributes: % units = 'degrees_east' % long_name = 'Longitude' % actual_range = [0 358] % standard_name = 'longitude_east' % axis = 'x' % coordinate_defines = 'center' % % time % Size: 1787x1 % Dimensions: time % Datatype: double % Attributes: % units = 'days since 1800-1-1 00:00:00' % long_name = 'Time' % actual_range = [19723 74083] % delta_t = '0000-01-00 00:00:00' % avg_period = '0000-01-00 00:00:00' % prev_avg_period = '0000-00-07 00:00:00' % standard_name = 'time' % axis = 't' % % time_bnds % Size: 2x1787 % Dimensions: nbnds,time % Datatype: double % Attributes: % long_name = 'Time Boundaries' % % sst % Size: 180x89x1787 % Dimensions: lon,lat,time % Datatype: int16 % Attributes: % long_name = 'Monthly Means of Sea Surface Temperature' % valid_range = [-5 40] % actual_range = [-1.8 36.08] % units = 'degC' % add_offset = 0 % scale_factor = 0.01 % missing_value = 32767 % precision = 2 % least_significant_digit = 1 % var_desc = 'Sea Surface Temperature' % dataset = 'NOAA Extended Reconstructed SST' % level_desc = 'Surface' % statistic = 'Mean' % parent_stat = 'Mean' 解释这个代码的意思,并将其转换为python代码
这段Matlab代码的功能是读取一个名为'sst.mnmean.nc'的NetCDF文件中的数据,并进行可视化。以下是对代码的解释和相应的Python代码转换:
```python
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
from netCDF4 import Dataset
# 读取NetCDF文件
oid = 'sst.mnmean.nc'
dataset = Dataset(oid)
# 读取sst数据
sst = dataset.variables['sst'][:]
mv = dataset.variables['sst'].missing_value
sst[sst == mv] = np.nan
# 读取经纬度数据
nlat = dataset.variables['lat'][:]
nlon = dataset.variables['lon'][:]
# 绘制SST数据(不使用Matplotlib的Mapping Toolbox)
plt.figure()
plt.pcolormesh(nlon, nlat, sst[:,:,0], shading='interp')
plt.colorbar()
plt.contour(dataset.variables['lon'][:]+360, dataset.variables['lat'][:], dataset.variables['sst'][0,:,:], colors='k')
plt.show()
# 绘制SST数据(使用Matplotlib的Mapping Toolbox)
plt.figure()
map = Basemap(projection='cyl', llcrnrlat=-80, urcrnrlat=80, llcrnrlon=0, urcrnrlon=360)
map.pcolormesh(nlon, nlat, sst[:,:,0], latlon=True)
map.drawcoastlines()
plt.colorbar()
plt.show()
# 关闭文件
dataset.close()
```
注意:在Python中,我们使用了NumPy库来处理数组,Matplotlib进行绘图,并使用Basemap来绘制地图。此外,我们使用了netCDF4库来读取NetCDF文件的数据。请确保在运行代码之前安装了相关的Python库。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)