Архив рубрики: карта

Разъезд № 93

На карте Челябинска немало загадочных мест. Вот, например, 2ГИС одну из  улочек в Калининском районе параллельно Новомеханической называет Разъезд 93 км. Вот откуда там девяносто три километра? До Екатеринбурга по железной дороге — больше двухсот, а от других городов по той ветке считать смысла нет — узловые станции примерно в сотне километров от Челябинска есть, но они невелики.

Если посмотреть карту пятидесятых годов, всё станет ясным.

Фрагмент карты Челябинска и окрестностей 1954–1956

На нынешних картах в этом месте нет никакой станции несмотря на большое количество путей. На старых картах попадается станция Першино (хотя одноимённый посёлок — несколькими километрами севернее), а на ещё более старой — безымянные разъезды: № 93 вместо станции Першино и № 94 — вместо Электростанции.

Карта Челябинска

Карта планируемых челябинских платных парковок

Блогер Ведмед1969 краевед-фотограф-энергетик Константин Севостьянов подкинул ссылку на постановление Администрации г. Челябинска № 452-п «О создании и использовании на платной основе парковок (парковочных мест), расположенных на автомобильных дорогах общего пользования местного значения города Челябинска, и о прекращении такого использования» — там перечислен список улиц и площадей, где будут платные парковки.

Я нанёс их на карту:

Карта будущих челябинских парковок

Про сопутствующее развитие общественного транспорта или велопарковок там ничего не сказано.

Османд на большом планшете

Попробовал использовать свежий OsmAnd на купленном перед отпуском десятидюймовом планшете. Вывод — использовать можно.

А теперь — подробности:

  1. Несмотря на немаленький размер планшета — около 16×26  см — он достаточно хорошо помещается в моём холодильнике автомобиле.
  2. Так как планшет в отличие от навигатора — штука универсальная, на нём можно при необходимости и загуглить что-нибудь, и мультики детям показать. Хотя мультики водителя слегка отвлекают.
  3. Новый Османд, дико тормозивший на телефоне, на планшете работает достаточно резво: если и затормаживается до состояния, что Андроид предагает снять задачу, то это происходит не каждый день.
  4. После одного из последних обновлений Османд наконец-то в местах, требующих особого внимания, при выбранном русском языке озвучивания (точнее, RU-TTS — русский через синтезатор речи) стал говорить не просто одно слово «Внимание!», но и указывать, что же ждёт впереди — например, камера или пешеходный переход.
  5. Работающий в других местах способ снятия скриншотов — долго нажать центральную кнопку Home (теперь там кружок) в Османде работает не всегда.
  6. Офлайновая маршрутизация испортилась — за городом Османд норовит всё согнать меня с трассы, ведёт в города и деревни:

 

Больше трамваев!

«Челябинский обзор», ссылаясь на пресс-службу областного правительства, сообщает: По Челябинску будут курсировать новые автобусы и трамваи

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

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

Ну с улицей Овчинникова (и Курчатова заодно) понятно — в начале зимы в прессе было про обсуждение перспектив транспортных схем — по этим улицам хотят пустить трамвай из района первой городской больницы от Свердловского проспекта до улицы Степана Разина, к вокзалу — эта линия отмечена на карте сосисочным пунктиром:

Карта перспективных линий челябинского трамвая

А вот с улицей Труда не очень понятно. Что там хотят? Восстановить прямое движение шестого трамвая мимо филармонии и картинной галереи? Снести цветочные ларьки между  Володарского и Свердловским проспектом и потянуть рельсы на запад? Продлить рельсы по улице Первой Пятилетки на восток?

Никогда не откладывай на завтра то, что можно отложить на послезавтра

Мы посовещались и я решил, что выход в лес будет всё-таки в воскресенье — так будет лучше по ряду причин. Девятнадцатого марта часов в двенадцать буду на месте — и до вечера. Если не поленюсь — прибегу и в субботу часа на полтора (с 12:00 до 13:30) налегке, чтоб встретить тех, кто не увидел это объявление.

А в воскресенье — всё по-серьёзному, с мясом, гитарой и чаем. Самовар брать? 🙂

Карта

Место традиционное, рыжие указатели будут. Надеюсь, что шарики тоже не забуду.

