Формат shp что это
СОДЕРЖАНИЕ
Обзор
Заголовок основного файла имеет фиксированную длину 100 байт и содержит 17 полей; девять 4-байтовых (32-битных целых числа со знаком или int32) целочисленных полей, за которыми следуют восемь 8-байтовых ( двойных ) подписанных полей с плавающей запятой:
Байты | Тип | Порядок байтов | использование |
---|---|---|---|
0–3 | int32 | большой | Код файла (всегда шестнадцатеричное значение 0x0000270a ) |
4–23 | int32 | большой | Не используется; пять uint32 |
24–27 | int32 | большой | Длина файла (16-битными словами, включая заголовок) |
28–31 | int32 | маленький | Версия |
32–35 | int32 | маленький | Тип формы (см. Ссылку ниже) |
36–67 | двойной | маленький | Минимальный ограничивающий прямоугольник (MBR) всех фигур, содержащихся в наборе данных; четыре двойных в следующем порядке: мин. X, мин. Y, макс. X, макс. Y |
68–83 | двойной | маленький | Диапазон Z; два дубля в следующем порядке: min Z, max Z |
84–99 | двойной | маленький | Диапазон M; два дубля в следующем порядке: мин М, макс М |
Затем файл содержит любое количество записей переменной длины. Каждой записи предшествует заголовок записи размером 8 байтов:
Байты | Тип | Порядок байтов | использование |
---|---|---|---|
0–3 | int32 | большой | Номер записи (от 1) |
4–7 | int32 | большой | Длина записи (в 16-битных словах) |
За заголовком записи следует фактическая запись:
Байты | Тип | Порядок байтов | использование |
---|---|---|---|
0–3 | int32 | маленький | Тип формы (см. Ссылку ниже) |
4– | — | — | Контент формы |
Содержимое записи переменной длины зависит от типа фигуры, который должен быть либо типом фигуры, указанным в заголовке файла, либо пустым. Ниже перечислены возможные типы фигур:
Ценить | Тип формы | Поля | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Нулевая форма | Никто | ||||||||||||
1 | Точка | X, Y | ||||||||||||
3 | Ломаная линия | MBR, Количество деталей, Количество точек, Детали, Пункты | ||||||||||||
5 | Многоугольник | MBR, Количество деталей, Количество точек, Детали, Пункты | ||||||||||||
8 | MultiPoint | MBR, Количество точек, Баллы | ||||||||||||
11 | PointZ | X, Y, Z | ||||||||||||
13 | PolylineZ | Обязательно : MBR, количество частей, количество точек, частей, точек, диапазон Z, массив Z Дополнительно : диапазон M, массив M | ||||||||||||
15 | PolygonZ | Обязательно : MBR, количество частей, количество точек, частей, точек, диапазон Z, массив Z Дополнительно : диапазон M, массив M | ||||||||||||
18 | MultiPointZ | Обязательно : MBR, количество точек, точки, диапазон Z, массив Z Дополнительно : диапазон M, массив M | ||||||||||||
21 год | PointM | X, Y, M | ||||||||||||
23 | PolylineM | Обязательно : MBR, Количество деталей, Количество точек, Детали, Пункты Дополнительно : диапазон M, массив M | ||||||||||||
25 | PolygonM | Обязательно : MBR, Количество деталей, Количество точек, Детали, Пункты Дополнительно : диапазон M, массив M | ||||||||||||
28 год | MultiPointM | Обязательно : MBR, Количество баллов, Баллы Необязательные поля : диапазон M, массив M | ||||||||||||
31 год | Мультипатч | Обязательно : MBR, количество деталей, количество точек, детали, типы деталей, точки, диапазон Z, массив Z Дополнительно : диапазон M, массив M
Имена и значения атрибутов не стандартизированы и будут отличаться в зависимости от источника шейп-файла. ОграниченияТопология и формат шейп-файлаФормат шейп-файла не позволяет хранить топологическую информацию. В ESRI ArcInfo покрытия и личный / файл / предприятия геоданных имеют возможность хранить особенность топологии. Пространственное представлениеХранилище данныхСмешивание типов формПоскольку тип формы предшествует каждой записи геометрии, шейп-файл технически способен хранить смесь различных типов форм. Однако в спецификации указано: «Все фигуры, отличные от Null, в шейп-файле должны быть одного и того же типа». Следовательно, эта возможность смешивания типов фигур должна быть ограничена перемежением пустых фигур с одним типом фигуры, объявленным в заголовке файла. Шейп-файл не должен содержать данные как полилинии, так и полигона, например, описания колодца (точки), реки (полилинии) и озера (многоугольника) будут храниться в трех отдельных наборах данных. Работа с ShapeFile (*.shp) в среде DelphiВ ходе работы столкнулся с задачей чтения файлов с расширением «.shp». Та информация, которую я нашел в интернете, была разрозненной и расплывчатой, и, поэтому, я решил объединить то, до чего мне пришлось доходить самостоятельно, и рассказать вам. Постановка задачиУ нас имеется файл с расширением «.shp». В этом файле находится карта в виде изолиний: каждая изолиния сделана отдельным шейпом; наименованием шейпа является высотная характеристика изолинии. Нашей задачей станет считать данные из этого в массив. Массив представляет собой набор точек определенный тремя координатами (x, y, z). Далее этот массив нужно занести в базу данных, но данный момент мы упустим из рассмотрения. Немного теорииРассмотрим важные для нас особенности формата «*.shp». На самом деле ShapeFile содержит много информации, но у нас узкий интерес. Во первых нам нужно знать, что ShapeFile разделен на так называемые «Шейпы» (англ. Shape — Фигура). Шейп представляет собой фигуру или набор фигур (возможно не связанных между собой) сложных форм. Хранится шейп в виде отдельных точек и информации о линиях соединяющих их. В нашем случае каждый шейп это непрерывная кривая обозначающая положение точек земного ландшафта имеющих одинаковую высоту (наименование шейпа соответствует численному значение высоты). В виду специфичности задачи нас не будет интересовать информация о линиях соединяющих точки, а только информация о положении точек и их высота. Стоит так же отметить, что вместе с файлом формата «*.shp» формируется файл формата «*.dbf» содержащий заголовочную информацию о наших шейпах. Файл «*.dbf» должен иметь такое же название, что и файл «.shp». MapWindowGISПосле небольших поисков в сети, мною была обнаружены библиотека MapWindowGIS. Возможности этой библиотеки весьма широки и она поможет нам в достижении наших целей. Скачать ее можно по следующей ссылке. После того, как Вы скачаете данную библиотеку необходимо ее установить. После установки, запускаем среду разработки Delphi. Выполняем команду Component-Import AciveX Control… после чего появится окно: В списке библиотек ActiveX находим — MapWinGIS Component и нажимаем на кнопку «Install…«, после чего необходимо установить данную библиотеку как обычный компонент. После успешной установки данной библиотеки, компонент TMap появиться на вкладке ActiveX. Добавляем отображение картыДля начала добавим на форму компонент Map1 типа TMap. Как уже говорилось, он находится на последней позиции вкладки ActiveX. Для того что бы наш компонент отображал карту, содержащуюся в нашем файле, достаточно простого кода: shp:Shapefile; //переменная ассоциируемая с шейп-файлом shp:=CoShapefile.Create; //создание шейп-файла Считывание заголовочной информации о шейпахЧто бы считать заголовочную информацию из файла формата «*.dbf» мы будем использовать компоненты TTable и TDataSource. Для этого добавим на форму компоненты Table1 типа TTable и DataSource1 типа TDataSource из вкладок «BDE» и «Data Access» соответственно. Компонент Table1 оставляем без изменения, а в компоненте DataSource1 в параметре «DataSet» выбираем «Table1». Для удобства добавляем на форму компонент OpenDialog1 типа TOpenDialog из вкладки «Dialogs». В параметре «Filter» компонента OpenDialog1, добавляем фильтр с наименованием «Shape files (.shp)» и фильтрацией «*.shp» (без кавычек). Кроме того добавим кнопки «Открыть» и «Сохранить». Полный код процедуры на кнопку «Открыть» будет выглядеть следующим образом: nameDB:WideString; //в этой переменной будет содержаться наименование файла nameDB:=OpenDialog1.FileName; //присваиваем наименование в соответствии с выбором пользователя Delete(nameDB,length(nameDB)-2,3); //обрубаем разрешение Не забываем, что переменную shp нужно добавить в раздел глобальных переменных. Считываем точки из файлаДля начала приведу код процедуры назначенной на кнопку «Сохранить»: i,j:integer; //индексирующие переменные if shp<>nil then //проверка на наличие информации в переменной shp Table1.First; //берем первый шейп из заголовочной таблицы end Давайте рассмотрим некоторые особенности. Итак, Mas — одномерный массив точек имеющий три параметра типа Double (x, y, z). Параметр shp.NumShapes равен количеству шейпов внутри файла. Параметр Table1.Fields[2].Value — это наименование текущего шейпа (файл «*.dbf» устроен таким образом, что наименование записано в 3-тьем столбце). shp.Shape[i].numPoints, как вы наверно уже догадались — количество точек в i-том шейпе. shp.Shape[i].Point[j].x и shp.Shape[i].Point[j].y — те самые заветные координаты j-той точки i-того шейпа. Остальное, думаю, понятно из комментариев. ЗаключениеВот мы и закончили рассматривать особенности работы с ShapeFile в среде Delphi. С поставленной задачей мы справились полностью. Конечно, данный обзор является только вершиной айсберга, но я надеюсь эта вводная статья поможет вам в дальнейшем освоении этого направления. Чем открыть shpНазвание формата Файл объектов ESRI Оригинальное название ESRI Shapefile Разработчик: ESRI Описание расширенияФайл с данными, используемый программой географического анализа ESRI ArcView, входящей в пакет ESRI ArcGIS. Содержит набор географических деталей, таких как улицы, достопримечательности, границы районов. Может использоваться для хранения точек, линий или областей. Чем открыть SHP ESRI ArcGIS QGIS ACD Systems Canvas Safe Software FME Desktop Erdas Imagine TatukGIS Viewer Merkaartor Формат shp, вариант 2:Название формата Файл форм Оригинальное название Shapes File Разработчик: Нет данных Описание расширенияОбъект, созданный с помощью одной из программ 3D-дизайна. Представляет собой 3D-изображение (иногда и 2D), состоящее из помощью областей, определяемых вершинами и линиями. Чем открыть SHP Autodesk AutoCAD Autodesk 3ds Max Не нашли описания?Напишите. Оно обязательно появится на сайте. Популярные расширенияРаспространенный формат для документов старых версий Microsoft Word Видео, записанное в формате QuickTime (Apple) Аудио, кодированное без потери качества. Есть поддержка тегов. Образ CD или DVD диска, служит для создания копий дисков. Расширение векторного изображения CorelDRAW. Популярные программыПростой и многофункциональный видеопроигрыватель Пожалуй, лучший бесплатный медиа-проигрыватель Очень удобная программа-просмотрщик графики с огромным набором функций Наиболее популярный векторный графический пакет Самый быстрый и один из лучших иинтернет-браузеров Как в Delphi / Lazarus / С++ Builder работать с картами в формате SHP ShapeFile, они же «Шейпы» (англ. Shape — Фигура) представляют собой фигуру или набор фигур (возможно не связанных между собой) сложных форм. Фигуры бывают в виде точек, полилиний или полигонов. Если один из файлов набора будет утерян, данные могут быть повреждены или же вовсе проект будет утерян. ArcGIS является географической информационной системой (ГИС) для работы с картами и географической информацией. Он используется для создания и использования карт, составления географических данных, анализа отображенной информации, обмена и обнаружения географической информации, с использования карт и географической информации в ряде приложений и управлений географической информации в базе данных. Подробнее о технологии ArcGIS. В контексте ГИС векторные форматы данных (или по сути – векторные модели хранения данных) являются одним из способов отображения объектов реального мира. Вы можете открыть файлы SHP с помощью следующих программ: CADE Pro, Parallels, Tools Center, AutoCAD, ESRI’s ArcExplorer, Free File Viewer Pro. Преимущества шейп-файловНедостатки шейп-файловШейп-файлы подходят для хранения простой геометрии пространственных объектов. Однако имеются серьезные проблемы, связанные с хранением атрибутов. Например, они не могут округлять числа, имеют ограниченную поддержку символов Unicode, не могут хранить поля, имена которых длиннее 10 знаков, и не могут хранить дату и время в одном поле. Это только основные ограничения. Кроме того, они не поддерживают возможности, присутствующие в базах геоданных, например, работу с доменами и подтипами. Поэтому, не следует использовать шейп-файлы, если вы хотите хранить сложные атрибуты и пользоваться возможностями, предоставляемыми базами геоданных. Ограничения по геометрии Shape-файловКаждый файл-компонент шейп-файла не может быть более 2 GB, что составляет примерно 70 миллионов точечных объектов, потому что для ссылок внутри файла используются 4-байтные числа. Количество линейных или полигональных объектов, которые могут содержаться в шейп-файле, зависит от числа вершин этих объектов (вершина является эквивалентом точки). В классах объектов базы геоданных значения допуска (x;y) хранится напрямую, в шейп-файлах совершенно по-другому. Допуск по (x;y) – это минимальное расстояние между координатами, ближе которого они будут считаться идентичными. Между пространственными объектами одного класса объектов, или между объектами нескольких различных классов при оценке взаимосвязей используется тот самый допуск. Также он активно используется при редактировании объектов. Если вы используете такие операции и инструменты как: Наложение (Overlay), Вырезать (Clip), Выбрать в слое по расположению (Select Layer By Location), или любой инструмент, который использует в качестве входных данных два или более класса пространственных объектов, то вместо шейп-файлов лучше использовать класс объектов базы геоданных(где доступ осуществляется по x, y). Шейп-файл может занимать от трех до пяти раз больше места, по сравнению с файловой базой геоданных или SDE, поскольку использует иные методы сжатия. Шейп-файлы поддерживают объекты-мультипатчи, но не поддерживают следующие возможности мультипатчей: Пространственный индекс шейп-файла малоэффективен по сравнению с индексом класса объектов базы геоданных. Пространственные запросы такие как выбор объектов в пределах полигона займут у вас больше времени в отличие от того же класса объектов базы геоданных. Данный недостаток наблюдается только с большим количеством пространственных объектов. Параметрически заданные кривые (также известные как кривые дуговых сегментов) не поддерживаются в шейп-файлах. Параметрические кривые можно создать, отредактировав класс объектов базы геоданных. Для построения кривых используются математические формулы. При экспорте класса объектов базы геоданных, который содержит параметрические кривые, в шейп-файл, кривые будут трансформированы в простые линейные объекты, вершины которых будут расположены очень близко друг к другу, чтобы сохранить соответствующую форму. В отличие от других форматов, шейп-файл хранит числовые атрибуты в символьном, а не бинарном формате. Для реальных числовых значений (например, с десятичными знаками), это может привести к ошибкам из-за округления. Это ограничение касается только атрибутов, и не относится к хранению координат. Как создать файл в формате SHP с помощью кодаПро сам формат поговорили и как готовые файлы открыть узнали, а как работать в Delphi? Тут есть три пути: Создаём файл с картой в формате SHPЗаходим в FR Designer. Находим Object “Map” и добавляем его в документ. Для добавления нового слоя нажмите кнопку «Добавить. «. Будет показано следующее окно: На этом шаге нужно выбрать тип слоя: Если вы выбрали слой на основе файла карты, укажите дополнительно, как хранить картографические данные: — данные внедряются в файл отчета. При этом отчет может сильно увеличиться в размерах. — файл отчета ссылается на файл карты, внедрения не происходит. Этот режим полезен, если у вас есть несколько отчетов, использующих одни и те же карты. Карты большого объема (более 30Мб) или с большим количеством полигонов (более 20000) серьезно замедлят работу отчета.
Стиль кисти имеет несколько готовых видов форматирования: Цвет фона, как и цвет переднего плана можно выбрать из готовой палитры цветов или настроить необходимый цвет нажав на Other. Во второй вкладке у нас настройки градиента для фона. Стиль градиента может быть горизонтальным, вертикальным, овальным, прямоугольным, вертикальным с переходом в другой цвет по центру, горизонтальным с переходом в другой цвет по центру. Начальный и конечный цвет можно выбрать из готовой палитры цветов или настроить необходимый цвет нажав на Other. В третьей вкладке настройки заливки в виде стекла. Имеется выбор ориентации: вертикальный, горизонтальный, вертикальное и горизонтальное зеркало. Цвет можно выбрать из готовой палитры или настроить необходимый цвет нажав на Other. Вернёмся в редактор карты и найдём уже редактор рамок. Блок линий: можно выбрать стиль из предложенных вариантов, задать ширину линии и выбрать цвет. Блок рамки: в центре у нас образец кадра, выбираем к каким сторонам применить стиль линий через образец или с помощью кнопочек (поля на всех сторонах, без полей или стороны по отдельности). Добавляя тень мы также можем указать ширину и цвет. Цвет рамки можно выбрать из готовой палитры цветов, установив ширину рамок. Выставляем позицию шкалы. На примере у нас расположение в правом нижнем углу. Название шкалы вписываем в поле Text, через Font… настроим шрифт и его размер. Вкладка Размер шкалы по виду не отличается от Цвета шкалы, поэтому повторяться не буду. Сохранив полученный результат переходим во вкладку превью и видим готовый результат. Наша карта не будет статичной, ещё можно масштабировать в любом месте, а при наведении на определённую область (в нашем случае на любую страну) будет подсвечиваться весь этот фрагмент. Создаём карту в формате SHP с помощью кодаShape далеко не единственный формат для работы с картами, существуют ещё OpenStreetMap (OSM) и GPS eXchange Format, но о них я расскажу в других статьях. Формат shp что этоСведения о файлах SHP В файлах ESRI SHP хранятся геометрические данные и атрибуты (данные) для элементов. Для одной формы могут существовать до пяти физических файлов с одним именем, однако разыми расширениями. Можно подключиться к файлам SHP для изменения исходных данных в источнике или импортировать его для преобразования данных в объекты чертежа AutoCAD. После импорта данных подключение к исходному источнику теряется. При обновлении источника изменения не появятся в импортированной копии. При подключении к данным SHP или их импорте приложение ProdName проверяет геометрию на наличие нескольких замкнутых внешних контуров. Если они существуют, геометрия рассматривается как составной полигон (полигон с несколькими внешними кольцами). Незамкнутые внешние контуры не считаются составным полигоном. При создании составного полигона в приложении ProdName и последующем сохранении или экспорте в формат SHP он появится в собственном файле SHP как составной полигон. Файлы SHP не включают в себя информацию о цвете. Импортированные объекты имеют цвет, совпадающий с цветом в слое ProdName Точечные обозначения, стили линии и стили заливки при импорте из файлов SHP не сохраняются. Перед трансляцией поместите эти пункты в одно или несколько полей в ассоциированной базе данных, чтобы иметь возможность переназначить свойства отображения графических объектов, используя эти значения в файле чертежа. SHP не содержит параметров драйвера импорта. Изменение настроек формата единичного выбора и на основе папки по умолчанию для файлов SHP Получение доступа и возможности работать с файлами SHP Импорт из классов SHP сведений TEXTSTRING, возвращаемых в ProdName
|