src/main/java/com/lf/server/controller/show/InquiryController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/lf/server/controller/show/MarkController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/lf/server/entity/all/StaticData.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/lf/server/entity/ctrl/MarkJsonEntity.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/lf/server/helper/GdalHelper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/lf/server/service/data/UploaderService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/lf/server/service/show/MarkService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/lf/server/controller/show/InquiryController.java
@@ -3,6 +3,7 @@ import com.lf.server.aspect.SysLog; import com.lf.server.controller.all.BaseQueryController; import com.lf.server.entity.all.ResponseMsg; import com.lf.server.entity.all.StaticData; import com.lf.server.entity.ctrl.ShpRecordEntity; import com.lf.server.entity.data.MetaFileEntity; import com.lf.server.entity.sys.UserEntity; @@ -28,8 +29,6 @@ @RestController @RequestMapping("/inquiry") public class InquiryController extends BaseQueryController { private final static int FOUR = 4; @Autowired TokenService tokenService; @@ -51,7 +50,7 @@ } List<MetaFileEntity> list = uploaderService.uploadData(null, ue, req, res); if (list.size() < FOUR) { if (list == null || list.size() < StaticData.FOUR) { return fail("没有找到已上传的数据或不完整", null); } src/main/java/com/lf/server/controller/show/MarkController.java
@@ -4,13 +4,16 @@ import com.lf.server.controller.all.BaseController; import com.lf.server.entity.all.HttpStatus; import com.lf.server.entity.all.ResponseMsg; import com.lf.server.entity.all.StaticData; import com.lf.server.entity.ctrl.MarkJsonEntity; import com.lf.server.entity.data.DownloadEntity; import com.lf.server.entity.data.MetaFileEntity; import com.lf.server.entity.show.MarkEntity; import com.lf.server.entity.sys.UserEntity; import com.lf.server.helper.StringHelper; import com.lf.server.helper.WebHelper; import com.lf.server.service.data.DownloadService; import com.lf.server.service.data.UploaderService; import com.lf.server.service.show.MarkService; import com.lf.server.service.sys.TokenService; import io.swagger.annotations.Api; @@ -37,6 +40,9 @@ @Autowired TokenService tokenService; @Autowired UploaderService uploaderService; @Autowired DownloadService downloadService; @@ -219,7 +225,17 @@ @PostMapping(value = "/uploadShp", produces = "application/json; charset=UTF-8") public ResponseMsg<List<MarkJsonEntity>> uploadShp(HttpServletRequest req, HttpServletResponse res) { try { List<MarkJsonEntity> list = null; UserEntity ue = tokenService.getCurrentUser(req); if (ue == null) { return fail("用户未登录", null); } List<MetaFileEntity> meList = uploaderService.uploadData(null, ue, req, res); if (meList == null || meList.size() < StaticData.FOUR) { return fail("没有找到已上传的数据或不完整", null); } List<MarkJsonEntity> list = markService.readShpForMarks(meList); return success(list); } catch (Exception ex) { src/main/java/com/lf/server/entity/all/StaticData.java
@@ -11,6 +11,11 @@ public static String[] EXCLUDE_PATH = new String[]{"/swagger", "/sign/", "/error", "/proxy"}; /** * 数值:4 */ public final static int FOUR = 4; /** * 版本号 */ public final static String VERSION = "1.0.0"; src/main/java/com/lf/server/entity/ctrl/MarkJsonEntity.java
@@ -20,6 +20,10 @@ public MarkJsonEntity() { } public MarkJsonEntity(Integer id) { this.id = id; } public Integer getId() { return id; } src/main/java/com/lf/server/helper/GdalHelper.java
@@ -2,6 +2,7 @@ import com.lf.server.entity.ctrl.MarkJsonEntity; import com.lf.server.entity.ctrl.ShpRecordEntity; import com.lf.server.entity.data.MetaFileEntity; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.gdal.gdal.Band; @@ -13,6 +14,7 @@ import org.gdal.osr.SpatialReference; import java.io.File; import java.lang.reflect.Field; import java.sql.Time; import java.sql.Timestamp; import java.time.LocalDate; @@ -80,6 +82,73 @@ } /** * 读取ShapeFile文件获取Mark实体类 */ public static List<MarkJsonEntity> readShpForMarks(String filePath) { try { org.gdal.ogr.Driver driver = ogr.GetDriverByName("ESRI shapefile"); if (driver == null) { return null; } DataSource dataSource = driver.Open(filePath); Layer layer = dataSource.GetLayer(0); FeatureDefn featureDefn = layer.GetLayerDefn(); Map<Integer, Field> fieldMap = new HashMap(5); for (int i = 0, count = featureDefn.GetFieldCount(); i < count; i++) { try { FieldDefn fieldDefn = featureDefn.GetFieldDefn(i); Field field = MarkJsonEntity.class.getDeclaredField(fieldDefn.GetName().toLowerCase()); field.setAccessible(true); fieldMap.put(i, field); } catch (Exception e) { // } } long count = layer.GetFeatureCount(); if (count == 0 || fieldMap.size() == 0) { return null; } List<MarkJsonEntity> list = new ArrayList<MarkJsonEntity>(); for (int i = 0; i < count; i++) { Feature f = layer.GetFeature(i); MarkJsonEntity me = new MarkJsonEntity(i + 1); for (Integer key : fieldMap.keySet()) { Field field = fieldMap.get(key); switch (field.getType().toString()) { case "double": field.set(me, f.GetFieldAsDouble(i)); break; case "long": field.set(me, f.GetFieldAsInteger64(i)); break; case "int": field.set(me, f.GetFieldAsInteger(i)); break; default: field.set(me, f.GetFieldAsString(i)); break; } } me.setWkt(f.GetGeometryRef().ExportToWkt()); list.add(me); } layer.delete(); driver.delete(); return list; } catch (Exception ex) { log.error(ex.getMessage(), ex); return null; } } /** * 创建ShapeFile文件 * * @param list 标绘JSON实体类集合 src/main/java/com/lf/server/service/data/UploaderService.java
@@ -63,6 +63,9 @@ String value = req.getParameter(key); switch (field.getType().toString()) { case "double": field.set(t, Double.valueOf(value)); break; case "long": field.set(t, Long.valueOf(value)); break; src/main/java/com/lf/server/service/show/MarkService.java
@@ -1,7 +1,9 @@ package com.lf.server.service.show; import com.lf.server.entity.ctrl.MarkJsonEntity; import com.lf.server.entity.ctrl.ShpRecordEntity; import com.lf.server.entity.data.DownloadEntity; import com.lf.server.entity.data.MetaFileEntity; import com.lf.server.entity.show.MarkEntity; import com.lf.server.entity.sys.UserEntity; import com.lf.server.helper.*; @@ -196,4 +198,28 @@ public String getDownloadFilePath(DownloadEntity de) { return pathHelper.getConfig().getDownloadPath() + File.separator + de.getUrl(); } /** * 读取ShapeFile文件获取Mark实体类 * * @param list ShapeFile文件列表 * @return Mark实体类集合 */ public List<MarkJsonEntity> readShpForMarks(List<MetaFileEntity> list) { String fileName = null; for (MetaFileEntity mf : list) { if (mf.getName().toLowerCase().indexOf(".shp") > -1) { fileName = mf.getPath(); break; } } if (StringHelper.isEmpty(fileName)) { return null; } List<MarkJsonEntity> mjeList = GdalHelper.readShpForMarks(fileName); FileHelper.deleteFiles(list); return mjeList; } }