Формат shp чем открыть

Обновлено: 03.07.2024

Формат шейп- файла - это формат векторных геопространственных данных для программного обеспечения географической информационной системы (ГИС) . Он разработан и регулируется Esri как в основном открытая спецификация для взаимодействия данных между Esri и другими программными продуктами ГИС . Формат шейп-файла может пространственно описывать векторные объекты: точки , линии и многоугольники , представляющие, например, колодцы , реки и озера . У каждого предмета обычно есть атрибуты, которые его описывают, например, название или температура .

СОДЕРЖАНИЕ

Обзор

Формат шейп-файла - это цифровой векторный формат хранения для хранения геометрического местоположения и связанной с ним атрибутивной информации. В этом формате отсутствует возможность хранения топологической информации. Формат шейп-файлов был представлен в ArcView GIS версии 2 в начале 1990-х годов. Теперь можно читать и записывать наборы географических данных с использованием формата шейп-файлов с помощью широкого спектра программного обеспечения.

В формате шейп-файла данные хранятся в виде примитивных геометрических фигур, таких как точки, линии и многоугольники. Эти фигуры вместе с атрибутами данных, которые связаны с каждой фигурой, создают представление географических данных. Термин «шейп-файл» довольно распространен, но формат состоит из набора файлов с общим префиксом имени файла, хранящихся в одном каталоге . Три обязательных файлы имеют расширение файлов .shp , .shx и .dbf . Фактический шейп - .shp файл относится конкретно к файлу, но сам по себе не является полным для распространения, поскольку требуются другие вспомогательные файлы. Устаревшее программное обеспечение ГИС может рассчитывать, что префикс имени файла будет ограничен восемью символами, чтобы соответствовать соглашению об именах файлов DOS 8.3 , хотя современные программные приложения принимают файлы с более длинными именами.

  • .shp - формат формы; сама геометрия объекта
  • .shx - формат индекса формы; позиционный индекс геометрии объекта для быстрого поиска вперед и назад
  • .dbf - формат атрибута; атрибуты столбцов для каждой формы в формате dBase IV
  • .prj - описание проекции с использованием общеизвестного текстового представления систем координат
  • .sbn и .sbx - пространственный индекс функций
  • .fbn и .fbx - пространственный индекс функций, которые доступны только для чтения
  • .ain и .aih - индекс атрибута активных полей в таблице
  • .ixs - индекс геокодирования для наборов данных для чтения и записи
  • .mxs - индекс геокодирования для наборов данных для чтения и записи (формат ODB)
  • .atx - индекс атрибута для .dbf файла в форме (ArcGIS 8 и новее) shapefile.columnname.atx x-gis/x-shapefile
  • .shp.xml - геопространственные метаданные в формате XML, например ISO 19115 или другой XML-схеме
  • .cpg - используется для указания кодовой страницы (только для .dbf ) для определения используемой кодировки символов
  • .qix - альтернативный пространственный индекс дерева квадрантов, используемый программным обеспечением MapServer и GDAL / OGR

В каждом из .shp , .shx и .dbf файлов, формы в каждом файле соответствуют друг другу в последовательности (то есть, первая запись в .shp файл соответствует первой записи в .shx и .dbf файлов и т.д.). .shp И .shx файлы имеют различные поля с различными байтов , так что реализатор форматов файлов должны быть очень осторожными , соблюдать порядок следования байтов каждого поля и относиться к нему должным образом.

Формат шейп-файла ( .shp )

Главный файл ( .shp ) содержит геометрические данные. Двоичный файл состоит из одной фиксированной длины заголовка за которым следует один или более переменной длины записей . Каждая из записей переменной длины включает компонент заголовка записи и компонент содержимого записи. Подробное описание формата файла приведено в Техническом описании ESRI Shapefile . Этот формат не следует путать с исходным форматом шрифта AutoCAD shape, который имеет такое же .shp расширение.

