2022/05,江端さんの技術メモ

JSONで、芳賀・宇都宮LRTの路線と一般道を、停車駅の単位で接続して、LRTを道路扱いする方法にしてみました。

で、昨日の実験結果の方法

街の中に道路を作って、ダイクストラ計算ができるか試してみた件 ―― JOSMを使った道路追加の方法を試す

を使って、utsunomiya-lrt-latest-1-no_modify.osmを手動で作成しました。

そんで、もって、

OpenStreetMapから、鉄道情報(芳賀・宇都宮LRT)を引き出して、ダイクストラ計算やってみました。

を使って、道路とLRTのみのDBを作りました。

root@a2b2f7061d88:~# osm2pgrouting -f /utsu_db/utsunomiya-lrt-latest-1-no_modify.osm -c /utsu_db/mapconfig_for_cars_tram.xml -d utsu_tram_db -U postgres

これで、私は、LRTの架橋を使って、「さあ、道から乗って、LRTに乗って、橋を渡って、道に下りられるか?」を試してみます。

ターゲットとしたノードは、駅近くを選びました。

では始点の方を拡大します。

ダイクストラ計算の結果

postgres=# \c utsu_tram_db
You are now connected to database "utsu_tram_db" as user "postgres".
utsu_tram_db=# SELECT seq, node, edge, cost, agg_cost FROM pgr_dijkstra('SELECT gid as id, source, target,length_m as cost FROM ways',14779, 14266, false);
seq | node | edge | cost | agg_cost
-----+-------+-------+--------------------+--------------------
1 | 14779 | 42200 | 42.785394484227744 | 0
2 | 34 | 19785 | 7.618791492678159 | 42.785394484227744
3 | 35 | 48595 | 389.45546677917343 | 50.4041859769059
4 | 42701 | 59452 | 12.262652109536079 | 439.85965275607936
5 | 42982 | 59725 | 270.535671188774 | 452.12230486561543
6 | 42176 | 58890 | 215.43378099396782 | 722.6579760543895
7 | 42004 | 58695 | 620.3511502405348 | 938.0917570483573
8 | 42005 | 58696 | 199.48206530565716 | 1558.442907288892
9 | 42017 | 58710 | 162.9099908343982 | 1757.9249725945492
10 | 33448 | 48969 | 102.43865451629547 | 1920.8349634289475
11 | 14266 | -1 | 0 | 2023.273617945243
(11 rows)

QGISで書いてみたら、こうなった

あれ、LRTの架橋を通っていないぞ。これ前にも見たことがあるな。これかな

postGISのpgr_dijkstra()を試しているけど、理解できない現象が発生している件

 

revese_costを入れたら、ちゃんとLRT架橋を通過しました

よし、これで、道路と鉄道の強制マージに目処が付きました。

ちなみに、OpenStreetMapに実装されていなかった部分を、JSONで道路工事をした結果、ちゃんと開通していることを確認しました。

2022/05,江端さんの忘備録

―― ノードの座標情報が記載されていなければ、JOSMに地図が表示される訳ないやん?

"Without the information of latitude and longitude described in the script, even the JOSM cannot display the additional map information"

と、寝ている最中に気がついて、目が覚めてしまい、本日は不眠で体がだるいです。

This morning I noticed the above and waked up, and I feel tired all day.

この↓の話です。

This is the story.

街の中に道路を作って、ダイクストラ計算ができるか試してみた件 ―― JOSMを使った道路追加の方法を試す

朝方に、夢の中のネタで起こされるのは、コーディング、特許明細書などをガリガリ書いている時に多いです。

This happening is likely to happen in my dream early morning, when I concentrate coding or patent writing.

-----

今日、午前中に、電子地図(OpenStreetMap)の、ローカルの改竄に成功して、ちょっと気分がいいです。

Today, before noon, I succeeded a falsification of digital map (Open Street Map).

こんな時は、勢いにのって、本番の地図にも手を出すと、作業が早いのですが ――

In time like this, building on the momentum, I know that I have to deal with the target map, as soon as possible, however,

次のフェーズに入ると別の問題が発生することは分かっています。

I know that another problem happens easily in the next step.

ですから『今日は気分の良いまま、今日という日を終えたい』です。

Therefore, "I want to end today, with feeling good."

が、まあ、そんな甘えたことは言ってられませんので、多分、今晩も頭を抱えることになるのでしょう。

However, I know that I cannot be so picky. So some problems will annoy me in this night too.

で、また明日の朝、『楽しくもない夢に叩き起こされる』、と。

And tomorrow's morning, I will be waken up by a nightmare.

-----

『不毛だ』と思いますが、エンジニアの日常って、こんなものですよね。

I think it is meaningless, however, this is a typical engineer's life.

