exponenta event banner

kmlwrite

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

Следующие синтаксисы, хотя и поддерживаются, не рекомендуются. Использовать kmlwritepoint вместо этого.

  • kmlwrite(filename,lat,lon)

  • kmlwrite(filename,lat,lon,alt)

Описание

пример

kmlwrite(filename,S) записывает данные географической точки, линии или полигона, хранящиеся в S в файл, указанный filename в формате KML. S - вектор геопоинты, вектор геошапы или геострукт. kmlwrite создает KML Placemark в файле и заполняет теги в placemark данными в S.

пример

kmlwrite(filename,address) пишет address в файл, указанный filename в формате KML. address - строковый скалярный или символьный вектор, содержащий данные адреса произвольной формы, которые могут включать в себя улицу, город, штат, страну и/или почтовый индекс. Чтобы указать несколько адресов, используйте массив ячеек из векторов символов или строковых скаляров. kmlwrite создает в файле метку Placemark KML, задающую значение тега адреса. Адрес является альтернативным способом указания точки вместо использования широты и долготы.

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

Примеры

свернуть все

Возвращаемые данные точек в векторе геопоинтов.

placenames = gpxread('boston_placenames');

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

filename = 'Boston_Placenames.kml';

Определите цвета, которые требуется использовать с данными точек.

colors = jet(length(placenames));

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

kmlwrite(filename, placenames, 'Name', placenames.Name,'Color',colors );

Считывание элементов линии в вектор геошейпа.

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

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

filename = 'tracks.kml';

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

colors = {'red', 'green'};
description = tracks.Metadata.Name;
name = {'track1', 'track2'};

kmlwrite(filename, tracks, 'Color', colors, 'LineWidth', 2, ...
         'Description', description, 'Name', name);

Считывайте географические данные (местоположения крупных европейских городов) из файла формы, включая названия городов. Это возвращает структуру.

latlim = [ 30; 75];
lonlim = [-25; 45];
cities = shaperead('worldcities.shp','UseGeoCoords', true, ...
                   'BoundingBox', [lonlim, latlim]);

Преобразование структуры в вектор географической точки.

cities = geopoint(cities);

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

filename = 'European_Cities.kml';

Запишите географические данные в файл KML. Используйте необязательный параметр Name, чтобы включить имена городов в метки placemarks. Удалите таблицу Описание по умолчанию.

kmlwrite(filename, cities, 'Name', cities.Name, 'Description',{});

Создайте массив ячеек неструктурированных адресов (названия нескольких австралийских городов).

address = {'Perth, Australia', ...
           'Melbourne, Australia', ...
           'Sydney, Australia'};

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

filename = 'Australian_Cities.kml';

Запишите неструктурированные адресные данные в KML-файл с помощью дополнительного Name параметр для включения имен городов в метку placemarks.

kmlwrite(filename, address, 'Name', address);

Считывание данных полигона из файла, возвращенного в структуре.

S = shaperead('usastatelo','UseGeoCoords',true);

Преобразование структуры в вектор геошейпа.

S = geoshape(S);

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

filename = 'usastatelo.kml';
colors = polcmap(length(S));
kmlwrite(filename,S,'Name',S.Name,'FaceColor',colors,'EdgeColor','k')

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

свернуть все

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

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

Географические элементы для записи в файл, указанные как вектор геопоинт, вектор геошейп или геострукт. Поля атрибутов S отображаются в виде таблицы в теге Description метки Placemark для каждого элемента S. Поля атрибутов отображаются в таблице в том же порядке, что и в S.

  • Если S - вектор геошапы, Geometry определяет тип данных: 'point', 'line', или 'polygon'.

  • Если S является геоструктом с X и Y поля, kmlwrite возвращает ошибку.

  • Если S содержит допустимые данные высоты, kmlwrite записывает значения полей в файл как высоты KML и устанавливает интерпретацию высоты как 'relativeToSeaLevel'. Если S не содержит данных о высоте, kmlwrite устанавливает в поле высоты в файле значение 0 и устанавливает интерпретацию высоты как 'clampToGround'. Данные о высоте могут находиться в поле с именем Elevation, Altitude, или Height. Если S содержит поля с несколькими именами, kmlwrite выдает предупреждение и игнорирует поля высоты.

