GeoCSVのススメ
株式会社マップル・オン 柴本歩
FOSS4G 2018 Tokyo ライトニングトーク
GeoCSVとは
➢ 位置情報付きのCSV
➢ 位置情報はWKTで書く
WKTとはPostGISのST_GeomFromText( )
で書くあれ
➢ POINTだけなら
緯度カラムと経度カラムでもよい
WKT,...
POINT (0 0),...
LINESTRING (0 0, 1 1),...
POLYGON ((0 0, 0 1, 1 1, 1 0, 0 0)),...
lon,lat,...
0,0,...
0,1,...
利点
テキストだから
➢ 人間でも読める、書ける
➢ 特定のソフトに依存しない → GeoJSONと共通の利点
利点
CSVだから
➢ 一覧性に優れる
➢ 表計算で扱える
DBにインポートしやすい
➢属性名で容量を食わない
➢行データなので
テキストストリーム系のコマンドと相性がいい
→ GeoJSONにはない利点
JSONだと
{"属性名1":..., "属性名2":..., "属性名3":...}
,{"属性名1":..., "属性名2":..., "属性名3":...}
,{"属性名1":..., "属性名2":..., "属性名3":...}
,{"属性名1":..., "属性名2":..., "属性名3":...}
,{"属性名1":..., "属性名2":..., "属性名3":...}
欠点
CSVだから
➢ データ型があいまい
➢ 座標系があいまい
無指定のときはEPSG:4326と解釈されま
す。
欠点
CSVだから
➢ データ型があいまい
➢ 座標系があいまい
無指定のときはEPSG:4326と解釈されま
す。
を補うため
➢ .csvt ファイル
各カラムのデータ型を記述した1行の
ファイル
➢ .prj ファイル
座標系を定義したファイル
ESRI Shapeの.prjに似ている
欠点
を付属できる。(必須ではない)
➢ それじゃまるでShapeじゃ
ないか
➢ ZIPでまとめた .csvz という
仕様も定義されています
あまり出番ないけど
.csv
.csvt
.prj
.csvz
話は変わって
タブ区切りのススメ
カンマ区切りのジレンマ
➢ WKTでもカンマを使うし
➢ 属性にもカンマはありがち
→ クォーテーションの考慮が面倒!
LINESTRING (0 0, 1 1)
"Hello,World."
タブ区切りのススメ
➢タブで区切ればいいじゃない
表計算に貼り付けやすくなる作用も
➢ ここで注意
タブで区切っても拡張子は .CSV
タブ区切りのススメ
CSVは
➢ Camma Separated Values
ではなく
➢ Character Separated Values
の略である。
タブ区切りだからって
.tsv
にしなくていいんです。
後述するGeoCSV対応ツールは
タブ区切りでも拡張子.csvを
前提として設計されているので、
.tsvにしない方ことをおすすめします。
対応ツール
➢ QGIS
ファイルの読み書きはもちろん、編集中
のベクター地物をCtrl+Cコピーすると、
クリップボード内で保持される形式は
タブ区切りGeoCSVそのもの!
➢ ogr2ogr
が対応している形式なら自在に相互変換
できます。
→ 相性抜群!
→ ケンカ売らないスタイル
対応ツール
ogr2ogrコマンド例
➢ csvt付き
➢ prj付き
➢ タブ区切り
GeoCSVに変換する例
ogr2ogr -lco CREATE_CSVT=YES -a_srs EPSG:4326 -lco SEPARATOR=TAB -lco GEOMETRY=AS_WKT -f csv 出力.csv 入力
対応ツール
ogr2ogrコマンド例
➢ GeoCSVから変換する例
➢ -oo KEEP_GEOM_COLUMNS=NO
WKTが属性として出力されるのを拒否
➢ -oo EMPTY_STRING_AS_NULL=YES
空項目をNULLとして扱う
ogr2ogr -oo KEEP_GEOM_COLUMNS=NO -oo EMPTY_STRING_AS_NULL=YES -f 出力形式 出力先 入力.csv
仕様の一次資料
https://giswiki.hsr.ch/GeoCSV おわり

GeoCSVのススメ