2017-04-21 5 views
1

Je travaille avec la bibliothèque geotools. Mon but est d'entrer une coordonnée et en retour obtenir l'information de la fonction qui le contient.Geotools obtiennent des informations sur les fonctionnalités

La carte du tutoriel Quickstart de Geotools fait exactement ce que je veux avec le bouton que j'ai encerclé en rouge ci-dessous. Cependant, je n'ai pas trouvé la méthode utilisée.

J'ai été googling, lecture de la documentation et le débogage du code en vain. Cette méthode semble être la voie à suivre: FeatureCollection myCollection = mySimpleFeatureSource.getFeatures (Requête de requête);

ou

FeatureCollection myCollection = mySimpleFeatureSource.getFeatures (filtre du filtre);

mais je ne l'ai pas encore compris ou trouvé comment interroger les coordonnées pour le moment. Si quelqu'un veut prêter une main , je l'apprécierais beaucoup!

Merci d'avance!

enter image description here

L'exemple que je suis en cours d'exécution est le suivant:

package org.geotools.tutorial.quickstart; import java.io.File; 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; /** * Prompts the user for a shapefile and displays the contents on the screen in a map frame. * <p> * This is the GeoTools Quickstart application used in documentationa and tutorials. * */ public class Quickstart { /** * GeoTools Quickstart demo application. Prompts the user for a shapefile and displays its * contents on the screen in a map frame */ public static void main(String[] args) throws Exception { // display a data store file chooser dialog for shapefiles File file = JFileDataStoreChooser.showOpenFile("shp", null); if (file == null) { return; } FileDataStore store = FileDataStoreFinder.getDataStore(file); SimpleFeatureSource featureSource = store.getFeatureSource(); // Create a map content and add our shapefile to it MapContent map = new MapContent(); map.setTitle("Quickstart"); Style style = SLD.createSimpleStyle(featureSource.getSchema()); Layer layer = new FeatureLayer(featureSource, style); map.addLayer(layer); // Now display the map JMapFrame.showMap(map); } }

Répondre

1

Idéalement après avoir terminé le QuickStart vous devez travailler à travers le other tutorials et ainsi venir à la Query Tutorial. Cela vous présente comment créer un Filter simple et le plus complexe Query (qui ajoute à un filtre avec l'ordre de tri, la sous-sélection des attributs, etc.).

Donc, pour créer un simple filtre le plus simple est d'utiliser la méthode Query Language (Common CQL) statique toFilter:

Filter f = CQL.toFilter("contains(the_geom,Point("+p.x+" "+p.y+"))"); 

où vos fonctions ont une géométrie d'attribut the_geom et p est un point.

BTW le petit outil que vous cherchez est un InfoTool et le Filter réel est construit en FeatureLayerHelper.