exponenta event banner

shaperead

Считывание векторных элементов и атрибутов из файла формы

Описание

пример

S = shaperead(filename) считывает файл формы, filenameи возвращает N-by-1 массив структуры географических данных в спроецированных координатах карты (mapstruct). Структура географических данных объединяет информацию о геометрических и характерных атрибутах. shaperead поддерживает обычные типы форм 2-D: 'Point', 'Multipoint', 'PolyLine', и 'Polygon'.

пример

S = shaperead(filename,Name,Value) возвращает подмножество содержимого файла формы в S, как определено аргументами пары имя-значение. Использовать RecordNumbers, BoundingBox, и Selector для выбора элементов для чтения. При использовании более одного из этих параметров в одном вызове происходит пересечение записей, соответствующих отдельным спецификациям. Например, если указать значения для обоих RecordNumbers и BoundingBox, импортируются только те элементы с номерами записей, которые отображаются в списке и которые также имеют ограничивающие рамки, пересекающие указанную ограничивающую рамку.

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

[S,A] = shaperead(___) возвращает N-by-1 массив структуры географических данных, S, содержащий геометрическую информацию и массив структуры атрибута параллельного N-by-1, A, содержащий информацию об атрибутах элемента.

Примеры

свернуть все

Прочитать весь файл формы под названием concord_hydro_line.shp, включая атрибуты в concord_hydro_line.dbf. shaperead функция возвращает mapstruct с координатными векторами x и y.

S = shaperead('concord_hydro_line.shp')
S=237×1 struct array with fields:
    Geometry
    BoundingBox
    X
    Y
    LENGTH

Укажите ограничительную рамку для ограничения возвращаемых данных shaperead . Кроме того, укажите имена атрибутов, которые требуется прочитать.

bbox = [2.08 9.11; 2.09 9.12] * 1e5;
S = shaperead('concord_roads','BoundingBox',bbox,...
              'Attributes',{'STREETNAME','CLASS'})
S=87×1 struct array with fields:
    Geometry
    BoundingBox
    X
    Y
    STREETNAME
    CLASS

Считывание дорожных данных только для участков дорог класса 4 и выше длиной не менее 200 метров. Обратите внимание на использование анонимной функции в селекторе.

S = shaperead('concord_roads.shp','Selector',...
           {@(v1,v2) (v1 >= 4) && (v2 >= 200),'CLASS','LENGTH'})
S=115×1 struct array with fields:
    Geometry
    BoundingBox
    X
    Y
    STREETNAME
    RT_NUMBER
    CLASS
    ADMIN_TYPE
    LENGTH

Определите количество дорог каждого класса.

n = histcounts([S.CLASS],'BinLimits',[1 7],'BinMethod','integer')
n = 1×7

     0     0     0     7    93    15     0

Отображение гистограммы количества дорог, приходящихся на каждую категорию длины.

figure
histogram([S.LENGTH])

Figure contains an axes. The axes contains an object of type histogram.

Укажите, что shapefile использует координаты широты и долготы, используя 'UseGeoCoords' пара имя-значение.

Например, вернуть информацию о файле формы в виде структуры. Проверьте, использует ли файл формы координаты широты и долготы, запросив CoordinateReferenceSystem поле. Shapefile использует координаты широты и долготы, если поле содержит geocrs объект.

info = shapeinfo('landareas.shp');
crs = info.CoordinateReferenceSystem
crs = 
  geocrs with properties:

             Name: "WGS 84"
            Datum: "World Geodetic System 1984"
         Spheroid: [1x1 referenceEllipsoid]
    PrimeMeridian: 0
        AngleUnit: "degree"

Прочтите файл формы с помощью shaperead функция. Укажите, что в файле формы используются координаты широты и долготы с помощью 'UseGeoCoords' пара имя-значение.

S = shaperead('landareas.shp','UseGeoCoords',true)
S=537×1 struct array with fields:
    Geometry
    BoundingBox
    Lon
    Lat
    Name

