geopoint

Вектор географической точки

Описание

Вектор геоточки является контейнерным объектом, которая содержит географические координаты точек и атрибуты. Точки связаны, так что размер массивов координат широты и долготы всегда равны и совпадают с размером любых динамически добавленных массивов атрибутов. Каждая запись пары координат и связанных атрибутов, если таковая имеется, представляет дискретный элемент в геоточке.

Создание

Описание

пример

p = geopoint() создает пустой вектор геоточки с этими настройками свойств по умолчанию:

p = 

 0x1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1x1 struct]
 Feature properties:
     Latitude: []
    Longitude: []

пример

p = geopoint(latitude,longitude) устанавливает Latitude и Longitude свойства геоточки p

пример

p = geopoint(latitude,longitude,Name,Value) устанавливает Latitude и Longitude свойства, затем добавляет динамические свойства к геоточке с помощью Name,Value аргументные пары. Можно задать несколько аргументы пары "имя-значение" в любом порядке как Name1,Value1,...,NameN,ValueN.

пример

p = geopoint(structArray) создает новую geopoint вектор из полей структуры, structArray.

  • Если structArray содержит поле Lat, и не содержит поля Latitude, затем Lat значения присваиваются Latitude свойство. Подобное поведение происходит при structArray содержит поле Lon, и не содержит поля Longitude.

  • Если structArray содержит оба Lat и Latitude , затем оба значения полей присваиваются p. Подобное поведение происходит для Lon и Longitude поля, когда оба присутствуют в structArray

  • Другие поля structArray назначены p и стать динамическими свойствами. Значения полей в structArray которые не являются типами числовых данных, строковыми скалярами, строковыми массивами, векторами символов или массивами ячеек типов числовых данных или векторов символов, игнорируются.

пример

p = geopoint(latitude,longitude,structArray) устанавливает Latitude и Longitude свойства и устанавливает динамические свойства из значений полей структуры, structArray.

  • Если structArray содержит поля Lat, Latitude, Lon, или Longitudeзатем эти значения полей игнорируются.

Свойства

расширить все

Каждый элемент в геоточке рассматривается как функция. Для получения дополнительной информации о типах свойств в geopoint, см. Набор Свойств и Функции Свойств.

Динамические свойства являются новыми возможностями, которые добавляются к геоточке и применяются к каждой отдельной функции в векторе геоточка. Можно присоединить новые динамические свойства Feature к объекту во время конструкции с помощью Name,Value пара или после конструкции с помощью точки (.) обозначение. Это аналогично добавлению динамических полей в структуру. Пример добавления динамических свойств функции см. в разделе «Конструкция геоточки с использованием пар "имя-значение"».

Тип геометрии, заданный как 'point'. Для geopoint, Geometry всегда 'point'.

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

Координаты широты, заданные как числовая строка или вектор-столбец.

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

Координаты долготы, заданные в виде числовой строки или вектора-столбца.

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

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

  • Если Metadata предоставляется как динамическое свойство Name в конструкторе и соответствующих Value является скалярной структурой, тогда Value копируется в Metadata свойство. В противном случае выдается ошибка.

  • Если a Metadata поле обеспечивается structArray, и то и другое Metadata и structArray являются скалярными структурами, тогда Metadata значение поля копируется в Metadata значение свойства. Если structArray является скаляром, но Metadata поле не является структурой, тогда выдается ошибка. Если structArray не скаляром, тогда Metadata поле игнорируется.

Типы данных: struct

Функции объекта

append Добавьте функции к географическому или плоскому вектору
catКонкатенация географического или планарного вектора
dispОтобразите географический или плоский вектор
fieldnamesВозвращает динамические имена свойства географического или планарного вектора
isemptyОпределите, является ли географический или планарный вектор пустым
isfieldОпределите, существует ли динамическое свойство в географическом или планарном векторе
ispropОпределите, существует ли свойство в географическом или планарном векторе
length Возвращает количество элементов в географическом или плоском векторе
propertiesВозвращает имена свойства географического или планарного вектора
rmfieldУдалите динамическое свойство из географического или планарного вектора
rmpropУдалите свойство из географического или планарного вектора
sizeВозвращенный размер географического или планарного вектора
struct Преобразуйте географический или планарный вектор в скалярную структуру
vertcatВертикально конкатенируйте географические или плоские векторы

