Міжнародна конференція розробників
і користувачів вільного програмного забезпечення

Картографический сервис на OpenSource - доступная картография каждому

Дмитрий Степанов, Минск, Belarus

LVEE 2017

In the modern world, geoinformation technologies are widely represented in the life of both individuals and companies as a whole. These are navigation systems, transport monitoring systems and many-sided programs and applications that use spatial information mapping on a cartographic basis. Modernity as a period is an era of commercial development of GIS (geoinformation systems), expansion of the field of their application through integration with DBMS, the emergence of network applications - all this has opened the way for systems that support corporate and distributed geodatabases. This pushed development of not only commercial geoinformation systems but also freely distributed products (QGIS, NextGISWEB, MapServer and others).

— Где карта, Билли? Нам нужна карта…
— Какая карта?! У меня нет никакой карты!
— Где карта?!
(мультфильм “Остров сокровищ”, 1988)

Введение.

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

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

В одной «мифической» компании как-то заметили, что хотя в названии у них есть слово геоинформационные технологии, но услуг, да и собственно геоинформационных технологий, нет. Руководители компании нашли на стороне инженеров и поставили задачу реализовать собственную геоинформационную систему (ГИС) на свободно-распространяемом программном обеспечении, не ввязываясь в дорогостоящий процесс собственно разработки продукта.

Функционал решения должен включать:

  • возможность развития системы как продукта
  • возможность интеграции решения в существующие собственные программные комплексы организации
  • возможность публиковать собственные карты и картографические основы
  • возможность реализовывать слои на картографической основе
  • система должна быть проста в эксплуатации, дабы не содержать дорогостоящий персонал, для использования функционала продукта и в случае продажи не услуги, а собственно программного решения, то есть ГИС.

Выбор решения.

Проведя анализ предлагаемых ГИС-платформ на проприетарной основе и определившись с тем, что бы хотелось получить в итоге, мы принялись за работу.

Что понадобиться?

Картографическая основа. По причине отсутствия финансирования, а также из-за запрета эксплуатировать покупные карты, мы остановились на использовании собственного тайлового сервера, на картографической основе OSM (openstreetmap) 7. Популярность данной картографической подложки обусловлена, во-первых, политикой предоставления тайлов, позволяющей любому желающему свободно использовать тайлы OpenStreetMap или иных картографических основ, разработанных на базе OSM в своих приложениях, а во-вторых, простотой их подключения в современных веб-клиентах, таких как Leaflet и OpenLayers.

Использование собственного сервера карт было обусловлено необходимостью наличия картографической подложки при отсутствии доступа в общедоступным картам OSM, Яндекс Народная и т.п. Это позволяет, в случае необходимости реализовать проект без привязки к стороннему сервису картографической основы. В отдельных случаях вместо картографической основы можно использовать shape-слой, созданный на основе картографической основы.

В качестве решения для создания печатных карт, а так же слоев пространственных данных, был выбран программный продукт QGIS 1 (распространяемый по лицензии GNU General Public License) – как унифицированное решение с большим сообществом и соответственно поддержкой разносторонних модулей и мультиплатформенной архитектурой.

Серверов публикации данных было проанализировано несколько:

  • MapServer (на данный момент наверное самый популярный вариант сервера для публикации пространственных данных — карт).
  • QGIS Web Server (рассматривался исключительно из за высокого уровня совместимости с продуктом QGIS)
  • NEXTGIS Web Server (Данное решение, было найдено случайно и как результат позволило получить максимальный результат)

По результатам изучения данного направления, был сделан выбор в пользу продукта от российской компании NEXTGIS: это обусловлено как распространением их решения по лицензии GNU GPL, так и тем, что они (собрав все описанные выше продукты) реализовали довольно интересный и функциональный продукт в “коробочном” исполнении, доступный для освоения обычным пользователям 4. Также подкупило наличие мобильных приложений (клиентов) для редактирования существующих слоев на веб-сервере и управления сервером с находясь “в поле”.

Что же касается QGIS Web Server 5, данное программное решение довольно простое в эксплуатации, но позволяет публиковать данные как демонстрацию слоя и карты, без конечного взаимодействия с объектами нанесенными на картографическую основу, что само по себе конечно уже много, но недостаточно для реализации поставленной задачи.

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

Пример создания mapfile для MapServer и слоя.

MAP
    NAME "sample"
    STATUS ON
    SIZE 600 400
    SYMBOLSET "../etc/symbols.txt"
    EXTENT -180 -90 180 90
    UNITS DD
    SHAPEPATH "../data"
    IMAGECOLOR 255 255 255
    FONTSET "../etc/fonts.txt"

    #
    # Start of web interface definition
    #
    WEB
        IMAGEPATH "/ms4w/tmp/ms_tmp/"
        IMAGEURL "/ms_tmp/"
    END # WEB

    #
    # Start of layer definitions
    #
    LAYER
        NAME 'global-raster
        TYPE RASTER
        STATUS DEFAULT
        DATA bluemarble.gif
    END # LAYER
 END # MAP


Для хранения пространственных данных большинство рассматриваемых свободно распространяемых продуктов использует СУБД PostgreSQL 8, а точнее, надстройку над СУБД – PostGIS 9, позволяющую хранить в себе пространственные данные (точки, полигоны, линии и некоторые графические объекты).

Опыт использования в реальном проекте.

  • Реализации проекта по созданию онлайн-ГИС для размещения культурных и туристических объектов Беларуси на картографической основе, доступной всем.

  • Отображение на картографической основе информации о работе светофоров с динамическим изменением стилистики отображаемого слоя.
  • Отображение на картографической основе зон отношения к определенному гос. учреждению (милиция, поликлиника, ЖЭС и т.д.v1)

Подытожив, хочется воспользоваться цитатой из киносерии про пирата Джека Воробья:
– Да, раньше этот мир был куда больше…
– Нет, мир остался прежним. Стало меньше содержимого.

Источники:

1 Официальный портал продукта QGISqgis.org

2 Проект QGIS на гитхабе – github.com/qgis/QGIS

3 Веб-клиент для работы с QGISgithub.com/qgis/QGIS-Web-Client

4 Сайт продукта NEXTGISQGISnextgis.ru/nextgis-qgis

5 Реализация QGIS WEB Server – live.osgeo.org/ru/quickstart/qgis_mapserver_quickstart.html

6 GIS-Lab — неформальное сообщество специалистов в области ГИС и ДЗЗ – gis-lab.info

7 Ресурс картографической основы – http://www.openstreetmap.org

8 СУБД – postgresql.org

9 Расширение для базы данных PostgreSQL – postgis.net

10 Проект NEXTGIS на гитхабе – github.com/nextgis

11 Сайт продукта NEXTGISnextgis.ru

12 Проект NEXTGISWEB на гитхабе – github.com/nextgis/nextgisweb

13 Интеграция публикации стилей слоев QGIS на NEXTGISWEBgithub.com/nextgis/nextgisweb_qgis

Abstract licensed under Creative Commons Attribution-ShareAlike 3.0 license

Назад