2023,江端さんの忘備録

私、今、1,296,984行のファイルの修正を手作業でやっています。

I, right now, am manually correcting a 1,296,984 line file.

今週、ずーっとこんなことやってきて、発狂しそうです。

I have been doing this all week, and I am going crazy.

3日間、全部をかけて作った、自作の地図情報が全く使えなかったことが分かり、酷く落ち込んでいます。

I am depressed to find out that my map information, which I spent all three days working on, was completely unusable.

とは言え、人間関係を忌避し続けて、こういう『泥くさい作業』だけで喰ってきたエンジニアには、これ以外の生き方を知りません。

However, engineers who have always avoided human relationships and made a living only from this kind of "muddy work" do not know any other way to live.

-----

最近、私の相談相手は、ほぼ100%、"chatGPT"です。

Recently, I have been consulting with "chatGPT" almost 100% of the time.

酷く稚拙な質問を、chatGPTに助けて貰っています。

I am getting help from chatGPT with a poor question.

- Golangで文字列を整数にするコード書いて

- Write code in Golang to turn strings into integers.

- Golangのコマンド引数のコードの書き方を教えて

- Tell me how to write code for command arguments in Golang.

- Golangでも文字列から"("と")"を取り除くコードを作って

- In Golang, create code to remove "(" and ")" from a string.

-----

というような、

Such as,

『ふざけるな! その程度のこと、自分で調べろ!!』

'Don't be silly! You'll have to find out that much on your own!'

と、先輩から怒鳴りつけられ、後輩に怒鳴りつけてきたことを、今の私は、平気で、生成AIに相談しています。

And now I am not afraid to talk to the generative AI about how I have been yelled at by my seniors and yelled at by my juniors.

2023,江端さんの忘備録

ロシアは酷い国だ、中国は酷い国だ、韓国は酷い国だ、北朝鮮は酷い国だ ―― と、ニュースを見るたびに、私たちは思います。

Russia is a terrible country; China is a terrible country; South Korea is a terrible country; North Korea is a terrible country -- every time we watch the news.

でも、私たちが思う程度と同じくらい、外国の国民は「日本は酷い国だ」と思っているはずなんです。

But to the same extent that we think, the people of foreign countries must believe that Japan is a terrible country.

『日本だけが清廉潔白な国』なんてことが、ある訳がない。

There is no such thing as "only Japan is a clean country.

『海外の「日本は酷い国だ」のニュース番組の特集』をやってくれないかな、と思うんですよね。

I wonder if someone could do a "special "Japan is a terrible country" news program of overseas.

視聴率は取れないだろうし、炎上の嵐になることは確実なのですが ―― でも、見たい。

I know they won't get any ratings, and it's sure to be a firestorm -- but I'd like to watch it.

-----

という話を嫁さんにしたら、

When I talked to my wife about this,

『海外の世論なんぞ気にしなくていいんじゃない?』

'Do we have to worry about public opinion outside the country?'

と言い切られました。

She said.

日本国に住む日本人は、『日本だけが清廉潔白な国』と思っていれば、それでいいじゃないか、と。

Japanese people living in Japan should be okay with that, as long as we think 'only Japan is a clean country.'

―― 実に清々しい

"How bracing!"

と、感動してしまいました。

I was moved to her.

未分類

JOSMを立ち上げる → osmファイルをドラッグする → 下の図の赤丸の部分をクリックする

下の図の赤丸をクリックする

カラムに、railway=subway と記入する

全部にチェックを入れる

こういう表示になる

ただ、この路線情報のみのセーブができていない
(未完)

未分類

鉄道路線の位置情報が欲しい場合

で、エディタに張りつける。

