exponenta event banner

mappoint

Вектор плоской точки

Описание

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

Создание

Описание

пример

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

p = 

 0x1 mappoint vector with properties:

 Collection properties:
    Geometry: 'point'
    Metadata: [1x1 struct]
 Feature properties:
           X: []
           Y: []

пример

p = mappoint(x,y) создает новый вектор сопоставления и назначает X и Y свойства для ввода числового массива, x и y.

пример

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

пример

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

пример

p = mappoint(x,y,structArray) создает новый mappoint вектор, задает X и Y свойства, равные числовым массивам x и yи устанавливает динамические свойства из значений поля structArray.

Свойства

развернуть все

Каждый элемент в векторе сопоставления рассматривается как элемент. Дополнительные сведения о типах свойств в mappoint, см. раздел Свойства коллекции и Свойства элемента.

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

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

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

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

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

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

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

Плоская координата x, заданная как числовая строка или вектор столбца.

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

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

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

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

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

Примеры

свернуть все

Динамически устанавливать X и Y значения свойств и динамическое добавление свойства «Вершина» Z.

p = mappoint();
p.X = 1:3;
p.Y = 1:3;
p.Z = [10 10 10]
p = 

 3x1 mappoint vector with properties:

 Collection properties:
    Geometry: 'point'
    Metadata: [1x1 struct]
 Feature properties:
           X: [1 2 3]
           Y: [1 2 3]
           Z: [10 10 10]

Определить x и y координаты. Используйте их для создания сопоставления.

x = [40 50 60];
y = [10, 11, 12];
p = mappoint(x, y)
p = 

 3x1 mappoint vector with properties:

 Collection properties:
    Geometry: 'point'
    Metadata: [1x1 struct]
 Feature properties:
           X: [40 50 60]
           Y: [10 11 12]
x = 41:43;
y = 1:3;
temperature = 61:63;
p = mappoint(x, y, 'Temperature', temperature)
p = 

 3x1 mappoint vector with properties:

 Collection properties:
       Geometry: 'point'
       Metadata: [1x1 struct]
 Feature properties:
              X: [41 42 43]
              Y: [1 2 3]
    Temperature: [61 62 63]

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

structArray = shaperead('boston_placenames')
p = mappoint(structArray)
structArray = 

13x1 struct array with fields:
    Geometry
    X
    Y
    NAME
    FEATURE
    COORD