Местоположение метки-заполнителя KML, заданного как строковый скаляр, символьный вектор или массив ячеек символьных векторов, содержащих данные адреса произвольной формы, такие как улица, город, штат и почтовый индекс. Если address является массивом ячеек, каждая ячейка представляет уникальное местоположение.

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

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

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

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

Метка для объекта, отображаемого в средстве просмотра, заданная как строковый скаляр, символьный вектор или массив ячеек символьных векторов. Если указать строковый скалярный или символьный вектор, kmlwrite применяет имя ко всем объектам. Если строковый вектор или массив ячеек символьных векторов, необходимо указать имя для каждого элемента. То есть, массив ячеек должен быть той же длины, что и S или address. Ниже описано поведение по умолчанию для различных функций.

ОсобенностьИмя по умолчанию
Адрес'Address N' где N - индекс элемента.
Пункт'Point N' где N - индекс элемента.
Многоточечный'Multipoint N' где N - индекс элемента. kmlwrite помещает точки в именованную папку и каждая точка получает имя 'Point M' где M - индекс точки.
Линия'Line N' где N - индекс элемента. Если данные строки содержат NaN значения, kmlwrite размещение сегментов линий в папке с именем 'Segment M', где M - номер сегмента линии.
Многоугольник'Polygon N' где N - индекс элемента. Если список вершин многоугольника содержит несколько внешних колец, kmlwrite помещает каждое кольцо в папку с меткой 'Part M', где M - номер для этой функции.

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

Содержимое, отображаемое в позиции описания метки-заполнителя, указанное как строковый скалярный или символьный вектор, массив ячеек векторов символов или спецификация атрибута. kmlwrite использует эти данные для установки значений тегов описания элемента. Описание отображается в позиции описания, связанной с функцией в Google Earth.

  • Если указать строковый скалярный или символьный вектор, kmlwrite применяет описание ко всем объектам.

  • Если указан строковый вектор или массив ячеек символьных векторов, для каждого элемента должна быть одна метка; то есть она должна быть той же длины, что иS или address.

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

Если вы предоставляете спецификацию атрибута, поля атрибутов S отображаются в виде таблицы в теге описания метки для каждого элемента S, в порядке отображения полей в спецификации. Чтобы создать спецификацию атрибута, вызовите makeattribspec а затем измените выходные данные, чтобы удалить атрибуты или изменить Format для одного или нескольких атрибутов. latitude и longitude координаты S не считаются атрибутами. Если включено в спецификацию атрибута, kmlwrite игнорирует их.

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

Имя файла пользовательского значка, заданного как строковый скаляр, символьный вектор или массив ячеек символьных векторов.

  • Если строковый скалярный или символьный вектор, kmlwrite применяет значение ко всем значкам.

  • Если строковый вектор или массив ячеек символьных векторов, укажите значок для каждого элемента; то есть массив ячеек должен иметь ту же длину, что и S или address.

  • Если строковый скалярный или символьный вектор является URL-адресом Интернета, URL-адрес должен включать тип протокола.

  • Если имя файла значка находится не в текущей папке или в папке на пути MATLAB, укажите полное или относительное имя пути.

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

