src/main/java/com/lf/server/helper/GdbHelper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/lf/server/mapper/all/GeomBaseMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/lf/server/service/show/DataLibService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/lf/server/helper/GdbHelper.java
@@ -1,6 +1,9 @@ package com.lf.server.helper; import com.lf.server.entity.all.BaseGeoEntity; import com.lf.server.entity.all.StaticData; import com.lf.server.mapper.all.GeomBaseMapper; import com.lf.server.service.all.BaseQueryService; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.gdal.ogr.*; @@ -318,4 +321,62 @@ return Timestamp.valueOf(localDateTime); } /** * 创建GDB */ public static void createGdb(String filePath, Map<String, List<?>> map){ Driver driver = null; DataSource dataSource = null; try{ driver = ogr.GetDriverByName("OpenFileGDB"); if (null == driver) { return; } dataSource = driver.CreateDataSource(filePath); if (null == dataSource) { return; } for(String key : map.keySet()){ GeomBaseMapper baseMapper = ClassHelper.getGeoBaseMapper(key); if (null == baseMapper) { continue; } String tab = BaseQueryService.getTabName(baseMapper); if (StringHelper.isNull(tab)) { continue; } String className = ClassHelper.getClassName(baseMapper); Class clazz = ClassHelper.getEntityClass(className); List<?> list = map.get(key); } }catch (Exception ex){ log.error(ex.getMessage(), ex); }finally { GdbHelper.delete(dataSource, driver); } } private static <T> String getGeomType(GeomBaseMapper baseMapper, List<T> list) { for (T t : list){ if (!(t instanceof BaseGeoEntity)){ return null; } BaseGeoEntity entity = (BaseGeoEntity)t; if (StringHelper.isEmpty(entity.getGeom())){ continue; } } return null; } } src/main/java/com/lf/server/mapper/all/GeomBaseMapper.java
@@ -26,10 +26,19 @@ * @param tab 表名 * @return SRID */ @Select("select ST_SRID(geom) from ${tab} limit 1") @Select("select ST_SRID(geom) from ${tab} where geom is not null limit 1") public Integer selectSrid(@Param("tab") String tab); /** * 根据表名查询空间类型 * * @param tab 表名 * @return SRID */ @Select("select ST_GeometryType(geom) from ${tab} where geom is not null limit 1") public String selectGeometryType(@Param("tab") String tab); /** * 更新空间位置 * * @param tab 表名 src/main/java/com/lf/server/service/show/DataLibService.java
@@ -2,15 +2,15 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.lf.server.entity.sys.UserEntity; import com.lf.server.helper.ClassHelper; import com.lf.server.helper.PathHelper; import com.lf.server.helper.StringHelper; import com.lf.server.helper.*; import com.lf.server.mapper.all.GeomBaseMapper; import com.lf.server.service.all.BaseQueryService; import com.lf.server.service.data.DownloadService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.File; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -39,6 +39,11 @@ return null; } String tempName = StringHelper.YMDHMS2_FORMAT.format(new Date()); String tempPath = pathHelper.getTempPath(tempName); String filePath = tempPath + File.separator + tempName + ".gdb"; GdbHelper.createGdb(filePath, map); return null; } @@ -54,19 +59,14 @@ continue; } String tab = BaseQueryService.getTabName(baseMapper); if (StringHelper.isNull(tab)) { continue; } QueryWrapper wrapper = createWrapper(baseMapper, wkt); List<?> list = baseMapper.selectList(wrapper); if (null == list || list.size() == 0) { continue; } if (!map.containsKey(tab)) { map.put(tab, list); if (!map.containsKey(enity)) { map.put(enity, list); } } catch (Exception ex) { //