Help us understand the problem. What is going on with this article?

WKT形式をGeoJSON形式に変換する

More than 3 years have passed since last update.

デスクトップGISの世界で使われているファイルを、ウェブGISで使おうとする際に、ファイルフォーマットの変換が必要になる場合があります。

ここではWKTについてふれます。

WKT (Well-known text)とは

ジオメトリ・オブジェクトを地図上に表現するためのマークアップ言語。詳しくは以下を参照ください。
https://ja.wikipedia.org/wiki/Well-known_text

ライブラリの選定

ウェブGISで使うためにGeoJSONに変換します。
変換ライブラリには以下があります。

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

https://ja.wikipedia.org/wiki/Well-known_text#.E3.82.B8.E3.82.AA.E3.83.A1.E3.83.88.E3.83.AA.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88

  • GeoJSON

http://geojson.org/geojson-spec.html#appendix-a-geometry-examples

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした