kmlwrite

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

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

  • kmlwrite(filename,lat,lon)

  • kmlwrite(filename,lat,lon,alt)

Описание

пример

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

пример

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

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

Примеры

свернуть все

Данные точки возврата в геоточке.

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. Используйте необязательный параметр «Имя», чтобы включить имена городов в макетные знаки. Удалите таблицу Описание по умолчанию.

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

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

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

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

filename = 'Australian_Cities.kml';

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

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

Географические функции для записи в файл, заданные как геоточка, вектор геосхемы или геоstruct. Поля атрибутов 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 поле для одного или нескольких атрибутов. The 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.

  • Если a 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