image

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

Год назад передо мною возникла задача нанести на карту для совместной работы несколько сот объектов, раскиданных по муниципальному району. Поэтому изначально искал веб-сервис, позволяющий отобразить мои данные на карте в Интернет, но позже изменил подход – оказалось, что полезные возможности от визуализации данных на карте возрастают на порядок, если использовать веб-сервисы совместно с десктопными решениями.

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

Но тут оказалось, что менее искушенные товарищи радуются бесплатному (Open Source) решению QGIS, которое с их слов закрывает нужды широкого круга специалистов, от руководителей экономической безопасности и директоров строительных компаний до геодезистов. Причем, закрывает не хуже по отношении к названным выше коммерческим ГИС, чем LibreOffice нужды пользователей Microsoft Word — вопрос исключительно в привычке.

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

На скриншоте ниже показан пример данных, обработанных нами в QGIS и выложенных на бесплатный облачный веб-сервис NextGIS.com для совместной работы. С NextGIS.com мы познакомимся ниже.

image

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

Приятные сюрпризы от изучения QGIS и NextGIS продолжаются по сей день. Пришло время поделиться опытом.

Геоинформационная система QGIS


> Ссылка на проект

QGIS – это свободная бесплатная десктопная географическая информационная система с открытым кодом. С ее помощью можно создавать, редактировать, визуализировать, анализировать и публиковать геопространственную информацию в Windows, Mac, Linux, BSD (а вскоре и на Android). Система хорошо документирована на русском языке, плюс у нее обширное русскоязычное сообщество пользователей и разработчиков.

Функциональность QGIS определяется большим количеством устанавливаемых расширений, загружаемых через меню «Управление модулями». Можно найти модули под самые разнообразные задачи, от геокодинга, до упрощения геометрии, интеграции с картографическими веб-сервисами и 3D-моделирования ландшафта.

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

Файл проекта и файлы слоев QGIS


Основные объекты, с которыми пользователь работает в ГИС – это слои. Обычный слой представляет собой таблицу, каждой строке которой соответствуют по одному объекту на карте. В отличие от привычных каждому таблиц в стиле Microsoft Excel кроме атрибутивных данных, таких как, например, наименование объекта недвижимости, арендатора, адреса, площади и т.д., в таблице QGIS есть столбец, по умолчанию скрытый, с так называемой «геометрией» объекта – пространственными данными, позволяющими отобразить на карте объект, описанный в соответствующей строке этой таблицы.



В зависимости от типа слоя объектами, которые могут быть разнесены по карте, являются растровые объекты (изображения, например, куски спутниковых снимков) или векторные данные, которые описываются координатам вершин. Существуют три основных типа векторных объектов:

  • точки;
  • линии, в том числе ломаные;
  • полигоны (замкнутые линии площадных объектов).

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

В простейшем варианте пользователь создает свои слои в табличных файлах с расширением «.shp» (от англ. Shape – форма, облик) – родном формате QGIS. Один слой (таблица) содержится в одном файле .shp. Если необходимо передать кому-то картографическую информацию для дальнейшей работы, то можно отправить один файл «.shp», хотя во многих случаях целесообразнее запаковать в архив и передать всю папку проекта.

Как уже было сказано, для хранения геометрии отводится отдельное поле в таблице слоя. Если его нет в источнике (файле, базе данных, внешнем приложении), то QGIS поможет его создать. Это значит, что можно, например, присоединить в проект выгруженный из Microsoft Excel файл с адресами контрагентов в формате CSV, создать в нем поля геометрии или конвертировать в полноценный слой «.shp» для отображения этих адресов на карте.



QGIS позволяет присоединять в проект файлы таблиц слоев во множестве форматов, например MapInfo, ArcGIS или даже CSV, но как правило, после присоединения я их сразу конвертирую в формат QGIS (.shp), так как при этом появляются дополнительные возможности, особенно в части стилизации. Иногда присоединенные файлы слоев имеют неверную кодировку текста. В этом случае правильную можно выбрать в свойствах слоя.

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

Что немного сбивает с толку новичка? Загруженные в проект слои по умолчанию защищены от записи и не редактируются, на них нельзя наносить новые объекты, передвигать их, изменять атрибуты и добавлять поля в таблице. Для всего этого необходимо выделить нужный слой и нажать кнопку редактирования. После этого станут доступны соответствующие другие кнопки и опции.

Не забывайте, что ваши правки распространяются на выделенный слой и если вы переключились на другой — прежний хотя и останется в режиме редактирования, но нанести на карту новый объект у вас не получится до тех пор, пока вы не выберите редактируемый слой вновь. Излишне напоминать, что надо периодически сохранять изменения редактируемого слоя (или целиком проекта), чтобы их не потерять.


