From ed8c7a5effd0d423ce1118b680ecdca6fe732609 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期三, 02 七月 2025 16:43:13 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.11.205:9000/r/P2022036_Service --- src/main/java/com/lf/server/helper/ShpHelper.java | 96 ++++++++++++++++++++++-------------------------- 1 files changed, 44 insertions(+), 52 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..bd43af8 100644 --- a/src/main/java/com/lf/server/helper/ShpHelper.java +++ b/src/main/java/com/lf/server/helper/ShpHelper.java @@ -1,5 +1,6 @@ package com.lf.server.helper; +import com.lf.server.entity.all.StaticData; import com.lf.server.entity.ctrl.MarkJsonEntity; import com.lf.server.entity.ctrl.ShpRecordEntity; import org.apache.commons.logging.Log; @@ -78,25 +79,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 +95,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); + MarkJsonEntity me = new MarkJsonEntity(i + 1L); 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()); @@ -165,7 +163,7 @@ } SpatialReference sr = new SpatialReference(); - sr.ImportFromEPSG(4326); + sr.ImportFromEPSG(StaticData.I4326); int geoType = getGeometryType(type); layer = dataSource.CreateLayer(type.toLowerCase(), sr, geoType); @@ -173,22 +171,16 @@ return null; } - FieldDefn fdName = new FieldDefn("name", ogr.OFTString); - fdName.SetWidth(50); - layer.CreateField(fdName, 0); - - FieldDefn fdProps = new FieldDefn("props", ogr.OFTString); - fdProps.SetWidth(1024); - // layer.DeleteField(layer.FindFieldIndex("name", 1)) - layer.CreateField(fdProps, 1); + List<Field> fields = new ArrayList<>(); + GdbHelper.getFields(MarkJsonEntity.class, fields, StaticData.MARK_EXCLUDE_FIELDS); + GdbHelper.addLayerField(layer, fields); FeatureDefn featureDefn = layer.GetLayerDefn(); - for (MarkJsonEntity mje : list) { - Geometry geo = Geometry.CreateFromWkt(mje.getWkt()); - + for (MarkJsonEntity t : list) { Feature f = new Feature(featureDefn); - f.SetField(0, mje.getName()); - //f.SetField(1, mje.getProps()); + GdbHelper.setFeatureData(f, fields, t); + + Geometry geo = Geometry.CreateFromWkt(t.getWkt()); f.SetGeometry(geo); layer.CreateFeature(f); @@ -209,20 +201,20 @@ private static int getGeometryType(String type) { switch (type) { case "POINT": - return 1; + return ogr.wkbPoint; case "LINESTRING": - return 2; + return ogr.wkbLineString; case "POLYGON": - return 3; + return ogr.wkbPolygon; default: - return -1; + return ogr.wkbUnknown; } } /** * 璇诲彇鏁版嵁 */ - public static <T> List<T> readData(Class clazz, String filePath) { + public static <T> List<T> readData(Class clazz, String filePath, boolean isTransform) { List<T> list = new ArrayList<>(); Driver driver = null; @@ -239,7 +231,7 @@ } Layer layer = dataSource.GetLayer(0); - GdbHelper.readLayer(clazz, layer, list); + GdbHelper.readLayer(clazz, layer, list, isTransform); } catch (Exception ex) { log.error(ex.getMessage(), ex); } finally { -- Gitblit v1.9.3