From d3f4ed7fe49808a944053674f757edd889e192b2 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期三, 15 二月 2023 12:51:33 +0800 Subject: [PATCH] 1 --- src/main/java/com/lf/server/helper/ShpHelper.java | 59 ++++++++++++++++++++++++++++------------------------------- 1 files changed, 28 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/lf/server/helper/ShpHelper.java b/src/main/java/com/lf/server/helper/ShpHelper.java index 936dfd3..1005a87 100644 --- a/src/main/java/com/lf/server/helper/ShpHelper.java +++ b/src/main/java/com/lf/server/helper/ShpHelper.java @@ -78,25 +78,13 @@ } 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) { + if (layer.GetFeatureCount() == 0) { return null; } - return setMarkJsonEntity(layer, fieldMap); + Map<Integer, Field> fields = getShpFields(layer); + + return setMarkJsonEntity(layer, fields); } catch (Exception ex) { log.error(ex.getMessage(), ex); return null; @@ -106,30 +94,39 @@ } /** + * 鑾峰彇shp瀛楁淇℃伅 + */ + private static Map<Integer, Field> getShpFields(Layer layer) { + FeatureDefn featureDefn = layer.GetLayerDefn(); + + Map<Integer, Field> fields = new HashMap(3); + for (int i = 0, count = featureDefn.GetFieldCount(); i < count; i++) { + try { + FieldDefn fieldDefn = featureDefn.GetFieldDefn(i); + Field field = MarkJsonEntity.class.getDeclaredField(fieldDefn.GetName()); + field.setAccessible(true); + + fields.put(i, field); + } catch (Exception e) { + // + } + } + + return fields; + } + + /** * 璁剧疆鏍囩粯瀹炰綋绫� */ private static List<MarkJsonEntity> setMarkJsonEntity(Layer layer, Map<Integer, Field> fieldMap) throws Exception { - List<MarkJsonEntity> list = new ArrayList<MarkJsonEntity>(); + List<MarkJsonEntity> list = new ArrayList<>(); for (int i = 0; i < layer.GetFeatureCount(); 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; - } + GdbHelper.setValue(me, f, field, key); } me.setWkt(f.GetGeometryRef().ExportToWkt()); -- Gitblit v1.9.3