それとも、私だけ?

Or is it just me?

2022/05,江端さんの技術メモ

OpenStreetMapから、鉄道情報(芳賀・宇都宮LRT)を引き出して、ダイクストラ計算やってみました。

この投稿の最後に書いた『経路が繋がっていないと、ダイクストラ計算はできないはずなので』を、JOSMを使ってなんとかできないか実験中しています。

JOSMについては、こちらを御参照下さい。

で、こちらの本で例題として出している街のデータを使って実験します(宇都宮のデータはデカすぎるので)。

https://github.com/TomoichiEbata/hirohakama/tree/main/hiro_db の hirohakama.osmを使って実験します。

まず、hirohakama.osm から hirohakama1.osmを複製して、さらに、このhirohakama1.osmを、JOSMにローディングして、ファイル → 保存をします。JOSMに入れるだけで、フォーマットの一部が変更されるからです。

こうしておいて、さらに、hirohakama1.osmのコピー、hirohakama2.osmを作成します。

以後、この2つのファイルを比較することで、作成状況を把握していきたいと思います。

まず、すでにあるノード(node)間を繋いで道路を作ってみます。(小さい□がnodeです)

をクリックして、

この2点間に線を引きます。

で、その後、このhirohakama2.osmをセーブして、hirohakama1.osmと比較してみました。

結果は以下の通り。way id='220736115' に、ref='3813457320'のノードが追加されています(この一行だけ)。

ちなみに、ref='3813457320'のノードの情報は、

<node id='3813457320' timestamp='2015-11-02T07:07:06Z' uid='3057995' user='oini' visible='true' version='1' changeset='35026994' lat='35.5957559' lon='139.4735283' />

となっています。

既存のノード同士をくっ付けるのであれば、結構簡単にできそうです。

では、ノード以外の道路を適当に繋げるとどうなるかを、調べてみます。

で、ノード番号 -101965, -101966 の座標は入っていませんでした(作られていませんでした)。多分ダイクストラやっても、無視されると思います。

見落していました。作られていました(ファイルの最初の方だったので)。

<node id='-101792' action='modify' visible='true' lat='35.59604489421' lon='139.47307912887' />
<node id='-101793' action='modify' visible='true' lat='35.59558383511' lon='139.47265061383' />

ノードを動かしたら、

ちゃんと、ノードの座標も動いていました。

ただ、ノードでない場所(×の部分)とかを動かしてノードを増やしても、先程のようにマイナスのノード番号が出てきて、座標も追加されませんでした。

しかし、ノードの追加はしたいなぁ(今後のことを考えると)

で、"JOSM" "ノードの追加" で検索したら、このページが出てきました。

しかし、ただノードを追加すれば良いってもんじゃない。既存のWAYに埋め込まなれば意味がない。さて、どうしようか。


今考えている、最も安直なアイデアは、

OSMファイルに、ノード番号 -101965, -101966 の座標を手で書き込む、です。

試してみて、上手くいったら、またご報告します。

不要です。座標(ノード)はできていました。現時点の問題は、QGISとかに表示されない、ということです。

私が、人工的に追加したノードの記述は、

<node id='-101792' action='modify' visible='true' lat='35.59604489421' lon='139.47307912887' />

ですが、オリジナルのノードは、

<node id='278288868' timestamp='2015-11-02T07:00:53Z' uid='3057995' user='oini' visible='true' version='4' changeset='35026937' lat='35.5997134' lon='139.4660138' />

と、だいぶ表示形式が違うようです。

JOSMでは表示されますが、QGISでは表示されません。

 

https://help.openstreetmap.org/questions/71446/how-to-get-changes-how-to-commit-only-changed-elements

に、

JOSMは、どの要素が変更されたかを正確に記録しています。アップロード時には、あなたが触っていないオブジェクトはすべて無視されます。タグを追加して後で削除した場合など、例外があるかもしれません。

この情報はOSM XMLファイルにも保存されます。action='modify' と action='delete' の要素だけが、OSM データベースにアップロードされます。

との記載がありました。つまり、本番情報として認識されないのかな、と思っています。

https://wiki.openstreetmap.org/wiki/JA:%E3%83%8E%E3%83%BC%E3%83%89

には、

名前 説明
id 整数(>=1) ノードのIDはノードの中でのみ一意となる。(同じIDを持つウェイが存在しても良い。)一般的なエディターでは、サーバーに保存される前のノードのIDに負数が用いられる。サーバー上のノードのIDは不変であり、既存のノードに割り当てられたIDは将来にわたって変更されない。削除されたノードのIDが最利用されることはない(削除を取り消した場合を除く)。

という記載があるので、少なくとも負数を使うのは、ダメみたい。