Упорядочение данных координат по двухмерной оси предполагает декартову систему координат с использованием порядка (XY) или (Восток и Север). Этот порядок осей согласован для географических систем координат , где порядок аналогичен (долгота и широта). Геометрия также может поддерживать 3- или 4- мерные координаты Z и M для высоты и измерения соответственно. Z-измерение хранит высоту каждой координаты в трехмерном пространстве , которое может использоваться для анализа или для визуализации геометрии с использованием трехмерной компьютерной графики . Определяемое пользователем M-измерение может использоваться для одной из многих функций, таких как хранение линейных мер привязки или относительного времени объекта в 4- мерном пространстве .

Байты Тип Порядок байтов использование
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– - - Контент формы

Содержимое записи переменной длины зависит от типа фигуры, который должен быть либо типом фигуры, указанным в заголовке файла, либо пустым. Ниже перечислены возможные типы фигур:

Необязательно : M

Дополнительно : диапазон M, массив M

Дополнительно : диапазон M, массив M

Дополнительно : диапазон M, массив M

Дополнительно : диапазон M, массив M

Дополнительно : диапазон M, массив M

Необязательные поля : диапазон M, массив M

Дополнительно : диапазон M, массив M

Формат индекса формы шейп-файла ( .shx )

Байты Тип Порядок байтов использование
0–3 int32 большой Смещение записи (16-битными словами)
4–7 int32 большой Длина записи (в 16-битных словах)

Используя этот индекс, можно выполнять поиск в шейп-файле в обратном направлении, сначала выполняя поиск в обратном направлении по индексу формы (что возможно, потому что он использует записи фиксированной длины), затем считывая смещение записи и используя это смещение для поиска правильная позиция в .shp файле. Также можно искать вперед произвольное количество записей, используя тот же метод.

Можно сгенерировать полный индексный файл для отдельного .shp файла. Однако, поскольку шейп-файл должен всегда содержать индекс, это считается восстановлением поврежденного файла.

Формат атрибута шейп-файла ( .dbf )

В этом файле хранятся атрибуты каждой формы; он использует формат dBase IV. Этот формат является общеизвестным и реализован во многих клонах dBase, известных как xBase . Например, библиотека C с открытым исходным кодом для шейп-файлов называет свой формат «xBase», хотя это простой dBase IV.

Имена и значения атрибутов не стандартизированы и будут отличаться в зависимости от источника шейп-файла.

Формат пространственного индекса шейп-файла ( .sbn )

Это файл двоичного пространственного индекса , который используется только программным обеспечением Esri. Формат не задокументирован Esri. Однако он был переработан и задокументирован сообществом открытого исходного кода. 100-байтовый заголовок аналогичен заголовку в .shp . В настоящее время это не реализовано другими поставщиками. .sbn Файл не является строго необходимым, поскольку .shp файл содержит всю информацию , необходимую для успешного синтаксического анализа пространственных данных.

Ограничения

Топология и формат шейп-файла

Формат шейп-файла не позволяет хранить топологическую информацию. В ESRI ArcInfo покрытия и личный / файл / предприятия геоданных имеют возможность хранить особенность топологии.

Пространственное представление

Края полилинии или многоугольника состоят из точек. Расстояние между точками неявно определяет масштаб, в котором функция визуально полезна. Превышение этого масштаба приводит к неровному изображению. Дополнительные точки потребуются для получения гладких форм в больших масштабах. Для объектов, лучше представленных гладкими кривыми, представление многоугольника требует гораздо большего объема памяти, чем, например, сплайны , которые могут эффективно захватывать плавно изменяющиеся формы. Ни один из типов формата шейп-файлов не поддерживает сплайны.

Хранилище данных

Размер обоих файлов .shp и .dbf файлов компонентов не может превышать 2 ГБ (или 2 31 байта) - в лучшем случае около 70 миллионов точечных объектов. Максимальное количество объектов для других типов геометрии варьируется в зависимости от количества используемых вершин.