Примеры

свернуть все

В этом примере показано, как создать geopoint вектор, задающий координаты широты и долготы, и отображающий его.

Создайте геоточке, содержащую одну точку, и отобразите ее

Создайте geopoint вектор, используя широту и долготу Парижа, Франции, и отобразить его. При использовании geopoint вектор, геометрия построенного объекта всегда 'point'.

lat = 48.8566;
lon = 2.3522;
p = geopoint(lat,lon)
p = 
 1×1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1×1 struct]
 Feature properties:
     Latitude: 48.8566
    Longitude: 2.3522

Отобразите точку на графике. Можно пройти geopoint вектор непосредственно к geoshow команда. geoshow можно считать значения широты и долготы из geopoint вектор, а также считывает тип геометрии.

geoshow(p)

Отображение точки на карте

Чтобы отобразить свою точку с большим контекстом, постройте график точки над картой с помощью функции отображения веб-карты wmmarker. Можно пройти geopoint вектор непосредственно к wmmarker команда.

wmmarker(p)

The wmmarker функция открывает веб-карту и отображает точку на карте.

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

data = importdata('european_capitals.txt');

Создайте geopoint вектор, содержащий данные о широте и долготе.

p = geopoint(data(:,1),data(:,2))
p = 
 13×1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1×1 struct]
 Feature properties:
     Latitude: [48.8566 51.5074 40.4168 41.9028 52.5200 52.3680 52.2297 47.4979 44.4268 50.0755 48.1486 48.2082 46.9480]
    Longitude: [2.3522 -0.1278 -3.7038 12.4964 13.4050 4.9036 21.0122 19.0402 26.1025 14.4378 17.1077 16.3738 7.4474]

Постройте график точек на карте, показывающей ландмасс Европы.

worldmap europe
geoshow('landareas.shp','FaceColor', [0.15 0.5 0.15])
geoshow(p)

Также можно построить график этих точек по карте с помощью geoplot функция. Этот пример включает параметр спецификации линии для задания маркера со знаком плюс и красного цвета. Пример также увеличивает ширину линии для лучшей видимости маркеров.

figure
geoplot(p.Latitude,p.Longitude,'+r','LineWidth',2)

Создайте геоточку, задав Latitude, Longitude, и Temperature, где Temperature является частью пары "имя-значение".

 point = geopoint(42, -72, 'Temperature', 89)
point = 

 1x1 geopoint vector with properties:

 Collection properties:
       Geometry: 'point'
       Metadata: [1x1 struct]
 Feature properties:
       Latitude: 42
      Longitude: -72
    Temperature: 89

Создайте геопозиционный объект с именами.

    p = geopoint([51.519 48.871], [-.13 2.4131],...
       'Name', {"London", "Paris"}) 
p = 

 2x1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1x1 struct]
 Feature properties:
     Latitude: [51.5190 48.8710]
    Longitude: [-0.1300 2.4131]
         Name: {'London' 'Paris'}

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

S = shaperead('worldcities', 'UseGeoCoords', true)
S = 

318x1 struct array with fields:

    Geometry
    Lon
    Lat
    Name

Создайте геоточку, задающий геоstruct.

p = geopoint(S)
p = 

 318x1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1x1 struct]
 Feature properties:
     Latitude: [1x318 double]
    Longitude: [1x318 double]
         Name: {1x318 cell}

Добавление Filename поле к Metadata структура. The Metadata свойство относится ко всем элементам массива вектору геопойты.

p.Metadata.Filename = 'worldcities.shp';
m = p.Metadata
ans = 

    Filename: 'worldcities.shp'

Создайте массив структур.

