趣味で計算流砂水理

趣味で計算流砂水理 Computational Sediment Hydraulics for Fun Learning

数値計算とか河川工学とかプログラミングのことを書いています

MENU

河川横断測量成果のデータ形式は絶対にこうすべき!

スポンサーリンク

かなり長いので結論から。

河川横断測量データはgeojson形式にすべき。

サンプルデータは、

{'type': 'FeatureCollection',
 'crs': {'type': 'name', 'properties': {'name': 'urn:ogc:def:crs:EPSG::6677'}},
 'features': [{'type': 'Feature',
   'properties': {'name': 'section1'},
   'geometry': {'type': 'MultiPoint',
    'coordinates': [[-23995.937483087444, -40939.11306744646, 22.59],
     [-24004.580632418983, -40944.14257732643, 23.21],
     [-24013.223781750527, -40949.172087206396, 25.4],
  .............................
     [-24376.236053675228, -41160.41150216502, 23.33],
     [-24384.87920300677, -41165.44101204499, 22.92]]}}]}

geojsonファイルは、ここ

理想的なデータ形式です。ご意見お願いします。

正式なgeojsonの仕様は以下を参照ください。

GeoJSON フォーマット仕様

モチベーション

河川に関連する実務に携わった方なら河川横断測量成果データ形式が非常に使いにくいと思ったことがあるはずです。

データ形式は、 河川定期縦横断データ作成ガイドライン で決められており、横断データの形式はここに書いております。

何がまずいのかもう少し詳しく書きます。データ形式はこんな感じです。

f:id:SedimentHydraulics:20200319163753p:plain

まずい点は、

  • 測量成果にも関わらず、任意座標のため地図に落とせない。
  • csvファイルのため、属性を与えることができない。

多次元データをcsvに押し込むという、いかにもドカチンセンスですが、10数年前に決めたものなのでしかたないでしょう。

このままじゃ使い物にならないので実務者が独自のデータ形式にコンバートして使っていると思われます. (私はそうしてます。)

そこで共通の形式を決めようと考えました。

推奨するデータ形式

推奨するデータ形式の条件は以下です。

  • 任意座標ではなく平面直角座標系
  • geometry情報を含む
  • 一般的なファイル形式

これを満足するデータ形式はgeojson形式です。

サンプルの河川横断断面データ(LPから作成)をgeojson形式で示すと以下になります。

{'type': 'FeatureCollection',
 'crs': {'type': 'name', 'properties': {'name': 'urn:ogc:def:crs:EPSG::6677'}},
 'features': [{'type': 'Feature',
   'properties': {'name': 'section1'},
   'geometry': {'type': 'MultiPoint',
    'coordinates': [[-23995.937483087444, -40939.11306744646, 22.59],
     [-24004.580632418983, -40944.14257732643, 23.21],
     [-24013.223781750527, -40949.172087206396, 25.4],
  .............................
     [-24376.236053675228, -41160.41150216502, 23.33],
     [-24384.87920300677, -41165.44101204499, 22.92]]}}]}

geojsonファイルは、 ここ

詳しく解説すると、

{'type': 'FeatureCollection',

は複数の図形を扱う意味です。今回は一つですが複数でも扱うようにするためです。

 'crs': {'type': 'name', 'properties': {'name': 'urn:ogc:def:crs:EPSG::6677'}},

は座標系の指定方法です。測量の場合は、実際の距離との関係がわかるように平面直角座標系が良いでしょう。我が国では19座標系を使うことが多いです。

 'features': [{'type': 'Feature',
   'properties': {'name': 'section1'},

'features'に図形情報入れます。各図形の'properties'に属性情報を入れます。今回は'name'のみですがいろいろ入れても大丈夫です。

   'geometry': {'type': 'MultiPoint',
    'coordinates': [[-23995.937483087444, -40939.11306744646, 22.59],
     [-24004.580632418983, -40944.14257732643, 23.21],
     [-24013.223781750527, -40949.172087206396, 25.4],

ここに測量情報を入れます。'type'は'MultiPoint'を選択し、'coordinates'に(X,Y,Z)を入れます。X,Yは上記で指定した座標系での平面位置です。 なお、今回はMultiPointを採用していますが意見が分かれるところです。

json形式のため言語を問わずパーサが準備されておりますし、ファイル単独でgeometry情報を持つため、例えば、QGISにドラッグ&ドロップするだけで図化可能です。

f:id:SedimentHydraulics:20200319163821p:plain

我々は理想的なデータ形式と考えております。ご意見頂けると幸いです。

補足1:shapefileは駄目絶対

ベクタ形式で最も有名なデータ形式Esri shapefileがありますが私は今すぐに廃止すべきと思います。 その理由はOSGeoの方が詳しく書いているので参照ください。

www.slideshare.net

補足2:河川横断測量について?

  • 国が管理する河川では概ね5年1回程度,定期的に同じ測線で河川横断測量を実施しています.縦断的な間隔は一部河川では異なりますが大体200m間隔です.昭和40年頃から実施しており,それなりのデータ量になります.
  • 近年のこの測量に代わって航空レーザー測量(ALB)を使おうという流れがあります.その場合,横断データではなく面的な点群データになります.実は,提案したフォーマットはこの流れを強く意識しています.