Формат базы данных атрибутов для .dbf файла компонента основан на более старом стандарте dBase . Этот формат базы данных по своей сути имеет ряд ограничений:

  • В то время как текущий стандарт dBase и GDAL / OGR (основная программная библиотека с открытым исходным кодом для чтения и записи наборов данных формата шейп-файлов) поддерживают нулевые значения, программное обеспечение ESRI представляет эти значения как нули - очень серьезная проблема для анализа количественных данных, так как это может исказить представление и статистика, если нулевые величины представлены как нулевые
  • Плохая поддержка имен полей Unicode или хранения полей
  • Максимальная длина имени поля - 10 символов.
  • Максимальное количество полей 255
  • Поддерживаемые типы полей: с плавающей запятой (хранение 13 символов), целое число (хранение 4 или 9 символов), дата (без хранения времени; хранение 8 символов) и текст (максимальное хранение 254 символов).
  • Числа с плавающей запятой могут содержать ошибки округления, поскольку они хранятся в виде текста.

Смешивание типов форм

Поскольку тип формы предшествует каждой записи геометрии, шейп-файл технически способен хранить смесь различных типов форм. Однако в спецификации указано: «Все фигуры, отличные от Null, в шейп-файле должны быть одного и того же типа». Следовательно, эта возможность смешивания типов фигур должна быть ограничена перемежением пустых фигур с одним типом фигуры, объявленным в заголовке файла. Шейп-файл не должен содержать данные как полилинии, так и полигона, например, описания колодца (точки), реки (полилинии) и озера (многоугольника) будут храниться в трех отдельных наборах данных.

Если у вас есть файлы SHP, которые нужно открыть, но вы не знаете, как это сделать, выполните следующие действия.

Установить необязательные продукты - File Magic (Solvusoft) | EULA | Privacy Policy | Terms | Uninstall

Шаг 1: Дважды щелкните файл.

Найдите значок файла SHP и дважды щелкните его. Если у вас установлена ​​правильная программа, она должна открывать файл автоматически. Если это не так, перейдите к шагу 2.

Шаг 2: Ищите другую программу.

Если файл SHP не открывается при двойном щелчке по нему, у вас, вероятно, нет нужной программы на вашем компьютере. Существует несколько популярных программ, которые можно использовать для открытия файла SHP. Попробуйте использовать одну из трех наиболее распространенных программ: Unknown Apple II File, Clarion for Windows Ship List или 3D Modeling.

Шаг 3: Проверьте тип файла.

Если ни одна из вышеперечисленных программ не откроет ваш файл SHP, проверьте тип файла, чтобы убедиться, что у вас есть программа, которая может открыть этот тип файла. Большинство файлов SHP составляют 3D Image Files, но есть шанс, что это может быть другой тип.

Вы можете найти эту информацию в свойствах файла. На компьютере с Windows просто щелкните файл правой кнопкой мыши и щелкните свойства и найдите тип файла в разделе «Тип файла». На компьютере Mac щелкните правой кнопкой мыши файл и нажмите «Дополнительная информация» и найдите тип файла в разделе «Вид».

Шаг 4: Получите помощь от разработчика.

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

Название программы Имя разработчика
Unknown Apple II File found on Golden Orchard Apple II CD Rom
Clarion for Windows Ship List SoftVelocity
3D Modeling Windows Programmer
3D Studio Shapes File Autodesk Inc.
AutoCAD Shape File and Source File for Text Fonts Autodesk Inc.
ESRI GIS & Mapping Software Shape File PC Software Company
Command & Conquer File Westwood Studios
GIS Software Geographic Shape File Unknown
Printmaster Icon Library Microsoft Programmer
ArcView Shape ESRI

Шаг 5: Найти универсальный просмотрщик файлов.

Самый простой способ открыть файл SHP или любой файл - использовать универсальный просмотрщик файлов, например File Magic (Download). Вы можете использовать его, чтобы открыть много разных форматов файлов. Если он несовместим, файл будет просто открыт в двоичном формате.

Рекомендуем

Установить необязательные продукты - File Magic (Solvusoft) | EULA | Privacy Policy | Terms | Uninstall

