геоточка

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

Описание

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

Создание

Синтаксис

p = geopoint()
p = geopoint(latitude,longitude)
p = geopoint(latitude,longitude,Name,Value)
p = geopoint(structArray)
p = geopoint(latitude,longitude,structArray)

Описание

пример

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, смотрите Collection Properties и Feature Properties.

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

Тип геометрии, заданной как '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Вертикально конкатенируйте географические или плоские векторы

Примеры

свернуть все

Этот пример показывает, как создать вектор геоточки определение координаты долготы и широта. Пример затем добавляет свойство в объект динамически.

Создайте вектор геоточки из значений широты и долготы.

lat = [51.519 42.356];
lon = [-.13 -71.101];
p = geopoint(lat,lon)
p = 
 2x1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1x1 struct]
 Feature properties:
     Latitude: [51.5190 42.3560]
    Longitude: [-0.1300 -71.1010]

Добавьте свойство в объект динамически.

p.Name = {'London', 'Boston'}
p = 
 2x1 geopoint vector with properties:

 Collection properties:
     Geometry: 'point'
     Metadata: [1x1 struct]
 Feature properties:
     Latitude: [51.5190 42.3560]
    Longitude: [-0.1300 -71.1010]
         Name: {'London'  'Boston'}

Загрузите данные о береговой линии из MAT-файла.

load coastlines

Создайте вектор геоточки из файла широты и долготы береговой линии.

p = geopoint(coastlat, coastlon);

Отобразите точки на мировой карте.

figure
worldmap world
geoshow(p.Latitude, p.Longitude)

Создайте вектор геоточки, задав 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. Свойство 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]

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

Установите значения для динамического свойства функции ID с меньшим количеством значений, чем содержавшийся в свойствах 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 расширяются, чтобы совпадать с длиной значений свойств Longitude и Latitude.

Установите значение или координатного свойства (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 и свойства 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-2 или 2-by-M массив, можно присвоить эти числовые значения вектору геоточки. Если координаты являются N-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