Javascript (C3, D3_地図のお試し03)

■表示の線幅の問題だった。
前々回に見た日本地図の細部がつぶれているように見えたので、あれこれと試しているけど、結論としてただの線の設定の問題だった。
なお、地理院地図Vectorのサイトでjsonデータとして保存できていたのは地図のデザインファイル(表示設定のようなもの)で、表示している地図データそのものが保存されていたわけではなかった。見える範囲で画像としての保存はできたので、一部地域を使うだけなら、このサイトで編集すれば十分かと思う。

前回や前々回で見ていた画像が下のようなもの。このとき、線の幅の設定が、.attr("stroke-width", 0.5) となっていた。


これを0.05に変えると下になる。


上の図で黒くつぶれているように見えたのは線が太すぎただけで、データとしては精度が高いものだった。

そもそもどんなデータが欲しいか考えてみたら、このくらいの精度のものがあればよい(だいたい100万分の1くらい。10kmが1cm)。ので、上の日本地図データでも十分かと思う。

国土地理院ウェブサイトより抜粋。

線の幅が原因と気づかずに、このくらいの地図データを探したら、同じく国土地理院のサイトで地球地図日本というデータもあった。こちらはdbf, prj, shp, shx拡張子の4つのファイルのダウンロードとなる。
Chat GPTで表示の仕方やgeojsonへの変換の仕方を聞いて確認を進めた。下のPythonコードがdbf, prj, shp, shx拡張子ファイルからgeojsonへの変換。

import geopandas as gpd
import pandas as pd
# 各Shapefileを読み込み
miscl = gpd.read_file("sample69-2_miscl_jpn.shp")
rail = gpd.read_file("sample69-2_raill_jpn.shp")
coast  = gpd.read_file("sample068_coastl_jpn.shp")


miscl["type"] = "miscl"
rail["type"] = "rail"
coast["type"]  = "coast"

# すべてを結合(同じ座標系ならOK)
merged = gpd.GeoDataFrame(pd.concat([miscl, rail, coast], ignore_index=True))

# CRS(座標系)が揃っていない場合は統一
merged = merged.to_crs(miscl.crs)

# GeoJSONに出力
merged.to_file("merged_map.geojson", driver="GeoJSON")

print("✅ マージ完了:merged_map.geojson を作成しました")

作成したgeojsonを表示させると下になる(最大まで拡大した状態)。100万分の1くらいのデータはある。

国土地理院の地球地図日本データを加工して作成

あと、こちらのデータは交通や水系といったデータもあるので、それを重ね合わせることもできた。そういった情報も追加できるならこの地球地図日本データを使おうかと思う。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です