Дорога на Морье

Оргазм, вибратор, онанизм, жесткач, котята, индуизм

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

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

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

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

Да хули пиздеть-то? Давайте лучше прогуляемся с вами на мыс Морье, что в Ленинградской области. Там очевидно какой-то поселок:
мапсми

Сам поселок может и не очень интересен, а вот посмотреть на церковь может быть весьма любопытно:

Да и чего бы туда не сходить, если даже роутинг туда строится без проблем?

Дорога великолепна. Слева слабодренированные кислично-сфагновые березняки, осинники и сероольшатники:
мелиоративная канава

Справа за соснами шумит едва вскрывшееся ото льда Ладожское озеро:
Ладога

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

Что за хуйня? Если кому не видно — надпись на щите гласит: «Стой, стреляют. Проезд и проход запрещен». Бля, да там же поселок по мапсми? А давайте-ка глянем OSM-стандарт, геоданные-то одни и те же:

Мыс Морье

Воттыжблядь-то! Так и есть, я шестой километр иду по вомнскому полигону. А впереди у меня кпп воинской части не то связистов, не то РВСН. Так какого хуя в масми об этом ни слова? Хотя постойте, видите эту тараканью залупу:

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

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

И мне еще повезло, что я был в курсе куда эта дорога ведет, ибо в 2007 году мы с диаволом на пятнашке там уже приключались, за что едва не получили пиздюлей. Тогда столбики «Стой, стреляют» стояли через каждые пятьдесят метров. За десять лет их просто все выпилили к хуям.

отрисовка тайлов

Весенние поводы

Раз уж случилась весна, это отличный повод что-нибудь замутить. Например улучшить картостиль «Y», призванный представить данные OpenStreetMap в стиле Яндекс-карт. Помните, я писал о нем прошлой осенью? Яндекс проделал за год большую работу, добавил новый зум (теперь их девятнадцать), исправил многие ошибки и неточности стиля. Отличный повод для того, что-бы открыть старый xml-файлик и поработать над ним под музыку из японского мультфильма про тетрадь смерти.

Некст-Гис ввел необходимость регистрации для скачивания шейпов OSM и потребовал за свежие выгрузки триста рублей. Цена небольшая, но это отличный повод переписать стиль целиком на работу с чистыми данными. И поддержка легче и данные обновлять проще. А еще добавить уровни дорог, новые иконки, исправить ошибки и, конечно же, расширить линейку зумов до девятнадцати.

Картостиль Y

Картостиль Яндеск-карт

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

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

Рыбалка в Кавголово

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

Ну а раз уж я буду в Нижнем, предлагаю устроить какую-нибудь лекцию, картопати или другую движуху. Выберем вечер, засядем в приятном месте, познакомимся и прекрасно проведем время. Я готов ответить на все известные мне вопросы по картографии, геоданным, проекту OpenStreetMap, программе QGis, картографическому дизайну, Mapnik-у, Leaflet-у, геоботанике, географии, полевым измерениям, нечеткому тегированию, фракталам, клеточным автоматам и … ну вы поняли. Главное свяжитесь со мной предварительно по телефону +7-904-614-68-29 или почте schwejk-rpnt@rambler.ru. Выберем удобное время и место.

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

Опен стайл пиздинг

Ну и месяц. Что ни день то сковывает запястья суета пустого и забивает глаза пыль пустопорожних тщет. Из-за всех этих суетливых мастурбаций я чуть было не пропустил день рождения OpenStreetMap, что состоялся еще в начале августа. Но к счастью, не пропустил, благо пил я в этом месяце каждый день и вариантов избежать праздника у меня просто не было. Весь месяц я ползал по каким-то кустам и счастливым по настоящему почувствовал себя лишь укрываясь перед сном в лесу густым одеялом млечного пути. Но об этом я еще обязательно напишу, а сейчас извините — уже без двадцати девять вечера, а значит скоро закроется магазин. Не будем же терять времени, да и хули тут рассуждать-то? Представляю вашему вниманию исходный код картостиля под названием «Y».

Картостиль есть суть набор правил и файлов, регламентирующих порядок и внешний вид отображения геоданных. В материальном виде это просто код с прилагающимися файлами иконок, шрифтов и прочей требухи. Стиль Y был написан весной текущего года между состояниями суицидальной депрессии и либидозной эйфории, поэтому не удивляйтесь наличию в коде некоторых странных и откровенно нелогичных решений. Однако ближе к сути. Дело было так: одна очень крупная компания, решила кинуть другую очень крупную компанию, а я в этот момент мимо проходил. Я человек не святой, как и все мы: продавал ворованные автомобили, сбывал краденные с завода детали станков, подделывал финансовые документы, пиздил со стройки арматуру, совершил нападение на (тогда еще) милиционера, за что был честно отхуячен дубинкой и вообще много чего плохого в жизни натворил. Несмотря на это к авторскому праву всегда относился трепетно, ибо в жизни каждого мудака должно оставаться что-то святое. Но тут соблазн был слишком велик, что-бы ему противостоять и я отдал себя водам темной страсти, что несли меня по пути самой интеллигентной из форм незаконного обогащения. Я взял да и спиздил картостиль у Яндекса, применив его для данных OSM. Не сказать, что-бы спиздил полностью: иконки и шрифты не трогал, вся работа велась исключительно над классификацией данных и дублированием визуализации линейных и полигональных объектов.

