2012-04-06 7 views
2

EDIT:詳細はStyleLabの例でスタイルを作成し、目的のものを表示します。GeoToolsを使用したJMapFrameでのPOSTGISデータの表示

私はやった例ではGeoTools とPostGISのデータを表示しようとしている: http://docs.geotools.org/stable/userguide/examples/:QueryLabで 私はクイックスタートで 私はシェープファイルのマップを表示することができたPostGISデータのタブを表示することができます(.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) 

答えて

1

私はあなたのコードを試してみました、それが働きました。 geotools 10を使用し、fsBCを取得した後、MapContentを使用しました。

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

希望すると便利です。

関連する問題