В ходе работы столкнулся с задачей чтения файлов с расширением ".shp". Та информация, которую я нашел в интернете, была разрозненной и расплывчатой, и, поэтому, я решил объединить то, до чего мне пришлось доходить самостоятельно, и рассказать вам.

Постановка задачи

У нас имеется файл с расширением ".shp". В этом файле находится карта в виде изолиний: каждая изолиния сделана отдельным шейпом; наименованием шейпа является высотная характеристика изолинии. Нашей задачей станет считать данные из этого в массив. Массив представляет собой набор точек определенный тремя координатами (x, y, z). Далее этот массив нужно занести в базу данных, но данный момент мы упустим из рассмотрения.

Немного теории

Рассмотрим важные для нас особенности формата "*.shp". На самом деле ShapeFile содержит много информации, но у нас узкий интерес. Во первых нам нужно знать, что ShapeFile разделен на так называемые «Шейпы» (англ. Shape — Фигура). Шейп представляет собой фигуру или набор фигур (возможно не связанных между собой) сложных форм. Хранится шейп в виде отдельных точек и информации о линиях соединяющих их. В нашем случае каждый шейп это непрерывная кривая обозначающая положение точек земного ландшафта имеющих одинаковую высоту (наименование шейпа соответствует численному значение высоты). В виду специфичности задачи нас не будет интересовать информация о линиях соединяющих точки, а только информация о положении точек и их высота.

Стоит так же отметить, что вместе с файлом формата "*.shp" формируется файл формата "*.dbf" содержащий заголовочную информацию о наших шейпах. Файл "*.dbf" должен иметь такое же название, что и файл ".shp".

MapWindowGIS

image

После того, как Вы скачаете данную библиотеку необходимо ее установить. После установки, запускаем среду разработки Delphi. Выполняем команду Component-Import AciveX Control… после чего появится окно:

В списке библиотек ActiveX находим — MapWinGIS Component и нажимаем на кнопку «Install…«, после чего необходимо установить данную библиотеку как обычный компонент. После успешной установки данной библиотеки, компонент TMap появиться на вкладке ActiveX.

Добавляем отображение карты

Для начала добавим на форму компонент Map1 типа TMap. Как уже говорилось, он находится на последней позиции вкладки ActiveX.

Для того что бы наш компонент отображал карту, содержащуюся в нашем файле, достаточно простого кода:

shp:Shapefile; //переменная ассоциируемая с шейп-файлом
HandleLayer:integr; //необходимо для индексации слоев в шейп файле

shp:=CoShapefile.Create; //создание шейп-файла
shp.Open('map.shp',nil); //считывание из файла 'map.shp'
Map1.Focused; //в некоторых случаях, если не добавить данную строчку возникает ошибка
HandleLayer:=Map1.AddLayer(shp,true); //добавление слоя карты на компонент
Map1.ZoomToMaxExtents; //уменьшение (или увеличение) масштаба так, что бы все влезло

Считывание заголовочной информации о шейпах

Что бы считать заголовочную информацию из файла формата "*.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; //в этой переменной будет содержаться наименование файла
HandleLayer:integr;

nameDB:=OpenDialog1.FileName; //присваиваем наименование в соответствии с выбором пользователя
shp:=CoShapefile.Create;
shp.Open(nameDB,nil);
Map1.Focused;
HandleLayer:=Map1.AddLayer(shp,true);
Map1.ZoomToMaxExtents;

Delete(nameDB,length(nameDB)-2,3); //обрубаем разрешение
nameDB:=nameDB+'dbf'; //меняем разрешение на ".dbf"
Table1.TableName:=nameDB; //ассоциируем таблицу с фалом "*.dbf"
Table1.Active:=True; //"запускаем" таблицу

Не забываем, что переменную shp нужно добавить в раздел глобальных переменных.

Считываем точки из файла

Для начала приведу код процедуры назначенной на кнопку «Сохранить»:

i,j:integer; //индексирующие переменные
z:integer; //высота точек, считываемая из наименования

