Pull to refresh

SharpMap: обзор ГИС-движка

Reading time3 min
Views15K
Добрый день, уважаемое хабрасообщество.
По моему мнению тематика работы с пространственными данными и в частности с ГИС-системами слабо освещена на Хабре. Вследствие чего свою первую статью хотел бы посвятить замечательному инструменту под названием SharpMap. Тем более что объект рассмотрения достаточно интересен с точки зрения разработки ГИС-приложений, а информации на русском языке об его использовании мало. Поиск выдает лишь единичные результаты на форумах, посвященных тематике программирования.

Введение


На официальном сайте проекта дается следующее определение:
SharpMap – простая в применении картографическая библиотека для использования в настольных и веб-приложениях. Движок написан на языке C# и основывается на фреймворке .NET 2.0. Распространяется под лицензией GNU Lesser General Public License.

Возможности


В настоящее время ведется разработка двух версий движка, различающиеся по своим возможностям.
Возможности SharpMap v1.0 SharpMap v2.0
Использование .NET языков программирования (C#, VB.NET др.) + +
Представление атрибутов как лейблов + Beta 2
Поддержка точек, линий, полигонов, мультиполигонов, мультиточек и т.д. в соответствии со спецификацией OpenGIS + +
Масштабирование и перемещение по карте + +
Расширенные тематические карты + +
Изменение проекции «на лету» + +
Послойное пространственное индексирование - +
Возможность выбора и подсветки геометрий - +
Пространственный анализ и обработка геометрий - +
Возможность замены геометрий, пространственных индексов и библиотек проекций - +
Для WEB SharpMap v1.0 SharpMap v2.0
Http Handler для создания изображений + не закончено
AJAX — контрол + не закончено
Использование в качестве сервера WMS 1.3.0 + не закончено

Расширения


По-умолчанию SharpMap работает только с векторным форматом Shape-файлов, однако за счет расширений, количество поддерживаемых форматов может быть увеличено.
Расширение Описание
OGR Povider Библиотека, добавляющая поддержку множества векторных форматов данных
GDAL Raster Layer Добавление поддержки множества растровых форматов
PostGIS Провайдер PostgreSQL/PostGIS
Oracle Провайдер пространственной информации Oracle
NetTopologySuite Data Provider Добавляет функциональность NTS
Simple Chart Добавляет к карте диаграммы, основанные на атрибутивных данных
SpatialLine Провайдер SQLite/SpatialLite

Библиотека GDAL/OGR, которая также еще не освещалась на Хабре, заслуживает отдельного рассмотрения и отдельной статьи.


В действии


Реализация приложения с использованием SharpMap и в частности подключение библиотеки GDAL/OGR на первый взгляд показалось мне не совсем очевидным. Пришлось просмотреть множество англоязычных форумов, чтобы разобраться, что к чему.
Пример будет приведен для SharpMap v.1.0 в среде разработки Visual Studio 2008.
Итак, для начала скачиваем ChangeSet проекта. На момент написания статьи актуальна версия №74794.
Распаковываем.

Для демонстрации возможностей движка предлагается в папке Trunk запустить файл проекта SharpMap.VS2008.sln. В SolutionExplorer установить проект WinFormSamples как StartUp Project.

image

На правой панели формы показан набор RadioButton c соответвующими типами файлов. Все тестовые файлы гео-данных хранятся в директории: Trunk\WinFormSamples\bin\Debug\GeoData.
По-умолчанию в правой панели с картой открывается Shapefile.
Аналогичным образом просматриваем пункт Gradiet Theme.

image

При попытке вывести файлы в формате «MapInfo» (векторный) и «GeoTiff» (растровый) возникает ошибка вследствие того, что не подключены соответствующие библиотеки GDAL/OGR. Для их подключения потребуется скачать набор библиотек FWTools и установить.
Затем в директории Trunk\WinFormSamples открываем файл «app.config» и в блоке appSettings меняем все пути на пути к папке FWTools и её поддиректориям (если требуется).
Перекомпилируем проект Build -> Rebuild Solution. Запускаем.
После проделанных манипуляций, появляется возможность открывать множество векторных и растровых форматов и работать с ними.

image

image

На этом хочу закончить. Более подробная информация о SharpMap, а также документация и форум на сайте проекта:
SharpMap v1.0
SharpMap v2.0
Благодарю за внимание!
Tags:
Hubs:
Total votes 10: ↑10 and ↓0+10
Comments5

Articles