Пять раз по восемь звёздочек

  1. КДПВ:
    40 звёздочек
  2. Традиции важнее суеверий, поэтому буду ждать гостей. Место традиционное, время — тоже: суббота после дня рождения, то есть 18 марта, часов после двенадцати. Буратиновка уже давно настоялась — ревизия выявила значительные запасы прошлых лет. Для разнообразия сделана и марганцовка смородиновка. Хотя я, наверное, буду за рулём. Для рулевых-беременных-кормящих-непьющих — чай и сок, если не поленюсь, то возьму самовар. Месяц назад на том же месте мы варили два глинтвейна — красный обычный и белый безалкогольный — можно повторить.
    Карта
  3. Вишлист придумывать лень — его вообще не существует :-). Всяким туристским, велосипедным, автомобильным, музыкальным и компьютерным штуковинам буду рад. Подаркам для юных туристят и их родителей — тоже. Придёте сами по себе — тоже хорошо.

Пробую ориентироваться по Maps.me

Поставил на телефон Maps.me — для сравнения. Теперь у меня на одном телефоне аж пять карт: кроме Мэпс.ми это OsmAnd (как и Мэпс.ми, на OpenStreetMap, хотя им можно и спутниковые снимки смотреть, и всякие веб-карты), 2GIS (потому что в городе он круче, чем OSM), Яндекс.Навигатор (ради просмотра пробок и прокладки маршрута c ними) и Google Maps (потому что он уже есть — телефон-то ведроидный). Сравниваю, в общем-то, с ОсмАндом — у них хотя бы общая картографическая основа.

Первое ощущение: Мэпс.ми проще и шустрее. Но карта у них какая-то неконтрастная и серая да и, похоже, её внешний вид никак не регулируется.

Карты maps.me на смартфоне CAT B15

Кроме того, подробные карты появляются слишком поздно: на масштабах 1:500000 (в 1 см 5 км) и крупнее. Для Европы или Юго-Восточной Азии это, может быть, и хорошо, но для Урала образуется зазор: начиная с масштаба 1:2000000 (в 1 см 20 км) детализация встроенной грубой карты уже мала: в таком масштабе легко можно сдвинуть карту на такое место, где не будет ни одного отображающегося на карте города, и приходится либо карту приближать, в надежде случайно попасть в нужное место, либо отодвигать, чтобы понять, где вообще ты находишься. Получается, авторам приложения надо сдвинуть границу переключения карт: либо для всех регионов разом, либо с учётом плотности имеющихся картографических данных.

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

Karta ne po-russki

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

Для того, чтоб иметь контроль над внешним видом подложки, не зависеть от размещающих тайлы (квадратные растровые фрагменты карт) сторонних сервисов, и не платить им денег в конце концов, тайлы генерируются из геоданных OpenStreetMap самостоятельно. OpenStreetMap для любого объекта может содержать множество имён — это и то, что хранится с ключом name — имя вообще, и int_name — международное имя, и куча имён с ключами вида name:ru, name:en, name:что_попало. Если делать тайлы с помощью TileMill, а свой стиль создавать на основе OSM Bright, то доступно только одно имя — name, однако в настройках сопоставления для imposm можно выбрать нужный язык — по умолчанию эта строка в файле imposm-mapping.py закомментирована:

set_default_name_type(LocalizedName(['name:en', 'int_name', 'name']))

Запускаем импорт, английские имена попадают в базу… Однако английских имён мало, сильно меньше, чем объектов с именами, записанными кириллицей.

Выхода из этой ситуации два — правильный и быстрый.
Правильный заключается в аккуратном переводе имён в OSM — слишком долго, да и неохота руками ковыряться.
Быстрый способ — не трогать OSM, а имена транслитерировать локально, в своём экземпляре базы данных. Так и поступим: создадим функцию транслитерации (прообраз подсмотрел на sql.ru) и выполним кучу UPDATE, вызывающих эту функцию. Мне, как перловому программисту, больше был симпатичен вариант с написанием перловой функции внутри PostgreSQL, но сразу такой вариант у меня не заработал, а разбираться было лень.

Итак, скармливаем постгресу такой код:

CREATE OR REPLACE FUNCTION ru_translit(p_string character varying)
  RETURNS character varying AS
