@Override public Layer createLayer(LayerContext ctx, PropertySet configuration) { CoordinateReferenceSystem targetCrs = null; if (ctx != null) { targetCrs = (CoordinateReferenceSystem) ctx.getCoordinateReferenceSystem(); } FeatureCollection<SimpleFeatureType, SimpleFeature> fc; fc = (FeatureCollection<SimpleFeatureType, SimpleFeature>) configuration.getValue(FeatureLayerType.PROPERTY_NAME_FEATURE_COLLECTION); if (fc == null) { try { final URL url = (URL) configuration.getValue(FeatureLayerType.PROPERTY_NAME_FEATURE_COLLECTION_URL); FeatureSource<SimpleFeatureType, SimpleFeature> featureSource = FeatureUtils.getFeatureSource(url); fc = featureSource.getFeatures(); } catch (IOException e) { throw new IllegalArgumentException(e); } } final CoordinateReferenceSystem featureCrs = (CoordinateReferenceSystem) configuration.getValue(FeatureLayerType.PROPERTY_NAME_FEATURE_COLLECTION_CRS); final Geometry clipGeometry = (Geometry) configuration.getValue(FeatureLayerType.PROPERTY_NAME_FEATURE_COLLECTION_CLIP_GEOMETRY); fc = FeatureUtils.clipCollection( fc, featureCrs, clipGeometry, DefaultGeographicCRS.WGS84, null, targetCrs, ProgressMonitor.NULL); return new FeatureLayer(this, fc, configuration); }