2

編集:情報:StyleLabの例でスタイルを作成すると、必要なものが表示されます。

GeoToolsでPOSTGISデータを表示しようとしています: http://docs.geotools.org/stable/userguide/examples/:QueryLabでPOSTGISデータのタブを表示できますQuickStartで表示できますシェープファイルのマップ(.shp)

しかし、postgisデータを含むマップを表示するためにこれらのソースコードを混合することに成功しませんでした

エラーメッセージに関しては、スタイル定義がないことが原因である可能性があります。それにもかかわらず、それはシェープファイルに対して完全に機能するので、私にはわかりません。さらに、この問題を解決するための適切なスタイルを作成する方法がわかりません。

POSTGISジオメトリをマップに表示するにはどうすればよいですか?誰かがこの問題を解決する方法を知っているか、何かアイデアがありますか?

ここに私のソースコードとメッセージエラー:

package org.geotools.tuto;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.swing.JFrame;
import javax.swing.WindowConstants;

import org.geotools.data.DataStore;
import org.geotools.data.DataStoreFinder;
import org.geotools.data.FeatureSource;
import org.geotools.data.Query;
import org.geotools.map.*;
import org.geotools.swing.JMapPane;

public class test {
    public test() throws IOException{
        Map params = new HashMap();
        params.put("dbtype", "postgis");  //must be postgis
        //the name or ip address of the machine running PostGIS
        params.put("host", "localhost");
        //the port that PostGIS is running on (generally 5432)
        params.put("port", new Integer(5432));
        //the name of the database to connect to.
        params.put("database", "***");
        params.put("user", "***");         //the user to connect with
        params.put("passwd", "***");               //the password of the user.

        FeatureSource fsBC = null;
        DataStore pgDatastore;
        try {
            pgDatastore = DataStoreFinder.getDataStore(params);

            fsBC = pgDatastore.getFeatureSource("pumas_sections");
            System.out.println("bc count: " + fsBC.getCount(Query.ALL));
            } catch (IOException e) {
            e.printStackTrace();
        }

        MapContext map = new DefaultMapContext();
        map.setTitle("Quickstart");
        map.addLayer(fsBC, null);

        //...
    }

    public static void main(String[] args) throws Exception {
            test t = new test();
    }
}

エラー:

Exception in thread "main" java.lang.UnsupportedOperationException: No
style method for com.vividsolutions.jts.geom.Geometry
        at org.geotools.styling.SLD.createSimpleStyle(SLD.java:1967)
        at org.geotools.styling.SLD.createSimpleStyle(SLD.java:1923)
        at org.geotools.map.DefaultMapContext.checkStyle(DefaultMapContext.java:389)
        at org.geotools.map.DefaultMapContext.addLayer(DefaultMapContext.java:222)
        at org.geotools.tuto.test.<init>(test.java:45)
        at org.geotools.tuto.test.main(test.java:52)
4

1 に答える 1

1

私はあなたのコードを試しましたが、うまくいきました。私は geotools 10 を使用し、fsBC を取得した後、MapContent を使用しました。

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

これが役に立つことを願っています。

于 2014-04-03T03:57:59.127 に答える