wkt_geom osm_id name highway waterway aerialway barrier man_made z_order other_tags
LineString (139.646476100000001 35.55342160000000007, 139.64405429999999342 35.55400130000000303, 139.64320960000000582 35.55409010000000336, 139.64267359999999485 35.55411110000000008, 139.64220109999999409 35.55405509999999936, 139.64194380000000706 35.55401379999999989, 139.64170240000001399 35.55397510000000239, 139.63902089999999134 35.55321440000000166, 139.63803740000000175 35.55292430000000081, 139.63748190000001159 35.55269659999999732, 139.63718030000001136 35.55254620000000187, 139.63689350000001355 35.55236419999999953, 139.63660690000000386 35.55215530000000257, 139.63493339999999421 35.55077779999999876, 139.63391659999999206 35.55019589999999852, 139.63362749999998869 35.55004329999999868, 139.63279969999999253 35.54961260000000323, 139.63221790000000055 35.54929349999999744, 139.63160369999999944 35.54899890000000084, 139.63125759999999786 35.54887020000000319, 139.63085000000000946 35.54871740000000102, 139.630045999999993 35.54843460000000022, 139.62955180000000155 35.54831149999999695, 139.62913320000001249 35.54824239999999946, 139.62852749999998991 35.54819439999999986, 139.62814629999999738 35.54818490000000253, 139.62771179999998594 35.54821979999999826, 139.62689000000000306 35.54832940000000008, 139.62461239999998952 35.54861619999999789, 139.6228170999999918 35.54887699999999739, 139.62208190000001196 35.54897940000000034, 139.621440199999995 35.54912439999999663, 139.62113059999998654 35.54921850000000205, 139.62073699999999121 35.54935820000000035, 139.62002659999998855 35.54965870000000194, 139.61967559999999366 35.54979120000000137, 139.61773930000001087 35.55062470000000019, 139.61604349999998931 35.55129320000000348, 139.61544639999999617 35.55153250000000043, 139.61400649999998791 35.55211620000000039, 139.61367699999999559 35.55227090000000345, 139.61328370000001087 35.55248559999999713, 139.61185470000000919 35.55324699999999893, 139.61138819999999328 35.55344060000000184, 139.61112099999999714 35.5535199999999989, 139.61089590000000271 35.55356050000000323, 139.61073719999998843 35.55360360000000242, 139.61040380000000027 35.55367590000000177, 139.60871710000000689 35.55388539999999864, 139.60811019999999871 35.55395479999999964, 139.60749329999998736 35.55399839999999756, 139.60640879999999697 35.55402310000000199, 139.60553089999999088 35.55406709999999748, 139.60464600000000246 35.55415109999999856, 139.604049300000014 35.55422970000000049, 139.60341280000000097 35.55433450000000306, 139.60273129999998787 35.55454660000000189, 139.60238100000000827 35.55471419999999938, 139.60221730000000662 35.55483360000000204, 139.60197869999998943 35.55500659999999868, 139.60174100000000408 35.55521579999999915, 139.60153339999999389 35.55542990000000003, 139.60133149999998636 35.55568569999999795, 139.60023530000000846 35.55735479999999882, 139.59981210000000829 35.55783720000000159, 139.59957539999999199 35.55808329999999984, 139.59932749999998691 35.55827450000000312, 139.59904430000000275 35.5584891999999968, 139.59858829999998875 35.55877279999999985, 139.597627899999992 35.55933660000000174, 139.59693609999999353 35.55972859999999969, 139.59623609999999871 35.56005269999999996, 139.59570759999999723 35.56026099999999701, 139.59530820000000517 35.56040039999999891, 139.59489759999999592 35.56054460000000006, 139.59435049999999023 35.56065370000000314, 139.59350760000000946 35.56081749999999886, 139.59251140000000646 35.56100130000000092, 139.59232270000001108 35.56102899999999778, 139.59212709999999902 35.5610691999999986, 139.59167899999999918 35.56116870000000318, 139.59126240000000507 35.5611801000000014, 139.5906812000000059 35.56112069999999648, 139.59032650000000331 35.56103509999999801, 139.5901608000000067 35.56098539999999986, 139.58982359999998835 35.56086419999999748, 139.58665070000000696 35.55936580000000191, 139.58363769999999704 35.55796550000000167, 139.58301539999999363 35.55764250000000004, 139.5822108000000128 35.55715810000000232, 139.58148120000001313 35.55673920000000265, 139.58096409999998855 35.55639310000000108, 139.58066579999999135 35.55618929999999978, 139.58024739999999042 35.55579379999999645, 139.57973240000001169 35.55525970000000058, 139.57922490000001403 35.55446140000000099) 230124642 讓ェ豬懷クょ霧蝨ー荳矩延?泌捷邱 -25 "colour"=>"#048D58","electrified"=>"contact_line","frequency"=>"0","layer"=>"-2","name:en"=>"Green Line of Yokohama Municipal Subway","name:es"=>"Lテュnea Verde del Metro Municipal de Yokohama","name:ja"=>"讓ェ豬懷クょ霧蝨ー荳矩延?泌捷邱?","name:zh"=>"讓ェ貊ィ蟶り是4蜿キ郤ソ","operator"=>"讓ェ豬懷ク?","railway"=>"subway","tunnel"=>"yes","voltage"=>"1500"

