shaperead

Чтение векторных функций и атрибутов из shapefile

Описание

пример

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

пример

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

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

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

Примеры

свернуть все

Считайте весь файл shapefile под названием concord_hydro_line.shp, включая атрибуты в concord_hydro_line.dbf. The 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' Пара "имя-значение".

Например, возвращает информацию о файле shapefile как о структуре. Проверьте, что файл shapefile использует координаты широты и долготы, запросив 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"

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

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

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

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

свернуть все

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

Информация атрибута функций, возвращенная как N-на-1 массив структур атрибутов, соответствующий массиву S.

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

Совет

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

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