if shp<>nil then //проверка на наличие информации в переменной shp
begin

Table1.First; //берем первый шейп из заголовочной таблицы
k:=0;
for i:=0 to shp.NumShapes-1 do //перебор всех шейпов
begin
z:=StrToInt(Table1.Fields[2].Value); //считывание высоты из заголовочной таблицы шейпов
for j:=0 to shp.Shape[i].numPoints-1 do //перебор всех точек шейпа
begin
Mas[k].x:=shp.Shape[i].Point[j].x;
Mas[k].y:=shp.Shape[i].Point[j].y;
Mas[k].z:=z;
inc(k);
end;
Table1.Next; //переходим к следующему шейпу
end;
..
//тут можно например сохранить массив в базу данных
..

end
else ShowMessage('Файл не открыт');
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. С поставленной задачей мы справились полностью. Конечно, данный обзор является только вершиной айсберга, но я надеюсь эта вводная статья поможет вам в дальнейшем освоении этого направления.

ShapeFile, они же «Шейпы» (англ. Shape — Фигура) представляют собой фигуру или набор фигур (возможно не связанных между собой) сложных форм. Фигуры бывают в виде точек, полилиний или полигонов.

Стоит также отметить, что вместе с файлом формата "*.shp" формируется файл формата "*.dbf" хранящий в себе заголовочную информацию о наших шейпах. Важно, чтобы файл "*.dbf" имел такое же название, что и файл ".shp". В главном файле .shp хранятся геометрические данные, индексированные в файле .shx (индекс) и расширенные атрибутами и их значениями в базе данных формата dBASE (.dbf). Публикации ESRI имеет полную спецификацию формата "шейп-файлов" (.shp, .shx, .dbf) и использует полноценную поддержку среди целого ряда ГИС и САПР, широко применяется для представления всевозможных карт и картографических схем-слоев.

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

Для работы в одном проекте потребуются все эти файлы.

ArcGIS является географической информационной системой (ГИС) для работы с картами и географической информацией. Он используется для создания и использования карт, составления географических данных, анализа отображенной информации, обмена и обнаружения географической информации, с использования карт и географической информации в ряде приложений и управлений географической информации в базе данных. Подробнее о технологии ArcGIS.

В контексте ГИС векторные форматы данных (или по сути – векторные модели хранения данных) являются одним из способов отображения объектов реального мира.

Вы можете открыть файлы SHP с помощью следующих программ: CADE Pro, Parallels, Tools Center, AutoCAD, ESRI's ArcExplorer, Free File Viewer Pro.

Преимущества шейп-файлов

  • При экспорте данных для работы со сторонними (не-Esri) программными приложениями
  • При экспорте данных для работы в ArcView GIS 3 или ArcInfo Workstation
  • Если необходимо быстро записать простые объекты и атрибуты, например для сервисов геообработки (однако необходимо помнить об ограничениях, которые описаны ниже.)

Недостатки шейп-файлов

Шейп-файлы подходят для хранения простой геометрии пространственных объектов. Однако имеются серьезные проблемы, связанные с хранением атрибутов. Например, они не могут округлять числа, имеют ограниченную поддержку символов Unicode, не могут хранить поля, имена которых длиннее 10 знаков, и не могут хранить дату и время в одном поле. Это только основные ограничения. Кроме того, они не поддерживают возможности, присутствующие в базах геоданных, например, работу с доменами и подтипами. Поэтому, не следует использовать шейп-файлы, если вы хотите хранить сложные атрибуты и пользоваться возможностями, предоставляемыми базами геоданных.

Ограничения по геометрии Shape-файлов

Каждый файл-компонент шейп-файла не может быть более 2 GB, что составляет примерно 70 миллионов точечных объектов, потому что для ссылок внутри файла используются 4-байтные числа. Количество линейных или полигональных объектов, которые могут содержаться в шейп-файле, зависит от числа вершин этих объектов (вершина является эквивалентом точки).