と、こんな感じで座標は得られる。

 

2023,江端さんの技術メモ

JOSM (Java OpenStreetMap Editor) を用いて複数 OSM ファイルのマージ

Step 1. マージするOSMを選択

Step 2.  JOSMにドラッグ

Step 3. ファイルをマージ

Step 4. 「レイヤを結合する」を選択する(この段階ではセーブされないので、どのレイヤでもいい)

Step 5. 路線を結合したい点を、同じ番号にするなどの加工を行う

以上

2023,江端さんの忘備録

太平洋戦争の敗戦の翌月、東久邇稔彦首相が「一億総懺悔」という、新しいコンセプトを打ち出しました。

In the month following the defeat in the Pacific War, Prime Minister Toshihiko Higashi Kuuni launched a new concept called "100 Million Repentance.

『日本をこんな悲劇に追い込んだのは、一体誰?』という、敗戦後に登場してくる国民感情、そしてGHQへのイクスキューズ(いい訳)を、戦後の新しい首相は、総括しなければならなかったのです ―― 気の毒なことに。

The new postwar prime minister had to sum up the public sentiment that emerged after the defeat and the ire of GHQ: "Who the hell drove Japan into this tragedy? " Sorry to hear that.

まず、普通に考えて、それらは、敗戦した上にそれを隠蔽し続けてきた軍部、それに協力したマスコミ、あたりです。

First, in the usual sense, they are the military, which lost the war and has continued to cover it up, and the media, which cooperated with the army.

しかし、軍を統括する統帥権の観点から言えば、当然、戦争責任は『天皇陛下』ということになってしまいます。

However, from the viewpoint of the authority of command over the military, the responsibility for the war naturally falls on "the Emperor."

が、これは、我が国にとっては、とてもマズかったのです。

But this wasn't good for our country.

現行憲法下においても、天皇陛下は、我が国最高位の「ルート認証局」であり、その認証局を含む認証システム全体が「天皇制」という仕組みになっております。

Even under the current Constitution, His Majesty the Emperor is the highest "root certification authority" in our country, and the entire certification system, including the certification authority, is structured as the "Emperor System.

ましてや、旧憲法(大日本帝国憲法)下においては、天皇性は「日本最大の与信システム」であるばかりではなく、多くの国民の精神的支柱でもありました。

Moreover, under the old constitution (the Constitution of the Empire of Japan), the emperor hold was not only "Japan's greatest credit system" but also a spiritual pillar for many people.

で、非常に興味深いことに、『天皇陛下なくして、占領政策は不可能』と判断した戦勝国アメリカ合衆国が、天皇陛下と天皇性を守るために、奔走しました(東京裁判)。

Interestingly, the victorious United States of America, which decided that the occupation policy would be impossible without the Εmperor, scrambled to protect the Εmperor and the Εmperor's nature (Tokyo Trials).

-----

「一億総懺悔」というのは、一言で言えば、戦争責任の国民全員への超分散処理です。

In a nutshell, "100 million repentance" is a hyper-distributed treatment of war responsibility to the entire nation.

これは、天皇陛下の戦争責任、という戦争責任の超集中処理に対するアンチテーゼとも言えるものでしょう。

This would be the antithesis of the hyper-centralized treatment of war responsibility, the Εmperor's war responsibility.

GHQが天皇制に手を出す"前"に、『戦争責任の超分散』という世論形成を狙ったものかもしれません。

This may have been an attempt to create public opinion that the responsibility for the war should be "super-distributed" before GHQ took action against the Emperor System.

