Архив рубрики: OSM

OpenStreetMap

Свежий JOSM не любит шестую яву

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

Using /usr/lib/jvm/java-6-openjdk-i386/bin/java to execute josm.
Exception in thread "main" java.lang.UnsupportedClassVersionError: JOSM : Unsupported major.minor version 51.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
Could not find the main class: JOSM. Program will exit.

Как выяснилось, в кода скрипта, запускающего JOSM, ничего не поменялось.

Надеюсь, скоро эту ошибку устранят. Ну а тот, кому не терпится, может подправить нужный файл (в Ubuntu это /usr/bin/josm) самостоятельно, убрав из него упоминания шестой явы:

--- josm.ORIG	2013-08-09 20:11:05.000000000 +0600
+++ josm	2014-06-05 12:28:03.797657191 +0600
@@ -11,9 +11,9 @@
 
 # If OpenJDK is only available headless, do not try it
 if dpkg --get-selections 'openjdk-*-jre' | grep install$ > /dev/null ; then
-	JAVA_CMDS="$JAVA_HOME/bin/java /usr/lib/jvm/java-7-openjdk/bin/java /usr/lib/jvm/java-7-openjdk-$ARCH/bin/java /usr/lib/jvm/java-7-oracle/bin/java /usr/lib/jvm/java-6-openjdk/bin/java /usr/lib/jvm/java-6-openjdk-$ARCH/bin/java /usr/lib/jvm/java-6-sun/bin/java"
+	JAVA_CMDS="$JAVA_HOME/bin/java /usr/lib/jvm/java-7-openjdk/bin/java /usr/lib/jvm/java-7-openjdk-$ARCH/bin/java /usr/lib/jvm/java-7-oracle/bin/java"
 else
-	JAVA_CMDS="$JAVA_HOME/bin/java /usr/lib/jvm/java-7-oracle/bin/java /usr/lib/jvm/java-6-sun/bin/java /usr/bin/java"
+	JAVA_CMDS="$JAVA_HOME/bin/java /usr/lib/jvm/java-7-oracle/bin/java /usr/bin/java"
 fi
 
 JAVA_OPTS="-Djosm.restart=true -Djava.net.useSystemProxies=true $JAVA_OPTS"

update/05.06.2014: defect #10099 JOSM tries to use Java 6 when installed

В Челябинске 7 и 9 мая перекроют движение на центральных улицах

«Новый регион» сообщает:

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

9 мая движение будет закрыто с 10 часов утра и до окончания парада (примерно до 13 часов 30 минут) на участках:
– по проспекту Ленина от Свердловского проспекта до улицы Свободы;
– по улице Тимирязева от Свободы до Свердловского проспекта;
– по улице Воровского от Тимирязева до проспекта Ленина;
– по улице Цвиллинга от улицы Карла Маркса до проспекта Ленина.

На время праздничного фейерверка движение будет закрыто с 20 часов до 23 часов 30 минут на участках:
– по улице Цвиллинга от проспекта Ленина до улицы Труда;
– по улице Кирова от улицы Труда до проспекта Победы;
– по улице Братьев Кашириных от улицы Северо-Крымской до улицы Российской;
– по Свердловскому проспекту от проспекта Победы до проспекта Ленина;
– по улице Труда от улицы Российской до Свердловского проспекта.

Несмотря на заголовок, никакой схемы в новости нет. Придётся сделать самому. Красным отмечены перекрываемые участки.

7 мая вечером:

[map]55.16001,61.38924 55.16063,61.41151(red|); 55.1519,61.38976 55.16033,61.40085(red|)[/map]

9 мая утром:

[map]55.15998,61.38924 55.16063,61.41149(red|); 55.15791,61.38933 55.15806,61.39617 55.15749,61.39815 55.15774,61.40662 55.15771,61.40772 55.15786,61.40924 55.15825,61.41018 55.15852,61.41231(red|); 55.15771,61.39744 55.16031,61.40079(red|); 55.16533,61.40373 55.16044,61.40409(red|)[/map]

9 мая вечером:

