18.11. Layer ViewsΒΆ
A common use case for the Kafka data store is to expose a single layer with different default filters and relational transforms to different users. GeoMesa provides a way to do this through configuring views on top of the original layer.
To enabled layer views, use the kafka.layer.views
data store parameter when creating a store:
import org.geotools.data.DataStore;
import org.geotools.data.DataStoreFinder;
String views =
"{" +
" type1 = [" +
" { type-name = \"transformView\", transform = [ \"dtg\", \"geom\", \"name\" ] }," +
" { type-name = \"filterView\", filter = \"bbox(geom,0,0,10,10)\" }" +
" ]," +
" type2 = [" +
" { type-name = \"filterTransformView\", filter = \"bbox(geom,0,0,10,10)\", transform = [ \"dtg\", \"geom\" ] }" +
" ]" +
"}";
Map<String, Serializable> parameters = new HashMap<>();
parameters.put("kafka.zookeepers", "localhost:2181");
parameters.put("kafka.brokers", "localhost:9092");
parameters.put("kafka.layer.views", views);
DataStore dataStore = DataStoreFinder.getDataStore(parameters);
The views parameter accepts a TypeSafe config string containing the view definitions. In the above example, assuming
there are existing schemas named type1
and type2
, three additional schemas will be exposed with the names
transformView
, filterView
and filterTransformView
. The transform views have a subset of the attributes
from the original schema, while the filter views have a subset of the features in the original schema. Each view
must define either a filter
, a transform
or both.