В классах объектов базы геоданных значения допуска (x;y) хранится напрямую, в шейп-файлах совершенно по-другому. Допуск по (x;y) – это минимальное расстояние между координатами, ближе которого они будут считаться идентичными. Между пространственными объектами одного класса объектов, или между объектами нескольких различных классов при оценке взаимосвязей используется тот самый допуск. Также он активно используется при редактировании объектов. Если вы используете такие операции и инструменты как: Наложение (Overlay), Вырезать (Clip), Выбрать в слое по расположению (Select Layer By Location), или любой инструмент, который использует в качестве входных данных два или более класса пространственных объектов, то вместо шейп-файлов лучше использовать класс объектов базы геоданных(где доступ осуществляется по x, y).

Шейп-файл может занимать от трех до пяти раз больше места, по сравнению с файловой базой геоданных или SDE, поскольку использует иные методы сжатия.

Шейп-файлы поддерживают объекты-мультипатчи, но не поддерживают следующие возможности мультипатчей:

  • Координаты текстур
  • Текстуры и частичное окрашивание
  • Нормали освещенности

Пространственный индекс шейп-файла малоэффективен по сравнению с индексом класса объектов базы геоданных. Пространственные запросы такие как выбор объектов в пределах полигона займут у вас больше времени в отличие от того же класса объектов базы геоданных. Данный недостаток наблюдается только с большим количеством пространственных объектов.

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

В отличие от других форматов, шейп-файл хранит числовые атрибуты в символьном, а не бинарном формате. Для реальных числовых значений (например, с десятичными знаками), это может привести к ошибкам из-за округления. Это ограничение касается только атрибутов, и не относится к хранению координат.

Как создать файл в формате SHP с помощью кода

Про сам формат поговорили и как готовые файлы открыть узнали, а как работать в Delphi? Тут есть три пути:

  1. Использовать GDAL - это библиотека переводчиков для растровых и векторных форматов геопространственных данных, которая выпускается под лицензией X / MIT style Open Source Open Source Geospatial Foundation . В качестве библиотеки он представляет одну растровую абстрактную модель данных и одну векторную абстрактную модель данных вызывающему приложению для всех поддерживаемых форматов. Он также поставляется с различными полезными утилитами командной строки для перевода и обработки данных. Вот статья по работе с данной библиотекой
  2. Воспользоваться MapWindow GIS — это проект с открытым исходным кодом ГИС, который обладает набором программных и программируемых библиотек. Он разработан университетом GeoSpatial Software Lab штата Айдахо. Приложение запускается только под операционной системой Windows, на linux поддержки нет. Прежде всего данный проект очень интересен разработчикам, т.к. само ядро данного приложения написано на С++ и представляет собой библиотеку ActiveX, которую можно использовать отдельно от MapWindow и разрабатывать собственные приложения для возможности визуализации и обработки геоданных (работает во всех средах разработки, которые поддерживают импорт ActiveX компонентов). Вот ссылка на гитхаб.
  3. А самый лучший вариант использовать FastReport. А чем? Тем, что он уже готов к использованию! Берёте и вот прямо сразу загружаете - и, О ЧУДО, он уже вам всё показывает! Это как с уткой по-Пекински! Если бы вы готовили её сами, то вам пришлось бы её неделю мариновать, а в нашем случае - мы её уже замариновали для вас. Приходите и сразу кушаете!

Создаём файл с картой в формате SHP

Заходим в FR Designer. Находим Object “Map” и добавляем его в документ.

FR Дизайнер

Должен появиться вот такой редактор карт. Первая вкладка - это общие сведения.

Редактор карт

Map - указываем название нашей карты. Также здесь будут отображаться слои карты, которые можно перемещать с помощью стрелочек.

Add - загрузить файл в формате shp, osm или gpx (В нашем случае SHP).

Delete - удалить слой карты.

Keep Aspect Ratio - сохранить соотношение сторон карты.

Mercator Projection - использование проекции Меркатора.

