From 3aea0bf8e9f3178fe2aabb1e546de584d2bd5fcf Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期四, 14 十一月 2024 15:54:20 +0800
Subject: [PATCH] 1

---
 src/main/java/com/se/simu/service/ResultService.java |    3 ++-
 src/main/java/com/se/simu/helper/GdalHelper.java     |   21 +++++++++++++--------
 src/main/java/com/se/simu/domain/po/PondingPo.java   |   19 +++++++++++++++++++
 3 files changed, 34 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/se/simu/domain/po/PondingPo.java b/src/main/java/com/se/simu/domain/po/PondingPo.java
index b44ba90..2fcaa93 100644
--- a/src/main/java/com/se/simu/domain/po/PondingPo.java
+++ b/src/main/java/com/se/simu/domain/po/PondingPo.java
@@ -1,9 +1,11 @@
 package com.se.simu.domain.po;
 
 import com.se.simu.domain.dto.PointDto;
+import com.se.simu.helper.GdalHelper;
 import io.swagger.annotations.ApiModelProperty;
 import org.gdal.ogr.Geometry;
 import org.gdal.ogr.ogr;
+import org.gdal.osr.osr;
 
 @SuppressWarnings("ALL")
 public class PondingPo {
@@ -16,6 +18,9 @@
     @ApiModelProperty("绉按娣卞害")
     private Double depth;
 
+    @ApiModelProperty("闈㈢Н")
+    private Double area;
+
     public PondingPo() {
     }
 
@@ -24,9 +29,15 @@
         point.AddPoint_2D(dto.getX(), dto.getY());
         point.AssignSpatialReference(polygon.GetSpatialReference());
 
+        //GdalHelper.toWgs84(polygon.GetSpatialReference(), polygon);
+        //GdalHelper.toWgs84(polygon.GetSpatialReference(), point);
+        polygon.TransformTo(GdalHelper.SR4326);
+        point.TransformTo(GdalHelper.SR4326);
+
         this.polygon = polygon.ExportToWkt();
         this.point = point.ExportToWkt();
         this.depth = dto.getVal();
+        this.area = polygon.Area();
     }
 
     public PondingPo(String polygon, String point, Double depth) {
@@ -58,4 +69,12 @@
     public void setDepth(Double depth) {
         this.depth = depth;
     }
+
+    public Double getArea() {
+        return area;
+    }
+
+    public void setArea(Double area) {
+        this.area = area;
+    }
 }
diff --git a/src/main/java/com/se/simu/helper/GdalHelper.java b/src/main/java/com/se/simu/helper/GdalHelper.java
index a10d0d4..3ea0ba9 100644
--- a/src/main/java/com/se/simu/helper/GdalHelper.java
+++ b/src/main/java/com/se/simu/helper/GdalHelper.java
@@ -128,8 +128,7 @@
         }
     }
 
-    public static Geometry getMinPoint(Dataset ds)
-    {
+    public static Geometry getMinPoint(Dataset ds) {
         double[] transform = new double[6];
         ds.GetGeoTransform(transform);
 
@@ -142,8 +141,7 @@
         return Transform(ds, point);
     }
 
-    public static Geometry getMaxPoint(Dataset ds)
-    {
+    public static Geometry getMaxPoint(Dataset ds) {
         double[] transform = new double[6];
         ds.GetGeoTransform(transform);
 
@@ -156,11 +154,9 @@
         return Transform(ds, point);
     }
 
-    public static Geometry Transform(Dataset ds, Geometry point)
-    {
+    public static Geometry Transform(Dataset ds, Geometry point) {
         point.AssignSpatialReference(ds.GetSpatialRef());
-        if (ds.GetSpatialRef().IsGeographic() > 0)
-        {
+        if (ds.GetSpatialRef().IsGeographic() > 0) {
             return point;
         }
 
@@ -189,6 +185,15 @@
         return point;
     }
 
+    public static int toWgs84(SpatialReference sr, Geometry g) {
+        CoordinateTransformation ct = new CoordinateTransformation(sr, GdalHelper.SR4326);
+        if (sr.IsProjected() != 1) {
+            sr.SetAxisMappingStrategy(osr.OAMS_TRADITIONAL_GIS_ORDER);
+        }
+
+        return g.TransformTo(GdalHelper.SR4326);
+    }
+
     public static double[] fromWgs84(SpatialReference sr, double x, double y) {
         CoordinateTransformation ct = new CoordinateTransformation(GdalHelper.SR4326, sr);
         if (sr.IsProjected() != 1) {
diff --git a/src/main/java/com/se/simu/service/ResultService.java b/src/main/java/com/se/simu/service/ResultService.java
index 2be4262..bd517c2 100644
--- a/src/main/java/com/se/simu/service/ResultService.java
+++ b/src/main/java/com/se/simu/service/ResultService.java
@@ -496,7 +496,8 @@
         if (CollectionUtils.isEmpty(list)) return;
 
         try {
-            writeJson(dto.getOutPath() + File.separator + "water.json", JSON.toJSONString(list));
+            filePath = dto.getOutPath() + File.separator + "waters" + File.separator + ticks + File.separator + "water.json";
+            writeJson(filePath, JSON.toJSONString(list));
         } catch (Exception ex) {
             log.error(ex.getMessage(), ex);
         }

--
Gitblit v1.9.3