2014-01-17 1 views
1

Я разрабатываю приложение wfs с помощью Geotools.Я использую объект фильтра сравнения для фильтрации атрибутов атрибутов wfs. Например, запрос Shape_Area> 0 или CITY = "ANKARA" работает нормально, но если я определяю другие проблемы с фильтрами.Плагин geotools wfs с использованием нескольких фильтров

System.out.println("type name:"+data.getTypeNames()[3]); 
features = data.getFeatureSource(data.getTypeNames()[3]); 
//count features 
col = features.getFeatures(); 
System.out.println("# All feature's count= "+col.size()); 
//create the filter 
filter = filterFactory.createCompareFilter(CompareFilter.COMPARE_GREATER_THAN); 
FeatureType featureType = features.getFeatures().getSchema(); 
filter.addLeftValue(filterFactory.createAttributeExpression("Shape_Area")); 
filter.addRightValue(filterFactory.createLiteralExpression(100000)); 
//count filtered features 
col = features.getFeatures(filter); 
System.out.println("# Filtered results "+col.size()); 

Другой фильтр (filter2) Defination образец кода

filter2 =filterFactory.createCompareFilter(CompareFilter.COMPARE_EQUALS); 
filter2.addLeftValue(filterFactory.createAttributeExpression("CITY")); 
filter2.addRightValue(filterFactory.createLiteralExpression("ANKARA")); 

Получение результатов с множественным фильтром

col = features.getFeatures(filter.and(filter2));

Где я делаю неправильно?

ответ

0

Вы должны использовать действительно старую копию GeoTools - я не видел filter.and (filter2), поскольку мы сделали интерфейсы фильтра неизменяемыми в GeoTools 2.3?

Вы можете попробовать установить это с использованием фильтра завод полностью:

filter = ff.and(
    ff.greater(ff.property("Shape_Area"), ff.literal(100000)), 
    ff.equal(ff.property("CITY"), ff.literal("ANKARA")); 

Или с помощью CQL:

filter = CQL.toFilter(" Shape_Area > 100000 AND CITY = 'ANKARA'") 

 Смежные вопросы

  • Нет связанных вопросов^_^