private void writeLayers() throws IOException, AbortedException {
MapLayer[] layers = mapContext.getLayers();
int nLayers = layers.length;
for (int i = 0; i < nLayers; i++) {
MapLayer layer = layers[i];
SimpleFeatureSource fSource;
fSource = (SimpleFeatureSource) layer.getFeatureSource();
SimpleFeatureType schema = fSource.getSchema();
/*FeatureSource fSource = layer.getFeatureSource();
FeatureType schema = fSource.getSchema();*/
try {
ReferencedEnvelope aoi = mapContext.getAreaOfInterest();
CoordinateReferenceSystem sourceCrs = schema.getGeometryDescriptor().getCoordinateReferenceSystem();
boolean reproject = (sourceCrs != null)
&& !CRS.equalsIgnoreMetadata(aoi.getCoordinateReferenceSystem(), sourceCrs);
if (reproject) {
aoi = aoi.transform(sourceCrs, true);
}
// apply filters.
// 1) bbox filter
BBOX bboxFilter = filterFactory.bbox(schema.getGeometryDescriptor().getLocalName(),
aoi.getMinX() , aoi.getMinY(), aoi.getMaxX(), aoi.getMaxY(), null);
Query q = new Query(schema.getTypeName(), bboxFilter);
String mapId = null;
mapId = schema.getTypeName();
writer.write("<map name=\"" + mapId + "\">\n");
// 2) definition query filter
Query definitionQuery = layer.getQuery();
LOGGER.info("Definition Query: "+definitionQuery.toString());
if (!definitionQuery.equals(Query.ALL)) {
if (q.equals(Query.ALL)) {
q = (Query) definitionQuery;
} else {
q = (Query) DataUtilities.mixQueries(definitionQuery, q, "HTMLImageMapEncoder");
}
}
FeatureTypeStyle[] ftsList=filterFeatureTypeStyles(layer.getStyle(), fSource.getSchema());
// 3) rule filters
Filter ruleFilter=processRuleForQuery(ftsList);
if(ruleFilter!=null) {
// combine with the geometry filter (preexisting)
ruleFilter = filterFactory.and(