struct2geotable

Преобразуйте массив структур в геопространственную таблицу

Описание

пример

GT = struct2geotable(S) преобразует массив структур S к геопространственной таблице GT. Функция создает Shape переменная GT при помощи долготы широты или x-y координирует в S. Каждое поле S переменная GT.

GT = struct2geotable(S,coordinateSystemType,fnames) создает Shape переменная GT при помощи системы координат вводят coordinateSystemType и поля fnames массива структур.

GT = struct2geotable(S,Name=Value) задает опции с помощью аргументов name-value. Например, укажите, что координаты представляют точки, линии или многоугольники при помощи GeometryType аргумент значения имени.

Примеры

свернуть все

Считайте файл форм, содержащий гидрографические данные для Согласия, MA, как массив структур. Импортируйте только многоугольники с областью, больше, чем 100 квадратных километров. x-и y-координаты находятся в X и Y поля структуры.

areafilterfcn = @(areafilter) (areafilter > 100000);
S = shaperead("concord_hydro_area.shp", ...
    Selector={areafilterfcn,'AREA'});

Получите систему координат для данных.

info = shapeinfo("concord_hydro_area.shp");
crs = info.CoordinateReferenceSystem;

Преобразуйте массив структур в геопространственную таблицу. struct2geotable функция обнаруживает X и Y поля и используют их, чтобы создать Shape переменная. Задайте систему координат для Shape переменная.

GT = struct2geotable(S, ...
    CoordinateReferenceSystem=crs);

Просмотрите объект фигуры во второй строке таблицы. Свойства объекта фигуры содержат информацию, такую как количество отверстий.

GT.Shape(2)
ans = 
  mappolyshape with properties:

              NumRegions: 1
                NumHoles: 3
                Geometry: "polygon"
    CoordinateSystemType: "planar"
            ProjectedCRS: [1x1 projcrs]

Отобразите многоугольники.

mapshow(GT,FaceColor="c")

Figure contains an axes object. The axes object contains 5 objects of type patch.

Создайте демонстрационный массив структур, содержащий районы городов. Lats поле содержит широты, Lons поле содержит долготы и Names поле содержит имена.

lats = {35.7082,-22.8842,51.5074,39.9042,37.9838};
lons = {139.6401,-43.3882,-0.1278,116.4074,23.7275};
n = {'Tokyo','Rio de Janeiro','London','Beijing','Athens'};
S = cell2struct([lats;lons;n],{'Lats','Lons','Names'},1)
S=5×1 struct array with fields:
    Lats
    Lons
    Names

Преобразуйте массив структур в геопространственную таблицу. struct2geotable функция автоматически не обнаруживает имена полей Lats и Lons. Задайте тип системы координат как "geographic" и имена полей, содержащие координаты.

GT = struct2geotable(S,"geographic",["Lats" "Lons"])
GT=5×4 table
             Shape              Lats       Lons            Names       
    _______________________    _______    _______    __________________

    (35.7082°N, 139.6401°E)     35.708     139.64    {'Tokyo'         }
    (22.8842°S,  43.3882°W)    -22.884    -43.388    {'Rio de Janeiro'}
    (51.5074°N,   0.1278°W)     51.507    -0.1278    {'London'        }
    (39.9042°N, 116.4074°E)     39.904     116.41    {'Beijing'       }
    (37.9838°N,  23.7275°E)     37.984     23.727    {'Athens'        }

Просмотрите Shape переменная геопространственной таблицы.

GT.Shape
ans = 
  5x1 geopointshape array with properties:

               NumPoints: [5x1 double]
                Latitude: [5x1 double]
               Longitude: [5x1 double]
                Geometry: "point"
    CoordinateSystemType: "geographic"
           GeographicCRS: []

Входные параметры

свернуть все

Введите массив структур.

struct2geotable функция обнаруживает координаты, когда поля массива структур имеют эти имена, игнорируя регистр.

  • Координаты широты — Latitude или Lat

  • Координаты долготы — Longitudelon , или Long

  • x - координаты — X

  • y - координаты — Y

Если вы задаете входной массив структур с полем под названием Shape, затем struct2geotable функционируйте перезаписывает его.

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

Тип системы координат в виде одной из этих опций:

  • "planar" — Координаты находятся в плоской системе координат.

  • "geographic" — Координаты находятся в географической системе координат.

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

Имена полей массива структур раньше создавали Shape переменная геопространственной таблицы в виде двухэлементного вектора строки, такого как ["Lats" "Lons"]. Поля содержат долготу широты или x-y координаты.

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

Аргументы name-value

Задайте дополнительные пары аргументов как Name1=Value1,...,NameN=ValueN, где Name имя аргумента и Value соответствующее значение. Аргументы name-value должны появиться после других аргументов, но порядок пар не имеет значения.

Пример: struct2geotable(S,CoordinateReferenceSystem=geocrs(4326)) задает географический CRS как Мировую Геодезическую Систему 1 984, который имеет код EPSG 4326.

Система координат (CRS), чтобы использовать при создании Shape переменная геопространственной таблицы в виде projcrs или geocrs объект.

Задайте projcrs возразите когда coordinateSystemType "planar" и задайте geocrs возразите когда coordinateSystemType "geographic".

Тип геометрии координатных полей в виде одной из этих опций:

  • "point" — Координатные поля представляют точки.

  • "line" — Координатные поля представляют линии.

  • "polygon" — Координатные поля представляют многоугольники.

Когда вы указываете, что геометрия вводит как "polygon", struct2geotable функция принимает, что координаты задают многоугольники с допустимой топологией. Многоугольник имеет допустимую топологию когда:

  • Внутренние части области направо, когда вы прослеживаете контуры от вершины до вершины.

  • Контуры не имеют никаких самопересечений.

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

struct2geotable функция обнаруживает тип геометрии, когда входной массив структур имеет Geometry поле со значением 'Point', 'Multipoint'строка, или 'Polygon'.

Выходные аргументы

свернуть все

Выведите геопространственную таблицу. Геопространственной таблицей является table или timetable объект с Shape переменная, которая содержит geopointshape, geolineshape, geopolyshape, mappointshape, maplineshape, или mappolyshape объекты.

Для входного массива структур с элементами M и полями N, размером GT M (N + 1).

Советы

  • Когда входная структура имеет поля долготы широты и x-y поля, struct2geotable функция составляет геопространственную таблицу с помощью полей долготы широты. Составьте геопространственную таблицу с помощью x-y поля путем определения coordinateSystemType и fnames аргументы.

  • Когда вы знаете, что файл форм содержит координаты широты и долготы, и считайте файл форм с помощью shaperead функция, необходимо задать UseGeoCoords аргумент как true. В противном случае массив структур содержит X и Y поля вместо Lat и Lon поля . В результате struct2geotable функция создает Shape переменная геопространственной таблицы с помощью плоских объектов фигуры, таких как mappointshape вместо географических объектов фигуры, таких как geopointshape.

Введенный в R2021b