Коэффициент масштабирования значка, заданный как положительный числовой скаляр или вектор.

  • Если скаляр, kmlwrite применяет значение ко всем объектам

  • Если вектор, укажите масштабный коэффициент для каждого элемента. То есть, массив ячеек должен быть той же длины, что и S или address.

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

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

  • Если строковый скалярный или символьный вектор, kmlwrite применяет цвет ко всем элементам

  • Если строковый вектор или массив ячеек символьных векторов, укажите цвет для каждого элемента. То есть, массив ячеек должен быть той же длины, что и S или address.

  • Если double массив, укажите M-by-3 массив, где M - такая же длина, как S или address.

  • Если S является многоугольным геошапом, можно указать 'none', что указывает на то, что многоугольник не заполнен и не имеет кромки. Кроме того, для многоугольников Color задает цвет граней полигона, если FaceColor не указан, и кромки многоугольников, если EdgeColor не указан.

Типы данных: double | char | cell

Прозрачность значков, линий или граней и кромок многоугольников, заданная как числовой скаляр или вектор в диапазоне [0 1]. Если скаляр, kmlwrite применяет значение ко всем элементам. Если вектор, укажите значение для каждого элемента; то есть вектор должен быть той же длины, что и S или address. Если S - многоугольный геошейп, kmlwrite применяет значение ко всем граням многоугольника, если FaceAlpha не указан, и кромки многоугольника, если EdgeAlpha не указан.

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

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

  • Если скаляр, kmlwrite применяет значение ко всем кромкам многоугольника.

  • Если вектор, укажите значение для каждого элемента. То есть вектор должен иметь ту же длину, что и S.

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

Цвет кромок многоугольника, заданный как спецификация цвета MATLAB (ColorSpec). Спецификация цвета может быть символьным вектором, массивом ячеек или символьными векторами или double массив со значениями в диапазоне[0 1]. Если символьный вектор, kmlwrite применяет значение ко всем граням. Если массив ячеек содержит векторы символов, укажите значение для каждой грани. То есть, массив ячеек должен быть той же длины, что и S или address. Если значение является числовым массивом, это размер M-by-3 где M - длина S или address. Если S является многоугольным геошапом, можно указать значение 'none' указывает, что многоугольник не имеет контура.

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

  • Если скаляр, kmlwrite применяет значение ко всем граням многоугольника.

  • Если вектор, укажите значение для каждой грани многоугольника; то есть вектор должен быть той же длины, что и S или address.

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

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

  • Если скаляр, kmlwrite применяет значение ко всем кромкам многоугольника.

  • Если вектор, укажите значение для каждой кромки многоугольника; то есть вектор должен быть той же длины, что и S.

  • Если указать double массив, размер должен быть M-by-3, где M - длина S.

Значение 'none' указывает, что у многоугольников нет кромок.

Прозрачность ребер многоугольника, заданная как числовой скаляр или вектор.

  • Если скаляр, kmlwrite применяет значение ко всем кромкам многоугольника.

  • Если вектор, y задает значение для каждой кромки многоугольника; то есть вектор должен быть той же длины, что и S. Если не указать EdgeAlpha, kmlwrite использует значение Alpha, если указано. Если не указано ни одно из значений, kmlwrite использует значение по умолчанию 1 (полностью непрозрачный).

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

Соедините многоугольник с землей, указанный как логический или числовой скаляр, true (1) или false (0), или вектор. Если скаляр, значения применяются ко всем многоугольникам. Если вектор, укажите значение для каждого многоугольника; то есть вектор должен быть той же длины, что и S или address.

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

Вырезать многоугольники, заданные как логический или числовой скаляр true (1) или false (0). Если true, kmlwrite вырезает детали многоугольника в PolygonCutMeridian значение. Если trueи части многоугольника требуют разрезания, kmlwrite возвращает ошибку, если значения высоты неравномерны.

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

Меридиан, где многоугольники вырезаются, задается как скалярное число.

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

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

СтоимостьОписание
'clampToGround'Игнорируйте значения высоты и устанавливайте функцию на земле. Это интерпретация по умолчанию, если значения высоты не указаны.
'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 обеспечивает полный контроль шести степеней свободы над видом, чтобы можно было разместить камеру в пространстве, а затем повернуть ее вокруг осей 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' (по умолчанию)

Совет

  • Файлы 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])
    
Представлен в R2007b