0
0

More than 3 years have passed since last update.

Javaで地図を書く時に使うGeoToolsのリポジトリが変わっていました(←勘違い)

Last updated at Posted at 2021-03-21

Javaで地図を書きたくてネット上のサンプルを写経したらGeoToolsライブラリがダウンロードできない問題に遭遇しました。
末尾に挙げた「Gradleを介してGeoToolsdependencisを解決するための正しいURLは何ですか」に記されているとおり依存ライブラリのダウンロード先を変更したら解決しました。

遭遇した問題

$ ./gradlew build
> Task :compileJava FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileJava'.
> Could not resolve all files for configuration ':compileClasspath'.
   > Could not find org.geotools:gt-shapefile:22.2.
     Searched in the following locations:
       - https://repo.maven.apache.org/maven2/org/geotools/gt-shapefile/22.2/gt-shapefile-22.2.pom
(以下省略)

解決方法

GeoToolsを使うために、https://repo.osgeo.org/repository/releaseをリポジトリに追加しました。
後からわかったことですが、GeoTools公式HPをよく見たら、Mavenの例ですが先のリポジトリが必要であると書いてありました。

plugins {
    id 'java'
}

group 'org.example'
version '1.0-SNAPSHOT'

repositories {
    // このリポジトリを追加したら解決しました。
    maven {url "https://repo.osgeo.org/repository/release"}
    mavenCentral()
}

dependencies {
    compile 'org.geotools:gt-shapefile:22.2'
    compile 'org.geotools:gt-swing:24.2'

    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
}

test {
    useJUnitPlatform()
}

写経したJavaプログラム

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 {
        System.out.print("Javaバージョン(java.version):");
        System.out.println(System.getProperty("java.version"));

        System.out.print("オペレーティングシステム名(os.name):");
        System.out.println(System.getProperty("os.name"));

        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);
    }
}

参考

環境

  • Ubuntu 18.04
  • Java 11.0.10
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0