Для добавления нового слоя нажмите кнопку "Добавить. ". Будет показано следующее окно:

На этом шаге нужно выбрать тип слоя:

- карта из файла (.shp/.dbf, .osm, .gpx). Это наиболее часто используемый тип карт. К примеру, вы можете напечатать карту мира и выделить цветом страны, в которых продажи были больше определенного значения;

- пустой слой с геоданными представленными программой. Ваше приложение должно предоставлять географические координаты (пару значений - широта и долгота), которые будут отображены в виде точки на карте. Точка может иметь подпись, а также быть разного размера и/или цвета, в зависимости от некоторых данных. На практике этот тип карты используется в качестве второго слоя (первый слой, базовый, берется из файла карты). Например, базовый слой отображает карту какой-либо страны, а второй слой - точки с названиями городов, в которых были продажи. Размеры и цвет точки можно настроить таким образом, чтобы был понятен уровень продаж в данном городе.

Если вы выбрали слой на основе файла карты, укажите дополнительно, как хранить картографические данные:

- данные внедряются в файл отчета. При этом отчет может сильно увеличиться в размерах.

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

Карты большого объема (более 30Мб) или с большим количеством полигонов (более 20000) серьезно замедлят работу отчета.

Редактор заливки

При нажатии на Fill мы попадаем в редактор заливки. Во вкладке Кисть есть 3 свойства:

Brush style

Стиль кисти имеет несколько готовых видов форматирования:

Solid - заливка единым цветом;

Clear - чистый фон без цвета;

Horizontal - горизонтальные линии на весь фон;

Vertical - вертикальные линии на весь фон;

Forward Diagonal - диагональные линии на весь фон;

Backward Diagonal - обратно диагональные линии на весь фон;

Cross - перекрёстные линии на весь фон;

Diagonal cross - диагональные перекрёстные линии на весь фон;

Цвет фона
Цвет первого плана

Цвет фона, как и цвет переднего плана можно выбрать из готовой палитры цветов или настроить необходимый цвет нажав на Other.

Редактор цвета

Во второй вкладке у нас настройки градиента для фона.

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

Начальный и конечный цвет можно выбрать из готовой палитры цветов или настроить необходимый цвет нажав на Other.

Стиль градиента
Стиль градиента

В третьей вкладке настройки заливки в виде стекла.

Имеется выбор ориентации: вертикальный, горизонтальный, вертикальное и горизонтальное зеркало.

Цвет можно выбрать из готовой палитры или настроить необходимый цвет нажав на Other.

Blend - коэффициент смешивания цветов (на скриншоте равен 0,5).

Show hatch - отображение штриховки.

Редактор заливки в виде стекла
Редактор заливки в виде стекла

Вернёмся в редактор карты и найдём уже редактор рамок.

Блок линий: можно выбрать стиль из предложенных вариантов, задать ширину линии и выбрать цвет.

Блок рамки: в центре у нас образец кадра, выбираем к каким сторонам применить стиль линий через образец или с помощью кнопочек (поля на всех сторонах, без полей или стороны по отдельности).

Добавляя тень мы также можем указать ширину и цвет.

Редактор рамок
Редактор рамок

Пример цветовой шкалы

Теперь рассмотрим вторую вкладку в редакторе карт - Шкала цветов.

Цвет рамки можно выбрать из готовой палитры цветов, установив ширину рамок. Выставляем позицию шкалы. На примере у нас расположение в правом нижнем углу.

Название шкалы вписываем в поле Text, через Font… настроим шрифт и его размер.

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

Редактор карты

Сохранив полученный результат переходим во вкладку превью и видим готовый результат. Наша карта не будет статичной, ещё можно масштабировать в любом месте, а при наведении на определённую область (в нашем случае на любую страну) будет подсвечиваться весь этот фрагмент.

Создаём карту в формате SHP с помощью кода

Shape далеко не единственный формат для работы с картами, существуют ещё OpenStreetMap (OSM) и GPS eXchange Format, но о них я расскажу в других статьях.

Читайте также: