| | |
| | | for (int i = 0, count = fd.GetFieldCount(); i < count; i++) { |
| | | FieldDefn fieldDefn = fd.GetFieldDefn(i); |
| | | try { |
| | | Field field = clazz.getDeclaredField(fieldDefn.GetName().toLowerCase()); |
| | | String name = fieldDefn.GetName().toLowerCase(); |
| | | if ("gid".equals(name)) { |
| | | continue; |
| | | } |
| | | |
| | | Field field = clazz.getDeclaredField(name); |
| | | field.setAccessible(true); |
| | | |
| | | map.put(i, field); |
| | |
| | | |
| | | /** |
| | | * 设置 geom 字段值 |
| | | * |
| | | * wkbUnknown = 0, |
| | | * wkbPoint = 1, |
| | | * wkbLineString = 2, |
| | | * wkbPolygon = 3, |
| | | * wkbMultiPoint = 4, |
| | | * wkbMultiLineString = 5, |
| | | * wkbMultiPolygon = 6, |
| | | * wkbGeometryCollection = 7, |
| | | * wkbNone = 100, |
| | | * wkbLinearRing = 101 |
| | | */ |
| | | private static <T> void setGeom(T t, Feature f, Field gField) throws Exception { |
| | | Geometry geometry = f.GetGeometryRef(); |
| | | if (null != geometry) { |
| | | gField.set(t, geometry.ExportToWkt()); |
| | | String wkt = geometry.ExportToWkt(); |
| | | switch (geometry.GetGeometryType()) { |
| | | case 2: |
| | | wkt = wkt.replace("LINESTRING (", "MultiLINESTRING ((") + ")"; |
| | | break; |
| | | case 3: |
| | | wkt = wkt.replace("POLYGON (", "LINESTRINGPOLYGON ((") + ")"; |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | |
| | | gField.set(t, String.format("ST_GeomFromText('%s')", wkt)); |
| | | } |
| | | } |
| | | |