在IBM bluemix中使用空间数据

时间:2015-02-19 16:59:31

标签: java bigdata spatial-query ibm-cloud

我在表格中有一组数据,其中包含纬度和经度。我需要查询这些数据,这些数据在半径5公里范围内具有Lat,Long。

我尝试过将IBM bluemix与BigSQL和DashDB一起使用。请提出一个可能的解决方案。

注意:我不能使用像MySQL / PostGre这样的任何RDBMS数据库。限制使用BigData。

3 个答案:

答案 0 :(得分:2)

您应该使用Cloudant DBaaS服务。它建立在CouchDB之上,尤其擅长处理地理空间数据。有关详细信息,请访问以下网站:https://cloudant.com/product/cloudant-features/geospatial/

答案 1 :(得分:0)

dashDB是Bluemix中用于分析空间数据的最佳解决方案。它也有预定义的空间函数。

你说你尝试过dashDB。你有没有遇到任何问题?请让我知道,我可以帮助你。

谢谢,

答案 2 :(得分:0)

你确实可以使用dashDB。

它提供了所有符合OGC标准的SQL扩展。对于您的情况,您可以使用ST_Buffer函数来定义给定点周围的圆几何(使用ST_GeomFromText从给定的经度和纬度构造几何点)。然后你会使用ST_Within来查找几何体(我假设你现在只有点数)的所有行都在圆圈内。

类似下面的谓词应该对你有用:

WHERE DB2GSE.ST_WITHIN( your_points_column, DB2GSE.ST_Buffer( 
    DB2GSE.ST_GeomFromText( 'POINT (<long float value>, <lat float value>)', 1005), 
    5000, 'METRE') = 1

这是一个应该立即使用dashDB示例数据的示例:

with target as (select db2gse.st_buffer(db2gse.st_geomfromtext('POINT
    (-80.6233232399 40.0725289742)',1005),10000,'METRE') as buffer
from SYSIBM.SYSDUMMY1) SELECT count(*) FROM SAMPLES.GEO_CUSTOMER C,
    TARGET T WHERE DB2GSE.ST_WITHIN(C.SHAPE,T.BUFFER) = 1

相关文档链接:

回应上面关于Cloudant的评论,这里还有一个好处:您可以在Cloudant.com门户中轻松地为任何给定的Cloudant数据库设置dashDB仓库。模式会自动发现,初始加载和正在进行的ETL也会自动完成。