Архив за месяц: Октябрь 2014

Рельеф — в единых цветах

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

Итак, список высот и соответствующих им цветов такой:

-10   167 223 210
0     172 208 165
100   168 198 143
200   189 204 150
300   209 215 171
400   225 228 181
500   239 235 192
750   232 225 182
1000  222 214 163
1500  211 202 157
2000  202 185 130
2500  195 167 107
3000  185 152  90
3500  170 135  83
4000  172 154 124
5000  186 174 154
6000  202 195 184
7000  224 222 216
8000  245 244 242
9000  245 244 242

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

#!/usr/bin/perl

while (<>) {
    chomp;
    my @data = split;
    printf '%s:#%02x%02x%02x;',
        @data;
}

Ну или можно вообще однострочник написать:

perl -nla -F'\s+' -e 'printf "%s:#%02x%02x%02x;", @F' ramp-colors-above-water.txt

Осталось добавить получившиеся цвета к команде маперитива, рисующей рельеф:

generate-hypsometric ramps=-10:#a7dfd2;0:#acd0a5;100:#a8c68f;200:#bdcc96;300:#d1d7ab;400:#e1e4b5;500:#efebc0;750:#e8e1b6;1000:#ded6a3;1500:#d3ca9d;2000:#cab982;2500:#c3a76b;3000:#b9985a;3500:#aa8753;4000:#ac9a7c;5000:#baae9a;6000:#cac3b8;7000:#e0ded8;8000:#f5f4f2;9000:#f5f4f2

Эти цвета не такие насыщенные как те, что получились сначала. Южный Урал в этой палитре получается таким:

Рельеф Южного Урала

Карта с рельефом

Пару лет назад я пробовал рисовать карты из данных OpenStreetMap при помощи Maperitive — и даже что-то говорил об этом в докладе на UWDC-2013. Что понравилось ещё тогда — возможность «из коробки» отображать рельеф: Маперитив умеет сам ходить в сеть за открытыми данными о рельефе (SRTM) и потом строить из них контуры горизонтали и рисовать отмывку.

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

У меня не получилось сразу в Маперитиве получить карту такого вида как мне надо: реки текли поверх водохранилищ и водоёмы никак не хотели с административными границами сочетаться. Потратив немного времени на чтение документации и безуспешные эксперименты, пошёл другим путём: сделать пару отдельных карт — с границами и водами — да и собрал их воедино в Inkscape. Маперитив умеет экспортировать карты в SVG. Вот уменьшенный фрагмент того, что вышло:

Север Нязепетровского района

Шаблон с картой лучше делать не по инструкции — там образец неправильный. Лучше взять за образец какой-нибудь существующий шаблон и слегка его поменять: надо изменить координаты границ карты, её названия и имена используемых файлов. Если речь идёт об изготовлении карты актуального состояния существующей местности (то есть, мы рисуем не историческую карту и не карту вымышленного мира), то имеет смысл нарисовать несколько карт одной и той же области, хотя бы две: физическую и политическую/административную — википедия позволяет выбрать нужную карту из шаблона как вручную, так и автоматически: например, в географических статьях (о реках, озёрах, горах) автоматически отображается физическая карта, если она есть.

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

Чем почесать провода

В Челябинске после недавних погодных катаклизмов вот уже несколько дней не работает электротранспорт — обледенела контактная сеть. Сегодня видел необычный способ очистки, без всяких щёток: едут гуськом три троллейбуса с автономным ходом и поднятыми токоприёмниками, в том месте, где льда мало, между проводом и токоприёмником вспыхивает электрическая дуга, которая, наверное, и отогревает провод. Интересно, они дугой контактную сеть не пожгли совсем? Автономный ход, видимо, нужен на случай особо толстого льда, чтоб хоть как-то тронуться. Кстати, троллейбусы на батарейках как-то неважно в гору стартуют.

Октябрьский лёд

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

К зиме подготовились

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

Ну почему же? Готовились, сам вчера видел — электрогирлянды на липы наматывали:

Развешивают гирлянды

Регулировка света фар на Peugeot Partner

