Ламельки

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

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

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

Если у вас в детстве не было ламелек, то вот они. Фото честно спизженно с сайта компании Мосточлегмаш.

ламельки

Поселок ХБК с хуевыми текстурами домов

Я постоянно сталкиваюсь с государством. Как и каждый из вас, впрочем. И за все эти годы я ни разу, ни разу, блядь! не встретил ни одного государственного учреждения, которое по качеству работы было бы сравнимо хотя бы со среднестатистической «Пятерочкой». Школа, армия, институт, миллионы инстанций, поликлинники, мусарни, налоговая, — все, что имело на фасаде официальный герб и эпичную аббревиатуру, скрывало под собой рядовое прибежище неудачников. Иногда попадались люди-исключения, но даже они не могли ничего поделать с тем, что их место работы — кусок бесполезного дерьма.

За несколько десятков лет накопилась вполне репрезентативная выборка, анализ которой однозначно указывает на необходимость вертеть на хую все предложения о сотрудничестве с государственными организациями. Гос.заказы я в гробу видал. Если хотите сделать что-то, напишите мне на электронную почту или позвоните по телефону и скажите: «Есть такое-то предложение с такими условиями. Какие ресурсы для этого нужны?».

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

А если кому-то этот факт не нравится, предлагаю начать с выяснения вопросов: откуда у офицеров и прапорщиков дачи, откуда у преподавателей деньги на автомобиль, откуда у врачей золотые зубы, откуда у учителей компьютеры и откуда у половины жителей ХБК в домах толстые катушки с белыми нитками.

«Что за хуйню я сейчас читаю?» — спросите вы. А я и сам не знаю. Просто я отрендерил в блендере центральную часть поселка ХБК, а на публикацию картинок без сопроводительного текста у меня хуй не стоит.

P.S. Текстуры подобраны хуево, но об этом вы уже читали

Рендер первый
ХБК_плоскость

Рендер второй на подложке, честно спизженной у Bing-а
ХБК_космос

Мапим по гуглопанорамам — наземное фотограмметрическое картирование в QGIS с помощью плагина stereoSurveys

Read in English

Замечание 1. В данной статье не расматриваются юридические вопросы законности использования описанного метода при работе с данными компании Гугл. Мое дело метод показать, а с юристами сами разбирайтесь.
Замечание 2. Собственно, ничто не мешает использовать любые другие данные, вплоть до своих фотографий.
Замечание 3. Код описываемого ниже модуля от первой до последней строки написан Enrico Ferreguti. Мое значение в этом проекте чисто терапевтическое.

Пару месяцев назад я опубликовал пост о технологии применении снимков Google StreetView для фотограмметрического картирования территории. Этот незатейливый текст вдохновил Enrico Ferreguti (по его словам) на разработку модуля StereoSurveys для QGIS.

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

Для иллюстрации работы модуля, нанесем в точечном слое местоположение фонарных столбов на улице Текстильной (ХБК, город Шахты). Со спутникового снимка их не видно, поэтому единственный способ нанести их не от балды — воспользоваться описываемым методом.

0

Улица Текстильная, вдоль которой необходимо отметить фонарные столбы

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

2. Скачанный архив необходимо распаковать в папку хранения модулей QGIS. Для windows XP это обычно C:\Documents and Settings\[username]\.qgis2\python\plugins для windows 7: C:\Users\[username]\.qgis2\python\plugins, для linux: /home/[username]/qgis2/python/plugins. Если в папке home отсутствует папка qgis2 (или .qgis2), то, возможно, у вас не отображаются скрытые файлы. В debian-подобных системах (debian, ubuntu, mint, OSGeoLive и др.) это исправляется так: правая кнопка мыши — отображать скрытые файлы.

3. Если у вас винда — обратите внимание на название папки [username]. Плагин не переносит кириллицу! Если в названии файла, проекта, плагина или пути к ним встретится русская буква, QGIS выдаст следующую ошибку:

Traceback (most recent call last):   File "", line 1, in   File "C:/PROGRA~1/QGISWI~1/apps/qgis/./python\pyplugin_installer\installer.py", line 274, in upgradeAllUpgradeable     self.installPlugin(key, quiet=True)   File "C:/PROGRA~1/QGISWI~1/apps/qgis/./python\pyplugin_installer\installer.py", line 322, in installPlugin     reloadPlugin(key) # unloadPlugin + loadPlugin + startPlugin   File "C:/PROGRA~1/QGISWI~1/apps/qgis/./python\qgis\utils.py", line 319, in reloadPlugin     loadPlugin(packageName)   File "C:/PROGRA~1/QGISWI~1/apps/qgis/./python\qgis\utils.py", line 200, in loadPlugin     msg = msgTemplate % (packageName, "', '".join(sys.path)) UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 9: ordinal not in range(128)

Для пользователей Windows 7, причина кроется как правило в том, что папка «Users» в этой системе названа как «Пользователи», кроме того, обычно кириллическое написание имеет папка  [username]. Теоретически, исправить эту беду можно создав новую учетную запись с правами администратора. Через нее следует войти завершив текущую сессию, после чего стандартным способом сменить название директорий на латиницу. Насколько это возможно и действенно, я утверждать не берусь — не проверял.

В Линуксе, как правило, папка [username] всегда может быть названа только латиницей. Поэтому, если у вас Линукс — переходите к следующему пункту.

4. Теперь можно запустить QGIS, либо перезапустить его, если он работал до этого.

В верхнем меню выбираем: модули — управление модулями-с ошибками. Ставим галку в чекбоксе stereo surveys и нажимаем установить

Снимок экрана от 2015-06-20 21_37_45

 

После установки появляется текст «Модуль неисправен invalid syntax». Презираем его и закрывая окно установки модулей.

Снимок экрана от 2015-06-20 21_37_59

 

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

Снимок экрана от 2015-06-20 21_40_00

На панорамах Google отображается площадь Прато-делла-Валле — что находится в Падуе, недалеко от Венеции. Это красивейшие места, но в качестве отправной точки для модуля не самые удачные — нам ведь требуется картировать шахтинскую улицу.

Для точечного слоя, создадим шейп-файл с названием test и системой координат EPSG: 3785 (можно и EPSG: 3857 — все работает, другие датумы не пробовал).

Снимок экрана от 2015-06-20 21_42_06

 

Что-бы вернуть его в рамки окна — перетащим таблицу слоев (менеджер слоев, TOC — все его по-разному называют) в нижнюю часть экрана.

Для того, что-бы картирование было более наглядным, подгрузим слой OpenStreetMap — Mapnik, воспользовавшись плагином OpenLayersPlugin.  Это не обязательно, но очень удобно. Приблизим нужный участок.

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

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

Первое сообщение об ошибке:

Снимок экрана от 2015-06-20 21_43_57

 

Второе сообщение об ошибке:

Снимок экрана от 2015-06-20 21_44_00

 

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

— В окнах плагина видны панорамы из отмеченных точек и спутниковый снимок с тайлом, содержащий обе точки. Поверх панорам нанесены красные перекрестия как в прицеле.

