Sfoglia il codice sorgente

根据TIFF读取像素点已经对应的经纬度

LAPTOP-BJJ3IV5R\SIWEI 7 mesi fa
parent
commit
922ab5049a

+ 13 - 0
onemap-modules/onemap-spatial/src/main/java/com/onemap/spatial/test/ReadPixel.java

@@ -5,6 +5,7 @@ import org.geotools.coverage.grid.GridCoordinates2D;
 import org.geotools.coverage.grid.GridCoverage2D;
 import org.geotools.gce.geotiff.GeoTiffReader;
 import org.geotools.geometry.DirectPosition2D;
+import org.geotools.geometry.Envelope2D;
 import org.opengis.referencing.operation.TransformException;
 
 import java.awt.image.Raster;
@@ -27,6 +28,17 @@ public class ReadPixel {
         int height = renderedImage.getHeight();
         System.err.println("影像列数: " + width + ",影像行数: " + height);
 
+
+        Envelope2D envelope = coverage2D.getEnvelope2D();
+
+        System.err.println("影像列数1: " + envelope.getWidth() + ",影像行数: " + envelope.getHeight());
+        System.err.println("影像列数2: " + coverage2D.getGridGeometry().getGridRange2D().getWidth() + ",影像行数: " + coverage2D.getGridGeometry().getGridRange2D().getHeight());
+
+        // 计算像素大小(这里简化为X和Y方向相同)
+        double pixelWidth = envelope.getWidth() / coverage2D.getGridGeometry().getGridRange2D().getWidth();
+        double pixelHeight = envelope.getHeight() / coverage2D.getGridGeometry().getGridRange2D().getHeight();
+        System.err.println("X: " + pixelWidth + ",Y: " + pixelHeight);
+
         // 获取影像的栅格数据
         Raster raster = renderedImage.getData();
 
@@ -61,6 +73,7 @@ public class ReadPixel {
     }
 
     // 测试
+    //最好使用坐标系单位为米的,如果是度的还需要度转米
     public static void main(String[] args) throws Exception {
         String path = "C:\\Users\\SIWEI\\Desktop\\15区\\DEM大图\\ceshi.tif";
         getPixelValue(path);