[structArray, A] = shaperead('worldcities', 'UseGeoCoords', true)
structArray = 

318x1 struct array with fields:
    Geometry
    Lon
    Lat

A = 

318x1 struct array with fields:
    Name

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

p = geopoint([structArray.Lat], [structArray.Lon], A)
p = 

 318x1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1x1 struct]
 Feature properties:
     Latitude: [1x318 double]
    Longitude: [1x318 double]
         Name: {1x318 cell}

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

structArray = shaperead('worldcities', 'UseGeoCoords', true);
p = geopoint();
p.Latitude  = [structArray.Lat];
p.Longitude = [structArray.Lon];
p.Name = structArray.Name;
p
p = 

 318x1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1x1 struct]
 Feature properties:
     Latitude: [1x318 double]
    Longitude: [1x318 double]
         Name: {1x318 cell}

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

Считывайте данные городов мира с помощью shaperead команда. shaperead возвращает массив структур.

structArray = shaperead('worldcities.shp', 'UseGeoCoords', true);

Создайте геоточку из массива структур. Отобразите последний из 318 элементов вектора.

p = geopoint(structArray);
p(end)
ans = 
 1x1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1x1 struct]
 Feature properties:
     Latitude: 34.8519
    Longitude: 113.8061
         Name: 'Zhengzhou'

Добавьте данные Падерборна в конец геоточки. Отображение последнего из существующих элементов и нового элемента.

lat = 51.715254;		
lon = 8.75213;
p = append(p, lat, lon, 'Name', 'Paderborn');
p(end-1:end)
ans = 
 2x1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1x1 struct]
 Feature properties:
     Latitude: [34.8519 51.7153]
    Longitude: [113.8061 8.7521]
         Name: {'Zhengzhou'  'Paderborn'}

Другой способ добавить точку в конец вектора - использовать линейную индексацию. Например, добавьте данные об Арлингтоне, штат Массачусетс, в конец вектора городов мира. Заметьте, как после оператора начального назначения добавить значение к вектору свойства широты, используя end+1 все другие векторы свойств автоматически расширяются на один элемент. Отображение последнего из существующих элементов и нового элемента.

p(end+1).Latitude = 42.417060
p = 
 320x1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1x1 struct]
 Feature properties:
     Latitude: [1x320 double]
    Longitude: [1x320 double]
         Name: {1x320 cell}

p(end).Longitude = -71.170200;
p(end).Name = 'Arlington';	
p(end-1:end)
ans = 
 2x1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1x1 struct]
 Feature properties:
     Latitude: [51.7153 42.4171]
    Longitude: [8.7521 -71.1702]
         Name: {'Paderborn'  'Arlington'}

Создайте геоточку, содержащий две функции, а затем добавьте два динамических свойства.

lat = [51.519 48.871];
lon = [-.13 2.4131];
p = geopoint(lat, lon);
 
p.Name = {'London', 'Paris'};   % Add character feature dynamic property
p.ID = [1 2] 			% Add numeric feature dynamic property
p = 

 2x1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1x1 struct]
 Feature properties:
     Latitude: [51.5190 48.8710]
    Longitude: [-0.1300 2.4131]
         Name: {'London' 'Paris'}
           ID: [1 2]

Добавьте координаты для третьей функции.

p(3).Latitude = 45.472;
p(3).Longitude = 9.184
p = 

 3x1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1x1 struct]
 Feature properties:
     Latitude: [51.5190 48.8710 45.4720]
    Longitude: [-0.1300 2.4131 9.1840]
         Name: {'London' 'Paris' ''}
           ID: [1 2 0]

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

Установите значения для ID динамическое свойство признака с большим количеством значений, чем содержится в Latitude или Longitude.

p.ID = 1:4
p = 

 4x1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1x1 struct]
 Feature properties:
     Latitude: [51.5190 48.8710 45.4720 0]
    Longitude: [-0.1300 2.4131 9.1840 0]
         Name: {'London' 'Paris' '' ''}
           ID: [1 2 3 4]

