From f15294cf82b71dfbf75d0821dd8eb13d14a9d936 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期一, 27 二月 2023 16:35:55 +0800 Subject: [PATCH] 1 --- src/main/java/com/lf/server/helper/GdbHelper.java | 52 +++++++++++++++++++++++++++++++--------------------- 1 files changed, 31 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/lf/server/helper/GdbHelper.java b/src/main/java/com/lf/server/helper/GdbHelper.java index 9113861..e813e7d 100644 --- a/src/main/java/com/lf/server/helper/GdbHelper.java +++ b/src/main/java/com/lf/server/helper/GdbHelper.java @@ -1,7 +1,9 @@ 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; import com.lf.server.mapper.all.GeomBaseMapper; import com.lf.server.service.all.BaseQueryService; import org.apache.commons.logging.Log; @@ -75,9 +77,10 @@ Driver driver = null; DataSource dataSource = null; try { - driver = ogr.GetDriverByName("OpenFileGDB"); + // driver = ogr.GetDriverByName("OpenFileGDB") + driver = ogr.GetDriverByName("FileGDB"); if (null == driver) { - log.error("GdbHelper.getTabNames.driver(OpenFileGDB) is null."); + log.error("GdbHelper.getTabNames.driver is null."); return list; } @@ -111,7 +114,8 @@ Driver driver = null; DataSource dataSource = null; try { - driver = ogr.GetDriverByName("OpenFileGDB"); + // driver = ogr.GetDriverByName("OpenFileGDB") + driver = ogr.GetDriverByName("FileGDB"); if (null == driver) { return list; } @@ -238,7 +242,7 @@ /** * 璁剧疆鍊� */ - private static <T> void setValue(T t, Feature f, Field field, Integer i) throws Exception { + public static <T> void setValue(T t, Feature f, Field field, Integer i) throws Exception { switch (field.getType().getName()) { case "java.math.BigDecimal": double dd = f.GetFieldAsDouble(i); @@ -309,7 +313,7 @@ /** * 鑾峰彇 Timestamp */ - private static Timestamp getTimestamp(Feature f, int index) { + public static Timestamp getTimestamp(Feature f, int index) { int[] pnYear = new int[1]; int[] pnMonth = new int[1]; int[] pnDay = new int[1]; @@ -335,7 +339,7 @@ /** * 鑾峰彇 LocalDate */ - private static LocalDate getLocalDate(Feature f, int index) { + public static LocalDate getLocalDate(Feature f, int index) { int[] pnYear = new int[1]; int[] pnMonth = new int[1]; int[] pnDay = new int[1]; @@ -370,7 +374,7 @@ for (String key : map.keySet()) { Layer layer = null; try { - GeomBaseMapper baseMapper = ClassHelper.getGeoBaseMapper(key); + BasicMapper baseMapper = ClassHelper.getBasicMapper(key); if (null == baseMapper) { continue; } @@ -386,8 +390,7 @@ } List<Field> fields = new ArrayList<>(); - // fields.add(getGeomField(clazz)) - getFields(clazz, fields); + getFields(clazz, fields, StaticData.GDB_EXCLUDE_FIELDS); addLayerField(layer, fields); setLayerData(layer, fields, map.get(key)); @@ -411,18 +414,21 @@ /** * 鍒涘缓鍥惧眰 */ - private static Layer createLayer(DataSource dataSource, GeomBaseMapper baseMapper ) { + private static Layer createLayer(DataSource dataSource, BasicMapper baseMapper ) { String tab = BaseQueryService.getTabName(baseMapper); if (StringHelper.isNull(tab)) { return null; } - String geomType = baseMapper.selectGeometryType(tab); - if (StringHelper.isEmpty(geomType)) { - return null; + Integer srid = null; + String geomType = null; + if (baseMapper instanceof GeomBaseMapper) { + GeomBaseMapper geomMapper = (GeomBaseMapper) baseMapper; + geomType = geomMapper.selectGeometryType(tab); + + srid = geomMapper.selectSrid(tab); } - Integer srid = baseMapper.selectSrid(tab); SpatialReference sr = new SpatialReference(); sr.ImportFromEPSG(null == srid ? 4490 : srid); @@ -434,7 +440,7 @@ */ private static Integer getGeomType(String geomType) { if (StringHelper.isEmpty(geomType)) { - return ogr.wkbUnknown; + return ogr.wkbPoint; } switch (geomType) { @@ -458,11 +464,11 @@ /** * 鑾峰彇瀛楁 */ - private static void getFields(Class clazz, List<Field> list) { + public static void getFields(Class clazz, List<Field> list, List<String> excludeFields) { try { Field[] fields = clazz.getDeclaredFields(); for (Field f : fields) { - if (StaticData.GDB_EXCLUDE_FIELDS.contains(f.getName())) { + if (excludeFields.contains(f.getName())) { continue; } @@ -471,7 +477,7 @@ } if (!StaticData.OBJECT.equals(clazz.getSuperclass().getName())) { - getFields(clazz.getSuperclass(), list); + getFields(clazz.getSuperclass(), list, excludeFields); } } catch (Exception ex) { // @@ -523,9 +529,13 @@ for (T t : list) { Feature f = new Feature(layer.GetLayerDefn()); - BaseGeoEntity geoEntity = (BaseGeoEntity) t; - Geometry geom = Geometry.CreateFromWkt(geoEntity.getGeom()); - f.SetGeometry(geom); + if (t instanceof BaseGeoEntity) { + BaseGeoEntity geoEntity = (BaseGeoEntity) t; + if (!StringHelper.isEmpty(geoEntity.getGeom())) { + Geometry geom = Geometry.CreateFromWkt(geoEntity.getGeom()); + f.SetGeometry(geom); + } + } setFeatureData(f, fields, t); layer.CreateFeature(f); -- Gitblit v1.9.3