Debian sid に Ubuntu の source.list から JOSM を導入

以前は OpenStreetMap 編集ツールの JOSM を wget で定期的に取得していましたが,更新されてないときも取得したりとかがいまいちでした.

<追記>

今試すと以前はJOSMサーバでは --timestamping option が効かなかったと思うのですが今は効くようになっていました.

$ wget -SN https://josm.openstreetmap.de/josm-latest.jar
--2018-09-08 00:21:26--  https://josm.openstreetmap.de/josm-latest.jar
josm.openstreetmap.de (josm.openstreetmap.de) をDNSに問いあわせています... 78.47.65.34, 2a01:4f8:c17:2906::2
josm.openstreetmap.de (josm.openstreetmap.de)|78.47.65.34|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 
  HTTP/1.1 304 Not Modified
  Date: Fri, 07 Sep 2018 15:21:29 GMT
  Server: Apache/2.4.18 (Ubuntu)
  Connection: Keep-Alive
  Keep-Alive: timeout=5, max=100
  ETag: "ca0f12-57529dee345c4"
ファイル `josm-latest.jar' はサーバ側で変更されていませんでした。ダウンロードを省略します。

</追記>

JSOM 公式で Ubuntu のパッケージを配布しているので,これを借りてみます.

Ubuntu の dists はこんな感じです.とりあえず近くて LTS な bionic(18.04 LTS)を使います.(alldist)でも良かったかも.

$ w3m -dump 'https://josm.openstreetmap.de/apt/dists/'|grep "^\[DIR\]"|awk {' print $2 '}
alldist/
artful/
bionic/
cosmic/
lucid/
natty/
oneiric/
precise/
quantal/
raring/
saucy/
trusty/
utopic/
vivid/
wily/
xenial/
yakkety/
zesty/

こんな感じで導入しました.

$ wget -q https://josm.openstreetmap.de/josm-apt.key -O- | sudo apt-key add - #鍵導入
$ sudo apt edit-sources josm  #source.list作成内容は以下のもの
$ cat /etc/apt/sources.list.d/josm.list
deb https://josm.openstreetmap.de/apt bionic universe
$ sudo apt update #パッケージ情報を最新に
$ sudo apt install josm-latest  #josm-latestを導入

起動して,以下のようにフォントにアンチエイリアスが効いていなくて汚い場合は,

42536121640 71d60ae6aa

環境変数 `_JAVA_OPTIONS=’-Dawt.useSystemAAFontSettings=lcd’ ` を設定するときれいになります.

43627752894 854fe912f8

とりあえず最低限のプリセットや,

43628727264 425999a29a

プラグインを設定.

43628723984 a3dbce049f

てことでこれで普通に使えそうです.

(新しいGPSロガーほしいですね)

JOSMで360度カメラ写真が利用できるようになるMapillaryプラグインを試してみる

をちょっと試してみました.
試した環境はDebian sid amd64,で,Pluginの場所は~/.local/share/JOSM/plugins/でした.(~/.josm/pluginsを作るとそちらの設定が優先で全部そっちに取られて初期状態になる)
ダウンロードしたプラグインをここに置いてJOSMを起動して有効にするとオリジナル版?をダウンロードして上書きしてしまうようなので,オリジナル版を有効にした後上書きしました.

  • JOSMを起動して,Mapillaryプラグインを導入
    20180626_05:06:07-21756
    20180626_05:06:46-20695
    20180626_05:06:54-28585
  • JOSMを終了して三浦さん版Mapillaryプラグインで上書き
$ wget -O ~/.local/share/JOSM/plugins/Mapillary.jar 'https://bintray.com/osmfj/JOSM/download_file?file_path=Mapillary.jar'
$ sha256sum /home/mk/.local/share/JOSM/plugins/Mapillary.jar
e6961ceb8381ea3eddec7c457edfe5a2bcea593f43ce9a9b75a9214396be5ac8  /home/mk/.local/share/JOSM/plugins/Mapillary.jar
  • JOSMを起動してshift+,してMapillaryレイヤーを有効にして適当な場所で360度カメラ画像を探す.今回は横浜のシルクセンター前辺り.
    • (エラーが出たら無視して強行)
  • 見やすくするためにMapillary窓の📍をクリックして別ウィンドウにする
  • 初期は歪んだ画像だが,クリックすると補正される
  • クリックした場所がセンターになる
  • 360度回転できる画像と端で止まる画像がある?

out.resized

いい感じですね.360度カメラや180度カメラ,せめてアクションカムが欲しいところです…….



#そういえば先日Googleから180度カメラのビデオ変換アプリケーションが出ました.macOS/Linux対応.(WIndows非対応!) -> VR180 Apps

試した環境

$ java -jar ~/bin/josm-latest.jar --version
JOSM/1.5 (13974 ja) Linux Debian GNU/Linux unstable (sid)
$ java -version
openjdk version "10.0.1" 2018-04-17
OpenJDK Runtime Environment (build 10.0.1+10-Debian-4)
OpenJDK 64-Bit Server VM (build 10.0.1+10-Debian-4, mixed mode)
$ dpkg-query -W openjdk-10-jre
openjdk-10-jre:amd64    10.0.1+10-4
$ lsb_release -d
Description:    Debian GNU/Linux unstable (sid)
$ uname -m
x86_64

OpenJDK で JOSM

Javaで動作するOpenStreetMapエディタのJOSMをLinux上のOpenJDKで動かすメモです.
Debian sid amd64 / Ubuntu 16.04 LTS ARM64 で確認しています.

JOSMの入手

JOSMを次のページから入手します.josm-tested.jar をよく使っています.

OpenJDKインストール

2015年12月くらいにはこんなメッセージが出ていて現在はJava 8以上が必要になっています.

このバージョンのJavaはもうすぐサポート対象から外れます。 Java 8以上にアップグレードしてください!

ここでは OpenJDK 8 を導入

$ sudo apt install openjdk-8-jre

javaの確認

OpenJDK 8になっている.もし違うバージョンが表示されたら次の項目へ.

$ java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-0ubuntu0.16.04.2-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

javaが複数入っていてjavaコマンドの結果が想定しているバージョンではない場合切り替える

OpenJDK 8の場合はここはスキップする.

$ sudo update-alternatives --config java

JOSM起動

-Dawt.useSystemAAFontSettings=onはフォントのアンチエイリアスを有効にするオプション.LCDの場合onの代わりにlcd.

$ java -jar -Dawt.useSystemAAFontSettings=on ./josm-latest.jar
追記)
他の環境だとこの辺のどれかが使えそう(未確認)

JOSM向け JA:Naming sampleを導入

ということで導入方法を確認しました.

プリセットメニューの「プリセット設定」を選択.

menu-priset

「利用可能なプリセット」の中から「JA:Naming sample」を選択して左矢印ボタンを押して有効にします.OKボタンを押して,

priset_menu

JOSMを再起動することで反映されます.

reboot

これでプリセットやプリセットの検索で利用できるようになります.

shutter_17-03-21_06:16:59_001

インクリメンタル検索の例.

shutter_17-03-21_06:18:25_001

とても便利です :)

既に導入している人はJOSM起動時に更新されるはずです.
不安な人は一旦消して再導入したり,実際のファイルの中のバージョンを確認することも出来ます.

$ grep JaNamigSample ~/.josm/preferences.xml
  <list key='mirror.https://josm.openstreetmap.de/josmfile?page_Presets/JaNamigSample&amp;zip_1'>
    <entry value='/home/mk/.josm/cache/mirror_https___josm.openstreetmap.de_josmfile_page_Presets_JaNamigSample_zip_1'/>
      <tag key='url' value='https://josm.openstreetmap.de/josmfile?page=Presets/JaNamigSample&amp;zip=1'/>
$ zgrep version /home/mk/.josm/cache/mirror_https___josm.openstreetmap.de_josmfile_page_Presets_JaNamigSample_zip_1
    version="2.0b7_24_2017-03-04"

MAPS.MEの翻訳修正

OpenStreetMapの地図を自分の端末に入れてオフラインで地図の閲覧やルート案内などができてとても便利なMAPS.MEというアプリがあります.最近OpenStreetMapの編集機能も付いたということで試してみました.

試すためにはマップデータをダウンロードし直さないといけません.九州全域から県単位で地図がダウンロードできるようになっていていい感じです :)
しかし,「づンロード」というメッセージ><

25704805293 80cb7e5da8

これは酷い.
でもMAPS.MEはオープンソース化されていたのできっと翻訳も修正できるはずと探してみるとこちらにありました.

この中の strings.txt がそれのようです.

ざっと見てもうひとつ明らかな間違いがあったのでその二件を修正してPRしました.
するとコントリビュータライセンスにサインして&翻訳scriptの実行してというコメントをもらいました.

こんなWikiがあったとはorz

今回はCLAのサインをしたら取り込まれたようです.次からは`generate_localization.sh`もちゃんと実行しないとですね.

$ ./tools/unix/generate_localizations.sh
+ ./tools/twine/twine --format android generate-all-string-files ./strings.txt ./android/res/
+ ./tools/twine/twine --format apple generate-all-string-files ./strings.txt ./iphone/Maps/
+ ./tools/twine/twine --format apple --file-name InfoPlist.strings generate-all-string-files ./iphone/plist.txt ./iphone/Maps/
+ ./tools/twine/twine --format jquery generate-all-string-files ./data/cuisines.txt ./data/cuisine-strings/







JOSMにJava8を使うように言われたのでJavaを変更する

JOSM を起動するとスプラッシュ画面に次のようなメッセージが><

JOSM – Java OpenStreetMap エディタ

このバージョンのJavaはもうすぐサポート対象から外れます。 Java 8以上にアップグレードしてください!

現在利用している Java は Debian stretch のパッケージで導入した Oracle Java 7 です.OpenJDK 7 でも同じメッセージが表示されます.
ディストリビューションがサポートしている間は脆弱性とかは修正されるだろうけど JOSM 側でサポート打ち切る可能性もあるので Java 8 を使えないか確認してみます.

% where java
/usr/bin/java
% /usr/bin/java -version
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)
% dpkg -l oracle-java7-jdk|grep ^ii
ii  oracle-java7-jdk 7u25         amd64        Java(TM) JDK, Standard Edition, Oracle(TM)

Oracle Java は未だパッケージにないけど OpenJDK 8 は存在するよう.

% apt-cache search oracle-java
oracle-java7-jdk - Java(TM) JDK, Standard Edition, Oracle(TM)
% apt-cache search openjdk-8  
openjdk-8-jre-jamvm - Alternative JVM for OpenJDK, using JamVM
openjdk-8-dbg - OpenJDK ベースの Java ランタイム (デバッグシンボル)
openjdk-8-demo - OpenJDK ベースの Java ランタイム (デモおよびサンプルファイル)
openjdk-8-doc - OpenJDK 開発キット (JDK) ドキュメント
openjdk-8-jdk - OpenJDK 開発キット (JDK)
openjdk-8-jre - OpenJDK Java ランタイム - Hotspot JITopenjdk-8-jre-headless - OpenJDK Java ランタイム - Hotspot JIT(ヘッドレス)
openjdk-8-jre-zero - Zero/Shark を用いた OpenJDK 用の代替 JVM
openjdk-8-source - OpenJDK 開発キット (JDK) ソースファイル

OpenJDK 8 を導入してこのシステムの規定値に設定します.

% sudo apt install openjdk-8-jre
% sudo update-alternatives --config java
alternative java (/usr/bin/java を提供) には 4 個の選択肢があります。

  選択肢    パス                                          優先度  状態
------------------------------------------------------------
  0            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      自動モード
  1            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      手動モード
  2            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      手動モード
  3            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1069      手動モード
* 4            /usr/lib/jvm/jdk-7-oracle-x64/jre/bin/java       317       手動モード

Press <enter> to keep the current choice[*], or type selection number: 3
update-alternatives: /usr/bin/java (java) を提供するためにマニュアルモードで /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java を使います
% where java
/usr/bin/java
% /usr/bin/java -version
openjdk version "1.8.0_72-internal"
OpenJDK Runtime Environment (build 1.8.0_72-internal-b05)
OpenJDK 64-Bit Server VM (build 25.72-b05, mixed mode)
% /usr/bin/java -jar ~/bin/josm-latest.jar

無事起動して,警告メッセージは表示されなくなりました :)

https://www.flickr.com/photos/119142834@N05/23418744202/in/dateposted-public/

もし,他の Java アプリケーションが OpenJDK 8 を嫌がる場合はそちらを優先して JOSM は以下のようにして起動するようにしてもいいかもしれません.

% /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -jar ~/bin/josm-latest.jar

最近のOSMマッピング方法2015

この記事は OpenStreetMap Advent Calendar 2015 の4日目の記事です.昨日の記事は,OpenStreetMap – Wheelchair=*タグで素敵なプレゼントを でした.
私もついWheelchair=*タグを後回しにしてしまっているのでもっと意識してマッピングしたいと思います.

さて,今日は私の最近のOSMマッピング方法をメモしておこうと思います.たまに聞かれることがあるので参考になる人も居るかもしれません.

私は最近引きこもりでチェアマッピングが主ですが,外に出るときにはGPSロガーなどを持って出歩いてサーベイして家に帰ってからPCで入力することが多いです.この時使っているアプリケーションなどの紹介をしたいと思います.

目的地に行く前

マッピングをするとき道路や建物があるのと無いのではやりやすさが大分違います.そこで前もって作業できる時間があるなら目的地の地図を確認して基盤地図情報などをトレースしておきます.

このときJava製のマルチプラットホームのアプリケーションの JOSM を利用しています.Windows/MacOSX/Linux 等で動作します.私はLinux上で利用しています.

以下のページに利用ガイドがあります.

基盤地図情報のトレースはそのままでは出来ないので次のページを参考に基盤地図情報 25000,および 2500 TMSの設定を行います.

これで基盤地図情報を背景にしてトレースが出来るようになります.以下はとある自転車屋さんに行こうと思い周辺の道路と建物をトレースした例です.(結局未だ行けていませんorz)

https://www.flickr.com/photos/119142834@N05/22884236284/in/dateposted-public/

https://www.flickr.com/photos/119142834@N05/23144556199/in/dateposted-public/

目的地でのサーベイ

私はGPSロガーの他にAndroid端末を利用しています.
端末は以下の2つを利用しています.どちらもちょっと古いので新しい端末が欲しいところです><

  • Galaxy Note II
    ペンが使える.SIMスロット破損で3G通信不可
  • Xperia Pro
    主に3Gモデムとして利用

Android端末に以下のようなアプリケーションを導入しています.

Mapの確認&POI登録に OsmAnd+

これは前もってOSMの地図データをローカルに保存(オンラインモードもあり)しておき,地図の確認やPOIの登録が出来ます.ちょこっとPOIを登録するのに使っています.

GPSロギングと写真撮影などに OSMTracker for Android™

GPSロガーを別途持っていますがそれ以外にこのアプリケーションを起動してロギング&写真撮影をしています.帰宅してからその情報をJOSMに取り込んでマッピングしています.

OSM登録データの確認に OSMfocus

POIは登録されているけれど詳細なデータも登録されているのかなど確認したいことがあります.そういった場合のこのアプリで確認ができます.

Screenshot_2015-12-04-18-37-02

手書きマッピングに OSM sketch

以前もOsmAnd+ のスクリーンショットを取得してその上に手書きでメモを取るといったことをしていたのですが,このアプリケーションではメモしたデータをそのままOSMにアップロードできます.アップロードしたデータはそのまま他のアプリケーションで編集に使えます.
メモをするときはちょっとコツがあって,意識して大きめに書かないと操作ま丸められてしまうようでうまく書けません.大きめのストロークでメモしてこまめにスクロールするとうまく書けます.
広告のない有料版があれば購入したいです.

※このアプリケーションは2015年10月31日に浜松で開催された State of the Map Japan 2015 in Hamamatsu 内の次の公演「プレゼンテーション:マッピング用スマホアプリを作ってみた」で知りました.現地にはいけませんでしたが中継で参加しました :)

Mapの閲覧に MAPS.ME

ローカルに地図データをダウンロードして閲覧できます.地図データも地域ごとにダウンロードできるので欲しい場所の地図だけをダウンロードできます.(最近はOSMAnd+でも可能)
このアプリケーションは以前は有料だったのですが去年の今頃無料になり,現在はオープンソースになっています.
#購入して数週間で無料になってちょっとがっかりしました><

その他

お店で買い物をしたらレシートをもらうようにしています.レシートにはお店の詳細な情報が書かれていることが多いです.スーパーやコンビニなどの選択肢が複数ある場合は情報の少ない方で買い物するようにしています :)
タグにはsource=receipt が使えます.

Android以外ではGPSロガー(Garmin Oregon300)とデジタルカメラを持ち歩いています.GPSログはOSMにアップロードしてトレース元のデータに,写真にはジオタグを埋め込んでJOSMで読み込んでマッピングしています.
Linux でのジオタグの埋め込み方はちょっと古いですが以下の資料を参照して下さい.MacOSXでも動作すると思います.

Windowsでは などのアプリケーションで実現できます.(轍はWineでも動作します)

帰宅後のマッピング

帰宅後はサーベイしたデータを元に入力していきます.GPSログ,ジオタグの含まれた写真,レシートなどを見ながら JOSM を利用しています.撮ったつもりの写真が無かったり,撮っていてもぶれてたり光の具合でうまく見えないということもよくあります.確実なのは再度現地に行くことですが,画像編集ソフトでシャープネスやコンストラストを変更すると読みやすくなることもあります.これにはマルチプラットホームアプリケーションの GIMP を利用しています.
GIMP – GNU Image Manipulation Program

やってみたいマッピング方法

広角のアクションカメラの利用

最近はアクションカムが色々出ていますが,以下のような広角のカメラでアーケードなどのGPSの電波状態の悪いところなどをビデオマッピングしたら便利そうと思っています.最近出た新型では解像度も上がったようなので看板などの文字も読みやすそうです.

GNESS 対応ロガーの利用

準天頂測量衛星などのGNESS対応のGPSレシーバーを利用して精度の高いログを取得してみたいと思っています.GPSモジュールを入手出来ていないので計画はストップしています><

おわりに

実際はバッテリが持たなくてうまくサーベイ出来なかったりしますが最近はだいたいこんな感じでマッピングしています..もっといい手順やアプリがあったらぜひ教えて下さい.

また,不定期で鹿児島らぐでマッピングカフェをしています.参加者ははほぼ私一人ですが興味のある方はチェックしてみて下さい.

#しかし,もっと外出してサーベイする機会を増やさないといけないです…….

イートインとドライブスルーの営業時間が違う場合の OSM タグ

最寄りのマクドナルドが新装開店しました.敷地が広くなり建物も新しくなって駐車場も広くなって利用しやすくなるなと思っていたのですが行ってみるとこれまでの24時間営業からイートインは06:00-23:00 になっていました.でもドライブスルーは24時間と変則的に.
OSM に反映しないとなーと思いつつタグが解らなくて放置していました.OpenStreetMap Wiki を見てみるとそのものズバリの項目が(時間まで一緒!)

opening_hours=06:00-23:00 open “Dining in” || 00:00-24:00 open “Drive-through”

こういう書き方もあるみたいだけどアプリケーション側での対応がなかなかかも.両方書いとくのが理想でしょうね.

opening_hours:url=http://www.mcdonalds.co.jp/shop/map/map.php?strcode=46006

こちらに入れて試してみるとよく解らず.2種類の時間帯があるけど両方合わせて計算してる感じ?

opening_hours evaluation tool

open 00:00 to 06:00, open 06:00 to 23:00, open 23:00 to 24:00

ということでイートインとドライブスルーの時間が違い場合の opening_hours の入力方法が分かったので編集しておきました.後は敷地も広がったので今度側に行った時にはサーベイして反映したいところです.

ibus-mozc から fcitx-mozc に変更したら JOSM で日本語入力できなくなって困る

JOSM はマルチプラットホームでLinux/Windows/Mac で動作しますが,以下の話はLinux固有の問題です.

日本語入力のためのインプットメソッドフレームワークを iBus から fcitx に切り替えたのですが,JOSM で日本語入力ができなくなってしまっていました.Ctrl+Space でトルグするようにしているのですが,他のアプリケーションでは問題ないのにJOSM の場合は無反応で日本語入力ができなくなってしまいました,
そこで一時的にiBus/fcitx の両方が動作するようにしてJOSM 利用時だけiBus を使うようにしていました.

この話を #osckansai で(確か)武山さんに話したところ環境変数か何かが足りないのでは?と教えてもらいました.

少し試したところ XMODIFIERS=”@im=fcitx” を設定するとfcitx でJOSM に日本語入力が出来るようになりました.

% XMODIFIERS=”@im=fcitx” java -jar ~/bin/josm-tested.jar

変換候補がウィンドウの下に表示されちゃいますがまあ許容範囲かなと.

Screenshot from 2014-09-21 13:08:09

毎回コマンドを打つのもあれなのでこんな感じでショートカットを作成しておきました.
#何気にこっちのほうが時間掛かったorz
##環境変数を指定するには env を付ける.~/, $HOME は使えなかったのでフルパス.

JOSM で複数のオブジェクトの結合や引き離し

鹿児島の天文館のアーケードがroof として描かれているのですが,複数のオブジェクトが重なってしまっていました.

Screenshot from 2014-09-21 07:32:28

これは一旦消して書きなおしかなと思っていたのですが,JOSM のメニューを眺めていると「ツール」->「重複するエリアを結合 Shift+J」というものが使えそう.ということで試してみました.

先ずは,結合したい該当のオブジェクトを全て選択します.「ツール」->「重複するエリアを結合 Shift+J」で結合.

Screenshot from 2014-09-21 07:32:51

するとくっつきました.

Screenshot from 2014-09-21 07:33:01

便利ですね.

逆にくっついてしまっているオブジェクトを引き剥がすことも出来ます.
建物が隣の建物にくっついてしまったという時など,

Screenshot from 2014-09-21 10:39:04

くっついているノードを選択して,「ツール」->「ウェイを引き離す G」で

Screenshot from 2014-09-21 10:39:54

切り離せました.相手側のオブジェクトにもウェイが残ってしまうので消すなりしたほうがいいですね.

Screenshot from 2014-09-21 10:40:21


大きな地図を表示