From c33441493c8a2111998de4be47c4b52a03f28e87 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期二, 28 二月 2023 18:10:09 +0800 Subject: [PATCH] 1 --- src/main/java/com/lf/server/helper/GdbHelper.java | 75 ++++++++++++++++++++----------------- 1 files changed, 41 insertions(+), 34 deletions(-) diff --git a/src/main/java/com/lf/server/helper/GdbHelper.java b/src/main/java/com/lf/server/helper/GdbHelper.java index 90d6b51..2483133 100644 --- a/src/main/java/com/lf/server/helper/GdbHelper.java +++ b/src/main/java/com/lf/server/helper/GdbHelper.java @@ -163,9 +163,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,21 +221,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) { - log.error(ex.getMessage(), ex); - return false; + if (null != gField) { + setGeom(t, f, gField); } } @@ -287,28 +283,32 @@ * 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: - wkt = wkt.replace("LINESTRING (", "MULTILINESTRING ((") + ")"; - break; - case 3: - wkt = wkt.replace("POLYGON (", "MULTIPOLYGON ((") + ")"; - break; - default: - break; + private static <T> void setGeom(T t, Feature f, Field gField) { + try { + 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: + wkt = wkt.replace("LINESTRING (", "MULTILINESTRING ((") + ")"; + break; + case 3: + wkt = wkt.replace("POLYGON (", "MULTIPOLYGON ((") + ")"; + break; + default: + break; + } + geo = String.format("ST_GeomFromText('%s')", wkt); } - geo = String.format("ST_GeomFromText('%s')", wkt); - } - gField.set(t, geo); + gField.set(t, geo); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + } } /** @@ -328,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]), @@ -350,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