$BODY$
-- Transliteration of Cyrillic letters
select
replace(
  replace(
    replace(
      replace(
        replace(
          replace(
            replace(
              replace(
                replace(
                  replace(
                    replace(
                      replace(
                        replace(
                          replace(
                            replace(
                              replace(
                                replace(
                                  replace(
                                    replace(
                                      replace(
                                        replace(
                                          replace(
                                            replace(
                                              replace(
                                                translate(
                                                  $1, 
                                                  'АБВГДЕЗИЙКЛМНОПРСТУФЫЭабвгдезийклмнопрстуфыэ',
                                                  'ABVGDEZIYKLMNOPRSTUFYEabvgdeziyklmnoprstufye'
                                                ),
                                              'ё', 'yo'),
                                            'ж', 'zh'),
                                          'х', 'kh'),
                                        'ц', 'ts'),
                                      'ч', 'ch'),
                                    'ш', 'sh'),
                                  'щ', 'shch'),
                                'ъ', ''),
                              'ь', ''),
                            'э', 'e'),
                          'ю', 'yu'),
                        'я', 'ya'),
                      'Ё', 'Yo'),
                    'Ж', 'Zh'),
                  'Х', 'Kh'),
                'Ц', 'Ts'),
              'Ч', 'Ch'),
            'Ш', 'Sh'),
          'Щ', 'Shch'),
        'Ъ', ''),
      'Ь', ''),
    'Э', 'E'),
  'Ю', 'Yu'),
'Я', 'Ya');
$BODY$
  LANGUAGE sql IMMUTABLE
  COST 100;

UPDATE osm_admin            SET name=ru_translit(name);
UPDATE osm_aeroways         SET name=ru_translit(name);
UPDATE osm_amenities        SET name=ru_translit(name);
UPDATE osm_barrierpoints    SET name=ru_translit(name);
UPDATE osm_barrierways      SET name=ru_translit(name);
UPDATE osm_buildings        SET name=ru_translit(name);
UPDATE osm_landusages       SET name=ru_translit(name);
UPDATE osm_landusages_gen0  SET name=ru_translit(name);
UPDATE osm_landusages_gen1  SET name=ru_translit(name);
UPDATE osm_mainroads        SET name=ru_translit(name);
UPDATE osm_mainroads_gen0   SET name=ru_translit(name);
UPDATE osm_mainroads_gen1   SET name=ru_translit(name);
UPDATE osm_minorroads       SET name=ru_translit(name);
UPDATE osm_motorways        SET name=ru_translit(name);
UPDATE osm_motorways_gen0   SET name=ru_translit(name);
UPDATE osm_motorways_gen1   SET name=ru_translit(name);
UPDATE osm_places           SET name=ru_translit(name);
UPDATE osm_railways         SET name=ru_translit(name);
UPDATE osm_railways_gen0    SET name=ru_translit(name);
UPDATE osm_railways_gen1    SET name=ru_translit(name);
UPDATE osm_transport_points SET name=ru_translit(name);
UPDATE osm_waterareas       SET name=ru_translit(name);
UPDATE osm_waterareas_gen0  SET name=ru_translit(name);
UPDATE osm_waterareas_gen1  SET name=ru_translit(name);
UPDATE osm_waterways        SET name=ru_translit(name);

Если мы добавляли номера домов на карту — транслитерируем и их заодно:

UPDATE osm_buildings SET "addr:housenumber"=ru_translit("addr:housenumber");

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

Карта без кириллицы

Интерактивная карта Ильменки

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

Карта

Карта — OpenStreetMap, стиль отображения — свой собственный на основе OSM Bright, отрисованный с помощью TileMill, иконки — The Map Icons Collection. Библиотека для отображения — Leaflet c плагинами Leaflet-hash и Leaflet.fullscreen.

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

В Сыктывкар и в Мурманск

Недавно Тёма Лебедев писал о том, что гугл отслеживает положение владельцев андроидофонов (тоже мне, удивил — это давно известно), затем тов. Ведмедь написал про то же самое.

Решил я посмотреть, что ж гугл узнал о моих шатаниях, глянул на карту — а там вончо:

Карта

Гугл с какого-то перепугу решил, что меня заносило в Сыктывкар и в Мурманск. Врёт.