2016-09-23 7 views
1

Я изучаю использование GeoTools для чтения шейп-файлов. Учебное пособие по его использованию прямо показывает, как установить фильтр в «Фильтр фильтра = Фильтр.INCLUDE;» указать все.Фильтры GeoTools для шейп-файлов

Я хочу разделить чтение для целей производительности на очень больших файлах формы. В сущности, я хочу разделить чтение информации в DBF-файле с чтения данных «THE_GEOM». У нас уже есть собственная фильтрация, и вам проще просто использовать ее, а затем получить необходимую геометрию по мере необходимости.

  1. Как указать фильтр для извлечения всей информации DBF без геометрии?
  2. Как указать фильтр для извлечения геометрии без информации DBF? Это не так важно, так как это, вероятно, не повлияет на производительность настолько, но я хотел бы знать.

Спасибо.

ответ

0

По дизайну GeoTools 'Shapefile Datastore имеет большое значение, чтобы сохранить геометрию и атрибуты (материал DBF) вместе. Таким образом, вам нужно будет совать во внутренних деталях, чтобы иметь возможность сделать это. Таким образом, вы можете использовать DBFFileReader и ShapefileReader, чтобы разделить чтение.

Я бы рассмотрел перенос ваших фильтров в GeoTools, поскольку он дает вам гибкость при переключении источников данных позже, когда Shapefiles окажется слишком маленьким или слишком медленным. Возможно, стоит посмотреть на CQL and ECQL classes, чтобы помочь в их создании. Если вы действительно имеете дело с большими Shapefiles (> 2Gb), то переход с надлежащей пространственной базой данных, как PostGIS, почти наверняка даст лучшую производительность, и GeoTools будет получать данные точно так же, как и те же фильтры.