0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「法務省地図XMLアダプトプロジェクト」をpmtilesにしたときのFeature ID

Posted at

概要

以前、登記所備付地図を扱う「法務省地図XMLアダプトプロジェクト」を改造して、
コンテナ化する取り組みを書きました。
この中で地物のIDをどうするかという問題を抱えており、それに対応した内容をまとめたものになります。

筆IDに代わるIDを生成

もともとの地図XMLには、筆IDなるものが含まれています。
これは地図XMLファイルの中では、確かにID(重複の無い一意な値)なのですが、複数の地図XMLを結合する場合には被ってしまいます。

例えば、MIERUNEさんのQGISプラグイン qgis-mojxml-pluginでは、fidというQGISで地物に付与されるIDを利用しているようです。

とはいえQGISを使うわけではないので、地図XMLのファイル名は市区町村コード(5桁)-法務局コード(4桁).zipとなっていることから、{都道府県名}{地図XMLファイル名}{筆ID}で、IDとすることにしました!

実装

mbtilespmtimesで利用されるMVTのFeature(地物)では、IDにはuint64を使うようです(下記参照)。そこで、人間が判読できるようにしたID(属性情報にglobal_idとして追加)、システム内で利用するID(RFC 7946にあるGeoJSONのID、MVTのFeature ID = uint64)を追加することにしました。

  • まずglobal_idを生成しますが、{都道府県名}_{地図XMLファイル名}_{筆ID}でIDとします
  • 次にidは、global_idSHA256でハッシュ化したものを整数値にしました。SHA256は32バイト(256bit)なので、先頭8バイト = 64bitとなり、uint64に適合できます
  • もちろん​ハッシュ衝突する可能性はありますが、その時は別途考えます🤔

MVTでのID

A feature MAY contain an id field. If a feature has an id field, the value of the id SHOULD be unique among the features of the parent layer.

また、MVTで利用される.protoでは、uint64で明記されているので、今回はこれを採用しました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?