exponenta event banner

геопункт

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

Описание

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

Создание

Описание

пример

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, см. раздел Свойства коллекции и Свойства элемента.

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

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

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

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

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

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

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

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

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

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

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 является частью пары Имя (Name) - Значение (Value).

 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'}

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

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

318x1 struct array with fields:

    Geometry
    Lon
    Lat
    Name

Создайте вектор географической точки, задающий геострукт.

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 структура. 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'}

Другим способом добавления точки в конце вектора является использование линейной индексации. Например, добавьте данные об Арлингтоне, штат Массачусетс, к вектору конца мировых городов. Обратите внимание, как после того, как оператор начального назначения добавляет значение к вектору свойств Latitude, используя 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]

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

Задайте значение любого свойства coordinate (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: []

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

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и свойства коллекции сохраняются в этом подмножестве векторов геопостановок.

Чтобы задать значения свойств, используйте () оператор, или назначить значения массива соответствующим полям, или использовать точку '.' нотация (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-по-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