专栏首页点滴积累geotrellis使用(二十六)实现海量空间数据的搜索处理查看

geotrellis使用(二十六)实现海量空间数据的搜索处理查看

目录

  1. 前言
  2. 前台实现
  3. 后台实现
  4. 总结

一、前言

       看到这个题目有人肯定会说这有什么可写的,最简单的我只要用文件系统一个个查找、打开就可以实现,再高级一点我可以提取出所有数据的元数据,做个元数据管理系统就可以实现查找功能,有必要用geotrellis用分布式吗?这不是杀鸡用牛刀吗?理论上是这样的,但是要看我们考虑问题的尺度,如果你只是一些简单的数据用传统方法当然好,省事、省时、简单、速度快,但是当我们将数据的量放大到一个区域乃至全球的时候恐怕事情就不是那么简单了,比如我们有了全球Landsat数据,如何查看某一地区此数据的情况,传统方法可能要自己先计算出此区域的Landsat的带号,然后再找到此数据并打开之。如果觉得这海不麻烦,那么当用户需要考察Landsat的云量或者NDVI的时候是不是又要用户自己打开数据并使用Arcgis等自行计算?是不是很麻烦,而本文介绍的方法是只需要用户输入有关此点的信息(带号或者点位信息),系统能够自动呈现此区域的数据(或者云量、NDVI等结果),这样是不是逼格立马上去了呢?

二、前台实现

       此功能的前台也不可谓不复杂,但是难不倒我这个全栈工程师(请忽略此话),费了半天劲,基本实现了前台的功能。总体就是一个搜索框加一个按钮,然后发送搜索关键词到后台,后台返回数据列表,前台逐条展示之,单机每条数据的时候在地图中(地图框架采用leaflet)呈现此数据的情况,类似Google、百度。这里面我主要介绍以下知识点。

2.1 在地图中添加、删除标记

       要给用户呈现数据情况,最重要的就是数据的空间范围,简单的说就是将四个(或多个)顶点逐一连成线在地图中显示出来。leaflet可以简单的使用如下语句实现该功能:

geoJsonOverlay = L.geoJson(geoJson);
geoJsonOverlay.addTo(map);

       其中map为L.map('map')对象,geoJson就是想要添加的标记对象,此处用的是GeoJson,GeoJson简单来说就是将空间对象转成相应的json对象,便于交互、传输等。

       再次查询或其他情形下可能又需要将上述的标记层去掉,这时候只需下述语句即可:

map.removeLayer(geoJsonOverlay);

2.2 空间数据的显示

       当用户想要查看某个检索出来的数据情况的时候就需要将此数据显示到地图当中,后台暂且不表,如果用到瓦片技术那么显示在leaflet中的方式就是添加一层,同样移除数据就是删除该层。代码如下:

//add
WOLayer = new L.tileLayer(baseurl + '/{z}/{x}/{y}', {
    format: 'image/png',
    transparent: true,
    attribution: 'SJZX'
});

WOLayer.addTo(map);
map.lc.addOverlay(WOLayer, "Landsat");

//delete
map.lc.removeLayer(WOLayer);
map.removeLayer(WOLayer);

三、后台实现

       后台牵涉到的东西较多,主要是数据检索、数据范围生成GeoJson、数据存放、数据处理、数据发送等。

3.1 数据检索

       这块与传统方式相同,但是本文采用全文检索的方式,该内容涉及到的问题也比较多,会在后续另立新篇,详细介绍本系统全文检索以及空间检索的实现,总体上根据前台传入的关键词返回与之相关联的数据,相当于地理信息系统版的Google。

3.2 数据范围生成GeoJson

       简单说来就是从元数据中读出数据的空间范围,将此范围生成GeoJson对象发送到前台。具体元数据信息可以通过上面的数据检索获取,此处假设已经取到了空间范围的WKT标记对象,剩下的工作就是将WKT转成GeoJson,代码如下:

import geotrellis.vector.io.json.Implicits._
val geom = WKT.read(wkt)
geom.toGeoJson

       当然此处还需要考虑geometry对象的投影变换等问题,要考虑前台、后台以及数据等的投影方式,转换成自己需要的投影方式。

3.3 数据存放

       这块是本系统的核心,面对如此大的数据量只有合理的数据存放方式才能实现快速响应。目前采用的方式是前面文章讲述过的将数据导入到Accumulo,这种方式的好处是请求数据快,但同时造成的一个问题是数据量大(相当于数据保存了2-3份,如果再考虑HDFS的备份特性,相当于6-9份),以上述Landsat为例,采用此种方式必须要将全球的Landsat数据都导入到Accumulo中,这个量是非常大的,如果有多套数据需要采用此种方式检索,那么这个数据量确实非常大,但是分布式框架本身就是为了解决大数据量的问题。目前也正在寻找折中的解决方案。

