GeoMesa+Hbase处理海量时空数据学习笔记

GeoMesa在处理大规模时空数据方面比较有名,华为的CloudTable底层是用的Hbase+GeoMesa,阿里的Hbase Ganos也是基于GeoMesa和GeoTools,两者官网有详细使用教程。

1、概念备忘录

OGC:开放地理空间信息联盟(Open Geospatial Consortium),一个非盈利的国际标准组织,它制定了数据模型和相关操作的一系列标准,GIS厂商按照这个标准进行开发可保证空间数据的互操作。

GeoTools:一个遵循OGC标准,用于处理地理空间数据的工具包,实现了OGC标准的数据模型和接口,很有名。

Geometry:OGC定义的用来表示一个空间对象,e.g.空间的点、空间的线、空间的面。注意:Geometry只包含空间对象的位置信息,并不包含其附带的属性信息。时间信息是作为属性存储的。

CQL&ECQL:ECQL是CQL的扩展版,比CQL更强大。ECQL更多的是定义filter,类似于SQL语言的where子句,通过文本描述的方式来筛选出目标对象。

WKT:Well-known text,是OGC定义的一种用文本来描述空间对象的格,比如点就可以写成POINT(0,0)。

WKB:Well-known Binary,是OGC定义的一种通过序列化字节来描述几何对象的格式。与WKT相比,其优点在于数据较小,适宜传输。

2、注意事项

(1)基础索引有四个:ID、属性、Z2、Z3。默认情况下是全部建立,这样对所有的查询场景来说都能提供较高的性能,但会占用较多的存储空间。想禁用某个基础索引的方法为:

//创建索引
SimpleFeatureType simpleFeatureType = SimpleFeatureTypes.createType(schemaName, schemaDescription);
simpleFeatureType.getUserData().put("geomesa.disable.z2.index",true);

另外,可以对基础索引进行个性化定义。index_name取值为id,attr,z2,z3,xz2,xz3,xyz之一,

//sft.getUserData().put("geomesa.indices.enabled", "{index_name}:{col1}:{col2}:...,{index_name}:{col}");
simpleFeatureType.getUserData().put("geomesa.indices.enabled", "z3:start:dtg,z3:end:dtg,attr:name:dtg");

(2)写入时空对象

GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();

//点要素
geometryFactory.createPoint(new Coordinate(lon, lat))

//WKT
WKTReader reader = new WKTReader(geometryFactory);
Point point = (Point) reader.read("POINT (log lat)");

//插入单条记录
SimpleFeatureWriter writer =(SimpleFeatureWriter)ds.getFeatureWriterAppend(sft.getTypeName(), Transaction.AUTO_COMMIT);
SimpleFeature toWrite=writer.next();
toWrite.setAttributes(feature.getAttributes());
toWrite.getUserData().putAll(feature.getUserData());
writer.write();
writer.close();

//批量插入
List<SimpleFeature> features=...
SimpleFeatureStore featureStore = (SimpleFeatureStore) ds.getFeatureSource(sft.getTypeName());
List<FeatureId> featureIds = featureStore.addFeatures(new ListFeatureCollection(sft,features));

(3)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值