GeoToolsを使用してLuciadFusion wfsサーバーからデータを取得しようとしていますが、目標を達成する方法の例がわかりません。 アイデアは私が動くものを追跡していて、動いている音が動いているエリアから地図データ(機能)を取得し、次に距離を計算したいと思うということです(最寄りの道路から最寄りの湖岸沿岸までの距離など)。 私は複数の移動オブジェクトを追跡しているので、SpatialIndexFeatureCollection(高速アクセス用にメモリに保存されています)に配置して、私が知りたいものを照会できるようにしたいと考えています。GeoToolsを使用してWFS経由で地図データを取得
これまでのところ、私はデータで見つかったいくつかのランダムなwfsサーバーを探しています:http://ogc.bgs.ac.uk/digmap625k_gsml32_insp_gs/wfs?私は能力を読むことができるよ、と型名の一つは、私のSpatialIndexFeatureCollectionの構築から:
String url = "http://ogc.bgs.ac.uk/digmap625k_gsml32_insp_gs/wfs?";
Map connectionParameters = new HashMap();
connectionParameters.put("WFSDataStoreFactory:GET_CAPABILITIES_URL", url)
connectionParameters.put(WFSDataStoreFactory.TIMEOUT.key, 100000);
WFSDataStoreFactory dsf = new WFSDataStoreFactory();
try {
WFSDataStore dataStore = dsf.createDataStore(connectionParameters);
for(String s : dataStore.getTypeNames()){
System.out.println(s);
}
SimpleFeatureSource source = dataStore.getFeatureSource("test:uk_625k_mapped_feature");
SimpleFeatureCollection fc = source.getFeatures();
System.out.println(fc.getBounds());
SpatialIndexFeatureCollection index = new SpatialIndexFeatureCollection();
fc.accepts(new FeatureVisitor() {
@Override
public void visit(Feature feature) {
SimpleFeature simpleFeature = (SimpleFeature) feature;
Geometry geom = (MultiPolygon) simpleFeature.getDefaultGeometry();
if(geom != null) {
Envelope env = geom.getEnvelopeInternal();
if(!env.isNull()) {
index.add(simpleFeature);
}
}
}
}, new NullProgressListener());
catch (FactoryException e) {
aLog.error("", e);
}
が、それは印刷し実行:
- gsml:MappedFeature
- gsmlgu:GeologicUnit
- テスト: uk_625k_mapped_feature
- ReferencedEnvelope [-132576.7891571155:743466.624998733,-15669.960592884949:1248847.1762802668]
しかし、私自身のWFSサーバーが設定されていると、エリアごとにfx道路や湖を表す多くのタイプ名が含まれます。 多くの分野で
定義された領域(バウンディングボックスBB)に関連するタイプ名を取得するにはどうすればよいでしょうか?
第2に、上記の例からデータを抽出すると、すべてのフィーチャが間違ったCoordinateReferenceSystemにあります。どのようにしてEPSG:4326にする必要がありますか?
ありがとうございます!
あなたの答えをありがとうございました! :-) 私たちのWFSサーバーで何か問題が起きている可能性があります。私は_source_オブジェクトを取得するために、まだ と言う必要があります。 'SimpleFeatureSource source = dataStore.getFeatureSource( "test:uk_625k_mapped_feature");'したがって、私が調べたいtypeNameを知っていますか? 私自身のサーバでこれを行うと、 'java.io.IOExceptionが発生します。スキーマ' _772ced6e_45_54b5_45_4295_45_bb01_45_a50b9179f1ecWorldType 'は存在しません。 (ええとtypenameもかなりランダムに見えます)。 ... – Mars
元の質問に記載されているwfsサーバーでこのスキーマエラーが表示されません。 私のブラウザで「http://172.20.6.150:8085/LuciadFusion/wfs?REQUEST=GetFeature&SERVICE=WFS&VERSION=1.1.0&TYPENAME=_772ced6e_45_54b5_45_4295_45_bb01_45_a50b9179f1ecWorldType」と指摘されていれば、いくつかのXMLデータがあります。 geotoolsを使用しているときに、このデータにアクセスするためのスキーマが必要ですか?とにかくデータを読み込むことはできますか(Luciadサーバーをセットアップしようとしている人はスキーマを取得する方法を理解できません)。 もう一度おねがいします - ヘルプは本当に感謝しています! – Mars
あなたがフェッチしたいfeatureCollectionのtypeNameを知る必要がある場合は、getCapabilitiesレスポンスを直接読んで利用可能なものを確認することができます。 GeoToolsは自動的にスキーマを取得して把握する必要があります。 –