近くにある、このNodeとWayを参照してみる。

(宇都宮レールウェイの場合)<tag k='construction' v='tram'/>と記載されていましたので、これを、強制的に<tag k='railway' v='tram'/>に置換する

(1)node id, way idの負数から、マイナスを取って、強制的に正数にする(他のnodeやwayとぶつかっていないことを確認する)

(2)"action='modify'" を削除してみる

(2)<tag k='highway' v='residential' />を追加してみる。

<way id='102395' visible='true'>
<nd ref='101792' />
<nd ref='101793' />
     <tag k='highway' v='residential' />
</way>

で、これでQGISで表示したら、やっと出てきました。

この、手動で変更したhirohakama-21.osmが、postgreSQL+postGISに載るかやってみました。

詳しい手続は、このWebサイトから探していただくか、面倒なら、GISをDIYで作ろう―PostGISを使い倒すを手に入れて下さい。

root@abbab13a933e:/# psql -U postgres
psql (12.5 (Debian 12.5-1.pgdg100+1))
Type "help" for help.

postgres=# CREATE DATABASE hiro_db21;
CREATE DATABASE
postgres=# \c hiro_db21
You are now connected to database "hiro_db21" as user "postgres".
hiro_db21=# create extension postgis;
CREATE EXTENSION
hiro_db21=# create extension pgrouting;
CREATE EXTENSION

hiro_db21=# \dt
List of relations
Schema | Name | Type | Owner
--------+-----------------+-------+----------
public | spatial_ref_sys | table | postgres
(1 row)

hiro_db21=# exit
root@abbab13a933e:/# osm2pgrouting -f /hiro_db/hirohakama-21.osm -c /usr/local/share/osm2pgrouting/mapconfig_for_cars.xml -d hiro_db21 -U postgres

さて、ダイクストラがちゃんと働いているかを調べてみました。

hiro_db21=# SELECT seq, node, edge, cost FROM pgr_dijkstra('SELECT gid as id,
source, target,length as cost, reverse_cost FROM ways',31, 262);
seq | node | edge | cost
-----+------+------+------------------------
1 | 31 | 1 | 0.0002245334340526014
2 | 1 | 3 | 0.000629444702259577
3 | 2 | 356 | 0.00046326006156789223
4 | 262 | -1 | 0
(4 rows)

QGISで調べてみました。

新しい道路で、ダイクストラ計算ができていることが確認できました。

 


P.S. 調べていたら、駅の構成についての説明文を見つけました。後程、参考にさせて貰おうと思います。

 

2022/05,江端さんの技術メモ

JOSMのノードの追加は、「上級者モード」にならないと、メニューが出てきません。

とすると、メニューが見えるようになります。

この理由は、比較的、推測しやすいです。

もし間違って、このようなデタラメな地図が、OpenStreetMapの方に反映されるようなことになれば(アップロードされれば)、世界中の地図がメチャクチャになる、からです。

今、私がやっていることは、自分のシミュレータ用に都合よく地図を改竄(かいざん)していることですから、

ですから、間違っても、この改竄した地図をアップロードしないことに注意しなければなりません。

故に、「上級者モード」ということ ―― なんだろうなぁ、と思っています。

2022/05,江端さんの忘備録

私は、ずっとヒラの研究員です。

I've been a flat researcher of a company for a long time.

ですので、基本的に、強い発言力がありません。

So basically, I do not have a strong voice.

以前、とある制御システムについての提案をしたのですが、不採用となりました。

Previously, I propose about a control system, but it was rejected.

その2年後に、「採用されたシステム」がコケました。

However, the "accepted system" was down two years later.

(これは、たまたま、です。私も結構な頻度で、予想を外します)。

(This happened by change. I also miss predictions quite often)

ただ、その時に、その事を、後輩から叱責されたことがあります。

At that time, I was accused of that thing from a junior colleague.

『江端さんの、出世に対する無関心が、このような事態を招いたのです』

"This tragedy occurred because of an indifference about your promotion"

と。

-----

「権力とか名声とかに無欲であることは、美徳である」という思い込みを持っていた私は、ブン殴られたようなショックを受けたのを覚えています。

I remember that I was pretty shocked to hear his opinion, because I believe that "being selfless against power and prestige is a virtue."

この世の中には、『責務としての出世』という考え方があるようです。

There seems to be a thought of "promotion as a duty" in the world.

皆さんは、後輩に迷惑をかけない程度に、出世するようにして下さい

You all should try to promote, avoiding troubles for your juniors.

私は「もう手遅れ」ということで、免責として下さい。

I am "too late" for this, so please excuse me.

未分類

ロードするビデオクリップはmp4として、映像出力と出力形式を、mp4に合わせる

mp4をドラッグする。

