2015年10月9日金曜日

NetTopologySuiteでESRI Shapefileを読む

NetTopologySuiteは、.NETでGIS(地理情報システム)に関するプログラムを作成するのに便利なライブラリ群で、ジオメトリのモデルや、GIS関連のデータの入出力をするためのクラスを提供しています。

これを使って、C#のプログラムからESRI Shapefileを読んでみることにします。

まず、準備として、ESRI Shapefileを入手します。ここでは、「むろらんオープンデータライブラリ」の中から、「AED設置事業所」のデータを使わせていただくことにします(2015年5月15日時点のデータを使用します)。「AED設置事業所」欄の「Shape」をダウンロードし、任意の場所に展開しておきます。展開すると、aed_20150515.shpなど4つのファイルが存在します。

次に、Visual Studioのプロジェクトを作成します。ここでは、Visual Studio 2013 Express Editionを使い、C#のコンソールアプリケーションを作成することにします。.NET Frameworkのバージョンは4.5を選択します。
プロジェクトを作ったら、NuGetを使って、NetTopologySuite.IOのライブラリをインストールします(このとき、NetTopologySuiteやGeoAPIといった、依存するライブラリも同時にインストールされます)。ここでは、NetTopologySuiteのバージョンは、現時点で最新のバージョンである1.13.3.2を使用します。

あとは、次のようにメインプログラムを作成します(Shapefileの場所は適宜変更します)。このプログラムでは、AEDのある場所のXY座標と施設名称(Shapefileの2番目の属性)を、コンソールに出力します。
プログラムをビルドして実行すると、次のように出力されます。
室蘭市白鳥大橋記念館みたら: -107633.0310,-183353.6321
ナラサキスタックス(株)室蘭支店: -105597.5526,-184627.0971
市立室蘭水族館: -107633.6553,-183599.8972
函館どつく株式会社室蘭製作所: -106873.9019,-183623.7433
特別養護老人ホームみたらの杜: -108338.5202,-184190.3925
養護老人ホームあいらん: -107738.2913,-184231.3324
室蘭市文化センター: -105473.6671,-186298.2846
医療法人社団 鈴木内科: -105479.7746,-186384.1112
室蘭市入江運動公園陸上競技場: -104978.1349,-185667.5652
室蘭市立西中学校: -104728.2999,-186524.2061
(以下略)

0 件のコメント:

コメントを投稿