— Непонятные числа, поля ввода и текст not calibrated слева и справа от окон с панорамами (первые два числа слева и справа — это координаты точки, в которой сделана панорама.

— Числа по центру, под окном со спутниковым снимком, которые обозначают следующее (я могу ошибаться):

H — высота точки, взятой на прицел в обоих панорамных окнах в метрах, относительно земли;

+/- — погрешность местоположения точки, взятой на прицел в обоих окнах, в метрах;

Lon, Lat — долгота и широта;

X,Y — неизвестные прямоугольные координаты;

— Под числами, расположена кнопка с текстом, «Digitize on map», по клику на которой, точка, взятая на прицел в обоих панорамах должна переносится в точечный слой.

— В окне отображения данных QGIS, помимо OSM-карты, пользователь видит три точки: зеленую — точка из которой снята панорама в левом окне StereoSurveys, красную — точка, из которой снята панорама в правом окне и желтую — точка, взятая на прицел в обоих окнах просмотра панорам.

Можно начинать работу. Находим на обоих панорамах одну и ту же точку. Кнопка Digitize on map не срабатывает, поэтому, включаем редактирование слоя и наносим ее вручную (кликаем по желтой точке, предварительно выбрав инструмент «добавить объект»). В проекте, который идет как пример к плагину, кнопка Digitize on map работает, но тоже далеко не всегда. Этот вопрос еще необходимо прояснить.

Находим один и тот же объект на двух снимках (в нашем случае это первый фонарный столб со знаком пешеходного перехода).

Снимок экрана от 2015-06-20 21_44_18

 

Прицеливаемся поточнее и стреляем — ставим точечный объект поверх желтой точки.

Снимок экрана от 2015-06-20 21_45_02

 

Точно так-же поступаем для остальных объектов. Картирование фонарного столба на противоположной стороне улицы.
Снимок экрана от 2015-06-20 21_47_33

 

Навигация осуществляется средствами Google StreetView. «Проезжаем» на несколько метров вперед в обоих окнах просмотра панорам и берем на прицел новый столб.

Снимок экрана от 2015-06-20 21_49_59

 

Иногда, без видимых причин возникает сообщение об ошибке:

Снимок экрана от 2015-06-20 21_51_10

 

Игнорируем его и продолжаем работать дальше.

Снимок экрана от 2015-06-20 21_53_17

 

Ради интереса, попытаемся изменить числа в полях StereoSurveys. Числа ввести можно только корректные. Насколько я понял из общения с Enrico, данные поля позволяют корректировать данные о высоте точки. Первое поле отвечает за высоту камеры над поверхностью земли (2.5 метра), второе за высоту поверхности земли (по умолчанию 0). Эти параметры особенно важны в горной местности с большими перепадами высот и при картировании объектов, находящихся на большом удалении от точек съемки панорам.

Не отвлекаемся и стреляем столбы дальше.

Снимок экрана от 2015-06-20 21_58_20

 

Процесс захватывает.

Снимок экрана от 2015-06-20 22_00_02 Снимок экрана от 2015-06-20 22_04_23 Снимок экрана от 2015-06-20 22_08_46 Снимок экрана от 2015-06-20 22_09_57

 

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

Еще точечку.

Снимок экрана от 2015-06-20 22:13:22 Снимок экрана от 2015-06-20 22:23:21 Снимок экрана от 2015-06-20 22:25:19

 

В результате, мы получаем точечный слой, который планировали. После нанесения всех точек, закрываем модуль и сохраняем полученный слой. Иногда, после закрытия модуля красная и зеленая точки (точки съемки панорам) не исчезают, в этом случае, необходимо отключить модуль через меню-модули-управление модулями-снять галку с чекбокса напротив StereoSurveys и нажать «Закрыть».

Любопытный момент: обычно, снимки привязывают к gps-трекам. Я за всю Одессу говорить не буду, но в OpenStreetMap так и происходит. Думаю в Google тоже. При этом трек рассматривается в качестве центра дороги, что частично верно только для проселочных колейных дорог. Игнорирование понятия полосы дороги, приводит к системной ошибке в координатах до 5 метров (обычно +/- 3 м). Сама по себе, это величина небольшая, часто незначительная на фоне погрешности прибора. Однако, в том случае, если координаты объекта используются для расчетов детерминированных показателей, ошибки могут быть колоссальны. Это категорически запрещает использование популярных веб-проектов для расчета площади секторов, лежащих в створе с известными координатами, анализа видимости объектов, привязки объектов по двум точкам…, боюсь, этот список может оказаться длинным.

Обратите внимание на местоположение фонарного столба на улице Ворошилова.

Карта OpenStreetMap — столб стоит на дороге.

Снимок экрана от 2015-06-20 22:31:49

 

Карта Google. Аналогичное местоположение столба. Так-же, обратите внимание на местоположение дороги, относительно столбов освещения.

Снимок экрана от 2015-06-20 22:31:14

 

Загадка. В какую сторону ехал гугломобиль, если дело происходит в стране с правосторонним движением?

Снимок экрана от 2015-06-20 22:30:49

 

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

Вот карта фонарных столбов, полученная с помощью модуля:

Снимок экрана от 2015-06-20 22:27:30

 

А вот, та же карта, полученная два месяца назад вручную. Ошибки нанесения (дублирование столбов) — налицо.

9

 

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

- Не работает с кириллицей;
- Не хватает угла обзора панорам как в модуле go2streetview;
- Возникает ошибка при попытке переместить точку на карте;
- Не работает кнопка Digitize on map;
- Плагин не реагирует, когда на обоих экранах одинаковый снимок (должно высвечиваться предупреждение);
- Не высвечивается предупреждение, если погрешность больше заданной величины;
- При запуске модуля должны отображаться снимки из текущих координат экстента;
- При наличии таблицы слоев, модуль выходит за размеры экрана;
- Не исчезают точки после закрытия плагина;
- Нет явного объяснения значения чисел и полей ввода в плагине;
- Много времени уходит на масштабирование снимков, не хватает кнопки "сбросить увеличение";
- Не хватает кнопки "назад" для каждого из окон панорам;
- Не хватает кнопки "вперед", перемещающей обе точки;

P.S. Спасибо Enrico Ferreguti за написание такого чудесного плагина. Десять лет назад я говорил, что скоро наступят времена, когда картографы долгими зимними вечерами будут превращать видеозаписи своих летних путешествий в точнейшие карты. Тогда надо мной все смеялись. Теперь, благодаря Enrico, я понимаю, что был прав.

Наземное фотограмметрическое картирование объектов с помощью Google StreetView, QGis и модуля go2streetview

Замечание 1. В данной статье не расматриваются юридические вопросы законности использования описанного метода при работе с данными компании Гугл. Мое дело метод показать, а с юристами сами разбирайтесь.
Замечание 2. Собственно, ничто не мешает использовать любые другие данные, вплоть до своих фотографий. Для этого необходимо только переписать модуль. К сожалению, моих познаний в языке для этого недостаточно. Была попытка написать отдельную программу для реализации этого метода (Borland С++ Builder 6) с произвольными фотографиями, но, ввиду отсутствия времени и денег работа была остановлена.

 

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

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

0

 

С помощью меню «Модули» -> «Управление модулями» установим модуль «go2streetview«. После чего откроем в QGis указанный район и запустим модуль. Сделать это можно перетаскиванием желтого человечка на необходимую точку улицы, точно так же как и в Google Maps. В новом окне откроется фотография улицы из указанной точки, а сама точка на карте будет обозначенна синим цветом с двумя лучами, иллюстрирующими рамки окна с фотографией.

1

 

Изменение угла обзора в окне go2streetview, автоматически изменяет положение лучей. Это замечательное свойство модуля, наряду со свойством треугольника, позволяет нам определить местоположение любого объекта, попадающего не менее чем на два снимка StreetView.

В окне панорамы приблизим первый столб и соориентируем вид таким образом, что-бы его пересекала рамка окна. После чего создадим вспомогательный линейный слой, в котором продлим продлим луч go2streetview. В моем случае, таким слоем является слой «водотоки» (по ленному недоразумению). К сожалению, модуль go2streetview не позволяет указать в настройках размеры лучей, поэтому приходится поступать таким методом.

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

Теперь откроем панораму с этими столбами снятую из другой точки. Сделать это можно кликнув по карте (не забудьте перед этим переключиться из режима редактирования слоя в режим модуля). Еще проще сделать это кликнув по стрелке в окне go2streetview.

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

3
Находим противоположный столб.

4

 

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

5

 

В ходе работы необходимо следить за тем, что-бы не ошибиться в выборе рамки окна go2streetview. Когда постоянно «вертишься» в пространстве панорам, такая ошибка, особенно в начале работы, случается часто. Обычно, это сразу заметно по нехарактерному положению искомого объекта на плане.

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

6

 

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

7

 

Получая в итоге следующее:

8

 

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

9

Прогулки на лодке по Грушевскому водохранилищу 200 руб./час

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

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

Маршрут определяете вы. Хотите — испытайте себя на веслах. Или просто наслаждайтесь весенним солнцем!

Отчаливаем от дамбы водохранилища (удобно подъехать на автомобиле).

Весело и ярко! Приезжайте один или берите с собой компанию друзей (до трех человек).

Стоимость 200 рублей в час (вне зависимости от количества человек).

Заказ по телефону: +7-904-614-68-29, электропочте Schwejk-rpnt@rambler.ru, либо в комментариях к этому посту

P.S. По отдельной договоренности возможны прогулки по другим водным объектам