[map]55.18443,61.39885 55.16789,61.4004(red|); 55.16002,61.38898 55.18386,61.38698(red|); 55.16802,61.40347 55.16044,61.40409(red|); 55.17871,61.35823 55.17876,61.36883 55.17863,61.37072 55.17834,61.37208 55.17791,61.37323 55.17446,61.38216 55.17413,61.38433 55.17433,61.39333 55.17341,61.39794 55.17358,61.40404 55.17324,61.40669 55.17249,61.40936 55.17208,61.41063 55.17156,61.41141 55.16931,61.41227 55.16872,61.41283 55.16829,61.41351 55.16796,61.41466 55.16784,61.4157(red|); 55.16577,61.38853 55.16789,61.38982 55.16975,61.38813(red|); 55.16746,61.38969 55.16835,61.4136(red|)[/map]

Трамвайная схема из OpenStreetMap

Когда-то для статьи «Челябинский трамвай» в википедии я нарисовал поверх какой-то карты схему маршутов, простенькую, куда проще бирмановской. Нарисовал, выложил нарисованное (без карты, только схему) в векторном виде, да и забыл — пить-есть не просит.

Прошло шесть с половиной лет, OpenStreetMap развился до состояния, когда на карты некоторых районов уже можно стало смотреть без слёз. «Почему б не попробовать схему с картой из OSM?» — подумал я. И попробовал.

Сначала был TileMill (я год назад о нём рассказывал на UWDC) — можно, например, сделать свой картостиль, основываясь на OSM Bright. Карта получается достаточно симпатичной и её внешний легко настраивается — в тайлмилле используется CSS-подобный язык разметки. Однако добавить на карту трамвайные маршруты не получилось — в OSM Bright трамвайные пути и железные дороги отображаются совершенно одинаково. Это, наверное, можно изменить, поковырявшись в настройке, но скрипты преобразования геоданных написаны на питоне, в котором я почти ничего не понимаю. Поэтому пришлось добавлять трамвайные линии вручную. Результат —

Попробовал альтернативный способ — alaCarte. В alaCarte оказалось возможным сразу выделить трамвайные пути, и, кроме того, alaCarte создаёт набор тайлов, пригодный для использования с библиотеками OpenLayers и Leaflet.

Получается, например, так:

Схема трамвайных маршрутов

в виде интерактивной карты — http://tile.susu.ac.ru/tram.html, используемые стили скоро будут на гитхабе. Stay tuned!

MapBBCode — в вордпрессе

Для вставки использующих библиотеку Leaflet подвижных карт на сайт, работающий под управлением вордпресса, есть разные пути: можно, например, вставить нужный HTML-код прямо в текст страницы — оно будет работать (вот пример), но ковыряться в коде каждый раз, когда нужна карта — неудобно. Такой метод подойдёт лишь тогда, когда надо вставить одну карту и забыть о ней.

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

Нужен способ, позволяющий в удобном виде описывать карту и куда-нибудь эту карту вставлять. Питерский осмер Илья Зверев несколько дней назад написал библиотеку MapBBCode для встраивания карт на форумы. На форумах для форматирования текста часто используют команды разметки вида [tag]text[/tag], действующие аналогично тэгам языка HTML, основное их отличие, бросающееся в глаза — квадратные скобки вместо угловых. Подобный код используется и для описания карты в MapBBCode.

Такие же коды применяются и в вордпрессе — с их помощью можно, например, вставлять на страницы аудиозаписи, видеоролики, фотогалереи — подобная функциональность есть в могучем плагине Jetpack. Можно и карты вставлять — так сделано в уже упоминавшемся Leaflet Maps Marker.

Я попробовал минувшей ночью написать свой плагин — получилось. Теперь для того, чтоб вставить карту, достаточно написать

[map]55.16473,61.32601[/map]

вместо этого кода отобразится такая карта:

[map]55.16473,61.32601[/map]

Исходный код — https://github.com/shoorick/mapbb-wordpress, ZIP-архив — https://github.com/shoorick/mapbb-wordpress/archive/master.zip.