8
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?

FOSS4GAdvent Calendar 2024

Day 9

FOSS4Gを活用した国土数値情報のベクトルタイル化とデータPNG化の試行について

Last updated at Posted at 2024-12-09

はじめに

2024年2月、国土交通省政策統括官付地理空間情報課のX公式アカウント@GIS_MLITが開設されました。また、2024年10月からは第1回 国土交通省 地理空間情報データチャレンジ ~国土数値情報編~が開催されており、さらに2024年11月には地理空間情報課ラボの公式ホームページが開設されるなど、地理空間情報の活用に対する機運が高まっています。また、地理空間情報課ラボの公式ホームページで紹介されている実験的取り組みの一つとして、国土数値情報のベクトルタイル化に向けた検証の取り組みが紹介されています。ベクトルタイルは、データ容量が軽く、機械判読可能であることから、ベクトルタイル化により国土数値情報の利活用シーンがさらに拡大することが期待されています。
本記事は、国土数値情報のメッシュデータについてベクトルタイル化およびデータPNG化を試行し、ベクトルタイルが不得意とするメッシュデータのデータPNGの適用可能性を検証したものです。

image.png

ベクトルタイル

ベクトルタイルは、地理空間データを地図として効率的に配信・表示するための技術となっています。通常のラスタータイル(画像タイル)とは異なり、ベクトルタイルは地図要素(道路、建物、境界線など)のジオメトリと属性情報を持つベクトル形式で表現されます。この形式により、データを動的にスタイル設定したり、ズームレベルに応じて詳細な情報を効率的に表示したりすることが可能となっています。
ベクトルタイルのつくりかたについては、こちらの記事に詳しく書かれています。

データPNG

データPNG(Data PNG)は、画像ファイルフォーマットである PNG (Portable Network Graphics) を使ってデータを表現します。PNGは標準で圧縮されウェブブラウザでも利用しやすく、インターネットを使って大量データを高速に扱えます。地図タイルでの利用を想定して、産業技術総合研究所の西岡氏によって考案され、CC BY 4.0 互換のライセンスで利用可能です。データPNGは、国土地理院 標高タイル国土交通省 重ねるハザードマップ等で利用されています。
データPNGは、例えば、256 x 256 = 65,536 個のピクセルを持つ正方形画像の一つのピクセルに、RGB各8ビット(合計24ビット)のデータを格納できます。これを利用して、標高、ハザードマップ、気象、人流のデータなど、メッシュ(グリッド)に分割されるデータの表現や転送に利用します。
データPNGの仕様については、こちらの産総研ホームページに詳しく書かれています。

国土数値情報をベクトルタイル化する際の課題

国土数値情報はさまざまなジオメトリタイプ(ポイント、ライン、ポリゴン、メッシュ等)で提供されていますが、ベクトルタイルは細かいメッシュデータ(今のところの筆者所感では100mメッシュ以下など)を不得意としている印象です。100mメッシュよりも細かいメッシュ(10mメッシュや5mメッシュ等)を元データとする、国土地理院 標高タイルや国土交通省 重ねるハザードマップではデータPNG化で軽量化を行い、ラスタータイルとして配信されています。
例えば、こちらは国土数値情報の土地利用細分メッシュデータ(100mメッシュ)をベクトルタイル化(PMTiles)してPMTiles Viewerで表示したものですが、Webマップでのメッシュの表示に時間がかかる状況です。

メッシュデータをベクトルタイル化する際にはズームレベルごとの地物・頂点間引き、簡素化処理が適用されず、ファイルサイズが大きくなりがちです。

国土数値情報をベクトルタイル化する際の課題への対応

上記の課題への対応として、以下の2つの手法を用いた、国土数値情報のベクトルタイル化とデータPNG化を試行して、比較を行いました。

  • 手法1
    • 元データをディゾルブ(統合)して、ベクトルタイル化する手法
  • 手法2
    • 元データをディゾルブ(統合)し、データPNGに変換して、ラスタータイル化する手法

前提条件

手法1:元データをディゾルブ(統合)して、ベクトルタイル化する手法

  • 土地利用細分メッシュデータを土地利用種別でディゾルブ(融合)
ogr2ogr -f Parquet L03-b-21_dissolved.parquet L03-b-21.parquet -dialect sqlite -sql "SELECT ST_Union(geometry) AS geometry, \"土地利用種別\" FROM \"L03-b-21\" GROUP BY \"土地利用種別\"" --config OGR_SQLITE_CACHE 32768 --config CPL_DEBUG ON
  • 投影法を変換
ogr2ogr -t_srs EPSG:4326 L03-b-21_dissolved_reprojected.parquet L03-b-21_dissolved.parquet
  • GeoJSONの生成
ogr2ogr -f "GeoJSON" L03-b-21_dissolved_reprojected.geojson L03-b-21_dissolved_reprojected.parquet
  • PMTilesの生成
tippecanoe -o L03-b-21_dissolved.pmtiles -Z0 -z11 L03-b-21_dissolved_reprojected.geojson -pf -pk
  • 作成したベクトルタイルはこちらから閲覧可能です
    https://pmtiles.io/?url=https://shiworks.xsrv.jp/pmtiles-data/mlit-ksj/L03-b-21_dissolved.pmtiles
  • ファイルサイズ(PMTiles形式)はディゾルブ(統合)前と比較して概ね94%減(1.76GB⇒95.7MB)と軽量化
  • ただし、「土地利用種別」をもとにディゾルブ(統合)を行ったため、元データに存在する「細分メッシュコード」や「衛星写真撮影年月日」の属性情報は失われている

手法2:元データをディゾルブ(統合)し、データPNGに変換して、ラスタータイル化する手法

  • 手法1で作成したディゾルブ(統合)後のデータを使用
  • ラスタライズ
    • もとの100mメッシュのサイズ(0.00125秒×0.0008333333秒)に合わせる
gdal_rasterize -a "土地利用種別" -init 0 -ot Int32 -tr (4.5/3600) (3.0/3600) -tap -co COMPRESS=DEFLATE -a_srs EPSG:4326 L03-b-21_dissolved_reprojected.parquet L03-b-21_dissolved_reprojected_gray.tif
gdaldem color-relief L03-b-21_dissolved_reprojected_gray.tif color_table.txt L03-b-21_dissolved_reprojected_rgba.vrt -of VRT -alpha
  • 高解像度化
    • gdal2tilesのリサンプリングはあまり厳密ではないので、処理するtifを高解像度にして誤差を減らす
gdalwarp -tr (4.5/3600/20) (3.0/3600/20) -r near L03-b-21_dissolved_reprojected_rgba.vrt L03-b-21_dissolved_reprojected_rgba_high_resolution.vrt
  • タイル化
gdal2tiles.py --xyz -r near -z 4-12 --processes=16 L03-b-21_dissolved_reprojected_rgba_high_resolution.vrt L03-b-21_dissolved

引き続き検証を行います。

8
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
8
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?