| | |
| | | } |
| | | |
| | | for (String key : map.keySet()) { |
| | | GeomBaseMapper baseMapper = ClassHelper.getGeoBaseMapper(key); |
| | | if (null == baseMapper) { |
| | | continue; |
| | | } |
| | | Layer layer = createLayer(dataSource, baseMapper); |
| | | if (null == layer) { |
| | | continue; |
| | | } |
| | | Layer layer = null; |
| | | try { |
| | | GeomBaseMapper baseMapper = ClassHelper.getGeoBaseMapper(key); |
| | | if (null == baseMapper) { |
| | | continue; |
| | | } |
| | | layer = createLayer(dataSource, baseMapper); |
| | | if (null == layer) { |
| | | continue; |
| | | } |
| | | |
| | | String className = ClassHelper.getClassName(baseMapper); |
| | | Class clazz = ClassHelper.getEntityClass(className); |
| | | List<Field> fields = new ArrayList<>(); |
| | | getFields(clazz, fields); |
| | | String className = ClassHelper.getClassName(baseMapper); |
| | | Class clazz = ClassHelper.getEntityClass(className); |
| | | Field gField = getGeomField(clazz); |
| | | if (null == gField) { |
| | | continue; |
| | | } |
| | | |
| | | Field gField = getGeomField(clazz); |
| | | if (null == gField) { |
| | | continue; |
| | | List<Field> fields = new ArrayList<>(); |
| | | getFields(clazz, fields); |
| | | addLayerField(layer, fields); |
| | | |
| | | setLayerData(layer, fields, map.get(key)); |
| | | } catch (Exception e) { |
| | | log.error(e.getMessage(), e); |
| | | } finally { |
| | | if (null != layer) { |
| | | layer.delete(); |
| | | } |
| | | } |
| | | |
| | | List<?> list = map.get(key); |
| | | } |
| | | } catch (Exception ex) { |
| | | log.error(ex.getMessage(), ex); |
| | |
| | | try { |
| | | Field[] fields = clazz.getDeclaredFields(); |
| | | for (Field f : fields) { |
| | | // if ("geom".equals(f.getName())) { |
| | | // continue; |
| | | // } |
| | | |
| | | if (StaticData.READ_EXCLUDE_FIELDS.contains(f.getName())) { |
| | | if (StaticData.GDB_EXCLUDE_FIELDS.contains(f.getName())) { |
| | | continue; |
| | | } |
| | | |
| | |
| | | for (int i = 0, c = list.size(); i < c; i++) { |
| | | Field f = list.get(i); |
| | | FieldDefn fd = getLayerField(f); |
| | | |
| | | layer.CreateField(fd, i); |
| | | } |
| | | } |
| | |
| | | private static FieldDefn getLayerField(Field f ) { |
| | | int fieldType = getFieldType(f); |
| | | FieldDefn fd = new FieldDefn(f.getName(), fieldType); |
| | | if (fieldType == ogr.OFTString) { |
| | | |
| | | if (fieldType == ogr.OFTString) { |
| | | // fd.SetWidth(100) |
| | | } |
| | | |
| | | return fd; |
| | |
| | | return ogr.OFTString; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 设置图层数据 |
| | | */ |
| | | private static <T> void setLayerData(Layer layer, List<Field> fields, List<T> list) throws Exception { |
| | | for (T t : list) { |
| | | Feature f = new Feature(layer.GetLayerDefn()); |
| | | |
| | | BaseGeoEntity geoEntity = (BaseGeoEntity) t; |
| | | Geometry geom = Geometry.CreateFromWkt(geoEntity.getGeom()); |
| | | f.SetGeometry(geom); |
| | | |
| | | for (int i = 0, c = fields.size(); i < c; i++) { |
| | | Field field = fields.get(i); |
| | | switch (field.getType().getName()) { |
| | | case "java.math.BigDecimal": |
| | | case "java.lang.Double": |
| | | case "double": |
| | | Double d = field.getDouble(t); |
| | | f.SetField(i, d); |
| | | case "java.lang.Long": |
| | | case "long": |
| | | Long l = field.getLong(t); |
| | | f.SetField(i, l); |
| | | case "java.lang.Integer": |
| | | case "int": |
| | | Integer n = field.getInt(t); |
| | | f.SetField(i, n); |
| | | case "java.sql.Timestamp": |
| | | //return ogr.OFTDateTime; |
| | | default: |
| | | String str = (String) field.get(t); |
| | | f.SetField(i, str); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | layer.CreateFeature(f); |
| | | } |
| | | } |
| | | } |