GeoMesa-Kafka(GeoServer中创建GeoMesa-Kafka数据存储并发布图层)


前言

1.必须已经在集群中安装了GeoMesa-Kafka(CDH6.2.1集群中安装geomesa-kafka 3.1.0),并且在geoserver中安装了GeoMesa-Kafka的插件(geoserver中安装GeoMesa-Kafka插件
2.这里模拟100万车辆的位置。使用GeoMesa-Kafka插入100万辆车辆的位置信息,然后再geoserver上创建存储发布图层,查看图层,测试查询速度。

一、生成100万车辆信息插入到kafka

schema的创建

//在这里可以理解为表名
final String sftName = "cars8";
//这里描述表结构,字段有car(表示车牌),dtg(时间),geom(位置信息)
final String sftSchema = "car:String,dtg:Date,*geom:Point:srid=4326";
SimpleFeatureType sft = SimpleFeatureTypes.createType(sftName, sftSchema);
ds.createSchema(sft);

生成并写入

FeatureWriter<SimpleFeatureType, SimpleFeature> writer = ds.getFeatureWriterAppend(sft.getTypeName(), Transaction.AUTO_COMMIT);
SimpleFeature toWrite = writer.next();
//生成100万车辆
for (int i = 1; i <= 1000000; i++) {
    SimpleFeatureBuilder builder = new SimpleFeatureBuilder(sft);
    //模拟车牌
    String car = "闽A U"+i;
    builder.set("car", car);
    builder.set("dtg", new Date());
    //在纬度范围(5 - 50),经度范围(90 - 146)生成
    double latv = getRandom(500, 5000)/100.0;
    double lngv = getRandom(9000, 14600)/100.0;
    double lat = new BigDecimal(String.valueOf(latv)).doubleValue();
    double lng = new BigDecimal(String.valueOf(lngv)).doubleValue();
    String point = "POINT ("+lng+ " " +lat+")";
    builder.set("geom",point);
    builder.featureUserData(Hints.USE_PROVIDED_FID, Boolean.TRUE);
    SimpleFeature feature = builder.buildFeature(car);
    toWrite.setAttributes(feature.getAttributes());
    ((FeatureIdImpl) toWrite.getIdentifier()).setID(feature.getID());
    toWrite.getUserData().put(Hints.USE_PROVIDED_FID, Boolean.TRUE);
    toWrite.getUserData().putAll(feature.getUserData());
    writer.write();
}
// 关闭流
writer.close();

在kafka中查看是否有数据了

命令行查看

进入kafka的数据存储路径(cdh 6.2.1的话是在/var/local/kafka/data),查看有一个geomesa-ds-kafka-cars8开头的,这就是刚刚生成的。topic的名字为geomesa-ds-kafka-cars8。

在这里插入图片描述

kafka图形化界面查看

这里我们安装的是kafka eagle。
在这里插入图片描述
我这里有4台机器,partition给的也是4。
在这里插入图片描述

二、geoserver中发布

创建存储

点击Kafka(GeoMesa)
在这里插入图片描述
填写参数
在这里插入图片描述

发布图层

点击发布
在这里插入图片描述
发布参数设置,整简单点,设置下图层名,以及计算一下图层数据的边框范围
在这里插入图片描述

在这里插入图片描述
点击保存后就可以去预览图层了
在这里插入图片描述
点击openlayers,咦发现什么都没有。这里就是涉及到了很多的参数设置,这里就不详细展开了,这里面涉及到很多kafka的知识。这里是因为我们geoserver相当于实现消费者,
我们是先生产后创建的消费者。这里我们修改一下创建存储的时候的一个参数kafka.consumer.read-back为 inf,这个意思是读取这个topic中的所有数据。或者也可以重新生产数据。

在这里插入图片描述
修改参数
在这里插入图片描述

查看图层

重新查看,图层,100万点密密麻麻显示着。。
在这里插入图片描述
放大点击查询某个车辆的信息
查询数据是相当快的。
在这里插入图片描述

总结

1.这里知识简单的测试一下,其中还有很多细节可以研究。kafka的知识要事先具备。
2.欢迎互相学习,交流讨论,本人的微信:huangchuanxiaa。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tiger-hcx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值