kmlwriteline

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

Описание

пример

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

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

пример

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

Примеры

свернуть все

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

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 Places или на линии в окне средства просмотра.

Вы можете включить базовую разметку 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