exponenta event banner

kmlwriteline

Запись данных географической линии в файл KML

Описание

пример

kmlwriteline(filename,latitude,longitude) записывает данные географической линии, указанные latitude и longitude в файл, указанный filename в формате KML. kmlwriteline создает элемент KML Placemark для каждой линии, используя значения широты и долготы в качестве координат точек, определяющих линию. kmlwriteline устанавливает значения высоты, связанные с линией, как 0 и устанавливает интерпретацию высоты как 'clampToGround'.

kmlwriteline(filename,latitude,longitude,altitude) использует значения latitude, longitude, и altitude для задания координат точек, определяющих линию. При указании значения высоты kmlwriteline устанавливает AltitudeMode атрибут для 'relativeToSeaLevel'.

пример

kmlwriteline(___,Name,Value) задает пары «имя-значение», которые задают дополнительные свойства элемента KML. Имена параметров могут быть сокращенными и не учитывать регистр.

Примеры

свернуть все

Загрузка географических данных, описывающих береговые линии.

load coastlines 

Определите имя файла KML, который требуется создать.

 filename = 'coastlines.kml';

Запишите данные линии в файл, указав цвет и ширину линии.

kmlwriteline(filename, coastlat, coastlon, 'Color','black', ...
       'LineWidth', 3);

Прочитайте журнал дорожек из GPX-файла. gpxread возвращает данные в виде вектора геопоинт.

points = gpxread('sample_tracks');

Получение значений широты, долготы и высоты из данных.

lat = points.Latitude;
lon = points.Longitude;
alt = points.Elevation;

Определите имя файла KML, который требуется создать.

filename = 'track.kml';

Запишите данные географической линии в файл, указав описание и имя.

kmlwriteline(filename,lat, lon, alt, ...
       'Description', points.Metadata.Name, 'Name', 'Track Log');

Считывание данных дорожки в вектор геопоинтов.

cities = geopoint(shaperead('worldcities','UseGeoCoords',true));

Получение значений широты, долготы и высоты из данных. В примере используются Лондон и Нью-Йорк.

city1 = 'London';
city2 = 'New York';
pt1 = cities(strcmp(city1,cities.Name));
pt2 = cities(strcmp(city2,cities.Name));
lat1 = pt1.Latitude;
lon1 = pt1.Longitude;
lat2 = pt2.Latitude;    
lon2 = pt2.Longitude;
nlegs = 20;
[lat,lon] = gcwaypts(lat1,lon1,lat2,lon2,nlegs);
midpoint = nlegs/2;
altscale = 5000;
alt = [0:midpoint midpoint-1:-1:0] * altscale;

Укажите вид с помощью LookAt значения параметров.

lookLat = 49.155804;
lookLon = -56.698494;
lookAt = geopoint(lookLat, lookLon);
lookAt.Range = 2060400;
lookAt.Heading = 10;
lookAt.Tilt = 70;

Запишите данные географической линии в два файла KML, указав цвет, ширину и вид. На одной дорожке отображаются значения высоты, а на другой дорожка прижата к земле.

width = 4;
filename1 = 'altitudetrack.kml';
kmlwriteline(filename1,lat,lon,alt,'Color','k','LineWidth',width)

filename2 = 'groundtrack.kml';
kmlwriteline(filename2,lat,lon,alt,'Color','w','LineWidth',width, ...
       'LookAt',lookAt,'AltitudeMode','clampToGround')

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

свернуть все

Имя выходного файла, указанного как строковый скалярный или символьный вектор. kmlwriteline создает файл в текущей папке, если не указано полное или относительное имя пути. Если имя файла включает расширение, оно должно быть .kml.

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

Широты точек, определяющих прямую, заданную как вектор в диапазоне [-90 90].

Типы данных: single | double

Долготы точек, определяющих отрезок, заданные как вектор. Значения долготы автоматически переносятся в диапазон [-180, 180].

Типы данных: single | double

Высота точек, определяющих линию, заданная как скаляр или вектор. Единица измерения - метры.

  • Если скаляр, kmlwriteline применяет значение к каждой точке.

  • В случае вектора необходимо указать значение высоты для каждой точки. То есть вектор должен иметь ту же длину, что и latitude и longitude.

Типы данных: single | double

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

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

Пример: 'Name','Point Reyes'

Метка строки, отображаемой в средстве просмотра, заданная как строковый скалярный или символьный вектор.

Если строка содержит NaN значения, kmlwriteline размещение сегментов линий в папке с меткой 'Line 1'. kmlwriteline маркирует сегменты линии 'Segment N', где N - значение индекса сегмента линии.

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

Содержимое, отображаемое в позиции описания строки, указанное как строковый скалярный или символьный вектор. Описание появляется в строке описания, когда пользователь щелкает имя элемента на панели «Места Google Earth» или строку в окне просмотра.

Можно включить базовую разметку HTML, однако Google Earth применяет некоторое форматирование HTML автоматически. Например, Google Earth заменяет новые строки тегами разрыва строки и заключает действительные URL-адреса в теги привязки, чтобы сделать их гиперссылками. Чтобы просмотреть примеры HTML-тегов, распознаваемых Google Earth, просмотрите https://earth.google.com.

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