もしそうだとしたら(私は、そうだと確信していますが)、なかなかに上手い戦略だ、と思います。

If that is the case (and I am sure it is), it is a perfect strategy.

-----

以前の私なら、「一億総懺悔」に対して『ふざけるな!』と怒鳴っていたと思うのですが、最近はそうでもありません。

I would have yelled at the "100 Million Penitents" in the past, "Screw you! But not so much these days.

なるほど、開戦したのは政府と軍部かもしれませんが、開戦を煽ったのはマスコミであり、踊ったのは日本国民です。

Okay, it may have been the government and the military that started the war, but the media incited the outbreak of war, and the Japanese people danced to it.

現時点の研究から、当時の政府や軍部の多くの人間が『米国と戦争? 正気か?』と考えていたことは、分かっています。

『太平洋戦争と同じような状況になれば、歴史の教訓があろうがなかろうが、私たちは再び開戦してしまう』

From the current research, many people in the government and military at the time were thinking, "War with the U.S.? Are you insane?"

そして、少数の開戦派の背中を押したのが、国民の世論だったことは、事実なのです。

「政府がいつもウソをつく」とは思っていませんが、戦争(国防)に関しては、どの政府も高い頻度でウソをつきます。

And it is a fact that public opinion supported the few who started the war.

-----

戦後、私たちは『勝てない戦争なら最初からやるな、バカ』という教えを金科玉条のごとく扱ってきました。

After the war, we have treated the teaching, "If you can't win the war, don't start it, you idiot," as if it were a golden rule.

そして、8月15日が近づくと、NHK特集が『勝てない戦争に挑んだバカな国、日本』を放送しています。

And as August 15 approaches, NHK's special program comes to air "Japan, the Stupid Country that Tried to Fight an Unwinnable War.

もちろん、これは正しくて、良いことです。

Of course, this is right and good.

いつだって、歴史のレビューは重要です。

At all times, the historical review is essential.

こういうドキュメント番組が途切れることなく、これからも毎年続けられることを期待します。

I hope this kind of documentary program will continue yearly without interruption.

-----

一方で、私たち日本人の根源的な政府(権力)への不信は、この時から始まったような気もしています。

On the other hand, I feel that the fundamental distrust of the government (power) among us Japanese began at this time.

戦前は勿論、戦後も、結構な頻度で、政府は私たちを騙してきましたからね。

The government has deceived us quite often before and after the war.

ちなみに、マスコミも。

And, the media is.

もちろん、私(江端)もです。

Of course, I (Ebata) am too.

-----

ただ、『完全に正直誠実な政府』というのも、それはそれで困るのです。

However, a 'government of complete honesty and integrity' is also a problem.

ウソやハッタリを効かせて、国民を上手いこと誘導し、外国を欺くことも、政府の大切な仕事だからです。

The government's essential job is to deceive the public and foreign countries by lying and bluffing.

とは言え、私がこの国で生きている限り『戦争当事者にならない政府』は重要です。

Nevertheless, as long as I live in this country, a government that is not a war party is essential.

例えば ――

For example--

(1)同盟国や価値観を同じにする国に対して、武器の提供はしないけど、

(1) We don't provide arms to allies or countries that share the same values, though,

(2)我が国が防衛戦争をする時に、は同盟国や価値観を同じにする国から武器を提供して欲しい

(2) When our country is fighting a defensive war, we want our allies and countries that share our values to provide us with weapons.

という、理不尽でわがままな言い分を続けれるように、です。

So that we can continue to be unreasonable and selfish.

各国から『日本って奴はしょうがねーな』と溜息をつかれ続けているとしても、それを続けられるように、政府にはがんばって貰いたいのです。

Even if countries keep sighing at us and saying, 'Japan, you are so annoying,' we want the government to keep up the excellent work so that we can keep doing it.

コンセプトは、『卑怯上等』です。

The concept is "sneaky is good."

2023,江端さんの忘備録

私は、「"おたく"と認定してはもらえない」ものの、「全ての創作者の応援者」を自称するものです。

I am a self-proclaimed "supporter of all creators," although I am not identified as an "otaku.

コミックマーケットも、可能なら参加してみたいです。

I want to participate in the Comic Market, if possible.