Стили


Таблицы с данными и правила их отображения на карте (стили) хранятся и обрабатываются QGIS раздельно. Что такое таблицы мы поняли, теперь необходимо разобраться с тем, что такое стили.

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



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

Использование слоев из публичных источников


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

Принципиальная разница между протоколами WMS и WFS заключается в следующем:
  • WMS — передает картографическую информацию в виде готовых изображений (растров), привязанных к координатам.
  • WFS — позволяет запрашивать и при наличии полномочий редактировать на карте векторные пространственные данные, такие как дороги, береговые линии, земельные участки и т.д.

Существует много полезных публичных сервисов для предоставления картографической информации в виде слоев (обычно WMS), доступных по веб-ссылке и напрашивающихся в наши проекты QGIS. Множество из этих сервисов доступны из модуля QGIS «Quick Map Services».

После установки модуля откройте в его настройках вкладку «Загрузить сервисы» и нажмите кнопку «Получить источники данных». Вам станут доступны публичная кадастровая карта, фотопланы от Google и Yandex, лицензионно чистая и, на мой взгляд, наиболее подробная из доступных карт OpenStreetMap (она же OSM), а также еще десятки полезных слоев, которые можно разместить в своем проекте.



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

Геокодинг


Геокодинг – замечательное изобретение. Если под рукой есть таблица в Excel с адресами 10000 объектов (например, перечень контрагентов), почему бы их тоже не анализировать на карте.
Для этого в QGIS конвертируем таблицу из CSV-файла в слой .shp (модуль «RuGeocoder»). При этом таблица слоя получит скрытый столбец с геометрией (координатами точек), но он пока будет пуст.

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

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



Системы координат


Полезно понимать, что существуют различные системы координат. Их сотни.

В школе мы изучали только географические (WGS-84), представляющие точку на карте в виде градусов, минут, секунд широты и долготы. Однако в геоинформационных системах географические координаты хранятся в градусах и их десятичных долях, а минуты и секунды не используются (например, описание точки с координатами 45°34?55? северной широты и 15°30?0? западной долготы будут выглядеть так: 45.581944°, -15.5°).

Нередки случаи, когда из сторонних источников вы получаете слои, поля геометрии которых используют одну из прямоугольных систем координат. Прямоугольные системы активно используют геодезисты и проектировщики — это, так называемые, местные системы координат (МСК). Прямоугольные системы координат предполагают, что земля плоская и все измерения по осям абсцисс и ординат проводятся от конкретной нулевой точки в километрах от нее.

Зачем их так много? Дело в том, что допущение о плоской планете не позволяет использовать одну местную систему координат по всей Земле, так как уже через несколько сотен километров погрешность становится ощутимой. Зато они незаменимы в случае, когда требуется высокая точность на территории, ограниченной несколькими градусами широты и долготы. Так в Московской области геодезистами используются системы МСК-50 зоны 1 или 2.

QGIS позволяет выбрать систему координат для каждого слоя. То есть в одном проекте могут быть слои с разными системами координат, и они легко конвертируются из одной системы в другую – достаточно сохранить слой в shp-файл или базу данных, выбрав в качестве параметра новую систему. Кроме того в QGIS можно настроить систему координат в которую будут переводиться все слои проекта при их отображении на экране, а также системы которые будет устанавливаться по умолчанию для новых проектов и слоев в текущем проекте.

Информация о системе координат хранится вместе с таблицей в shp-файле QGIS, и передавая кому-либо файл слоя вместе с ним вы передаете соответствующие настройки. В других источниках слоев, включаемых в проект, информация о системе координат может отсутствовать. Поэтому, если вы получили от кого-либо слой с информацией, которая почему-то не отображается на карте, сделайте следующее – откройте таблицу объектов этого слоя, выделите любую строку и нажмите кнопку перехода к объекту. Если на экране отобразилась Африка или мировой океан, значит, QGIS систему координат распознал неправильно. Уточните у тех, от кого получен источник (файл), в какой системе координат хранятся данные, и установите ее для слоя в QGIS.



Если нужной системы координат нет в QGIS, то ее можно ввести самому (Пользовательская система координат). Для этого надо знать строку настроек. Google вам в помощь — попытайтесь использовать запрос с наименованием искомой системы плюс, например, «пользовательская система координат QGIS».

