exponenta event banner

gpxread

Описание

пример

P = gpxread(filename) считывает данные точек из файла формата обмена GPS (GPX), filenameи возвращает вектор географической точки n-by-1, P, где n - количество ППМ или точек, определяющих маршрут или трассу.

gpxread ищет в файле сначала ППМ, затем маршруты, а затем дорожки и возвращает первый тип найденных данных. Поле метаданных P определяет тип элемента ('waypoint', 'track', или 'route') и любые дополнительные метаданные, связанные с ППМ, маршрутом или дорожкой. Если файл содержит несколько путей или маршрутов, P содержит точки, определяющие первую дорожку или маршрут в файле. Если gpxread не удается найти элементы в файле, он возвращает пустой вектор географической точки.

P = gpxread(URL) считывает данные GPX из URL. URL должен включать тип протокола (например, http://).

пример

S = gpxread(___,'Index',V) возвращает данные из GPX-файла в векторе геошейпа, а не в векторе геопоинт, только если файл содержит данные пути или маршрута и вы указываете значение 'Index' как вектор, V. Этот синтаксис используется при работе с данными в виде строки, а не в виде набора точек.

пример

___ = gpxread(___,Name,Value) считывает данные из GPX-файла с дополнительными параметрами, заданными одним или несколькими Name,Value парные аргументы, которые управляют различными характеристиками импорта. Name является именем аргумента и Value - соответствующее значение. Name должно отображаться внутри отдельных кавычек ('') и является нечувствительным к регистру. Можно указать несколько аргументов пары имя-значение в любом порядке.

Примеры

свернуть все

Считывание и отображение ППМ из boston_placenames.gpx и наложить точки на boston.tif изображение.

Сначала импортируйте ППМ и файл GeoTIFF.

p = gpxread('boston_placenames.gpx');
[A,R] = readgeoraster('boston.tif');

Получение структуры проекции изображения GeoTIFF. Преобразуйте единицы длины пределов X и Y в метры для использования с проекционной структурой.

proj = geotiffinfo('boston.tif');
mstruct = geotiff2mstruct(proj);
R.XWorldLimits = R.XWorldLimits * proj.UOMLengthInMeters;
R.YWorldLimits = R.YWorldLimits * proj.UOMLengthInMeters;

Отображение карты.

axesm(mstruct)
mapshow(A,R)

Отображение имен и положений каждой точки.

for k=1:length(p)
   textm(p(k).Latitude, p(k).Longitude, p(k).Name, ...
      'Color','k','BackgroundColor',[0.9 0.9 0],...
      'Interpreter','none');
end
geoshow(p)
xlim(R.XWorldLimits)
ylim(R.YWorldLimits)

Прочитайте и просмотрите маршрут от международного аэропорта Бостон Логан до MathWorks в Натике, штат Массачусетс.

Прочтите информацию о маршруте из файла GPX.

route = gpxread('sample_route');

Вычислить latlim и lonlim с буфером 0,05.

[latlim, lonlim] = geoquadline(route.Latitude, route.Longitude);
[latlim, lonlim] = bufgeoquad(latlim, lonlim, .05, .05);

Отображение маршрута.

fig = figure;
pos = fig.Position;
fig.Position = [300 300 1.25*pos(3) 1.25*pos(4)];
ax = usamap(latlim, lonlim);
setm(ax, 'MLabelParallel', 43.5)
geoshow(route.Latitude, route.Longitude)

Извлеките элементы трассы, включающие описания поворотов, маркировку и цветовой код для каждого поворота на карте, и создайте легенду, отображающую описания. Измените порядок так, чтобы легенда отображала первый поворот вверху, а последний - внизу.

turns = route(~cellfun(@isempty, route.Description));
turns = turns(end:-1:1);
n = length(turns);
colors = cool(n);
for k=1:n
   geoshow(turns(k).Latitude, turns(k).Longitude, ...
       'DisplayType','point','MarkerEdgeColor',colors(k,:),...
       'Tag','turn','DisplayName',turns(k).Description)
end
legend(findobj(ax,'Tag','turn'),'Location','SouthOutside')

Чтение журнала отслеживания из GPX-файла и отображение на веб-карте.

Считывайте журналы дорожек из GPX-файла. gpxread возвращает данные в объекте geoshape.

tracks = gpxread('sample_tracks', 'Index', 1:2);

Отображение журналов дорожек на веб-карте с различным цветом для каждого журнала дорожек.

webmap('openstreetmap')
colors = {'cyan', 'red'};
wmline(tracks, 'Color', colors)

Увеличьте масштаб веб-карты, чтобы просмотреть первую дорожку возле кампуса MathWorks в Натике.

[latlim, lonlim] = geoquadline(tracks(1).Latitude, tracks(1).Longitude);
wmlimits(latlim, lonlim)

Прочитайте ППМ и журнал отслеживания из sample_mixed.gpx файл.

wpt = gpxread('sample_mixed');
trk = gpxread('sample_mixed', 'FeatureType', 'track');

Отображение ППМ и журнала дорожек на веб-карте.

webmap('worldimagery')
wmline(trk, 'OverlayName', 'Track Logs');

Добавьте веб-маркеры, чтобы отметить позиции каждой точки пути.

wmmarker(wpt, 'FeatureName', wpt.Name, 'OverlayName', 'Waypoints')

В этом примере показано, как отобразить карты отметок и временных зон и рассчитать расстояние с помощью журналов трассы.

Прочтите журнал дорожек из sample_mixed.gpx файл.

trk = gpxread('sample_mixed', 'FeatureType', 'track');

Преобразование строк значений времени в серийные номера дат с помощью datenumзатем вычислите время суток в часах-минутах-секундах.

timeStr = strrep(trk.Time, 'T', ' ');
timeStr = strrep(timeStr, '.000Z', '');
trk.DateNumber = datenum(timeStr, 31);
day = fix(trk.DateNumber(1));
trk.TimeOfDay = trk.DateNumber - day;

Отображение графика площади значений отметки и времени.

figure
area(trk.TimeOfDay, trk.Elevation)
datetick('x', 13, 'keepticks', 'keeplimits')
ylabel('elevation (meters)')
xlabel('time(Z) hours:minutes:seconds')
title({'Elevation Area Plot', datestr(day)});

Figure contains an axes. The axes with title Elevation Area Plot 28-Aug-2010 contains an object of type area.

Расчет и отображение расстояния от наземного пути. Преобразуйте расстояние в метрах в расстояние в милях США.

e = wgs84Ellipsoid;
lat = trk.Latitude;
lon = trk.Longitude;
d = distance(lat(1:end-1), lon(1:end-1), lat(2:end), lon(2:end), e);
d = d * unitsratio('sm', 'meter');

Отображение совокупного расстояния от наземного пути и прошедшего времени.

trk.ElapsedTime = trk.TimeOfDay - trk.TimeOfDay(1);
figure
line(trk.ElapsedTime(2:end), cumsum(d))
datetick('x', 13)
ylabel('cumulative ground track distance (statute mile)')
xlabel('elapsed time  (hours:minutes:seconds)')
title({'Cumulative Ground Track Distance in Miles', datestr(day),  ...
   ['Total Distance in Miles: ' num2str(sum(d))]});

Figure contains an axes. The axes with title Cumulative Ground Track Distance in Miles 28-Aug-2010 Total Distance in Miles: 46.0637 contains an object of type line.

Входные аргументы

свернуть все

Имя открываемого GPX-файла, указанное как строковый скалярный или символьный вектор. Если файл находится не в текущей папке или в папке по пути MATLAB ®, необходимо указать путь к папке. Если имя файла включает расширение'.gpx' (в верхнем или нижнем регистре), вы можете опустить внутренний номер из filename.

Пример: 'boston_placenames'

Типы данных: char | string

Расположение в Интернете, содержащее данные GPX, указанное как URL. URL-адрес должен включать тип протокола (например, https://).

Типы данных: char | string

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'FeatureType','track'

Тип элемента для чтения из файла, указанный как один из следующих: 'track', 'route', 'waypoint', или 'auto'. Если gpxread не удается найти указанный элемент в файле, он возвращает пустой вектор географической точки.

Пример: 'FeatureType','waypoint'

Типы данных: char | string

Индекс данных ППМ, трассы или маршрута в файле, указанный как скаляр или вектор положительных целых чисел.

  • Если значение является скаляром, gpxread возвращает указанный ППМ, маршрут или трассу в качестве вектора геопоинт. Если скалярное значение больше общего количества элементов, найденных в файле, gpxread возвращает пустой вектор геопоинт.

  • Если значение является вектором и файл содержит ППМ, gpxread возвращает те ППМ, которые указаны вектором. Если файл содержит трассы или дорожки (и не содержит ППМ), gpxread возвращает указанные маршруты или журналы путей в векторе геошейпа. gpxread устанавливает в поле Geometry вектора геошейпа значение 'line'.

Пример: 'Index', [1:2] считывает до двух маршрутов или дорожек, если файл содержит трассы или дорожки, в векторе геошейпа.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Выходные аргументы

свернуть все

Данные ППМ, трассы или маршрута возвращены в виде вектора геопоинт n-by-1, где n - количество точек.

Для журнала трассы или маршрута с несколькими сегментами: gpxread объединяет координаты сегментов с NaN сепараторы. NaN обозначает числовые элементы, не найденные в файле. Пустой символьный вектор ('') используется для обозначения текстовых элементов, не найденных в файле.

Данные отслеживания или маршрута, возвращенные в виде вектора географической точки n-by-1

Подробнее

свернуть все

waypoint

Интересующая точка или именованный элемент на карте.

след

Упорядоченный список ППМ, описывающих путь.

маршрут

Упорядоченный список ППМ, представляющих ряд точек поворота, ведущих к месту назначения.

Совет

  • За исключением расширений, GPX версии 1.1 полностью поддерживается. При обнаружении другой версии выдается предупреждение. Однако в большинстве случаев файлы GPX версии 1.0 можно считать успешно, если они не содержат определенных тегов метаданных. Дополнительные сведения см. в документации по схеме GPX 1.1.

См. также

| |

Представлен в R2012a