Код писался под Mapnik. Есть еще вариант этого кода написанный на CartoCSS, но он несколько устарел, а потому я его тут не выкладываю. Для отрисовки тайлов в этом стиле рендер должен подсасывать данные OSM в формате шейп-файлов, которые доступны на сайте ГИС-ЛАБа

Конечно-же, результат далек от идеала, однако, как говорил один знакомый прокурор: «похоже до степени смешения». Это еще раз подтверждает, что закрытые проекты сосут перед опенсорсом. Ибо сделать из OpenStreetMap Яндекс-карты — что в носу поковырять, а вот обратно хуй там. Еще есть огромное количество моментов, которые следует исправить, а то и вовсе полностью переделать. Но нет предела совершенству, в отличии от жизни человеческой.

Ну а теперь самое интересное: картинки. Давайте погуляем по зумам. В Яндекс-картах их шестнадцать, со второго по восемнадцатый. Вот второй зум:
2

 

Здесь и далее слева карта Яндекса, справа мое скромное творение.

На низких зумах при стилизации данных OSM возникает проблема приоритета названий: запросто может быть, что надпись «Тринидад и Тобаго» выводиться, а, например, «Япония» нет. Что поделать, такое оно случайное отображение данных. Пришлось ранжировать страны по численности населения и в зависимости от этого ранжировать отображение надписей. Но и тут не все хорошо, а именно есть две проблемы. Во-первых, страны не представляют собой единые полигоны, в результате чего, подписывается не только основная площадь страны, но и какой-нибудь нахуй никому не нужный остров, юридически принадлежащий, скажем Франции. Можно было, конечно исправить это дело путем учета площади, но поверьте, гораздо проще и спокойнее было сделать это ручками, отредактировав непосредственно сами данные.

Третий зум:

3

 

Вторая проблема заключается в том, что названия стран выводятся в центроидах полигонов, отчего выглядят они порой совсем не на своем месте, например, как Финляндия на четвертом зуме:

4

 

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

На пятом зуме пришлось изрядно возиться с водоемами. Будете смеяться, но в OSM нет единых водотоков, одни кусочно-разрывные графики функций, снабженные разными тегами. Например, вы не можете легко отобразить на карте такую реку, как, Енисей, поскольку часть реки riverbank, часть water, а часть вообще непонятно как тегирована. Дай думаю, посмотрю, а как реки в стандартном стиле отображаются? А вот хрен там, они в стандартном стиле на этих зумах никак не отображаются. Ну что тут поделать? Я налил себе стакан и вывел интересующие меня реки просто по их имени, благо крупных рек выводить много и не требовалось.

Когда я подобным же образом решил вывести озеро Байкал, оказалось, что в России озер с таким названием три: один Байкал — та самая омулевая бочка, а два других — какие-то небольшие водоемы в садоводствах.

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

 

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

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

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

7

 

На седьмом зуме, я не удержался и нарисовал простенькие svg-иконки аэропортов, как в Яндексе. С аэропортами тоже все оказалось не так просто, поскольку изрядное количество существующих аэропортов, точнее аэродромов имеют двойное назначение. Пришлось отделять зерна от военной инфраструктуры, зато я узнал о существовании в Подмосковье аэропорта Толмачево.

Восьмой зум:
8

 

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

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

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

 

Еще одна трудность, которая начинается на девятом зуме это железные дороги. Данные OpenStreetMap настолько разнятся в этой части от данных Яндекс карт, что для достижения похожести стилей приходиться применять совсем другое обозначение для железных дорог. В OSM  в отличии от Яндекс-карт отрисована каждая ветка захолустного пути, поэтому применение оригинального стиля ведет к тому, что железные дороги начинают выглядеть как толстые черные полосы. А стоит немного отойти от оригинала и сразу все нормально. Десятый зум:
10

 

Одиннадцатый зум, на котором я потерял названия районов и несколько дней не мог их найти, но в итоге нашел:
11

 

На двенадцатом зуме вновь пришлось создать, даже не иконку, а так, графический примитив для визуализации железнодорожных станций:
12

 

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

 

Четырнадцатый зум:
14

 

Пятнадцатый зум:
15

 

