Файл Geojson импортируется некорректно, если в свойствах есть геометрия

#java #geojson #geotools

#java #geojson #geotools

Вопрос:

Входной файл:

 {
  "type": "FeatureCollection",
  "name": "smth_name",
  "crs": {
    "type": "name",
    "properties": {
      "name": "urn:ogc:def:crs:EPSG::4326"
    }
  },
  "features": [
    {
      "type": "Feature",
      "properties": {
        "testid": 2,
        "other_geom": {
          "type": "Point", "coordinates": [44.3, 33.3] 
        }
      },      
      "geometry":{"type":"MultiPolygon",
          "coordinates":[[[[33.5461,33.44],[33.441,33.447],[33.6718,33.448],[33.0188,33.441],[33.5461,33.44]]]]}
    }
  ]
}
  

В результате я получаю объект с точечной геометрией (44.3, 33.3), а не с полигональной.

Как игнорировать геометрию в свойствах объекта или других сложных полях?

Использовались geotools gt-geojsondatastore версии 19.0.

 GeoJSONDataStore geoJSONDataStore = new GeoJSONDataStore(jsonFile.toURI().toURL());
SimpleFeature simpleFeature = geoJSONDataStore.getFeatures()...next();
Point geometry = simpleFeature.getDefaultGeometry()
  

Ответ №1:

В вашем конструкторе вы установили геометрию по умолчанию, указывающую на other_geom , ie. типа Point object. Установите для него тип MultiPolygon ( geometry ).

 SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder();
builder.setDefaultGeometry("geometry");
  

и в вашем извлечении

 MultiPolygon geometry = simpleFeature.getDefaultGeometry();
  

Комментарии:

1. Входной файл генерируется извне, я не могу повлиять на его структуру.