p = 

 13x1 mappoint vector with properties:

 Collection properties:
    Geometry: 'point'
    Metadata: [1x1 struct]
 Feature properties:
           X: [1x13 double]
           Y: [1x13 double]
        NAME: {1x13 cell}
     FEATURE: {1x13 cell}
       COORD: {1x13 cell
[structArray, A] = shaperead('boston_placenames');
x = [structArray.X];
y = [structArray.Y];
p = mappoint(x, y, A)
p = 

 13x1 mappoint vector with properties:

 Collection properties:
    Geometry: 'point'
    Metadata: [1x1 struct]
 Feature properties:
           X: [1x13 double]
           Y: [1x13 double]
        NAME: {1x13 cell}
     FEATURE: {1x13 cell}
       COORD: {1x13 cell}

В этом примере показано, как добавить один элемент в пустой вектор сопоставления после построения.

x = 1;
y = 1;
p = mappoint(x, y)
p = 

 1x1 mappoint vector with properties:

 Collection properties:
    Geometry: 'point'
    Metadata: [1x1 struct]
 Feature properties:
           X: 1
           Y: 1

Добавьте динамическое свойство Feature со значением символьного вектора.

p.FeatureName = 'My Feature'
p = 

 1x1 mappoint vector with properties:

 Collection properties:
       Geometry: 'point'
       Metadata: [1x1 struct]
 Feature properties:
              X: 1
              Y: 1
    FeatureName: 'My Feature'

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

Создайте вектор сопоставления.

x = [1 2];
y = [10 10];
p = mappoint(x,y)
p = 

 2x1 mappoint vector with properties:

 Collection properties:
    Geometry: 'point'
    Metadata: [1x1 struct]
 Feature properties:
           X: [1 2]
           Y: [10 10]

Добавьте динамическое свойство «Элемент».

p.FeatureName = {'Feature 1','Feature 2'}
p = 

 2x1 mappoint vector with properties:

 Collection properties:
       Geometry: 'point'
       Metadata: [1x1 struct]
 Feature properties:
              X: [1 2]
              Y: [10 10]
    FeatureName: {'Feature 1' 'Feature 2'}

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

p.ID = [1 2]
p = 

 2x1 mappoint vector with properties:

 Collection properties:
       Geometry: 'point'
       Metadata: [1x1 struct]
 Feature properties:
              X: [1 2]
              Y: [10 10]
    FeatureName: {'Feature 1' 'Feature 2'}
             ID: [1 2]

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

p(3).X = 3
p(3).Y = 10
p = 

 3x1 mappoint vector with properties:

 Collection properties:
       Geometry: 'point'
       Metadata: [1x1 struct]
 Feature properties:
              X: [1 2 3]
              Y: [10 10 10]
    FeatureName: {'Feature 1' 'Feature 2' ''}
             ID: [1 2 0]

Установка значений для ID динамическое свойство элемента с большим количеством значений, чем содержится в X или Y. Все свойства расширяются в соответствии с размером.

p.ID = 1:4
p = 

 4x1 mappoint vector with properties:

 Collection properties:
       Geometry: 'point'
       Metadata: [1x1 struct]
 Feature properties:
              X: [1 2 3 0]
              Y: [10 10 10 0]
    FeatureName: {'Feature 1' 'Feature 2' '' ''}
             ID: [1 2 3 4]

Установка значений для ID динамическое свойство Feature с меньшим количеством значений, чем содержится в X или Y. ID значения свойств расширяются в соответствии с длиной X и Y.

p.ID = 1:2
p = 

 4x1 mappoint vector with properties:

 Collection properties:
       Geometry: 'point'
       Metadata: [1x1 struct]
 Feature properties:
              X: [1 2 3 0]
              Y: [10 10 10 0]
    FeatureName: {'Feature 1' 'Feature 2' '' ''}
             ID: [1 2 0 0]

Задайте значения любого свойства coordinate (X или Y) с меньшим количеством значений. Все свойства уменьшаются по размеру в соответствии с новой длиной.

p.X = 1:2
p = 

 2x1 mappoint vector with properties:

 Collection properties:
       Geometry: 'point'
       Metadata: [1x1 struct]
 Feature properties:
              X: [1 2]
              Y: [10 10]
    FeatureName: {'Feature 1' 'Feature 2'}
             ID: [1 2]

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

p.FeatureName = []
p = 

 2x1 mappoint vector with properties:

 Collection properties:
    Geometry: 'point'
    Metadata: [1x1 struct]
 Feature properties:
           X: [1 2]
           Y: [10 10]
          ID: [1 2]

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

p.X = []
 Collection properties:
    Geometry: 'point'
    Metadata: [1x1 struct]
 Feature properties:
           X: []
           Y: []

В этом примере показано, как включить несколько динамических элементов во время построения объекта.

point = mappoint([42 44],[10, 11],'Temperature',[63 65], ...
   'TemperatureUnits','Fahrenheit')
point = 

 2x1 mappoint vector with properties:

 Collection properties:
       Geometry: 'point'
       Metadata: [1x1 struct]
 Feature properties:
              X: [42 44]
              Y: [10 11]
    Temperature: [63 65]
TemperatureUnits: 'Fahrenheit'

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

Загрузить данные из seamount MAT-файл и создайте вектор сопоставления для хранения координат.

seamount = load('seamount');
p = mappoint(seamount.x, seamount.y, 'Z', seamount.z);

Создайте список уровней, который будет использоваться для складирования z и создайте список цветовых значений для каждого уровня.

levels = [unique(floor(seamount.z/1000)) * 1000; 0];
colors = {'red','green','blue','cyan','black'};

Добавить MinLevel и MaxLevel свойство feature для указания самого низкого и самого высокого уровня привязки. Добавьте свойство динамического элемента, чтобы указать координату Z. Добавьте динамическое свойство Feature, чтобы указать привязанное значение уровня и значение цвета для данного уровня. Включить метаданные из MAT-файла.

for k = 1:length(levels) - 1
   index = levels(k) <= p.Z & p.Z < levels(k+1);
   p(index).MinLevel = levels(k);
   p(index).MaxLevel = levels(k+1) - 1;
   p(index).Color = colors{k};
end

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

p.Metadata.Caption = seamount.caption;
p.Metadata
ans = 

    Caption: [1x229 char]

Отображение данных точек в виде 2-D графика.

figure
minLevels = unique(p.MinLevel);
for k=1:length(minLevels)
  index = p.MinLevel == minLevels(k);
  mapshow(p(index).X, p(index).Y, ...
   'MarkerEdgeColor', p(find(index,1)).Color, ...
   'Marker', 'o', ...
   'DisplayType', 'point')
end
legend(num2str(minLevels'))

Отображение данных точек в виде графика рассеяния 3-D.

figure
scatter3(p.X, p.Y, p.Z)

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

structArray = shaperead('boston_placenames');
p = mappoint();
p.X = [structArray.X];
p.Y = [structArray.Y];
p.Name = {structArray.NAME}
p = 

 13x1 mappoint vector with properties:

 Collection properties:
    Geometry: 'point'
    Metadata: [1x1 struct]
 Feature properties:
           X: [1x13 double]
           Y: [1x13 double]
        Name: {1x13 cell}

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

filename = 'boston_placenames.shp';
structArray = shaperead(filename);
p = mappoint(structArray)
p = 

 13x1 mappoint vector with properties:

 Collection properties:
    Geometry: 'point'
    Metadata: [1x1 struct]
 Feature properties:
           X: [1x13 double]
           Y: [1x13 double]
        NAME: {1x13 cell}
     FEATURE: {1x13 cell}
       COORD: {1x13 cell}

Добавить Filename к полю Metadata структура. Отображение первых пяти точек и Metadata структура.

p.Metadata.Filename = filename;
p(1:5)
p.Metadata
ans = 

 5x1 mappoint vector with properties:

 Collection properties:
    Geometry: 'point'
    Metadata: [1x1 struct]
 Feature properties:
           X: [2.3403e+05 2.3357e+05 2.3574e+05 2.3627e+05 2.3574e+05]
           Y: [900038 9.0019e+05 9.0113e+05 9.0097e+05 9.0036e+05]
        NAME: {1x5 cell}
     FEATURE: {'PPL-SUBDVSN' ' MARSH' ' HILL' ' PPL' ' PENINSULA'}
       COORD: {1x5 cell}

ans = 

    Filename: 'boston_placenames.shp'

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

Присоединить Падерборн, Германия к вектору мировых городов.

p = mappoint(shaperead('worldcities.shp'));
x = 51.715254;
y = 8.75213;
p = append(p, x, y, 'Name', 'Paderborn');
p(end)
ans = 

 1x1 mappoint vector with properties:

 Collection properties:
    Geometry: 'point'
    Metadata: [1x1 struct]
 Feature properties:
           X: 51.7153
           Y: 8.7521
        Name: 'Paderborn'

Можно также добавить точку в конец вектора сопоставления с помощью линейного индексирования. Добавьте Арлингтон, Вирджиния в конец вектора.

p(end+1).X = 38.880043;
p(end).Y = -77.196676;
p(end).Name = 'Arlington';
p(end-1:end)
ans = 

 2x1 mappoint vector with properties:

 Collection properties:
    Geometry: 'point'
    Metadata: [1x1 struct]
 Feature properties:
           X: [51.7153 38.8800]
           Y: [8.7521 -77.1967]
        Name: {'Paderborn' 'Arlington'}

% Plot the points
figure
mapshow(p.X, p.Y, 'DisplayType', 'point')

В этом примере показано, как можно сортировать элементы, используя поведение индексирования класса mappoint.

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

p = mappoint(shaperead('tsunamis'));
p = p(:, sort(fieldnames(p)))
p = 

 162x1 mappoint vector with properties:

 Collection properties:
       Geometry: 'point'
       Metadata: [1x1 struct]
 Feature properties:
              X: [1x162 double]
              Y: [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]

Измените вектор сопоставления, чтобы он содержал только динамические свойства. 'Year', 'Month', 'Day', 'Hour', 'Minute'.

p = p(:, {'Year', 'Month', 'Day', 'Hour', 'Minute'})
p = 

 162x1 mappoint vector with properties:

 Collection properties:
    Geometry: 'point'
    Metadata: [1x1 struct]
 Feature properties:
           X: [1x162 double]
           Y: [1x162 double]
        Year: [1x162 double]
       Month: [1x162 double]
         Day: [1x162 double]
        Hour: [1x162 double]
      Minute: [1x162 double]

Отображение первых пяти элементов.

p(1:5)
ans = 

 5x1 mappoint vector with properties:

 Collection properties:
    Geometry: 'point'
    Metadata: [1x1 struct]
 Feature properties:
           X: [128.3000 -156 157.9500 143.8500 -155]
           Y: [-3.8000 19.5000 -9.0200 42.1500 19.1000]
        Year: [1950 1951 1951 1952 1952]
       Month: [10 8 12 3 3]
         Day: [8 21 22 4 17]
        Hour: [3 10 NaN 1 3]
      Minute: [23 57 NaN 22 58]

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

Если значения координат x и y обычно хранятся в массиве n-by-2 или 2-by-m, этим числовым значениям можно назначить объект сопоставления. Если значения хранятся в массиве n-by-2, то X значения свойств присваиваются первому столбцу и Y значения свойств назначаются второму столбцу.

x = 1:10;
y = 21:30;
pts = [x' y'];
p = mappoint;
p(1:length(pts)) = pts
p = 

 10x1 mappoint vector with properties:

 Collection properties:
    Geometry: 'point'
    Metadata: [1x1 struct]
 Feature properties:
           X: [1 2 3 4 5 6 7 8 9 10]
           Y: [21 22 23 24 25 26 27 28 29 30]

Если значения хранятся в массиве 2 на m, то X значения свойств назначаются первой строке и Y значения свойств назначаются второй строке.

pts = [x; y];
p(1:length(pts)) = pts
p = 

 10x1 mappoint vector with properties:

 Collection properties:
    Geometry: 'point'
    Metadata: [1x1 struct]
 Feature properties:
           X: [1 2 3 4 5 6 7 8 9 10]
           Y: [21 22 23 24 25 26 27 28 29 30]

Обратите внимание, что в обоих случаях X и Y хранятся в виде векторов строк.

Подробнее

развернуть все

Совет

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

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

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

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

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

  • Вектор сопоставления может индексироваться как любой вектор MATLAB ®. Для получения определенного элемента можно получить доступ к любому элементу вектора. Следующие примеры демонстрируют такое поведение:

    Добавление точки путем индексирования

    Сортировка динамических свойств

См. также

Функции

Объекты

Представлен в R2012a