3.4 数据处理

       比如Landsat数据我们可以实时计算用户查找区域的云量以及NDVI等并将之呈现给用户,这样用户能够对数据的质量有一个更加深刻的认识,而不需要用户再进行下载数据分析处理等。

3.5 数据发送

       数据发送的目的是将上述处理好的数据或原始数据发送到前台,前台进行展示。此处需要注意的是要根据请求的范围对请求结果进行掩盖,因为用户感兴趣(查找)的是某一个或某几个数据,如果不加掩盖,前台获取到的仍然是全球的数据,这样就没有意义。单个瓦片的请求在前面的文章中已经讲过,这里重点讲一下掩盖操作。前台的区别就是在请求数据的时候要多发送一个请求范围,比如为用户检索数据时后台发送的数据空间范围GeoJson对象,后台首先根据请求的x、y、z取到对应的瓦片,然后判断此瓦片与GeoJson对象的空间关系,取出在范围内的数据,其他数据赋为无值,这样就可以得到掩盖后的瓦片,看似复杂其实Geotrellis已经为我们实现了该过程,只需要简单几行代码即可实现:

import geotrellis.vector.io.json.Implicits._
val extent = attributeStore.read[TileLayerMetadata[SpatialKey]](id, Fields.metadata).mapTransform(key)
val geom = geoJson.parseGeoJson[Geometry]
tile.mask(extent, geom)

       其中attributeStore是Accumulo操作的实例,id为表示请求层的对象,key为表示请求瓦片的x、y,geoJson就是传入的空间范围对象,根据上述代码就能实现范围掩盖操作。

四、总结

       本文简单为大家介绍了如何实现海量空间数据的搜索以及详情查看,有些部分会在后续详细介绍,本文仅为框架介绍。

Geotrellis系列文章链接地址http://www.cnblogs.com/shoufengwei/p/5619419.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • geotrellis使用(二十三)动态加载时间序列数据

    目录 前言 实现方法 总结 一、前言        今天要介绍的绝对是华丽的干货。比如我们从互联网上下载到了一系列(每天或者月平均等)的MODIS数据,我们怎么...

    魏守峰
  • JS前端三维地球渲染——中国各城市航空路线展示

    前言 我还从来没有写过有关纯JS的文章(上次的矢量瓦片展示除外,相对较简单。),自己也学习过JS、CSS等前端知识,了解JQuery、React等框架,但是自己...

    魏守峰
  • 编程的思想性——议编程与“武功”的一致性

    一、缘起        最近做了一件事情,将写好的scala程序中稍显混乱和不雅的代码进行了重构(系列博客见http://www.cnblogs.com/sho...

    魏守峰
  • DT时代下[个推3.0]遵循的四个法则

    DT(Data Technology),是以服务大众、激发生产力为主的技术。从IT时代走向DT时代,我们要思考如何用互联网技术、理念、思想去与传统行业进行交融和...

    个推君
  • 蓝灯数据董事长周强:“大数据”结合“小数据”才能有效破案

    12月1日下午,由上海大数据联盟、数据猿主办的第20期魔方大数据在上海宝华万豪酒店成功举办。本期魔方大数据以“政务大数据”为主题,邀请了技术方和产业方大咖共聚一...

    数据猿
  • 从诺兰电影《星际穿越》读懂大数据的未知世界

    ? 近期热映的《星际穿越》中,一个传统的故事被诺兰放置于新的超维空间,立刻产生了众多遐想,激起了人们对宇宙神秘特性的热议。而现实生活中,面对新的大数据时空,那...

    小莹莹
  • 大数据时代 三个“关键词”

    “十三五”时期,实施国家大数据战略,就是把大数据作为基础性战略资源,全面实施促进大数据发展行动,加快推动数据资源共享开放和开发应用,助力产业转型升级和社会治理创...

    钱塘数据
  • 一张图告诉你如何8步炼成数据科学家

    OK,这条道路确实不是无迹可寻的。虽然并不简单,但是,通过科学的规划和足够的时间投入,数据科学家可以通过很少的花费炼成。

    华章科技
  • 2017年大数据及分析市场的15项趋势预测

    John Schroeder, MapR科技(MapR Technologies)的执行主席和创始人预测了他对2017年数据及分析方面的六大趋势

    华章科技
  • 利用大数据精准营销,给消费者一个选You的理由!

    【数据猿导读】大数据是社会科学重要的进展,但企业要精准抓住未来,经理人要拥有更好的决断力,还是要基于对不同人、不同性的理解,而不仅是科技工具的使用而已。

    数据猿

扫码关注云+社区

领取腾讯云代金券