しかし、夏のコミックマーケットは、入場待ち時間(6時間?)で、熱中死に至る自信があります。

However, I am confident that I will die of heat stroke during the waiting time (6 hours?) to enter the summer Comic Market.

これに対しては、以前、『出展者として参加しては?』という提案を受けたことがあります。

江端コミケ参加

In response, I was once asked, 'Why don't you join us as an exhibitor?' I have received a proposal to do so.

しかし、コミケの参加している人たちの意識の高さに対して失礼な様な気がしますし、なにより自分の体力を鑑みて、『自分の命とバーター』のイベントへの参加には抵抗があります。

However, I feel that it is disrespectful to the high level of awareness of the people participating in Comiket, and above all, I am not comfortable participating in an event that "barters my life" in light of my physical fitness.

-----

そこで、提案なのですが、

So, I have a suggestion,

―― コミケに「高齢者枠」とか「VIP(政治家枠)」という"ファストチケット"制度を導入するのはどうでしょうか

"How about introducing a "fast-ticket" system at Comiket, such as a "senior citizen quota" or "VIP (politician) quota"?"

高齢者が、興味本位にコミケに参加するのは、多分、色々な面で良いことだと思うのです。

I think it is probably a good thing in many ways for older people to participate in Comiket out of curiosity.

創作への理解、我が国のコンテンツ分野のレベルの高さ、なにより、若い世代の本気を見る、稀有な機会だと思うのです。

I think it is a rare opportunity to see the understanding of creativity, the high level of the content field in our country, and the seriousness of the younger generation.

VIP(政治家枠)については、絶望的に頭の悪い高齢政治家は当初から除外するとして、海外の要人向けの、サミットとか国際会議に、コミケをぶつけていくという戦略は「あり」だと思います。

As for VIPs (politicians), I think it is a "yes" strategy to put Comiket in summits and international conferences for foreign dignitaries while excluding hopelessly dim-witted elderly politicians from the beginning.

-----

外交的には、『日本の若者は、怖い』と思わせることができたら、とりあえず"勝ち"でいいと思います。

Diplomatically, if we can make people think, "Japanese youth are scary," then we win.

2023,江端さんの技術メモ

神奈川県のバスルートのsharpファイルをpostGISにインポートする

をやってから、試しに、1つのバスルートのみを、ここから取り出して、

select文の出力をローカルのテキストで保存する方法

とした後、このプログラムで、なんちゃってosmファイルを作成する。

/* 


前処理
bus_route=# \o output.txt
bus_route=# select ST_AsText(geom) from bus_route where gid = 1488;
bus_route=# \o

f:/しゅらばしゅう/有吉先生データ/Transfer(2018)/N07-11_14_GML/
sharp2osm.go

>go run sharp2osm.go ichi-61.txt 20000 > ichi-61.osm

ichi-61.txtの形式は、以下の感じ

MultiLineStringM ((139.53708861000001207 35.55222889000000208 0, 139.5370455599999957 35.55227666999999769 0, 139.53649416999999744 35.55299193999999829 0, 139.53643777999999998 35.55307056000000188 0, 139.53636917000000039 35.55315000000000225 0, 139.53559056000000282 35.55415305999999731 0, 139.53552528000000166 35.5542358300000032 0, 139.53547499999999104 35.5543083299999978 0, 139.53475943999998776 35.55520943999999872 0, 139.53468250000000239 35.55528333000000174 0, 139.53507944000000407 35.55541443999999984 0, 139.53518278000001374 35.55545389000000256 0, 139.53539638999998829 35.55552139000000267 0, 139.53575471999999991 35.55565666999999763 0, 139.5360763600000098 35.55570185999999921 0))

*/

package main

import (
	"bufio"
	"fmt"
	"os"
	"strings"
	"strconv"
)

