Browse Source

gdb入库时间、日期格式完善

wanger 7 months ago
parent
commit
4a73e0eeb4

+ 1 - 0
onemap-modules/onemap-spotoverlap/src/main/java/com/onemap/spotoverlap/service/impl/yzt/YztServiceImpl.java

@@ -255,6 +255,7 @@ public class YztServiceImpl implements IYztService {
                     //TODO wanger 第一步:指定坐标系将本地shp文件导入到postgis
                     ShpToPostGISWithReproject.importShpToPostGISWithReproject(shpPath, tablename, "EPSG:" + shpWkid, false);
                 } else if ("gdb".equals(filetype)) {
+                    ufield = ufield.toLowerCase();
                     shpPath = GdbToPostgisImporter.importToPostgis(shpPath, gdblayername, tablename);
                 }
                 //TODO wanger 第二步:指定的空间数据库表的geom字段

+ 10 - 7
onemap-modules/onemap-spotoverlap/src/main/java/com/onemap/spotoverlap/utils/GdbToPostgisImporter.java

@@ -13,6 +13,9 @@ import org.springframework.stereotype.Component;
 import java.io.File;
 import java.lang.reflect.Type;
 import java.sql.*;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Vector;
@@ -230,7 +233,7 @@ public class GdbToPostgisImporter {
             // 遍历所有要素
             Feature feature;
             Integer count = Math.toIntExact(layer.GetFeatureCount(1));
-            while ((feature = layer.GetNextFeature()) != null)  {
+            while ((feature = layer.GetNextFeature()) != null) {
 //                feature = layer.GetFeature(j);
                 // 设置属性值
                 for (int i = 0; i < defn.GetFieldCount(); i++) {
@@ -276,14 +279,14 @@ public class GdbToPostgisImporter {
                     pstmt.setString(index, feature.GetFieldAsString(fieldIndex));
                     break;
                 case ogr.OFTDate:
-                    pstmt.setString(index, feature.GetFieldAsString(fieldIndex));
-//                    pstmt.setDate(index, new java.sql.Date(
-//                            feature.GetFieldAsDateTime(fieldIndex).toCalendar().getTimeInMillis()));
+                    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
+                    String curfield = feature.GetFieldAsString(fieldIndex).substring(0, 10);
+                    pstmt.setDate(index, Date.valueOf(LocalDate.parse(curfield, formatter)));
                     break;
                 case ogr.OFTDateTime:
-                    pstmt.setString(index, feature.GetFieldAsString(fieldIndex));
-//                    pstmt.setTimestamp(index, new java.sql.Timestamp(
-//                            feature.GetFieldAsDateTime(fieldIndex).toCalendar().getTimeInMillis()));
+                    DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
+                    String curfield2 = feature.GetFieldAsString(fieldIndex).substring(0, 19);
+                    pstmt.setTimestamp(index, Timestamp.valueOf(LocalDateTime.parse(curfield2, formatter2)));
                     break;
                 default:
                     pstmt.setString(index, feature.GetFieldAsString(fieldIndex));