我有一个形状文件(Sample.shp)以及两个其他文件(Sample.shx和Sample.dbf),它具有为Bombay的15个pincode定义的几何(多边形)。使用Geotools从shapefile中提取多边形
我可以使用快速入门教程查看.shp文件。
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);
现在,我想这15个pincodes的几何形状转换为15几何/多边形对象,以便我可以使用Geometry.contains()找到一个点是否落在特定的几何/多边形。
我想:
ShapefileReader r = new ShapefileReader(new ShpFiles(file),true,false,geometryFactory);
System.out.println(r.getCount(0)); >> returns 51
System.out.println(r.hasNext()); >> returns false
任何帮助,非常感谢
感谢您的回复。看起来这应该为我工作。我试过featureSource.getFeatures()。size()>> 15(这是正确的,因为我有15个多边形)。但是当我做Filter filter = CQL.toFilter(“CONTAINS(THE_GEOM,POINT(72.83 18.94))”);然后featureSource.getFeatures(filter)>> NULL(这应该返回1的大小,因为此点位于其中一个多边形中)。 Google的坐标是(18.94,72.83)有什么建议吗? – Manisha
尝试POINT(72.83 18.94) - 纬度/经度和x/y不直观 –
嘿感谢您的解决方案..我只是改变了“THE_GEOM”为“the_geom”,它的工作。 – Manisha