From d692b45b22f985aff4635a5bb8b8958ae9bcd6dd Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期五, 21 十月 2022 17:50:09 +0800
Subject: [PATCH] 1

---
 src/main/java/com/lf/server/helper/GdalHelper.java |   52 ++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 42 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/lf/server/helper/GdalHelper.java b/src/main/java/com/lf/server/helper/GdalHelper.java
index 48bffcb..c4e7e46 100644
--- a/src/main/java/com/lf/server/helper/GdalHelper.java
+++ b/src/main/java/com/lf/server/helper/GdalHelper.java
@@ -1,6 +1,6 @@
 package com.lf.server.helper;
 
-import com.lf.server.entity.ctrl.LayerDto;
+import com.lf.server.entity.ctrl.ShpRecordEntity;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.gdal.gdal.Band;
@@ -42,6 +42,39 @@
 
         // 涓轰簡浣垮睘鎬ц〃瀛楁鏀寔涓枃锛岃娣诲姞涓嬮潰杩欏彞锛欳P936
         gdal.SetConfigOption("SHAPE_ENCODING", "");
+    }
+
+    /**
+     * 鑾峰彇Shp绗竴鏉¤褰曠殑WKT
+     */
+    public static ShpRecordEntity readShpFirstRecord(String filePath) {
+        try {
+            org.gdal.ogr.Driver driver = ogr.GetDriverByName("ESRI shapefile");
+            if (driver == null) {
+                return null;
+            }
+
+            DataSource dataSource = driver.Open(filePath);
+            Layer layer = dataSource.GetLayer(0);
+            if (layer.GetFeatureCount() < 1) {
+                return null;
+            }
+
+            SpatialReference spatialReference = layer.GetSpatialRef();
+            String csid = spatialReference.GetAttrValue("AUTHORITY", 1);
+
+            Feature feature = layer.GetFeature(0);
+            String wkt = feature.GetGeometryRef().ExportToWkt();
+
+            layer.delete();
+            dataSource.delete();
+            driver.delete();
+
+            return new ShpRecordEntity(wkt, csid);
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            return null;
+        }
     }
 
     /**
@@ -154,14 +187,14 @@
         }
     }
 
-    public static LayerDto getLayerDto(String filePath) {
+    public static void getLayerDto(String filePath) {
         org.gdal.ogr.Driver driver = ogr.GetDriverByName("OpenFileGDB");
         if (driver == null) {
-            return null;
+            return;
         }
+
         List<Map> list = new ArrayList<>();
         List<Map<String, String>> mapList = new ArrayList<>();
-        LayerDto layerDto = new LayerDto();
         DataSource dataSource = null;
         try {
             dataSource = driver.Open(filePath, 0);
@@ -208,10 +241,10 @@
                         feature.delete();
                     } while (true);
                 }
-                layerDto.setLayerName(strlayerName);
-                layerDto.setList(list);
-                layerDto.setCount(count);
-                layerDto.setMap(mapList);
+                //layerDto.setLayerName(strlayerName);
+                //layerDto.setList(list);
+                //layerDto.setCount(count);
+                //layerDto.setMap(mapList);
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -220,7 +253,6 @@
                 dataSource.delete();
             }
         }
-        return layerDto;
     }
 
     /**
@@ -277,7 +309,7 @@
             return propertyGetter.get(feature, index);
         } catch (Exception ex) {
             // ex.printStackTrace()
-            log.error(ex.getMessage() + ex.getStackTrace() + "\n");
+            log.error(ex.getMessage(), ex);
 
             return null;
         }

--
Gitblit v1.9.3