Для чего еще это может понадобиться? Пользователи публичной кадастровой карты хорошо знают о проблеме сдвига слоев кадастра относительно спутниковой подложки. Она сбивает с толку, мешает визуально оценивать границы земельных участков. Аналогичную картину мы видим при добавлении слоя публичной кадастровой карты в QGIS вместе со снимками Yandex или Google.

Чтобы исправить ситуацию я создал в QGIS собственную пользовательскую систему координат со следующими параметрами, подобранными эмпирическим путем, и установил ее для слоев кадастровой карты:

+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=-11.0 +y_0=-6 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs

В результате проблема снята.

Немножко высшего пилотажа


Первое. Интересен вариант хранения пространственной информации в базе данных. Если есть база данных Microsoft SQL, Oracle или Postgres в которых, например, находится таблица с перечнем контрагентов с их адресами или таблица со списком оборудования, раскиданным по территории, то эту таблицу (запрос) полезно зацепить в QGIS.

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

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

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

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

Для этого создаем слой .shp, располагаем на нем объекты, занося в один из атрибутов уникальные номера, соответствующие идентификаторам этих объектов в 1С. То-есть в обеих таблицах должны быть поля с одинаковыми идентифицирующими данными по которым их можно связать между собой. Настраиваем в свойствах слоя .shp соответствующие связи. В результате мы не меняем из QGIS данные 1С, но их изменение со стороны 1С сразу влияет на отображение объектов и сопутствующей информации на карте в QGIS. Осталось настроить свойства слоя карты для красивого отображения информации и наслаждаться результатом в реальном времени.



Третье. Отображать данные на карте в QGIS можно не только точками, линиями и полигонами с надписями, но и диаграммами, формируемыми автоматически на основе представленных данных.

Четвертое. Можно получать из QGIS аналитику в виде таблиц и итоговых данных, рассчитанных с учетом геопространственной информации. Например, имея таблицу населенных пунктов с количеством жителей в каждом и таблицу дорог из OSM, быстро подсчитать население, проживающее на расстоянии более 3 километров от региональных и федеральных автодорог.

NextGIS.com


Еще одним открытием года для меня стал облачный продукт NextGIS.com. Молодая российская команда NextGIS активно участвует в развитии QGIS. В этом можно убедиться по количеству доступных в QGIS модулей их производства. В 2016 году они запустили упомянутый картографический веб-сервис и неустанно расширяют его возможности.

> Ссылка на проект

Исходники проекта доступны на github. Так что если есть желание развернуть веб-сервис самостоятельно — нет проблем. Однако условия, которые предлагает команда NextGIS для доступа к своем облаку, без сомнения заслуживают внимания даже самых прижимистых пользователей.

Создать свою собственную веб-ГИС в облаке NextGIS можно бесплатно. Вы получите доменное имя в формате вашеимя.nextgis.com и можете почти без ограничений использовать все предоставляемые ими вкусности. Самое то, чтобы начать знакомиться с решением и использовать его на практике. Главное ограничение бесплатной подписки – невозможность ограничить доступ на чтение к информации. Любой может видеть то, что размещено вами.



Уже с бесплатной подпиской вы можете создавать сколько угодно веб-карт с произвольными настройками, компоновкой и стилями загруженных вами слоев, а также рассматривать, анализировать карты на рабочем компьютере и, в комплекте с NextGIS Mobile, собирать данные в поле, размещая их сразу в облако. Можно встраивать карты в веб-сайты или смотреть на сервисе.

Платная подписка снижает ограничения, в том числе по количеству пользователей, редактирующих слои (изначально один пользователь), разграничению их прав. Какие-то слои можно показать всем, а права доступа к другим ограничить. Плюс предоставляется возможность использовать собственное доменное имя, например gis.моякомпания.ru и получить разнообразие преднастроенных подложек (в бесплатной подписке есть только карта OpenStreetMap).

Со слов представителя компании сейчас условия подписки меняются. Ориентироваться нужно на информацию, размещенную на сайте сервиса по адресу nextgis.ru/pricing. Ранее платный тариф был единым и составлял 3000 руб.в месяц. Теперь платная подписка стоит от 600 рублей. Обещают, что за те же 3000 руб. в месяц клиент будет получать полный и актуальный комплекс программного обеспечения и сервисов, как и раньше.

Интеграция QGIS и NextGIS.com


Остановлюсь на нескольких не очевидных принципах интеграции QGIS и NextGIS.com. Работая в QGIS, вы создаете в своих проектах слои и их стили, как это уже рассматривалось выше. Теперь для того, чтобы разместить созданный слой на веб-карте у нас есть несколько способов. Рассмотрим сначала длинный путь, чтобы разобраться с идеологией NextGIS Web. Для размещения слоя необходимо:

  • зайти в QGIS в свойства слоя и из них сохранить стиль в файл;
  • сохранить файл слоя в системе координат WGS 84 (EPSG:3857).

