Вид с Елагина острова

Сплошное неудобство

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

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

А плакать оттого, что я сам долгое время верил в их эффективность.

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

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

А вообще, этим постом я только хотел проверить, могу ли я свои заметки с телефона публиковать.

NextGIS Mobile

Чем плох NextGIS Mobile

Ребята из компании НекстГИС решили устроить 26 сентября большую презентацию, посвященную своим продуктам. Как только мне пришло письмо об этом, сразу понял — пора написать пару строк про их программу для сбора полевых данных NextGIS Mobile. Год назад я впервые установил ее и с тех пор она прошла дендроинтвентаризацию парков Нижнего Новгорода, Чирскую географическую экспедицию, сплавы по рекам Сухой Донец, Ижора и Великанйоки, составление геологической карты южной и средней Карелии, многочисленные рыбалки и путешествия.

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

Список построен по степени убывания трешовости встреченных багов. Смартфон Lenovo A2010-a. Android 5.1

1. Со временем исчезают кешированные тайлы. Примерно через неделю после загрузки тайлов они начинают исчезать из кеша. Не все сразу, в разных зумах, но исчезают. Как будто у каждого тайла есть свой срок давности, после которого тайл перестает отображаться. Это самая лютая беда, поскольку невозможно загрузить один раз карту и надолго уйти в районы без интернета.

2. Не грузится тайл, соответствующий текущему местоположению. Прямо как специально: вся карта подгружается, а фрагмент, который необходим — нет.
NextGIS Mobile

3. При измерении расстояний все или часть подгруженных тайлов исчезает, экран становится черным. Остаются только вектора. После того, как нажимается галка («расстояние измерено»), все возвращается в норму. Но, блин, как мне расстояние на карте измерить, если карты нет?

6. После обновления в начале августа перестало работать измерение расстояний. Все излечилось установкой apk-файла с сайта nextgis.ru, но в начале сентября и по сей день линейка опять не работает.

5. Информационный указатель плохо работает на полигональном слое. Вместо выбранного полигона выделяется что угодно.
NextGIS Mobile

6. При длинных треках (несколько десятков километров и более) программа иногда перестает отображать трек, а пару раз даже прекращала запись трека.

7. Маркер текущего местоположения иногда закрывает карту, в результате приходится идти наугад и часто в неправильном направлении.

На этом список недовольства исчерпывается и начинается список пожеланий. Опять-таки в порядке убывания необходимости.

1. Чрезвычайно не хватает возможности подгрузки растров или mb-тайлов. Приходится переводить все в вектор, а это долго, дорого и не всегда возможно.

2. Часто требуется закешировать карту вдоль маршрута движения или какого-нибудь протяженного объекта. Сейчас приходится загружать огромную лишнюю область, что при медленном интернете создает массу проблем.

3. Очень бы пригодилась фильтрация ошибочных точек трека. При высокой частоте измерений местоположения трек иногда отбрасывает на огромные расстояния ошибочным измерением. В дальнейшем это затрудняет работу с треком, даже просто в OSM такие данные лучше не загружать. Было бы очень замечательно, если бы не фиксировались измерения, значения которых превышают три стандартных отклонения от предшествующих измерений.
NextGIS Mobile

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

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

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

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

8. Сейчас при измерении расстояний, необходимо выставлять две точки. Но чаще всего расстояния измеряются от текущего местоположения, до какого-либо объекта. Было бы удобнее, если бы первая точка выставлялась автоматически в текущем местоположении, а поставить нужно было-бы только вторую. Например, выбрал измерение расстояний, указал первую точку, далее если указать вторую — расстояние будет измеряться как сейчас, если нет — расстояние автоматически рассчитается между выбранной точкой и текущим местоположением.

9. Если выбрано расстояние между объектом на карте и текущим местоположением, это расстояние должно изменяться при движении, причем желательно указывать не только расстояние, но и азимут. Это особенно важно для случаев, когда азимуты необходимо фиксировать точно.

10. Сейчас треки нужно экспортировать отдельно, в результате чего они путаются и тратится лишнее время. Удобнее, когда трек после завершения записи автоматически сохраняется в выбранную директорию на устройстве.

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

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

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

