package aimax.osm.data;
import java.util.HashSet;
import aimax.osm.data.entities.MapWay;
/**
* Way filter, which is based on attribute value checking.
* @author Ruediger Lunde
*/
public class MapWayAttFilter implements MapWayFilter {
String attName;
HashSet<String> attValues;
public MapWayAttFilter(String attName) {
this.attName = attName;
}
public void setAccepted(String attValue) {
if (attValues == null)
attValues = new HashSet<String>();
attValues.add(attValue);
}
public boolean isAccepted(MapWay way) {
String val = null;
if (way != null) {
val = way.getAttributeValue(attName);
}
return val != null && (attValues == null || attValues.contains(val));
}
/** Creates a way filter which passes any way except waterways. */
public static MapWayAttFilter createAnyWayFilter() {
MapWayAttFilter filter = new MapWayAttFilter("highway");
filter.setAccepted("motorway");
filter.setAccepted("motorway_link");
filter.setAccepted("trunk");
filter.setAccepted("trunk_link");
filter.setAccepted("primary");
filter.setAccepted("primary_link");
filter.setAccepted("secondary");
filter.setAccepted("tertiary");
filter.setAccepted("road");
filter.setAccepted("residential");
filter.setAccepted("living_street");
filter.setAccepted("pedestrian");
filter.setAccepted("service");
filter.setAccepted("track");
filter.setAccepted("cycleway");
filter.setAccepted("path");
filter.setAccepted("footway");
filter.setAccepted("steps");
//filter.setAccepted("waterway");
filter.setAccepted("unclassified");
return filter;
}
/** Creates a way filter which passes any way suitable for traveling by car. */
public static MapWayAttFilter createCarWayFilter() {
MapWayAttFilter filter = new MapWayAttFilter("highway");
filter.setAccepted("motorway");
filter.setAccepted("motorway_link");
filter.setAccepted("trunk");
filter.setAccepted("trunk_link");
filter.setAccepted("primary");
filter.setAccepted("primary_link");
filter.setAccepted("secondary");
filter.setAccepted("tertiary");
filter.setAccepted("road");
filter.setAccepted("residential");
filter.setAccepted("living_street");
// filter.setAccepted("pedestrian");
filter.setAccepted("service");
// filter.setAccepted("track");
// filter.setAccepted("cycleway");
// filter.setAccepted("path");
// filter.setAccepted("footway");
// filter.setAccepted("steps");
// filter.setAccepted("waterway");
filter.setAccepted("unclassified");
return filter;
}
/** Creates a way filter which passes any way suitable for traveling by car. */
public static MapWayAttFilter createOverlandTrafficWayFilter() {
MapWayAttFilter filter = new MapWayAttFilter("highway");
filter.setAccepted("motorway");
filter.setAccepted("motorway_link");
filter.setAccepted("trunk");
filter.setAccepted("trunk_link");
filter.setAccepted("primary");
filter.setAccepted("primary_link");
// filter.setAccepted("secondary");
// filter.setAccepted("tertiary");
// filter.setAccepted("road");
// filter.setAccepted("residential");
// filter.setAccepted("living_street");
// filter.setAccepted("pedestrian");
// filter.setAccepted("service");
// filter.setAccepted("track");
// filter.setAccepted("cycleway");
// filter.setAccepted("path");
// filter.setAccepted("footway");
// filter.setAccepted("steps");
// filter.setAccepted("waterway");
// filter.setAccepted("unclassified");
return filter;
}
/** Creates a way filter which passes any way suitable for traveling by bike. */
public static MapWayAttFilter createBicycleWayFilter() {
MapWayAttFilter filter = new MapWayAttFilter("highway");
// filter.setAccepted("motorway");
// filter.setAccepted("motorway_link");
// filter.setAccepted("trunk");
// filter.setAccepted("trunk_link");
filter.setAccepted("primary");
filter.setAccepted("primary_link");
filter.setAccepted("secondary");
filter.setAccepted("tertiary");
filter.setAccepted("road");
filter.setAccepted("residential");
filter.setAccepted("living_street");
filter.setAccepted("pedestrian");
filter.setAccepted("service");
filter.setAccepted("track");
filter.setAccepted("cycleway");
filter.setAccepted("path");
filter.setAccepted("footway");
// filter.setAccepted("steps");
//filter.setAccepted("waterway");
filter.setAccepted("unclassified");
return filter;
}
}