Цвет линии, указанный как спецификация цвета MATLAB ® (ColorSpec). Можно задать символьный вектор, массив скалярных ячеек или числовой вектор со значениями в диапазоне [0 1].

  • При указании символьного вектора значение указывает имя цвета (см. ColorSpec). При указании 'none'или не указывайте этот параметр, kmwriteline не включает в файл спецификацию цвета и оставляет выбор цвета на усмотрение средства просмотра.

  • При указании массива ячеек он должен быть скалярным.

  • Если указан числовой массив, он должен быть вектором класса 1 на 3 double.

Прозрачность линии, заданная как числовой скаляр в диапазоне [0 1]. Значение по умолчанию, 1, указывает, что линия полностью непрозрачна.

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

Ширина строки в пикселях, заданная как положительный числовой скаляр. Если ширина не указана, kmlwriteline не включает информацию о ширине в файл, и программа просмотра определяет ширину линии.

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

Интерпретация значений высоты, указанных как одно из следующих:

СтоимостьОписание
'clampToGround'Игнорируйте значения высоты и устанавливайте функцию на земле. Интерпретация по умолчанию, если не указано altitude значения.
'relativeToGround'Установите значения высоты относительно фактической отметки земли конкретного элемента.
'relativeToSeaLevel'Установите значения высот относительно уровня моря, независимо от фактических значений высот местности под элементом. Интерпретация по умолчанию при задании значений высоты. Названный 'absolute' в терминологии KML.

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

Положение виртуальной камеры (глаза) относительно просматриваемого объекта, определяемое как вектор геопоинта. Поле вектора географической точки определяет вид. LookAt ограничивается просмотром элемента вниз. Чтобы наклонить виртуальную камеру, чтобы смотреть над горизонтом в небо, используйте Camera параметр.

Имя свойстваОписаниеТип данных
LatitudeШирота линии, на которую смотрит камера, в градусахСкалярный двойной, от -90 до 90
LongitudeДолгота линии, на которую смотрит камера, в градусахСкалярный двойник, от − 180 до 180
AltitudeВысота линии, на которую смотрит камера с поверхности Земли, в метрахСкалярный числовой
HeadingНаправление камеры (азимут), в градусах (необязательно) Скалярный числовой [0 360], по умолчанию 0 (истинный Север)
TiltУгол между направлением LookAt положение и нормаль к поверхности Земли, в градусах (необязательно) Скалярный числовой [0 90], по умолчанию 0 (непосредственно выше)
RangeРасстояние в метрах от точки, указанной latitude, longitude, и altitude в положение камеры. Скалярный числовой, по умолчанию 0
AltitudeModeИнтерпретация значения высоты камеры (необязательно)'relativeToSeaLevel', 'clampToGround', (по умолчанию) 'relativeToGround'

Положение виртуальной камеры (глаза) относительно поверхности Земли, определяемое как вектор геопоинт. Вид определяется полями вектора географической точки, перечисленными ниже.Camera обеспечивает полный контроль 6 степеней свободы над видом, чтобы можно было разместить камеру в пространстве, а затем повернуть ее вокруг осей x, y и z. Вы можете наклонить вид камеры так, чтобы смотреть над горизонтом в небо.

Имя свойстваОписаниеТип данных
LatitudeШирота виртуальной камеры (глаза), в градусахСкалярный двойной, в диапазоне [-90 90]
LongitudeДолгота виртуальной камеры, в градусах, Скалярный двойной, в диапазоне [-180 180].
AltitudeРасстояние виртуальной камеры от поверхности Земли, в метрахСкалярный числовой
HeadingНаправление (азимут) в градусах (необязательно) Скалярный числовой [0 360], по умолчанию 0 (истинный Север)
TiltПоворот камеры вокруг оси X, в градусах (необязательно) Скалярный числовой [0 180], по умолчанию 0 (непосредственно выше)
RollПоворот камеры в градусах вокруг оси Z (необязательно) Скалярный числовой, в диапазоне [-180 180], по умолчанию 0
AltitudeModeОпределяет способ интерпретации высоты камеры (необязательно) 'relativeToSeaLevel', 'clampToGround', 'relativeToGround' (по умолчанию)

Совет

  • Если линия не видна, установите AltitudeMode кому 'clampToGround'. При появлении строки могут возникнуть проблемы со значением высоты.

  • Файлы KML можно просматривать с помощью браузера Google Earth™, который необходимо установить на компьютер.

    Для Windows используйте winopen функция:

    winopen(filename)
    

    Для Linux, если имя файла является частичным путем, используйте следующие команды:

    cmd = 'googleearth ';
    fullfilename = fullfile(pwd, filename);   
    system([cmd fullfilename])
    

    Для Mac, если имя файла является частичным путем, используйте следующие команды:

    cmd = 'open -a Google\ Earth '
    fullfilename = fullfile(pwd, filename);   
    system([cmd fullfilename])
    
  • Вы также можете просматривать файлы KML с помощью браузера Google Maps™. Файл должен находиться на веб-сервере, доступном из Интернета. Частного сервера интрасети будет недостаточно, так как сервер Google должен иметь доступ к указанному URL-адресу. Ниже приведен шаблон для использования Google Maps. Заменить your-web-server-path с реальной стоимостью.

    GMAPS_URL = 'http://maps.google.com/maps?q=';
    KML_URL = 'http://your-web-server-path';
    web([GMAPS_URL KML_URL])
    
Представлен в R2013a