| | |
| | | /** |
| | | * 创建GDB |
| | | */ |
| | | public static void createGdb(String filePath, Map<String, List<?>> map) { |
| | | public static void createGdb(String filePath, Map<String, List<?>> map) throws Exception { |
| | | Driver driver = null; |
| | | DataSource dataSource = null; |
| | | try { |
| | |
| | | } |
| | | |
| | | List<Field> fields = new ArrayList<>(); |
| | | fields.add(getGeomField(clazz)); |
| | | // fields.add(getGeomField(clazz)) |
| | | 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(); |
| | |
| | | dataSource.FlushCache(); |
| | | } catch (Exception ex) { |
| | | log.error(ex.getMessage(), ex); |
| | | throw ex; |
| | | } finally { |
| | | GdbHelper.delete(dataSource, driver); |
| | | } |
| | |
| | | * 添加图层字段 |
| | | */ |
| | | private static void addLayerField(Layer layer, List<Field> list) { |
| | | for (int i = 1, c = list.size(); i < c; i++) { |
| | | for (int i = 0, c = list.size(); i < c; i++) { |
| | | Field f = list.get(i); |
| | | |
| | | int fieldType = getFieldType(f); |
| | | FieldDefn fd = new FieldDefn(f.getName(), fieldType); |
| | | |
| | | layer.CreateField(fd, i); |
| | | layer.CreateField(fd, i + 1); |
| | | } |
| | | } |
| | | |
| | |
| | | Geometry geom = Geometry.CreateFromWkt(geoEntity.getGeom()); |
| | | f.SetGeometry(geom); |
| | | |
| | | for (int i = 1, c = fields.size(); i < c; i++) { |
| | | for (int i = 0, c = fields.size(); i < c; i++) { |
| | | Field field = fields.get(i); |
| | | Object val = field.get(t); |
| | | if (null == val) { |
| | |
| | | /** |
| | | * 设置Timestamp |
| | | */ |
| | | @SuppressWarnings("AlibabaRemoveCommentedCode") |
| | | private static void setTimestamp(Feature f, int i, Timestamp time) { |
| | | if (null == time) { |
| | | return; |
| | | } |
| | | |
| | | //Calendar now = Calendar.getInstance(); |
| | | //now.setTimeInMillis(time.getTime()); |
| | | // f.SetField(i, now.get(Calendar.YEAR), now.get(Calendar.MONTH) + 1, now.get(Calendar.DATE), now.get(Calendar.HOUR), now.get(Calendar.MINUTE), now.get(Calendar.SECOND), 8); |
| | | |
| | | LocalDateTime local = time.toLocalDateTime(); |
| | | f.SetField(i, local.getYear(), local.getMonthValue(), local.getDayOfMonth(), local.getHour(), local.getMinute(), local.getSecond(), 8); |