17.11. 层视图

Kafka数据存储的一个常见用例是向不同用户公开具有不同默认过滤器和关系转换的单个层。GeoMesa提供了一种方法,通过在原始层上配置视图来实现这一点。

要启用层视图,请使用 kafka.layer.views 创建存储时的数据存储参数:

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);

Views参数接受包含视图定义的TypeSafe配置字符串。在上面的示例中,假设存在名为 type1type2 ,将使用名称公开另外三个架构 transformViewfilterViewfilterTransformView 。转换视图具有原始模式中的属性子集,而过滤器视图具有原始模式中的特征子集。每个视图必须定义一个 filter 一种 transform 或者两者都有。