Обратите внимание, что shaperead функция возвращает структуру географических данных с полями широты и долготы (a geostruct).

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

свернуть все

Имя файла, указанное как строковый скалярный или символьный вектор. filename ссылается на базовое имя или полное имя одного из файлов компонента в файле формы. Если основной файл (с расширением.shp) отсутствует, shaperead выдает ошибку. Если отсутствует любой из других файлов, shaperead выдает предупреждение.

Убедитесь, что компьютер настроен на ту же схему кодирования символов, что и импортируемые данные. Например, если вы пытаетесь импортировать файл формы, содержащий японские символы, настройте компьютер для поддержки Shift-JIS схема кодирования.

Аргументы пары «имя-значение»

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

Пример: 'Attributes',{'STREETNAME','LENGTH'}

Числа записей, указанные как пара, разделенная запятыми, состоящая из 'RecordNumbers' и вектор целых чисел. Использовать параметр RecordNumbers для импорта только элементов с перечисленными номерами записей.

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

Ограничительная рамка, заданная как разделенная запятыми пара, состоящая из 'BoundingBox' и матрицу 2 на 2. BoundingBox имеет форму [xmin,ymin;xmax,ymax], для координат карты, или [lonmin,latmin;lonmax,latmax] для географических координат. Использовать параметр BoundingBox импорт только тех элементов, ограничивающие рамки которых пересекаются с указанным полем. shaperead функция не отсекает элементы, частично пересекающие рамку.

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

Селектор, указанный как разделенная запятыми пара, состоящая из 'Selector' и массив ячеек, содержащий дескриптор функции и одно или более имен атрибутов. Функция должна возвращать logical скаляр. Используйте Selector параметр для импорта только тех элементов, для которых функция при применении к соответствующим значениям атрибутов возвращает true. Дополнительные сведения об дескрипторах функций см. в разделе Создание дескриптора функции.

Имена атрибутов, указанные как пара, разделенная запятыми, состоящая из 'Attributes' и массив ячеек имен атрибутов. Использовать параметр Attributes для включения перечисленных атрибутов и задания порядка атрибутов в массиве структуры. Использовать {} для пропуска всех атрибутов.

Флаг для возврата содержимого файла формы в геострукте, указанном как разделенная запятыми пара, состоящая из 'UseGeoCoords' и false или true.

Когда UseGeoCoords имеет значение trueсодержимое файла формы возвращают в геострукт. Используйте этот параметр, если известно, что координаты x и y в файле формы фактически представляют данные долготы и широты.

Чтобы определить, использует ли файл формы данные широты и долготы, сначала используйте shapeinfo функция для возврата информации о файле формы в виде структуры. Затем выполните запрос CoordinateReferenceSystem поле структуры. Файл формы использует географические координаты, если CoordinateReferenceSystem является geocrs объект.

Этот код показывает, как запрашивать CoordinateReferenceSystem поле структуры, связанной с файлом формы landareas.shp.

info = shapeinfo('landareas.shp');
info.CoordinateReferenceSystem

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

свернуть все

Векторные географические особенности, возвращаемые в виде массива структуры географических данных карты N-by-1. Если UseGeoCoords является true, S является mapstruct и содержит элемент для каждого ненулевого пространственного элемента в файле формы.

Сведения об атрибуте элемента, возвращаемые в виде массива структуры атрибута N-by-1, соответствующего массиву S.

Поля в массивах структуры вывода S и A зависит от типа фигуры, содержащейся в файле, а также от имен и типов атрибутов, включенных в файл. shaperead функция поддерживает следующие четыре типа атрибутов: numeric и floating (хранится как тип double в MATLAB ®) иcharacter и date (хранится как char array).

Совет

Для получения информации о системе координат (CRS), связанной с файлом формы, используйте shapeinfo функция.

Представлен до R2006a