|
@@ -1,6 +1,5 @@
|
|
|
package com.onemap.spatial.service.impl;
|
|
|
|
|
|
-import com.onemap.spatial.domain.ImageRaster;
|
|
|
import com.onemap.spatial.mapper.ImageMapper;
|
|
|
import com.onemap.spatial.service.IImageService;
|
|
|
import org.geotools.coverage.grid.GridCoverage2D;
|
|
@@ -27,15 +26,14 @@ import org.opengis.referencing.crs.CoordinateReferenceSystem;
|
|
|
import org.opengis.style.ContrastMethod;
|
|
|
import org.postgresql.util.PGobject;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.Base64Utils;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import javax.imageio.ImageIO;
|
|
|
import java.awt.*;
|
|
|
import java.awt.image.BufferedImage;
|
|
|
-import java.io.ByteArrayInputStream;
|
|
|
-import java.io.File;
|
|
|
-import java.io.IOException;
|
|
|
-import java.util.ArrayList;
|
|
|
+import java.io.*;
|
|
|
+import java.util.Base64;
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
@@ -45,24 +43,44 @@ import java.util.List;
|
|
|
public class ImageServiceImpl implements IImageService {
|
|
|
@Resource
|
|
|
private ImageMapper imageMapper;
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String getSensingImage(String wkt) throws Exception {
|
|
|
+ String outputFilePath = "output.png";
|
|
|
+ String base64Image = imageMapper.getRasterImage(wkt);
|
|
|
+ if (base64Image != null) {
|
|
|
+
|
|
|
+ base64Image = base64Image.replaceAll("\n", "");
|
|
|
+ byte[] imageBytes = Base64.getDecoder().decode(base64Image);
|
|
|
+ OutputStream os = new FileOutputStream(outputFilePath);
|
|
|
+ os.write(imageBytes);
|
|
|
+ System.out.println("Image saved as " + outputFilePath);
|
|
|
+ } else {
|
|
|
+ System.out.println("No raster data found for the given polygon.");
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 获取遥感图像
|
|
|
*
|
|
|
* @param wkt
|
|
|
* @return
|
|
|
*/
|
|
|
- @Override
|
|
|
- public String getSensingImage(String wkt) throws Exception {
|
|
|
- List<ImageRaster> rasterDataList = imageMapper.getRasterDataByWKT(wkt);
|
|
|
- List<GridCoverageLayer> layers = new ArrayList<>();
|
|
|
- for (ImageRaster imageRaster : rasterDataList) {
|
|
|
- GridCoverage2D coverage = convertToGridCoverage2D(imageRaster.getRast());
|
|
|
- GridCoverageLayer layer = new GridCoverageLayer(coverage, createDefaultStyle());
|
|
|
- layers.add(layer);
|
|
|
- }
|
|
|
- wktToImage(wkt, layers);
|
|
|
- return "";
|
|
|
- }
|
|
|
+ // @Override
|
|
|
+ // public String getSensingImage(String wkt) throws Exception {
|
|
|
+ // List<ImageRaster> rasterDataList = imageMapper.getRasterDataByWKT(wkt);
|
|
|
+ // List<GridCoverageLayer> layers = new ArrayList<>();
|
|
|
+ // for (ImageRaster imageRaster : rasterDataList) {
|
|
|
+ // GridCoverage2D coverage = convertToGridCoverage2D(imageRaster.getRast());
|
|
|
+ // GridCoverageLayer layer = new GridCoverageLayer(coverage, createDefaultStyle());
|
|
|
+ // layers.add(layer);
|
|
|
+ // }
|
|
|
+ // wktToImage(wkt, layers);
|
|
|
+ // return "";
|
|
|
+ // }
|
|
|
|
|
|
|
|
|
// 读取栅格数据
|