ざっくり3倍にしてみる。

あとは保存すればできあがり。

 

2022/05,江端さんの忘備録

いつまでも、昔の思い出を語り続けるようで、少々情けないとは思うのですが ――

It is shameful to talk about good old days eternally,however,

京都が出てくるアニメやコミックには、どうしても嵌(はま)ってしまいますね。

comics and animations whose stage is Kyoto is going to make me get stuck in.

今は、「であいもん」というコミックを読んでいます。

Now I am reading "Deaimon (good foods combination)".

-----

四条河原町とか三条あたりは、どうということもないのです。

I am not so interested in the Shijo Kawaramachi and Sanjo.

しかし、叡電(叡山電車)の駅、出町柳、修学院、宝が池あたりが出てくると、もう、頭の中が30年前に一瞬でワープしてしまいます。

However, whenever I watch the pictures of Eiden (Eizan Railway) stations, Demachiyanagi, Shugakuin, Takaraga Ike, my mind has already instantly warped to 30 years ago.

まあ、人生で、あれほど幸せな時代(死ぬほどバイトして、死ぬほど勉強した)はなかったですから。

I never had such a happy time in my life( I worked part-time to death, and studied to death).

叡電の停車駅では、これ以外では、修学院(これは、アニメ「けいおん」で出てきました)が出てくるくらいですね。

In Eiden line, we cannot hear the name of station, except for Shugakuin (which appear in the Anime "K-ON") and the above.

-----

―― なんで、「岩倉」がでてこんのや

Why not "Iwakura"

と思う。

I think.

宝が池を越えると、もう、貴船、鞍馬まで、駅名は出てきません。

Once over Takaragaike, we cannot see station name, until Kifune, Kurama.

-----

嫁さん:「岩倉って、何かあったっけ?」

Wife:"What is in Iwakura?"

江端:「岩倉具視の旧宅がある」

Ebata:"There is the former residence of Iwakura Tomomi"

嫁さん:「その家で何してたん?」

Wife:"What was he doing in the house?"

江端:「当時、要職から干されてゴロゴロしていかなぁ。時々、反体制の若いやつら(幕末の志士)が出入りしていたとか、しないとか」

Ebata: "He was deprived of any chance to appear in the Imperial Palace, and young anti-establishment guys had seems in and out"

嫁さん:「ウリが弱いなぁ」

Wife:"It is weak"

-----

岩倉駅を有名にさせる為には、岩倉具視を主人公にした、新しいコンテンツの登場が必要かと思います。

In order to make Iwakura Station famous, I think it is necessary to introduce new content featuring Iwakura Tomomi.

2022/05,江端さんの忘備録

「三角関数」で、また、誰か何かやった(やらかした)ようですね。

I thin that someone do or say something about "trigonometric function".

2年前にリリースした、

Two years ago, my released column,

「リカレント教育【前編】 三角関数不要論と個性の壊し方」

"Recurrent Education [the former half]: The trigonometric function unnecessary theory and the Destruction of Individuality"

がランクインしていて、ビックリしました。

is now ranked in, so I was surprised.

多分、この『三角関数 要/不要』の論争は、これから何度も登場するでしょう。

Probability, this argument of "The trigonometric function unnecessary theory" will often be happened in the future.

でも、実は、こちらよりも、後編の

However, rather than the above column, in the latter half,

「リカレント教育とは、“キャリア放棄時代”で生き残るための「指南書」であるべきだ」

"Recurrent education should be a "guidebook" for survival in the age of career abandonment".

の方で、さらに、ハードな意見を展開しています。

I have argued hard opinions of mine like following,

―― いろいろ言っているけど、要するにお前ら、三角関数が嫌いなだけだろ……!

"You say a lot of things, but the bottom line is that you guys just hate trigonometric functions: ..!"

-----

ご興味のある方は、ご一読下さい。

Please read on if you are interested.

2022/05,江端さんの技術メモ

こんな感じになって、困っていました。

「セキュリティ保護なし」をクリックすると、次の画面が出てきます。

">"をクリックすると、

「証明のパス」を選ぶと、こんな感じになっています。

で、問題は、この「Cisco Umbrella Root CA」が、「信頼されたルート証明機関」に入っていないことらしいです。

ところが、これはインストールして使われるものでもないらしいとか、ネットでは色々書かれていましたが、私は、この「Cisco Umbrella Root CA」を力付くで、インストールしました。

"Cisco_Umbrella_Root_CA.cer"を探し出して、そのファイルを適当なディレクトリにダウンロード。ファイルを右クリックして、「証明証のインストール」を選んで、以下を実行。

 

これで、現在のところ、問題は出てこなくなっているようです。
(セキュリティ的にどうかとも思うのですが、作業できないと困るので)

以上