14. Смещение подложки. Оно необходимо даже не столько для OpenStreetMap, сколько для работы с данными, которые готовили криворукие инженеры. Из-за хронической проблемы СК42-WGS84 точки постоянно оказываются не на своем месте и расчет, скажем, расстояния между обнажением и мостом на карте превращается в пытку.

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

16. Иногда таблицу атрибутов требуется отсортировать. Сейчас это невозможно

17. Еще иногда в таблице атрибутов необходимо что-то найти контекстным поиском. Сейчас это то же неворзможно

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

19. При точном определении местоположения ошибку измерений всегда приходиться устанавливать заново. Запомнить, что я всегда использую CE 98 программа пока не умеет.

20. На карте невозможно выставить красивый стандартный масштаб, скажем 1:100 000. Мне это не требуется, но коллеги сетовали, что без этого у них в жизни счастья нет.

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

И жить всем сразу станет намного легче.

консоль WMS-сервера

Установка и настройка OGCServer-master

В прошлый раз мы подняли свой TMS-сервер на базе mapnik. Самое время развернуть на той-же основе свой WMS. Для этого, мы используем библиотеку OGCServer-master написанную Жаном Франсуа Дойоном. Библиотека написана на питоне специально под мапник со следующими ТТХ:

— Поддерживает WMS 1.1.1 и 1.3.0
— CGI/FastCGI, WSGI, mod_python
— Поддерживает все 3 запроса: getcapabilities, getmap и getfeatureinfo
— Выходные файлы в формате JPEG и PNG (только PNG256)
— Обрабатывают ошибки XML/INIMAGE/BLANK
— Поддерживает несколько именованных картографических стилей
— Поддерживает перепроецирование
— Поддерживаются метаданные слоя: title, abstract
— Существует возможность запросить все слои с помощью LAYERS=__all__

При использовании библиотеки следует помнить, что Getfeatureinfo поддерживает только простой текст, не поддерживаются 8-битные растры png (только 256 цветов) и для CGI/FastCGI должна быть доступна запись tempfile.gettempdir() (обычно пишется в «/tmp»). Кроме того, OGCServer-master требует установленных питоновских зависимостей мапника, питоновскую библиотеку для визуализации PIL и модули jonpy.

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

sudo python setup.py install

У библиотеки OGCServer-master есть ряд подводных камней о которых желательно знать до установки. Во-первых, перед установкой рекомендуется исправить имена и заголовки WMS, поскольку их дефолтные значения содержат в себе пробелы. QGis такие записи воспринимает нормально, но у других программ (например, FME) по этой причине могут возникать проблемы с загрузкой WMS-слоев. Для исправления, следует внести правки в шесть файлов из директории ogcserver. Исправленные строки в файлах (прописано «newname») будут выглядеть так:

Файл OGCServer-master\ogcserver\default.conf (2 правки):
Строка 95: wms_name = newname
Строка 98: wms_abstract = newname
Файл OGCServer-master\ogcserver\wms111.py (2 правки):
Строка 147: rootlayertitle.text = 'newname'
Строка 154: rootlayerabstract.text = 'newname'
Файл OGCServer-master\ogcserver\wms130.py (2 правки):
Строка 154: rootlayertitle.text = 'newname'
Строка 161: rootlayerabstract.text = 'newname'

Во-вторых, OGCServer-master более чувствителен к xml-файлу стиля чем сам мапник. Это значит, что при наличии ошибок в файле стиля, которые при старте рендеринга TMS проигнорируются, например line-opacity, сервис WMS не запустится, а выдаст ошибку с указанием всех строк, подлежащих исправлению. С одной стороны, это требует более тщательной работы над стилем, с другой стороны, позволяет легко отловить ошибку. По этой причине, я использую OGCServer-master даже в тех случаях, когда требуется исключительно создание TMS.

После установки, запустить WMS можно с помощью команды

ogcserver путь_к_стилю.xml

Если вы работаете через ssh, можете прописать перед командой запуска «nohup» для того, что-бы после разъединения сервер продолжал работать. После этого можно запрашивать слои в браузере командой:

http://localhost:8000/?LAYERS=__all__&STYLES=&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG%3A3857&BBOX=-20037508.34,-20037508.34,20037508.3384,20037508.3384&WIDTH=256&HEIGHT=256

Либо, через стандартный интерфейс QGis или любой другой программы.

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