デスクトップGISの世界で使われているファイルを、ウェブGISで使おうとする際に、ファイルフォーマットの変換が必要になる場合があります。
ここではWKTについてふれます。
WKT (Well-known text)とは
ジオメトリ・オブジェクトを地図上に表現するためのマークアップ言語。詳しくは以下を参照ください。
https://ja.wikipedia.org/wiki/Well-known_text
ライブラリの選定
ウェブGISで使うためにGeoJSONに変換します。
変換ライブラリには以下があります。
-
Terraformer - Well Known Text Parser(Esri Portland R&D Center)
http://terraformer.io/wkt-parser/ -
wellknown.js(MapBox)
https://github.com/mapbox/wellknown
wellknown.jsはnodeモジュールとして配布されているので、今回はブラウザでのオン・ザ・フライ変換も視野に入れてTerraformerを採用します。
使い方
変換自体はとても簡単で、以下2ファイルを読み込み、
<script src="terraformer.min.js"></script>
<script src="terraformer-wkt-parser.min.js"></script>
var geoJSONSingle = Terraformer.WKT.parse( wktSingle );
で変換できます。
変換前の例
MULTIPOINT ((10 40), (40 30), (20 20), (30 10))
変換後の例
{"type":"MultiPoint","coordinates":[[10,40],[40,30],[20,20],[30,10]],"bbox":[10,10,40,40]}
GeoJSONオブジェクトとして生成したい場合には
//wktObj...変換前のWKTデータ、geoJSONObj...変換後のGeoJsonデータ
var _geoArray = new Array();
for (var i=0; i<wktObj.length; i++) {
var _o = new Object();
_o["type"] = "Feature";
_o["geometry"] = Terraformer.WKT.parse( wktObj[i] );
_o["properties"] = {"country_id": "some_id",
"count": "some_count"};
_geoArray[i] = _a;
};
var geoJSONObj = {
"type": "FeatureCollection"
};
geoJSONObj["features"] = _geoArray;
などとします。
注意
WKTやGeoJSONでは、扱うジオメトリ・オブジェクトの種類によってデータフォーマットが異なります。数値データを入れ子にしている括弧の数の違いに注目してください。
- WKT
- GeoJSON