optgeo / jpcors

jpcors.pmtiles generation
Creative Commons Zero v1.0 Universal
0 stars 0 forks source link

The location is incorrect #1

Closed tmizu23 closed 1 month ago

tmizu23 commented 2 months ago

We found it to be offset to the northwest of its true position on map.

hfu commented 1 month ago

ありがとうございます!まだ私の方で状況が把握できていませんが、ズレを把握した上、ソースデータを変えるなどの対応をしようと思っています。

tmizu23 commented 1 month ago

確認ありがとうございます。 ずれの状況は例えば以下のような感じです。全箇所で同じようにずれているようです。

ソースの問題かと、以下のgeojsonをダウンロードしてQGISで表示してみると問題ないようです。 http://cyberjapandata.gsi.go.jp/xyz/cp/11/1764/821.geojson

そうなるとtippecanoeの処理のどこかが原因なのかも?と思いました。 (緯度経度から3857への変換にバグがあるとか?)

スクリーンショット 2024-09-10 18 26 44 スクリーンショット 2024-09-10 18 27 05
tmizu23 commented 1 month ago

これを見ると、もしかすると--projection=EPSG:4326が必須なのかもしれません。 https://github.com/protomaps/PMTiles?tab=readme-ov-file#recipes

tmizu23 commented 1 month ago

タイルはzoom 3のみで作成されてることに気がつきました。 zoom3のタイルをオーバーズームで地図表示したときに、ピクセルの位置精度がzoom3レベルなので、ズームするとずれる。のが原因な気がしてきました。

変換の問題ではなく、運用の問題でした。ということで自己解決しました。

hfu commented 1 month ago

ありがとうございます!私も手元でも確認できました。確かにズレていますね。 ご指摘のとおり、このズレの原因は、z=3 の座標分解能のものをオーバーズーミングしたことによって z=3 の離散座標の位置にずれてしまうというものだと思います。

電子基準点は位置が大事なので、例えば flatgeobuf を使うなど、より使いやすい出し方を考えてみようと思います!

image
hfu commented 1 month ago

代替のフォーマットとして FlatGeobuf, GeoParquet, GeoArrow などを少し考慮してみましたが、私のユースケースの場合、使用する主なライブラリは MapLibre GL JS であり、いずれも現時点ではあまりスマートなサイトに組めないと思いましたので、素直に z=16 あたりまで作成した PMTiles ファイルを作る 方向で修正したいと思います。

修正にあたっては、maxzoom を増やすごとに増える PMTiles ファイルのサイズをチェックしてみたいと思っています。

tmizu23 commented 1 month ago

PMTiles(バイナリベクトルタイル)は万能かと思ってましたが、精度に関して、特にポイントは注意が必要だと分かりました。 ここにもきちんとドキュメントがありましたね。 https://github.com/mapbox/tippecanoe#zoom-levels

代替のフォーマットも優位な部分がありますね。 オーバーズーミングでも精度が落ちないという意味ではgeosjon形式のベクトルタイルにも意味があったんだと分かりました。

どうもありがとうございました。疑問が解決したのでクローズします。

hfu commented 1 month ago

maxzoom=16 で pmtiles ファイルを作り直してみました! テスト