From 34156736f08170c0ca375a2a222d8adb5b5cb4bf Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期三, 15 三月 2023 15:47:05 +0800 Subject: [PATCH] 1 --- src/main/java/com/lf/server/helper/GdbHelper.java | 78 +++++++++++++++++++++----------------- 1 files changed, 43 insertions(+), 35 deletions(-) diff --git a/src/main/java/com/lf/server/helper/GdbHelper.java b/src/main/java/com/lf/server/helper/GdbHelper.java index e813e7d..eaa458e 100644 --- a/src/main/java/com/lf/server/helper/GdbHelper.java +++ b/src/main/java/com/lf/server/helper/GdbHelper.java @@ -1,6 +1,5 @@ package com.lf.server.helper; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.lf.server.entity.all.BaseGeoEntity; import com.lf.server.entity.all.StaticData; import com.lf.server.mapper.all.BasicMapper; @@ -163,9 +162,8 @@ } T t = (T) clazz.newInstance(); - if (readFeature(t, f, map, gField)) { - list.add(t); - } + readFeature(t, f, map, gField); + list.add(t); } while (true); } catch (Exception ex) { log.error(ex.getMessage(), ex); @@ -222,20 +220,18 @@ /** * 璇诲彇Feature */ - private static <T> boolean readFeature(T t, Feature f, Map<Integer, Field> map, Field gField) { - try { - for (Integer i : map.keySet()) { + private static <T> void readFeature(T t, Feature f, Map<Integer, Field> map, Field gField) { + for (Integer i : map.keySet()) { + try { Field field = map.get(i); setValue(t, f, field, i); + } catch (Exception e) { + log.error(e.getMessage(), e); } + } - if (null != gField) { - setGeom(t, f, gField); - } - - return true; - } catch (Exception ex) { - return false; + if (null != gField) { + setGeom(t, f, gField); } } @@ -261,10 +257,16 @@ field.set(t, f.GetFieldAsInteger(i)); break; case "java.sql.Timestamp": - field.set(t, getTimestamp(f, i)); + Timestamp ts = getTimestamp(f, i); + if (null != ts) { + field.set(t, ts); + } break; case "java.time.LocalDate": - field.set(t, getLocalDate(f, i)); + LocalDate ld = getLocalDate(f, i); + if (null != ld) { + field.set(t, ld); + } break; default: field.set(t, f.GetFieldAsString(i)); @@ -286,28 +288,27 @@ * wkbNone = 100, * wkbLinearRing = 101 */ - private static <T> void setGeom(T t, Feature f, Field gField) throws Exception { - String geo = "null"; - if (null != f.GetGeometryRef()) { - String wkt = f.GetGeometryRef().ExportToWkt(); - // noinspection AlibabaRemoveCommentedCode - switch (f.GetGeometryRef().GetGeometryType()) { - //case 1: - // wkt = wkt.replace("POINT", "MULTIPOINT"); - // break; - case 2: + private static <T> void setGeom(T t, Feature f, Field gField) { + try { + String geo = "null"; + if (null != f.GetGeometryRef()) { + String wkt = f.GetGeometryRef().ExportToWkt(); + // f.GetGeometryRef().GetGeometryType() + if (wkt.contains(StaticData.LINESTRING) && !wkt.contains(StaticData.MULTILINESTRING)) { wkt = wkt.replace("LINESTRING (", "MULTILINESTRING ((") + ")"; - break; - case 3: + } + if (wkt.contains(StaticData.POLYGON) && !wkt.contains(StaticData.MULTIPOLYGON)) { wkt = wkt.replace("POLYGON (", "MULTIPOLYGON ((") + ")"; - break; - default: - break; - } - geo = String.format("ST_GeomFromText('%s')", wkt); - } + } + wkt = wkt.replace(" 0,", ",").replace(" 0)", ")"); - gField.set(t, geo); + geo = String.format("ST_GeomFromText('%s')", wkt); + } + + gField.set(t, geo); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + } } /** @@ -327,6 +328,10 @@ float fSecond = pfSecond[0]; int s = (int) fSecond; int ns = (int) (1000000000 * fSecond - s); + + if (pnYear[0] > StaticData.I2050 || pnMonth[0] > StaticData.I12 || pnDay[0] > StaticData.I31 || pnHour[0] > StaticData.I24 || pnMinute[0] > StaticData.I60) { + return null; + } LocalDateTime localDateTime = LocalDateTime.of( LocalDate.of(pnYear[0], pnMonth[0], pnDay[0]), @@ -349,6 +354,9 @@ int[] pnTzFlag = new int[1]; f.GetFieldAsDateTime(index, pnYear, pnMonth, pnDay, pnHour, pnMinute, pfSecond, pnTzFlag); + if (pnYear[0] > StaticData.I2050 || pnMonth[0] > StaticData.I12 || pnDay[0] > StaticData.I31) { + return null; + } return LocalDate.of(pnYear[0], pnMonth[0], pnDay[0]); } -- Gitblit v1.9.3