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

Примеры

свернуть все

В этом примере показано, как создать 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 часть Пары "имя-значение".

 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 значения свойств расширяются, чтобы совпадать с длиной 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: []

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

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