Geotools 获取特征信息
Geotools get Feature Info
我正在使用 geotools 库。我的目标是输入一个坐标,然后在 return 中获取包含它的地图项信息。
Geotools Quickstart 教程的地图完全按照我想要的方式使用我在下面用红色圈出的按钮。但是,我找不到使用的方法。
我一直在谷歌搜索、阅读文档和调试代码都无济于事。这种方法似乎是要走的路:
FeatureCollection myCollection = mySimpleFeatureSource.getFeatures(Query查询);
或
FeatureCollection myCollection = mySimpleFeatureSource.getFeatures(过滤器过滤器);
但我还没有弄明白,也没有找到如何用坐标查询。如果有人愿意借
手,我将不胜感激!
提前致谢!
我运行的例子如下:
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);
}
}
最好在完成 QuickStart you should work through the other tutorials and so come to the Query Tutorial 之后。这向您介绍了如何创建一个简单的 Filter
和更复杂的 Query
(它添加到具有排序顺序、属性子集等的过滤器)。
因此,要创建简单的过滤器,最简单的方法是使用公共查询语言 (CQL) 静态 toFilter
方法:
Filter f = CQL.toFilter("contains(the_geom,Point("+p.x+" "+p.y+"))");
其中您的特征具有几何属性 the_geom
并且 p
是一个点。
顺便说一句,您正在寻找的小工具是 InfoTool
and the actual Filter
is constructed in FeatureLayerHelper
。
我正在使用 geotools 库。我的目标是输入一个坐标,然后在 return 中获取包含它的地图项信息。
Geotools Quickstart 教程的地图完全按照我想要的方式使用我在下面用红色圈出的按钮。但是,我找不到使用的方法。
我一直在谷歌搜索、阅读文档和调试代码都无济于事。这种方法似乎是要走的路: FeatureCollection myCollection = mySimpleFeatureSource.getFeatures(Query查询);
或
FeatureCollection myCollection = mySimpleFeatureSource.getFeatures(过滤器过滤器);
但我还没有弄明白,也没有找到如何用坐标查询。如果有人愿意借 手,我将不胜感激!
提前致谢!
我运行的例子如下:
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);
}
}
最好在完成 QuickStart you should work through the other tutorials and so come to the Query Tutorial 之后。这向您介绍了如何创建一个简单的 Filter
和更复杂的 Query
(它添加到具有排序顺序、属性子集等的过滤器)。
因此,要创建简单的过滤器,最简单的方法是使用公共查询语言 (CQL) 静态 toFilter
方法:
Filter f = CQL.toFilter("contains(the_geom,Point("+p.x+" "+p.y+"))");
其中您的特征具有几何属性 the_geom
并且 p
是一个点。
顺便说一句,您正在寻找的小工具是 InfoTool
and the actual Filter
is constructed in FeatureLayerHelper
。