Обратите внимание, что все свойства функции развернуты в соответствии с размером.

Установите значения для динамического свойства идентификатора элемента с меньшим количеством значений, чем содержится в Latitude или Longitude свойства.

p.ID = 1:2
p = 

 4x1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1x1 struct]
 Feature properties:
     Latitude: [51.5190 48.8710 45.4720 0]
    Longitude: [-0.1300 2.4131 9.1840 0]
         Name: {'London' 'Paris' '' ''}
           ID: [1 2 0 0]

The ID значения свойств расширяются, чтобы соответствовать длине Latitude и Longitude значения свойств.

Установите значение любого свойства координат (Latitude или Longitude) с меньшим количеством значений.

 p.Latitude = [51.519 48.871]
p = 

 2x1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1x1 struct]
 Feature properties:
     Latitude: [51.5190 48.8710]
    Longitude: [-0.1300 2.4131]
         Name: {'London' 'Paris'}
           ID: [1 2]

Все свойства уменьшаются до размера.

Удалите ID свойство путем установки его значения [].

p.ID = []
p = 

 2x1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1x1 struct]
 Feature properties:
     Latitude: [51.5190 48.8710]
    Longitude: [-0.1300 2.4131]
         Name: {'London' 'Paris'}

Удалите все динамические свойства и установите объект в пустое положение путем установки значения свойства координат [].

p.Latitude = []
p = 

 0x1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1x1 struct]
 Feature properties:
     Latitude: []
    Longitude: []

Считайте данные из shapefile. Первоначально имена полей класса находятся в случайном порядке.

structArray = shaperead('tsunamis', 'UseGeoCoords', true); 
% Field names in random order
p = geopoint(structArray)
p = 

 162x1 geopoint vector with properties:

 Collection properties:
       Geometry: 'point'
       Metadata: [1x1 struct]
 Feature properties:
       Latitude: [1x162 double]
      Longitude: [1x162 double]
           Year: [1x162 double]
          Month: [1x162 double]
            Day: [1x162 double]
           Hour: [1x162 double]
         Minute: [1x162 double]
         Second: [1x162 double]
       Val_Code: [1x162 double]
       Validity: {1x162 cell}
     Cause_Code: [1x162 double]
          Cause: {1x162 cell}
         Eq_Mag: [1x162 double]
        Country: {1x162 cell}
       Location: {1x162 cell}
     Max_Height: [1x162 double]
       Iida_Mag: [1x162 double]
      Intensity: [1x162 double]
     Num_Deaths: [1x162 double]
    Desc_Deaths: [1x162 double

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

p = p(:, sort(fieldnames(p)))
p = 

 162x1 geopoint vector with properties:

 Collection properties:
       Geometry: 'point'
       Metadata: [1x1 struct]
 Feature properties:
       Latitude: [1x162 double]
      Longitude: [1x162 double]
          Cause: {1x162 cell}
     Cause_Code: [1x162 double]
        Country: {1x162 cell}
            Day: [1x162 double]
    Desc_Deaths: [1x162 double]
         Eq_Mag: [1x162 double]
           Hour: [1x162 double]
       Iida_Mag: [1x162 double]
      Intensity: [1x162 double]
       Location: {1x162 cell}
     Max_Height: [1x162 double]
         Minute: [1x162 double]
          Month: [1x162 double]
     Num_Deaths: [1x162 double]
         Second: [1x162 double]
       Val_Code: [1x162 double]
       Validity: {1x162 cell}
           Year: [1x162 double]

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

subp = p(20:40,{'Location','Country','Year'}) % get subset of data
subp = 

 21x1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1x1 struct]
 Feature properties:
     Latitude: [1x21 double]
    Longitude: [1x21 double]
     Location: {1x21 cell}
      Country: {1x21 cell}
         Year: [1x21 double]

Обратите внимание, что свойства координат Latitude и Longitude, и свойства Collection, сохраняются в этом подмножестве геопоточных векторов.

