|
@@ -5,6 +5,7 @@ import org.geotools.coverage.grid.GridCoverage2D;
|
|
|
import org.geotools.coverage.grid.io.AbstractGridCoverage2DReader;
|
|
|
import org.geotools.data.DataStoreFinder;
|
|
|
import org.geotools.data.FeatureSource;
|
|
|
+import org.geotools.data.collection.ListFeatureCollection;
|
|
|
import org.geotools.data.simple.SimpleFeatureCollection;
|
|
|
import org.geotools.data.simple.SimpleFeatureSource;
|
|
|
import org.opengis.feature.simple.SimpleFeature;
|
|
@@ -47,92 +48,93 @@ public class ImageServiceImpl implements IImageService {
|
|
|
*/
|
|
|
@Override
|
|
|
public String getSensingImage(String geomWkt) {
|
|
|
-
|
|
|
- // try {
|
|
|
- //
|
|
|
- //
|
|
|
- // SimpleFeatureSource geometrySource = DataStoreFinder.getDataStore(postgisParams).getFeatureSource("your_geometry_table");
|
|
|
- //
|
|
|
- // // 加载影像数据
|
|
|
- // Hints hints = new Hints(Hints.FORCE_LONGITUDE_FIRST_AXIS_ORDER, Boolean.TRUE);
|
|
|
- // AbstractGridCoverage2DReader rasterReader = (AbstractGridCoverage2DReader) DataStoreFinder.getDataStore(postgisParams).getFeatureSource("your_raster_table").getGridCoverageReader(new Hints());
|
|
|
+ // try {
|
|
|
+ // SimpleFeatureSource geometrySource = (SimpleFeatureSource) getFeatureResource(geomWkt);
|
|
|
//
|
|
|
- // // 创建样式
|
|
|
- // Style geometryStyle = (Style) SLD.createSimpleStyle(geometrySource.getSchema());
|
|
|
- // GridCoverage2D coverage = (GridCoverage2D) rasterReader.read(null);
|
|
|
- // Style rasterStyle = SLD.wrapGridCoverage(coverage);
|
|
|
+ // // 加载影像数据
|
|
|
+ // Hints hints = new Hints(Hints.FORCE_LONGITUDE_FIRST_AXIS_ORDER, Boolean.TRUE);
|
|
|
+ // // AbstractGridCoverage2DReader rasterReader = (AbstractGridCoverage2DReader) DataStoreFinder.getDataStore(postgisParams).getFeatureSource("your_raster_table").getGridCoverageReader(new Hints());
|
|
|
+ // AbstractGridCoverage2DReader rasterReader = null;
|
|
|
+ // // 创建样式
|
|
|
+ // Style geometryStyle = (Style) SLD.createSimpleStyle(geometrySource.getSchema());
|
|
|
+ // GridCoverage2D coverage = (GridCoverage2D) rasterReader.read(null);
|
|
|
+ // // Style rasterStyle = SLD.wrapGridCoverage(coverage);
|
|
|
+ // Style rasterStyle = null;
|
|
|
//
|
|
|
- // // 创建地图内容
|
|
|
- // MapContent map = new MapContent();
|
|
|
- // map.setTitle("PostGIS Raster and Geometry Screenshot");
|
|
|
+ // // 创建地图内容
|
|
|
+ // MapContent map = new MapContent();
|
|
|
+ // map.setTitle("PostGIS Raster and Geometry Screenshot");
|
|
|
//
|
|
|
- // // 添加几何图层
|
|
|
- // Layer geometryLayer = new FeatureLayer(geometrySource, geometryStyle);
|
|
|
- // map.addLayer(geometryLayer);
|
|
|
+ // // 添加几何图层
|
|
|
+ // Layer geometryLayer = new FeatureLayer((FeatureSource) geometrySource, geometryStyle);
|
|
|
+ // map.addLayer(geometryLayer);
|
|
|
//
|
|
|
- // // 添加影像图层
|
|
|
- // Layer rasterLayer = new GridReaderLayer(rasterReader, rasterStyle);
|
|
|
- // map.addLayer(rasterLayer);
|
|
|
+ // // 添加影像图层
|
|
|
+ // Layer rasterLayer = new GridReaderLayer(rasterReader, rasterStyle);
|
|
|
+ // map.addLayer(rasterLayer);
|
|
|
//
|
|
|
- // // 创建渲染器
|
|
|
- // StreamingRenderer renderer = new StreamingRenderer();
|
|
|
- // renderer.setMapContent(map);
|
|
|
+ // // 创建渲染器
|
|
|
+ // StreamingRenderer renderer = new StreamingRenderer();
|
|
|
+ // renderer.setMapContent(map);
|
|
|
//
|
|
|
- // // 创建BufferedImage
|
|
|
- // int imageWidth = 800;
|
|
|
- // int imageHeight = 600;
|
|
|
- // BufferedImage image = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_ARGB);
|
|
|
- // Graphics2D graphics = image.createGraphics();
|
|
|
+ // // 创建BufferedImage
|
|
|
+ // int imageWidth = 800;
|
|
|
+ // int imageHeight = 600;
|
|
|
+ // BufferedImage image = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_ARGB);
|
|
|
+ // Graphics2D graphics = image.createGraphics();
|
|
|
//
|
|
|
- // // 设置背景颜色
|
|
|
- // graphics.setPaint(Color.WHITE);
|
|
|
- // graphics.fillRect(0, 0, imageWidth, imageHeight);
|
|
|
+ // // 设置背景颜色
|
|
|
+ // graphics.setPaint(Color.WHITE);
|
|
|
+ // graphics.fillRect(0, 0, imageWidth, imageHeight);
|
|
|
//
|
|
|
- // // 设置视图
|
|
|
- // ReferencedEnvelope mapBounds = map.getMaxBounds();
|
|
|
- // renderer.paint(graphics, new java.awt.Rectangle(imageWidth, imageHeight), mapBounds);
|
|
|
+ // // 设置视图
|
|
|
+ // ReferencedEnvelope mapBounds = map.getMaxBounds();
|
|
|
+ // renderer.paint(graphics, new java.awt.Rectangle(imageWidth, imageHeight), mapBounds);
|
|
|
//
|
|
|
- // // 保存截图
|
|
|
- // File outputfile = new File("screenshot.png");
|
|
|
- // ImageIO.write(image, "png", outputfile);
|
|
|
+ // // 保存截图
|
|
|
+ // File outputfile = new File("screenshot.png");
|
|
|
+ // ImageIO.write(image, "png", outputfile);
|
|
|
//
|
|
|
- // System.out.println("截图已保存到: " + outputfile.getAbsolutePath());
|
|
|
+ // System.out.println("截图已保存到: " + outputfile.getAbsolutePath());
|
|
|
//
|
|
|
- // } catch (Exception e) {
|
|
|
- // e.printStackTrace();
|
|
|
- // }
|
|
|
+ // } catch (Exception e) {
|
|
|
+ // e.printStackTrace();
|
|
|
// return "";
|
|
|
// }
|
|
|
return "";
|
|
|
}
|
|
|
+
|
|
|
+ public SimpleFeatureSource getFeatureResource(String geomWkt) throws ParseException {
|
|
|
+ // // 1. 解析WKT数据为Geometry对象
|
|
|
+ // WKTReader reader = new WKTReader();
|
|
|
+ // Geometry geometry = reader.read(geomWkt);
|
|
|
+ //
|
|
|
+ // // 2. 创建SimpleFeatureType,定义Feature的结构
|
|
|
+ // SimpleFeatureTypeBuilder typeBuilder = new SimpleFeatureTypeBuilder();
|
|
|
+ // typeBuilder.setName("PolygonFeatureType");
|
|
|
+ // typeBuilder.setCRS(org.geotools.referencing.crs.DefaultGeographicCRS.WGS84);
|
|
|
+ // typeBuilder.add("geometry", Geometry.class);
|
|
|
+ // SimpleFeatureType featureType = typeBuilder.buildFeatureType();
|
|
|
+ //
|
|
|
+ // // 3. 创建SimpleFeature,将Geometry对象放入Feature中
|
|
|
+ // SimpleFeatureBuilder featureBuilder = new SimpleFeatureBuilder(featureType);
|
|
|
+ // featureBuilder.add(geometry);
|
|
|
+ // SimpleFeature feature = featureBuilder.buildFeature(null);
|
|
|
+ //
|
|
|
+ //
|
|
|
+ // // 4. 创建FeatureCollection,将Feature放入其中
|
|
|
+ //
|
|
|
+ // List<SimpleFeature> features = new ArrayList<>();
|
|
|
+ // features.add(feature);
|
|
|
+ // SimpleFeatureCollection collection = new ListFeatureCollection(featureType, features);
|
|
|
+ //
|
|
|
+ // // // 5. 创建FeatureSource
|
|
|
+ // // // FeatureType ft = collection.getSchema();
|
|
|
+ // // // FeatureSource featureSource = DataUtilities.source(collection);
|
|
|
+ SimpleFeatureSource featureSource = null;
|
|
|
+
|
|
|
+ return featureSource;
|
|
|
+ }
|
|
|
}
|
|
|
-// public FeatureSource getFeatureResource(String geomWkt) throws ParseException {
|
|
|
-// // // 1. 解析WKT数据为Geometry对象
|
|
|
-// // WKTReader reader = new WKTReader();
|
|
|
-// // Geometry geometry = reader.read(geomWkt);
|
|
|
-// //
|
|
|
-// // // 2. 创建SimpleFeatureType,定义Feature的结构
|
|
|
-// // SimpleFeatureTypeBuilder typeBuilder = new SimpleFeatureTypeBuilder();
|
|
|
-// // typeBuilder.setName("PolygonFeatureType");
|
|
|
-// // typeBuilder.setCRS(org.geotools.referencing.crs.DefaultGeographicCRS.WGS84);
|
|
|
-// // typeBuilder.add("geometry", Geometry.class);
|
|
|
-// // SimpleFeatureType featureType = typeBuilder.buildFeatureType();
|
|
|
-// //
|
|
|
-// // // 3. 创建SimpleFeature,将Geometry对象放入Feature中
|
|
|
-// // SimpleFeatureBuilder featureBuilder = new SimpleFeatureBuilder(featureType);
|
|
|
-// // featureBuilder.add(geometry);
|
|
|
-// // SimpleFeature feature = featureBuilder.buildFeature(null);
|
|
|
-// //
|
|
|
-// //
|
|
|
-// // // 4. 创建FeatureCollection,将Feature放入其中
|
|
|
-// // List<SimpleFeature> features = new ArrayList<>();
|
|
|
-// // features.add(feature);
|
|
|
-// // SimpleFeatureCollection collection = DataUtilities.collection(features);
|
|
|
-// //
|
|
|
-// // // 5. 创建FeatureSource
|
|
|
-// // FeatureType ft = collection.getSchema();
|
|
|
-// // FeatureSource featureSource = DataUtilities.source(collection);
|
|
|
-// //
|
|
|
-// // return featureSource;
|
|
|
-// return "";
|
|
|
-// }
|
|
|
+
|
|
|
+
|