GeoToolsを使ったJava GISプログラミング

最初のGeoToolsプログラム

«  GeoToolsのインストール   ::   Contents

最初のGeoToolsプログラム

GeoToolsのユーザーガイドの下、チュートリアルのNetBeans QuickStartにあるプログラムを入力してビルド・実行します。

ただし、ドキュメントではmavenを使うプロジェクトですが、ここではNetBeansのデフォルトであるAntを使うプロジェクトで作成します。

地図データ(シェープ形式)の入手

プログラムを実行するにあたり、地図データが必要になります。ESRIシェープ形式のデータを読み込むプログラムなので、シェープ形式で手頃なデータを入手します。

今回は、Natural Earthの世界地図データ から海岸線(Coastline)の1:1千万分の1データを入手します。

“Large scale data, 1:10m”の下にある[Physicalをクリックし、Coastlineの箇所にある[Download coastline]をクリックします。

  • 10m-coastline-zip

任意のディレクトリに展開します。以下のファイルから構成されます。

10m_coastline.dbf
10m_coastline.prj
10m_coastline.qix
10m_coastline.shp
10m_coastline.shx

初めてのGeoToolsプログラム

ここではNetBeansで作成する例を示します。

通常の新規プロジェクトでJavaアプリケーションを選択します。 Mainクラスを作成します。

/*
 * シェープファイルを選択し、地図表示ウィンドウを開き選択したシェープファイルの内容を地図表示する。
 */
package hellogeotools;

import java.io.File;
import java.io.IOException;
import org.geotools.data.CachingFeatureSource;
import org.geotools.data.FileDataStore;
import org.geotools.data.FileDataStoreFinder;
import org.geotools.data.simple.SimpleFeatureSource;
import org.geotools.map.FeatureLayer;
import org.geotools.map.Layer;
import org.geotools.map.MapContent;
import org.geotools.styling.SLD;
import org.geotools.styling.Style;
import org.geotools.swing.JMapFrame;
import org.geotools.swing.data.JFileDataStoreChooser;

public class HelloGeoTools {

    public static void main(String[] args) throws IOException {
        File file = JFileDataStoreChooser.showOpenFile("shp", null);
        if (file == null) {
            System.err.println("No such file.");
            return;
        }

        FileDataStore store = FileDataStoreFinder.getDataStore(file);
        SimpleFeatureSource featureSource = store.getFeatureSource();

        MapContent map = new MapContent();
        map.setTitle("Quickstart");

        Style style = SLD.createSimpleStyle(featureSource.getSchema());
        Layer layer = new FeatureLayer(featureSource, style);
        map.addLayer(layer);

        JMapFrame.showMap(map);
    }
}

«  GeoToolsのインストール   ::   Contents