在HBase中存储瓦片地图是否科学生产中,瓦片地图都是咋存储的呢

有几个点应该可以改进:
要测试性能,最好不用用HBase shell,使用程序来统计时间,因为HBase shell会默认将二进制转化成string,再打印到屏幕,这都会消耗时间。rowkey中的x,y坐标完全分开,是否能精确查询?可以考虑使用Geohash想问 一张图片有多大?正常的一条HBase记录的get的时延大约也就是10ms的级别。实验中的HBase的配置也是比较低,可以试试简单建一张表,put一条数据,用HBase shell get出来的时延对比一下,就知道是查询一张瓦片慢还是本身的HBase查询慢了。表格存储服务(CloudTable Service)_数据存储_数据托管_云数据查询-华为云 免费公测阶段,提供HBase、时序数据库OpenTSDB、时空大数据套件GeoMesa能力,欢迎试用。

■网友
最近在做公司的底层数据改造工作,做到地图服务这一块。目前也是在开发阶段,还没有进入生产环境中,仅作参考。

查询一张图片0.9秒是无法忍受的。自己的解决方案是影像数据存储在SQLite数据库中,利用数据库提高查询速度。
这样做的好处是:SQLite便于迁移,不同db文件可以存放不同来源或时相的数据。数据库中维持两张表,metadata表与tiles表,metadata表存放影像名称、来源、成像时间、投影方式、包含区域等信息,tiles四个字段,存放level, col, row, data。对level, col, row建索引。

通过切分、组合(或提前设计区域)的方式组织数据库文件,保证db文件的大小合理(具体大小探索中),满足地图服务的查询速度和底层数据迁移时的快速性。最终要实现谷歌地球可以访问不同时相的地图的效果。

定时维护一个capacities文件(xml)格式,维持一个到db文件本地路径的映射关系,xml中存储所有提供地图数据的范围、名称、时间等。返回给前端供前端选择加载的图层。后端根据前端的url中的layer字段寻找明确的db文件,并查找到确定的瓦片返回。

【在HBase中存储瓦片地图是否科学生产中,瓦片地图都是咋存储的呢】 欢迎大家帮忙想想这个解决方案是否可行,目前正在实验中。

有一个问题:自己设计的rowkey(类似题主的方式)和对level、col、row建索引的方式哪个更好?个人主观觉得后者更好,后者减少了计算步骤,利用了数据库索引。待实验检验。

觉得不错随手点个赞呗,给点动力


■网友
谢邀!看起来不错,不懂帮顶

■网友
同意亚砜的说法。
好久不做gis方面的东西了,仅凭印象大概说一下:
我们在实际生产环境中,有三种格式使用,其一就是亚砜所说的sqlite的形式,另一种是普通的文件系统格式,前端服务器直接将url映射到对应的文件上,在有足够的静态文件缓存的情况下,这种最快;再一种是自定义的一种紧凑格式,本质上和数据库的索引有点类似。


■网友
28000条记录搜索时间高达0.9秒,感觉太夸张了,你用rowkey作为文件名存磁盘都比这个快多了吧
■网友
如果并发度是1,请求响应时间900毫秒,那么这种在生产环境基本是不可用的。单张图片有多大?
■网友
您好,我想请教您一个问题。我现在也将瓦片数据存储在了HBase中,现在想把它取出来进行可视化。请问您有没有好的可视化方法呢?
(老师项目中的一部分,要求不能取到本地后再进行可视化。)谢谢!


    推荐阅读