Затем, имея два файла (стиля слоя с расширением .qml и таблицы слоя с расширением .shp), надо:

  • войти в свой аккаунт на своем сайте в облаке NextGIS.com,
  • создать новый слой через опцию «Создать ресурс — Векторный слой» и во вкладке «Векторный слой» загрузить файл с расширением .shp.



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

Наконец, настало время разместить слой на карте. Для этого откройте главную страницу своего сайта. Среди перечисленных объектов основной группы ресурсов будет как минимум одна существующая веб-карта. Войдите в ее настройки и выберите вкладку «Слои». Нажмите «Добавить слой» и отыщите в открывшейся таблице ваш слой и под ним стиль, в котором хотите, чтобы его данные отображались на Веб-карте. Нажмите «Сохранить» и «Веб-карта – Открыть». Слой перед вами на карте — включите его для отображения.



Действительно длинный путь, не так ли? Но есть маршрут, который решает все это и многое другое прямо из QGIS в несколько нажатий клавиш и которым пользуюсь я.

Модуль NextGIS Connect для QGIS


Установите через меню QGIS «Управление модулями» модуль NextGIS Connect. В интерфейсе появится виджет «Ресурсы NextGIS». В его настройках создайте подключение, указав данные вашего аккаунта, в том числе адрес своего сайта (в формате «http://мойсайт.nextgis.com»), имя пользователя «administrator» и полученный при регистрации пароль. Вместо ввода логина и пароля можете использовать учетную запись гостя, но с нею не удастся загружать данные из QGIS на веб-сайт — можно только получать информацию с сайта. После регистрации на экране отобразятся все ваши ресурсы на облачном сервисе.


Теперь для того, чтобы разместить слои QGIS на веб-карте есть два способа.

Первый – загрузить целиком проект QGIS одной кнопкой. Он будет поднят в облако в виде отдельной папки со всеми слоями и новой веб-картой. Прямо из окна можно перейти к ней и увидеть, как выглядят ваши данные в браузере, поделиться ссылкой с друзьями, коллегами, встроить карту на какой-нибудь сайт.

Но при загрузке обновленных данных таким способом мы сталкиваемся с неприятным фактом – новый загруженный проект будет использовать новые URL-адреса его ресурсов, в том числе веб-карт, которыми мы успели поделиться с друзьями и коллегами.

Поэтому есть второй способ более изящный, предназначенный для работы с уже созданными веб-картами. Для этого мы поднимаем из QGIS в облако NextGIS.com по одному новому или измененному слою:

  • удаляем в окне NextGIS Connect слои, которые хотим поднять обновленными;
  • выбираем в окне NextGIS Connect конечную папку ресурсов;
  • выделяем слой в QGIS правой кнопкой мыши и в контекстном меню выбираем «NextGIS Connect – Импортировать выбранный слой». Выбранный слой копируется в облако вместе с его стилем;
  • повторяем действия для всех слоев, которые хотим обновить на веб-карте;
  • выделяем в окне NextGIS Connect карту на которой собираемся разместить слой и переходим на нее щелчком правой кнопки мыши через контекстное меню «Открыть в ВебГИС»;
  • в открывшемся окне ресурса веб-карты на сайте нажимаем кнопку «Изменить», выбираем вкладку «Слои» и нажимаем кнопку «Добавить слой». Находим загруженные слои и добавляем на карту стили, размещенные под каждым из них. Нажимаем «Сохранить».

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

Готово, по ссылке «Веб-карта – Открыть» увидите карту с прежним URL и комбинацией старых и обновленных слоев.

Растровые слои


Полезность пользовательских растровых слоев в качестве подложек карт при работе в QGIS очевидна не сразу, поскольку существует модуль расширения «Quick Map Services», который в пару кликов добавляет в проект слои публичных веб-карт, например Яндекс-Спутника или кадастровой карты.

Но со временем нужда в них появляется в следующих случаях если:

  • на карте нужен более детализированный, чем доступные публично, фотографический план отдельного объекта или территории, который есть у вас в наличии
  • вы работаете в дороге, при нестабильном доступе в Интернет или если вас досаждает длительная загрузка публичных снимков при каждом перемещении экрана;
  • вы пользуетесь бесплатной версией NextGIS.com, а единственная подложка OpenStreetMap на ваших веб-картах вас не устраивает.

Во втором и третьем случае вам поможет открытое десктопное приложение SAS.Планета. Загрузите его себе на компьютер с сайта. Очертите территорию, которую желаете заграбить в растровый слой, выберите в меню «Операции с выделенной областью», откройте вкладку «Склеить» и установите выбранные настройки (например, как на рисунке). По кнопке «Начать» на вашем компьютере будут сформированы растровые изображений с геопривязкой, которые можно загрузить в качестве растрового слоя в QGIS или ресурса в NextGIS.com.



На что надо обратить внимание:

  1. Предпочтительный формат файла для хранения растровых данных – GeoTIFF с компрессией JPEG. Он занимает мало места, единственный загружается на NextGIS.com и может содержать тайлы – маленькие разномасштабные изображения, эффективно и быстро открывающиеся на веб-карте при перемещении экрана. Все тайлы по умолчанию хранятся в одном файле, но этого монстра не надо каждый раз загружать себе на компьютер, из него будут выбираться строго необходимые куски-тайлы. Однако, если файл все равно слишком велик для вас или для загрузки на сервис веб-карты, то его можно разбить на части как это показано (2x2 куска, 4 файла) в указанных выше настройках.
  2. В проект QGIS растровый слой можно поместить простым перетаскиванием. А если надо скрепить несколько частей, то можно использовать так называемый «виртуальный слой» или просто собрать все растровые слои в группу.
  3. Максимальный масштаб для Yandex-Спутника равен 18. 17 достаточен для многих задач, а файл с тайлами уменьшается значительно.
  4. При склейке в SAS.Planet в GeoTIFF-файле размещаются только тайлы указанного масштаба, и после прикрепления растрового слоя в проект QGIS в свойствах слоя рекомендуется выбрать опцию «Пирамиды». Растры высокого разрешения могут замедлить навигацию в QGIS. Создание копий данных низкого разрешения (пирамид) позволяет существенно повысить скорость, поскольку QGIS будет автоматически выбирать оптимальное разрешение в зависимости от текущего масштаба. Создайте пирамиды меньших размеров.

NextGIS Mobile


Если вам приходится работать в поле, есть желание оперативно получать информацию в пути с карты, одновременно собирая данные и оперативно делясь с другими, то полезно использовать бесплатное приложение NextGIS Mobile для смартфона или планшета. С его помощью можно получать и обрабатывать географически распределенную информацию из различных источников, в том числе со слоев NextGIS.com и сторонних баз данных, загружать из QGIS, изменять, рисовать объекты и создавать новые слои, возвращать их в QGIS. И все в привязке к собственному местоположению. Приятна возможность сохранять в слои собственные треки перемещений.

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



Вместо заключения


Есть еще множество способов работы с упомянутыми выше решениями. Например, слои можно разместить на каком-нибудь бесплатном или собственном сервере баз данных PostgreSQL, вести с ними работу в QGIS и других приложениях, например LibreOffice, Microsoft Access или Microsoft Excel, а на сайте NextGIS.com один раз настроить слой для отображения на веб-карте. В результате все изменения данных в QGIS или в Microsoft Excel немедленно будут отображаться на веб-карте.

К размещенным в облаке объектам слоя можно прикреплять на карте документы и фотографии. Их просмотр удобен и нагляден. Правда, если этот слой вам приходится периодически заменять новым из QGIS, то с удаленной версией исчезнет и вся наполненная вами красота. Альтернатива – работать в облаке не путем замены слоев из QGIS (через модуль NextGIS Connect или вручную), а опосредованно, например, опять же, через однажды настроенный слой, получающий информацию из базы данных Postgres.

В любом случае, связка QGIS, NextGIS.com и NextGIS Mobile является гибким и полезным инструментом, доступным каждому. Переход к работе с ГИС для решения прикладных задач с географически распределенными данными – увлекательная задача и усилия по изучению предмета окупаются возможностями, которые мы тем самым открываем перед собой.

В заключение для иллюстрации материалов статьи предлагаю вот это короткое видео.

Поделиться с друзьями
-->

Комментарии (28)


  1. ParaPilot
    13.02.2017 16:34

    За статью спасибо.
    У меня есть два вопроса, которые немного не понял.
    1. Откуда берутся данные для работы в программах (карты, планы т т.д.)? Открытые источники есть?
    2. Есть ли возможность в перечисленных инструментах по картам высот получать модели рельефа?


    1. boogiebomzh
      13.02.2017 16:45

      1. Открытые данные и ссылки на них живут на gis-lab.info.
      2. Раньше были плагины, например, Globe. Еще можно средствами GRASS.


    1. svsta
      13.02.2017 18:17

      Да, в том числе есть плагин «Quick Map Services», который описал в статье. Много на gis-lab.info. Модели рельефа тоже можно формировать, но этот функционал мне был не нужен.


  1. boogiebomzh
    13.02.2017 16:36
    +2

    Преподаю ГИС лесникам, на практических занятиях работают в QGIS. Очень легко дается многим. Единственный недостаток с точки зрения обучения в вузе — слишком быстро развивается, не успеваю каждый год переделывать методички. Раньше работали в Панораме, бррр. Еще была лицензия на ArcGIS, но я попросил ее не продлевать. Не хочу привязывать к продукту, который стоит миллионы.


    1. FSA
      13.02.2017 17:18
      +1

      Используя ArcGIS вы ещё и к Windows привязываете людей. Так что если QGIS позволяет выполнять задачу, то это неплохой выбор.


    1. uageo
      13.02.2017 22:21

      Согласен, ArcGIS — очень дорого


    1. ls18
      14.02.2017 12:07

      Извиняюсь за оффтоп, а можно узнать, где вы преподаете лесникам? И где можно выучиться на лесника?


      1. boogiebomzh
        14.02.2017 12:21

        https://www.ucheba.ru/for-abiturients/speciality/51926 выбирайте, что вам ближе.
        Я преподаю в Иркутске.


  1. dizjis
    13.02.2017 18:18

    Судя по беглому взгляду в документацию — возможность встроить QGIS в свое приложение имеется, да?


    1. svsta
      13.02.2017 18:21

      Карты можно экспортировать в jpeg, или вообще создавать атласы в своих проектах. Если речь о том, чтобы вставить интерактивную карту в веб-приложение, то NextGIS Web дает возможность встраивания кода карты на сторонний сайт. И, в статье не упоминал, но сам QGIS может работать как картографический веб-сервис, так что вводите в локальной сети адрес сервера и получаете карту в браузере.


      1. dizjis
        13.02.2017 19:40

        Спасибо за информацию. Jpeg не подходит. Мне нужно именно полноценное встраивание в декстоп-приложение, желательно без посредников. На данный момент используется веб-апи дубль-гиса во встроенной вкладке с браузером и хочется от него уйти уже, наконец. В документации я вроде как нашел нужную инфу, но там для Qt, с которым я мало знаком. Да и основное приложение написано с использованием другого IDE и языка


    1. pankraty
      16.02.2017 18:42

      Возможность имеется, но лицензия GPL накладывает определенные ограничения на такой продукт. Оцените, насколько это подходит для вашей задачи.


  1. za90
    13.02.2017 18:32
    +2

    Автору благодарность (и два чая) за большой труд.
    Всех заинтересованных приглашаю в https://t.me/nextgis_chat (и в https://t.me/ruosm конечно).


  1. mgis
    14.02.2017 11:24
    +1

    Статья очень полезна, новичкам в ГИС.
    QGIS на самом деле прекрасен.
    А еще понравился QGIS MAP SERVER.
    Если на клиенте только QGIS то работает в несколько раз шустрее Geoserver-а. Кстати из растра умеет сам тайлы нарезать. Гляньте тоже, скорее всего и вам пригодится.


  1. federalkosmos
    14.02.2017 14:19

    Возможно ли с помощью данных ГИС получить полный список адресов зданий конкретного города, либо массив их координат?


    1. svsta
      14.02.2017 14:22

      Если город описан в OSM, то без проблем. Какой город?


      1. federalkosmos
        14.02.2017 16:42

        Йошкар-Ола. В OSM есть, через экспорт выдаётся файл с массивом координат, который надо править руками, чтобы оставить только сами координаты. И во всём этом здания, дороги и прочее.

        А нужны адреса только зданий (или их координаты). Понять, как это сделать по любому городу.


        1. bopoh13
          14.02.2017 16:52

          Дык, было недавно.


        1. svsta
          14.02.2017 17:23

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

          Навскидку погуглил.

          Для Марий Эл нашел только предложение платного скачивания послойной вырезки из карт OSM — 200 рублей тут. Уверен, что можно найти вырезку бесплатно или поработать с послойной картой всей России (см.ниже как). Тоже была на гислаб.

          Чтобы далеко не ходить — на странице платного предложения выше есть список стандартных слоев OSM, а при переходе по ним — полей соответствующих таблиц. Нас интересуют два слоя:

          • building-point — 149 объектов
          • building-polygon — 123524 объекта

          В таблицах содержатся схожие поля, описывающие адреса — можем делать с ними что хотим. Конечно, для этих объектов есть геометрия. И если нам из полигона контура здания надо получить x, y точки, то QGIS это легко делает.

          BUILDING A_STRT <addr:street>
          A_SBRB <addr:suburb>
          A_HSNMBR <addr:housenumber>
          B_LEVELS <building:levels>
          NAME Но надо еще отделить адреса в городе Йошкар-Ола из общей массы, а если скачаете карту всей России, то тем более. Судя по описанию в таблицах домов в адресе нет поля город. Не проблема — берем еще слои из карты. Нам помогут:
          • boundary-polygon -143 объекта

          или
          • settlement-point — 1630 объеков

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

          Вуаля


  1. svsta
    14.02.2017 18:20

    Ссылка на бесплатное скачивание ноябрьской версии карты Марий Эл:
    http://be.gis-lab.info/data/osmshp/latest/RU-ME.7z

    Скачал, открыл в QGIS — все выше указал верно.

    Есть видео как выделить дома в пределах полигона границ территориального образования


    1. federalkosmos
      14.02.2017 21:34

      Благодарю безмерно.


  1. calvin_rus
    15.02.2017 17:03

    Очень интересная статья. Спасибо!

    Например, слои можно разместить на каком-нибудь бесплатном или собственном сервере баз данных PostgreSQL, вести с ними работу в QGIS и других приложениях, например LibreOffice, Microsoft Access или Microsoft Excel, а на сайте NextGIS.com один раз настроить слой для отображения на веб-карте.


    Понимаю, что путаю теплое с мягким, однако есть задача сделать себе «наколеночный» редактор слоев карт, которые дальше уже визуализируются средствами JS-библиотек OSM.

    Есть ли готовые «велосипеды», которые бы позволил экспортировать карту в определенный формат, а потом визуализировать средствами leaflet, например?


  1. svsta
    15.02.2017 18:00

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

    Но если правильно понял вопрос, то надо сформировать, например, код JS для размещения 100 объектов на карте. Пусть это будут 100 полигонов.

    Заглядываю в пример со страницы библиотеки:

    var polygon = L.polygon([
        [51.509, -0.08],
        [51.503, -0.06],
        [51.51, -0.047]
    ]).addTo(mymap);
    


    Если изменения не очень частые, то вручную бы взял координаты из QGIS, обработал и слепил бы строки в Excel. Или, если требуется постоянная корректировка данных, то да, зарядил бы, через базу данных по тому же принципу:

    — Открываю QGIS, создаю слой полигонов с системой координат WGS 84 (EPSG:4326) и наношу объекты на этот слой. Затем открываю таблицу слоя и щелчком по левому верхнему углу выделяю всю таблицу. Копирую через CTRL-C. Вставляю на лист Microsoft Excel. Получаю созданную ранее таблицу с аттрибутами, но с еще одним столбцом геометрии в весьма читаемом виде. Пример значения столбца:

    Polygon ((35.93971509137796261 56.84680113750829378, 35.94017645918111015 56.84715874618873244, 35.94050731111398278 56.84702646086687139, 35.94121239322927153 56.84676224849280857, 35.94044389596734135 56.84617271621075218, 35.93949998958188985 56.84652204346423332, 35.93981141884147945 56.84676244409779144, 35.93971509137796261 56.84680113750829378))


    Далее через CTRL-H меняю.
    ", " ---> "],@["
    «Polygon ((» ---> «var@polygon@=@L.polygon([»
    "))" ---> "]).addTo(mymap);"
    " " ---> ",@"
    "@" ---> " "

    Все, строки выглядят так:
    var polygon = L.polygon([35.93971509137796261, 56.84680113750829378], [35.94017645918111015, 56.84715874618873244], [35.94050731111398278, 56.84702646086687139], [35.94121239322927153, 56.84676224849280857], [35.94044389596734135, 56.84617271621075218], [35.93949998958188985, 56.84652204346423332], [35.93981141884147945, 56.84676244409779144], [35.93971509137796261, 56.84680113750829378]).addTo(mymap);
    


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


    1. pankraty
      16.02.2017 14:56

      … а потом обнаружить, что в полигонах бывают дырки…
      … а потом обнаружить, что попадаются еще MULTIPOLIGON и, не приведи господь, CURVEPOLYGON…
      … а потом обнаружить, что длина записи для содержимого ячеек Excel 32767 знаков, а WKT каких-то объектов вылезает далеко за эти пределы…

      Не то чтобы решение плохое — сам множество операций делаю в Excel. Просто есть подводные камни )

      Если окажется, что штатными средствами имеющихся программ задача не решается, рекомендую посмотреть на библиотеку NetTopologySuite (или JavaTopologySuite, или GEOS — смотря какой язык вам доступнее). Там из WKT-текста легко создать геометрические объекты, с которыми можно делать уже все, что заблагорассудится.

      Если говорить про обработку геометрии в БД — то копайте в сторону PosgreSQL + PostGIS, не изобретайте велосипедов самостоятельно.


      1. svsta
        16.02.2017 15:40

        есть задача сделать себе «наколеночный» редактор слоев карт, которые дальше уже визуализируются средствами JS-библиотек OSM.

        … а потом обнаружить, что в полигонах бывают дырки…
        … а потом обнаружить, что попадаются еще MULTIPOLIGON и, не приведи господь, CURVEPOLYGON…
        … а потом обнаружить, что длина записи для содержимого ячеек Excel 32767 знаков, а WKT каких-то объектов вылезает далеко за эти пределы…


        Речь идет о том, чтобы самому наносить объекты. Так что вероятность таких проблем минимальна.


  1. pankraty
    16.02.2017 14:32

    Статья полезная, спасибо.

    Выскажу только пару замечаний/дополнений.

    1. Формат SHP, конечно, по-своему хорош. Хотя бы тем, что он открытый, и его «едят» практически любые ГИС-программы. Но поскольку он весьма древний, есть у него свои ограничения: геометрия только одного типа на слой (либо точки, либо линии, либо полигоны), довольно узкие ограничения по длине наименований, длине значений и количеству полей; часто возможны проблемы с кодировкой текста (особенно, если передавать между разными программами). Плюс обработка SHP-файлов довольно медленная, что для больших объемов может быть критичным. Как альтернативу предлагаю рассмотреть SQLite — он также поддерживается многими программами (хоть и не столь широко) и лишен большинства недостатков SHP. В одном файле SQLite можно собрать сразу несколько слоев (иногда это плюс, иногда минус) и даже организовать связи между ними через внешние ключи.

    2. Про географические системы координат — строго говоря, в школе мы не изучали WGS84, т.к. это система координат на конкретном (забугорном) эллипсоиде. То, что изучалось в школе, правильнее назвать LL (Долгота/Широта без привязки к конкретному элипсоиду). Но это мелочь. Гораздо серьезнее то, как вы создали СК, подобрав параметры эмпирическим путем. Вы, конечно, вольны делать, как вам удобно, но рядом надо приписать: НЕ ПОВТОРЯЙТЕ НИ В КОЕМ СЛУЧАЕ! Любая эмпирика в вопросах систем координат неизбежно рано или поздно приводит к тому, что накапливается значительный объем данных, привязанных черт знает как, и который потом кому-то надо пытаться привести в нормальный вид. И если при использовании разных, но известных СК это еще хоть как-то возможно (и то не гарантировано, если в разное время в один источник пишутся данные с разными видами привязки), то в случае таких вот пользовательских, искусственно подогнанных координат, накопленные данные рискуют отправиться в конце концов в мусорку.

    В остальном — да, неплохой ликбез.


    1. svsta
      16.02.2017 15:52

      1. Насчет SQLite — согласен. Но не хочется заводить начинающего пользователя в дебри. Тем более, при работе с SQLite столкнулся с проблемами именования полей. Только короткие, латиница, запрещенные слова «type», «source», «id», и прочее.

      2. Географические системы координат — да, но опять же, ставил задачей направить пользователя по кратчайшему маршруту. Хочешь получать географические координаты — настрой слой на систему координат WGS 84.

      Насчет эмпирической пользовательской системы — не согласен. Многое зависит от задач.

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

      Кроме того, эта система применяется ведь не к моему слою, а к тому, который выдает ПКК. Так что мы эти данные не храним и не копим.

      Кстати, может кто знает, как из ПКК получить контур участка на свой слой?


      1. pankraty
        16.02.2017 18:36

        Надо же, у меня ровно обратный опыт — в SHP жесткие ограничения на именования полей (латиница, без пробелов, до 30 знаков, если не ошибаюсь), а в SQLite — хоть русскими буквами с пробелами, и без проблем.

        устранение сдвига с любой погрешностью благо.

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

        как из ПКК получить контур участка на свой слой?

        Одно время на ПКК был доступен публичный сервис, позволяющий получать данные по кадастровым участкам в JSON в любой системе координат, но потом эту лавочку прикрыли. В любом случае, такое использование противоречило пользовательскому соглашению, потому что на выписках они деньги зарабатывают.
        Так что, думаю, правильный ответ: «законно — никак».