Когда в инструкции к нынешнему своему автомобилю я не нашёл описания процедуры регулировки ближнего света фар, особо не удивился: ну зачем писать такое в инструкции к импортному автомобилю. Удивился я, когда не обнаружил такой информации в камасутре руководстве по эксплуатации, техническому обслуживанию и ремонту — в конце концов, это не такая уж сложная операция: уж точно проще, чем разборка двигателя, в той же книге описанная. Но нет — в книгу авторы зачем-то включили отдельный пункт 12.8 «Регулировка фар — общие сведения», где сразу же послали нафиг:

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

Не думаю, что настройка света фар, допустим, жигуля, принципиально отличается от настройки света пыжика — в книжках про отечественные машины не делают какого-то особого секрета из настройки фар. Да и на пунктах техосмотра я не раз видел плакаты, описывающие, как должны светить фары. Поэтому вопрос остался лишь один — что покрутить для изменения высоты угла места. В крупных фарах, используемых в Peugeot Partner Origin / Citroën Berlingo First (то есть, в машинах, выпущенных с 2002 по 2009 год) регулятор представляет собой белый полиэтиленовый винт с шестигранным отверстием, находящийся с той стороны фары, что ближе к продольной оси автомобиля. Например, на правой фаре он находится слева:

Общий вид

Для регулировки достаточно повернуть этот винт: вращение по часовой стрелке (во всяком случае, на правой фаре) поднимет световой пучок, вращение против часовой — опустит. Винт проворачивается достаточно туго: голыми руками у меня не вышло его провернуть: можно воспользоваться Г-образным шестигранным ключом либо, как я сделал, складной отвёрткой с храповым механизмом. Размер ключа (расстояние между противоположными гранями) — 6 миллиметров либо ⁷∕₃₂ дюйма.

Регулировка

Теперь моя машина светит правильно.

Двадцать шестой троллейбус вернётся на Первое озеро

С понедельника, 13 октября, сообщает Челябинск.ру меняется трасса движения троллейбусного маршрута № 26 — он снова будет ходить из Первоозёрного через центр города, улицы Братьев Кашириных и Чичерина к северо-западной конечной, на углу Комсомольского проспекта и Молдавской.

[map]55.19372,61.30144 55.187,61.2862 55.1735,61.30474 55.17879,61.31654 55.17875,61.3583 55.1709,61.35813 55.17093,61.37053 55.16757,61.38062 55.15975,61.38117 55.16124,61.43374 55.16017,61.4513 55.17022,61.4531 55.18117,61.44602 55.18387,61.45868 55.19298,61.4664 55.19056,61.47552[/map]

На марсрутах.ру уже опубликовано свежее расписание.

Указание языка в URL страниц в Open Journal Systems

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

Тем не менее, возникла задача всё-таки получить возможность явно указать язык в адресе страниц. Переключение выбранного языка делается средствами самой OJS — достаточно зайти (то есть, выполнить GET-запрос) по адресу вида адрес-журнала/user/setLocale/локаль?source=путь/куда/идти/дальше, например, http://vestnik.susu.ru/cmi/user/setLocale/ru_RU?source=/cmi/issue/current — переход по этой ссылке приведёт к выведенному на русском языке оглавлению текущего выпуска серии «Вычислительная математика и информатика» Вестника Южно-Уральского государственного университета.

С одной стороны, всё украдено до нас ничего делать не надо — URL с указанием языка уже доступен. Но какой-то он длинный, неаккуратный. Хочется сделать покороче. Чтоб не лезть во внутренности OJS, можно исправить настройки сервера. Для случая, когда используется Apache, а адрес журнала имеет вид http://hostname/journal, достаточно добавить пару правил для mod_rewrite:

RewriteRule ^en(glish)?/(\w+)(/?.*)$ /$2/user/setLocale/en_US?source=/$2$3 [L]
RewriteRule ^ru(ssian)?/(\w+)(/?.*)$ /$2/user/setLocale/ru_RU?source=/$2$3 [L]

Это даст возможность использовать URL вида http://hostname/язык/journal/путь, где язык может быть как названием нужного языка, так и его двухбуквенным кодом. Для уже рассмотренной серии «Вестника ЮУрГУ» теперь можно применять такие ссылки: