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.