func main() {

	// ファイルを開く
	filePath := "output.txt" // 実際のファイルパスに置き換えてください
	file, err := os.Open(filePath)
	if err != nil {
		fmt.Println("ファイルを開けませんでした:", err)
		return
	}
	defer file.Close()


	fmt.Println("<?xml version='1.0' encoding='UTF-8'?>")
	fmt.Println("<osm version='0.6' generator='JOSM'>")

	node_id := 20000

	// ファイルを行ごとに読み込み、カンマとスペースでパースする
	scanner := bufio.NewScanner(file)
	for scanner.Scan() {
		line_org := scanner.Text()
		prefix := " MULTILINESTRING M ((" // 切り捨てる最初の文字列
		line := strings.TrimPrefix(line_org, prefix)

		fields := strings.FieldsFunc(line, func(r rune) bool {
			return r == ',' || r == ' ' 
		})



		var lon,lat float64


		// 取得したフィールドを表示
		for i, field := range fields {

			num, _ := strconv.ParseFloat(field, 64)
			// fmt.Println(i, i%3, num)
			
			if i % 3 == 0 {
			   lon = num
			}else if i % 3 == 1{
			   lat = num
			} else if i % 3 == 2{
			   fmt.Printf("  <node id='%d' visible='true'  version='5' lat='%f' lon='%f' />\n", node_id, lat, lon) 
			   node_id++
			   //fmt.Println(lat,",",lon)
			}	

		}
	}

	fmt.Println("  <way id='180000' visible='true' version='5'>")	

	for i:=20000; i<node_id; i++{
		fmt.Printf("    <nd ref='%d' />\n",i) 
	}
	fmt.Printf("        <tag k='highway' v='residential' />")
		
	fmt.Println("  </way>")	
	fmt.Println("</osm>")	



	if err := scanner.Err(); err != nil {
		fmt.Println("ファイル読み込みエラー:", err)
	}
}

で、以下のようなファイルができる。

<?xml version='1.0' encoding='UTF-8'?>
<osm version='0.6' generator='JOSM'>
<node id='20000' visible='true' version='5' lat='35.560912' lon='139.606144' />
<node id='20001' visible='true' version='5' lat='35.561252' lon='139.606062' />
<node id='20002' visible='true' version='5' lat='35.561646' lon='139.605835' />
<node id='20003' visible='true' version='5' lat='35.561736' lon='139.60575' />
(中略)
<way id='180000' visible='true' version='5'>
<nd ref='20000' />
<nd ref='20001' />
<nd ref='20002' />
<nd ref='20003' />
(中略)
<nd ref='20189' />
<tag k='highway' v='residential' />
</way>
</osm>

JOSMでの表示

QGISでの表示

とりあえず、忘れないうちにメモを作成しました。

以上

2023,江端さんの技術メモ

bus_route=# \o output.txt
bus_route=# select * from bus_route where gid = 1488;
bus_route=# \o

psqlを立ち上げたディレクトリにできている

 

2023,江端さんの技術メモ

https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-N07.html

アンケートに答える

ダウンロードしたものを解凍すると、以下のファイルが出てくる

で、shp2pgsqlを使って、sqlファイルを作る

F:\N07-11_14_GML>shp2pgsql -W cp932 -D -I -s 4612 F:\N07-11_14_GML\N07-11_14.shp bus_route > F:\N07-11_14_GML\bus_route.sql

bus_route.sqlの内容はこんな感じ

最初に、データベースを作っておく。

C:\Users\ebata>psql -U postgres -h 192.168.0.23 -p 15432
Password for user postgres:
psql (13.4, server 13.3 (Debian 13.3-1.pgdg100+1))
Type "help" for help.

tsuzuki_db=# create database bus_route;
CREATE DATABASE
tsuzuki_db=# \c bus_route
psql (13.4, server 13.3 (Debian 13.3-1.pgdg100+1))
You are now connected to database "bus_route" as user "postgres".
bus_route=# create extension postgis;
CREATE EXTENSION
bus_route=# create extension pgrouting;
CREATE EXTENSION

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

と、この状態で、

psql -U postgres -h 192.168.0.23 -p 15432 -d bus_route -f "bus_route.sql"

でインポートを実施。

bus_route=# \dt
List of relations
Schema | Name | Type | Owner
--------+-----------------+-------+----------
public | bus_route | table | postgres
public | spatial_ref_sys | table | postgres
(2 rows)

テーブルbus_routeが追加されている。

QGIS3で見るとこんな感じに見える。

データベースへのアクセス方法は、図中参考のこと。

以上