С шестнадцатого зума дома приобретают форму. Здесь я применил самый хромой костыль из всех. Дело в том, что все мои попытки отобразить домики в виде полупрозрачных объектов натыкались на то, что они походили на странные коробки — для правильного отображения, полупрозрачными должны быть только крыша и лицевые стенки домиков, а все что скрыто под крышей должно быть полностью прозрачным. Я эквилибрировал разными вариантами,  но в итоге, единственным решением, которое меня частично удовлетворило, стало погружение домиков в глубину.
16

 

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

 

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

 

И еще кое-что. Хоть стиль и можно скачать, но все-таки не забывайте, что пользоваться им незаконно, ибо был он честно спизжен. Как производственный продукт он не годится. А вот для процесса познания того, что OpenStreetMap — круть небесная, в самый раз.

Сийская дерация

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

Так получается, что я когда сижу неизменно утыкаюсь взглядом в район Новой Зеландии.
DSCN8229

 

Видите остров Окленд? К юго-востоку от него под буквой «Т» находится еще один остров — маленькая неподписанная точка. Я упираюсь взглядом в эту точку почти каждый день. И каждый раз думаю: что здесь? Нет, ясно что архипелаг какой-то, но хотелось бы деталей. Название, население, климат, геология, растительность, история, да хоть что-то. Ведь это на карте точка выглядит будто картограф что-то из носа выковырял и прилепил, а в реальности там наверняка полно безграничного и бесконечно интересного.

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

Итак, что нам надо? Для начала узнать название этого архипелага. Открываем карту OpenStreetMap, выбираем искомый район и … открываем главный секрет веб-картографии. С нулевого по десятый зум все карты рисуются наотъебись и выглядят как говно:

Классика:

1

 

Вообще стандартный стиль OSM — это какое-то недоразумение. Ощущение, что он разрабатывался только как иллюстрация к уровню наполненности базы геоданных. Мой любимый зум — четвертый. Тот самый, где географическое расположение России соответствует анатомическому,  появляется новое островное государство «сийская дерация»,

4

 

Эй порноактеры! Эй проститутки! Да что вы знаете о ебле если не пользовались картой OpenStreetMap?

6

7

 

А еще я обожаю идею подписей локальными языками.

— Прикинь, мы в прошлом месяце в авиакомпанию взяли чувака, который разрабатывал картостиль OSM.

— И что теперь?

— Теперь все наши самолеты летают по маршруту: ليبيا — O`zbekiston — 上海

5

 

Карта гуманитарной команды тоже не лучше.  Я не микробиолог, у меня для таких закорючек микроскопа нет:

2

 

МапКвест утопил мой остров в текстурном океане. Зато города со звездочками. Ну заебись теперь.

3

 

— Так тебе нужно какой-нибудь геграфический стиль смотреть. Это же стили скорее политические, здесь текст принадлежности к государству имеет больший приоритет, чем название физического объекта. На какой-нибудь OpenTopoMap все должно быть заебись.

— А вот хуй.

12

 

В OpenStreetMap все данные открыты. Не нравится стиль — пиши свой.  Но как обстоит дело с коммерческими картами?

Яндекс вообще не заморачивается со всякими островами в южном полушарии. Просто гуру похуизма:

8

 

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

9

 

На картах Бинг та же хуйня. Для тех кто не в теме, Бинг — это поисковик от майкрософта, с джентельменским набором веб-сервисов. Здесь хоть названия стран можно читать. Похуй на красоту. Если текст физиологически читабелен, то уже заебись.

10

 

Наипиздатейше из всего этого мракобесия выглядит только открытый MapSurfer.net. Но говоря по чесноку, рядом с картой полушарий для начальной школы он и близко не стоит. Но здесь хотя-бы можно прочесть «Campbell Island».

11

 

При этом остров прорисован весьма неплохо. Вот он в том же стиле MapSurfer.net:

osm2

 

Моя школьная карта полушарий явно указывает на две крупные проблемы в современной картографии. Во-первых, современные карты делают не картографы, а программисты. Но карта это всегда произведение искусства, которое подобно прочим требует осмысления художником всех деталей и нюансов. Ну не напишешь ты Мону Лизу скриптом, хоть конем ебись! Всеми забытое выражение «читать карту» к современной картографии не относится: только начинаешь читать, как поимаешь, что автор написал две страницы, после чего скопировал их двести раз как в анекдоте про поездку Чапаева в штаб.

Но самая большая проблема даже не в этом. При создании любых современных карт в той или иной форме воссоздается всегда один и тот же диалог:

— Слушай, а мы материки будем одним цветом красить или каждый материк по особому?

— Да похуй как! Главное что-бы тропинки от велодорожек отличались.

 

P.S. Кстати, острова архипелага Кэмпбелл — охуительнейшее место. Там растет самое одинокое в мире дерево и по вершинам скал прячутся пуганные корабельными крысами птицы. Не будь у меня моей старой картой, хрен бы я когда полез в Википедию за информацией об этом острове.