Чтобы задать значения свойств, используйте () оператор, или присвойте значения массивов соответствующим полям, или используйте точку '.' обозначение (object.property) для назначения новых значений свойств.

pts = geopoint();
pts.Latitude = [42 44 45];
pts.Longitude = [-72 -72.1 -71];
pts
pts = 

 3x1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1x1 struct]
 Feature properties:
     Latitude: [42 44 45]
    Longitude: [-72 -72.1000 -71]

Используйте () для присвоения значений полям.

pts(3).Latitude = 45.5;
pts
pts = 

 3x1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1x1 struct]
 Feature properties:
     Latitude: [42 44 45.5000]
    Longitude: [-72 -72.1000 -71]

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

pts.Name = {'point1', 'point2', 'point3'}
pts = 

 3x1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1x1 struct]
 Feature properties:
     Latitude: [42 44 45.5000]
    Longitude: [-72 -72.1000 -71]
         Name: {'point1' 'point2' 'point3'}

Получите значения свойств

pts.Name
ans = 

    'point1'    'point2'    'point3'

Удаление динамических свойств. Чтобы удалить или удалить динамические свойства, установите их на [] или установите Latitude или Longitude свойство к [].

pts.Temperature = 1:3
pts = 

 3x1 geopoint vector with properties:

 Collection properties:
       Geometry: 'point'
       Metadata: [1x1 struct]
 Feature properties:
       Latitude: [42 44 45.5000]
      Longitude: [-72 -72.1000 -71]
           Name: {'point1' 'point2' 'point3'}
    Temperature: [1 2 3]

Путем установки Temperature свойство к [], это динамическое свойство удалено.

pts.Temperature = []
pts = 

 3x1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1x1 struct]
 Feature properties:
     Latitude: [42 44 45.5000]
    Longitude: [-72 -72.1000 -71]
         Name: {'point1' 'point2' 'point3'}

Чтобы очистить все поля в geopoint вектор, установите Latitude или Longitude свойство к [].

pts.Latitude = []
pts = 

 0x1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1x1 struct]
 Feature properties:
     Latitude: []
    Longitude: []

Если вы обычно храните координаты широты и долготы в массиве N-by-2 или 2 by- M, можно назначить эти числовые значения геоточки вектора. Если координаты N-by-2, первый столбец присваивается Latitude свойство и второй столбец для Longitude свойство. Если координаты 2-by- M, то первая строка присваивается Latitude свойство и вторая строка к Longitude свойство.

load coastlines;
ltln = [coastlat coastlon];		% 9865x2 array
pts = geopoint;		        	% null constructor
pts(1:numel(coastlat)) = ltln;	% assign array
pts.Metadata.Name = 'coastline';
pts
pts = 
 9865x1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1x1 struct]
 Feature properties:
     Latitude: [1x9865 double]
    Longitude: [1x9865 double]

pts.Metadata
ans = struct with fields:
    Name: 'coastline'

Подробнее о

расширить все

Совет

  • Если Latitude, Longitude, или задается динамическое свойство с большим количеством значений, чем функции в геоточке, затем все другие свойства расширяются в размере, используя 0 для числовых значений и пустой символьный вектор ('') для значений камер. Примеры этого поведения см. в разделе «Манипулирование вектором Геоточки».

  • Если динамическое свойство задано с меньшим количеством значений, чем количество функций, то это динамическое свойство расширяется, чтобы соответствовать размеру других свойств путем вставки 0, если значение числовое, или пустого символьного вектора (''), если значение является массивом ячеек.

  • Если на Latitude или Longitude свойство геоточки задается с меньшим количеством значений, чем содержится в объекте, затем все остальные свойства уменьшаются в размере.

  • Если либо Latitude или Longitude устанавливается значение [], затем оба свойства координат устанавливаются равным [], и все динамические свойства удаляются.

  • Если для динамического свойства задано значение [], он удаляется из объекта.

См. также

Функции

Объекты

Введенный в R2012a