From e0ee9dab23f25421f8f8f6bfb58f9fec7d58978f Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期一, 19 十二月 2022 16:26:03 +0800
Subject: [PATCH] 1

---
 src/main/java/com/lf/server/helper/GdbHelper.java |   64 ++++++++++++++++++++++++++++---
 1 files changed, 57 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/lf/server/helper/GdbHelper.java b/src/main/java/com/lf/server/helper/GdbHelper.java
index 5db1da2..979f070 100644
--- a/src/main/java/com/lf/server/helper/GdbHelper.java
+++ b/src/main/java/com/lf/server/helper/GdbHelper.java
@@ -353,8 +353,12 @@
                 String className = ClassHelper.getClassName(baseMapper);
                 Class clazz = ClassHelper.getEntityClass(className);
                 List<Field> fields = new ArrayList<>();
-
                 getFields(clazz, fields);
+
+                Field gField = getGeomField(clazz);
+                if (null == gField) {
+                    continue;
+                }
 
                 List<?> list = map.get(key);
             }
@@ -383,20 +387,18 @@
         SpatialReference sr = new SpatialReference();
         sr.ImportFromEPSG(null == srid ? 4326 : srid);
 
-        Layer layer = dataSource.CreateLayer(tab, sr, getGeomType(geomType), null);
-
-        return layer;
+        return dataSource.CreateLayer(tab, sr, getGeomType(geomType), null);
     }
 
     /**
      * 鑾峰彇Geom绫诲埆
      */
     private static Integer getGeomType(String geomType) {
-        if (StringHelper.isEmpty(geomType)){
+        if (StringHelper.isEmpty(geomType)) {
             return ogr.wkbUnknown;
         }
 
-        switch (geomType){
+        switch (geomType) {
             case "ST_Point":
                 return ogr.wkbPoint;
             case "ST_LineString":
@@ -419,7 +421,11 @@
         try {
             Field[] fields = clazz.getDeclaredFields();
             for (Field f : fields) {
-                if ("geom".equals(f.getName())) {
+//                if ("geom".equals(f.getName())) {
+//                    continue;
+//                }
+
+                if (StaticData.READ_EXCLUDE_FIELDS.contains(f.getName())) {
                     continue;
                 }
 
@@ -434,4 +440,48 @@
             //
         }
     }
+
+    /**
+     * 娣诲姞鍥惧眰瀛楁
+     */
+    private static void addLayerField(Layer layer, List<Field> list) {
+        for (int i = 0, c = list.size(); i < c; i++) {
+            Field f = list.get(i);
+            FieldDefn fd = getLayerField(f);
+
+            layer.CreateField(fd, i);
+        }
+    }
+
+    private static FieldDefn getLayerField(Field f ) {
+        int fieldType = getFieldType(f);
+        FieldDefn fd = new FieldDefn(f.getName(), fieldType);
+        if (fieldType == ogr.OFTString) {
+
+        }
+
+        return fd;
+    }
+
+    /**
+     * 鑾峰彇瀛楁绫诲瀷
+     */
+    private static Integer getFieldType(Field f) {
+        switch (f.getType().getName()) {
+            case "java.math.BigDecimal":
+            case "java.lang.Double":
+            case "double":
+                return ogr.OFTReal;
+            case "java.lang.Long":
+            case "long":
+                return ogr.OFTInteger64;
+            case "java.lang.Integer":
+            case "int":
+                return ogr.OFTInteger;
+            case "java.sql.Timestamp":
+                return ogr.OFTDateTime;
+            default:
+                return ogr.OFTString;
+        }
+    }
 }

--
Gitblit v1.9.3