OrientDB 中带有子选择的根空间查询

2024-04-03

我正在尝试组合一个查询来查找图中节点 2 公里以内的节点。假设我有一个数据集,标记了纳斯卡线中的一些地理符号:

Name,Latitude,Longitude
Hummingbird,-14.692131,-75.148892
Monkey,-14.706940,-75.138532
Condor,-14.697444,-75.126208
Spider,-14.694145,-75.122381
Spiral,-14.688277,-75.122746
Hands,-14.694459,-75.113881
Tree,-14.693898,-75.114520
Astronaut,-14.745222,-75.079755
Dog,-14.706401,-75.130788
Wing,-14.680309,-75.100385
Parrot,-14.689463,-75.107498

我有一个使用以下命令创建的空间索引:

CREATE INDEX GeoGlyph.index.Location 
ON GeoGlyph(Latitude,Longitude) SPATIAL ENGINE LUCENE

现在,我想找到“Hands”字形​​ 2 公里范围内的节点,我可以通过手动输入纬度/经度坐标来输入此查询:

SELECT Name, Latitude, Longitude, $distance AS Distance 
FROM GeoGlyph 
WHERE [Latitude,Longitude,$spatial] 
NEAR [-14.694459,-75.113884,{"maxDistance":2}] 
ORDER BY Distance

我得到结果:

+----+------+----------+----------+--------------------+
|#   |Name  |Latitude  |Longitude |Distance            |
+----+------+----------+----------+--------------------+
|0   |Hands |-14.694459|-75.113884|5.230883384236603E-6|   
|1   |Tree  |-14.693897|-75.11446 |0.08836486627516459 |
|2   |Spider|-14.694363|-75.12358 |1.0442063409276094  |
|3   |Spiral|-14.688309|-75.12276 |1.1754176535538237  |
|4   |Condor|-14.698346|-75.128334|1.6149944044266815  |
+----+------+----------+----------+--------------------+

到目前为止,一切都很好。

由于输入坐标有点麻烦,所以我宁愿使用名称字段“Hands”查找 2 公里内的字形。

这就是我目前陷入困境的地方。我想我应该能够使用让块 http://orientdb.com/docs/2.2.x/SQL-Query.html#let-block得到我想要的......但到目前为止我所尝试的方法不起作用:

SELECT *,$distance AS Distance 
FROM GeoGlyph 
LET $temp = (SELECT * FROM GeoGlyph WHERE Name = "Hands")
WHERE [Latitude,Longitude,$spatial] 
NEAR [$temp.Latitude, $temp.Longitude,{"maxDistance":2}] 
ORDER BY Distance

有什么建议么?


我想出了办法......如果可以安全地假设该领域GeoGlyph.Name是独一无二的,我可以使用first()在 NEAR 子句中:

SELECT *,$distance AS Distance 
FROM GeoGlyph 
LET $temp = (SELECT * FROM GeoGlyph WHERE Name = "Hands")
WHERE [Latitude,Longitude,$spatial] 
NEAR [first($temp).Latitude, first($temp).Longitude,{"maxDistance":2}] 
ORDER BY Distance

这似乎成功了。

orientdb {db=nazca.orientdb}> SELECT *,$distance AS Distance FROM GeoGlyph LET $temp = (SELECT * FROM GeoGlyph WHERE Name = "Hands") WHERE [Latitude,Longitude,$spatial] NEAR [first($temp).Latitude, first($temp).Longitude,{"maxDistance":2}] ORDER BY Distance

+----+-----+--------+----------+----------+------+-------------------+
|#   |@RID |@CLASS  |Latitude  |Longitude |Name  |Distance           |
+----+-----+--------+----------+----------+------+-------------------+
|0   |#25:5|GeoGlyph|-14.694459|-75.113884|Hands |0.0                |
|1   |#25:6|GeoGlyph|-14.693897|-75.11446 |Tree  |0.08836394983673491|
|2   |#25:3|GeoGlyph|-14.694363|-75.12358 |Spider|1.0442092937404572 |
|3   |#25:4|GeoGlyph|-14.688309|-75.12276 |Spiral|1.1754175925032648 |
|4   |#25:2|GeoGlyph|-14.698346|-75.128334|Condor|1.614998440581846  |
+----+-----+--------+----------+----------+------+-------------------+

如果我不能依赖的唯一性,我仍然不确定我该怎么做Name尽管场。例如,如果我想计算彼此相距 2 公里以内的所有成对地理标志...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OrientDB 中带有子选择的根空间查询 的相关文章

随机推荐

  • 监控封闭图 Akka Stream

    如果我创建了一个RunningGraph在 Akka Stream 中 我怎么知道 从外部 当所有节点因完成而被取消时 当所有节点因错误而停止时 我认为没有办法对任意图执行此操作 但是如果您可以控制图 则只需将监视接收器附加到每个可能失败或
  • QSlider值改变信号

    我使用 QSlider v4 6 进行输入并向用户提供反馈 对于反馈 我将调用 setValue 方法 我试图找到一个仅当用户修改该值时才会触发的信号 当用户更改值以及我调用 setValue 时 将触发 valueChanged 信号 s
  • 什么是 android:sharedUserLabel 以及它在 android:sharedUserID 之上添加了哪些附加值?

    文档 http developer android com guide topics manifest manifest element html uid http developer android com guide topics ma
  • 替换 只替换第一个

    我使用以下代码允许 JQuery UI 工具提示函数中的换行符 function document tooltip linebreak tooltip content function callback callback this prop
  • 如何以低廉的成本确定列是否只包含 NULL 记录?

    我有一个大表 有 500 列和 100M 行 基于一个小样本 我相信只有大约 50 列包含任何值 其他 450 列仅包含 NULL 值 我想列出不包含数据的列 在我当前的硬件上 查询每一列大约需要 24 小时 select count 1
  • 配置“:app:api”包含在依赖项解析中后无法更改它的依赖项

    无法更改配置的依赖关系 应用程序 api 当它被包含在依赖解析中之后 我也遇到了同样的错误 谢谢 Dominik https stackoverflow com users 1653268 dominik kunicki用于链接到重复项is
  • 正则表达式匹配数字或特定字符串(即“全部”)

    这听起来很简单 但我的正则表达式知识有限 我需要一个表达式来匹配十进制数或字符串 all 就像在范围验证器中允许单词 all 代表最大范围一样 我认为这样的事情可能会起作用 d d any 但以上不适用于 任何 这是一个不使用正则表达式的解
  • .Net Framework 版本 C# 7.2 可用

    我尝试安装 net框架4 7 2 项目属性中目标框架仍然为空 我尝试运行的程序使用只读结构体 这是一部分C 7 2 你能指导我 Net Framework 版本有C 7 2 语言功能独立于 Net 版本 框架 核心 标准 您将需要使用能够理
  • OSX 状态菜单在 Swift 中不起作用

    我尝试使用 swift 将一个简单的状态菜单添加到状态栏 但它不会显示 与 Objective c 一起工作 AppDelegate h interface AppDelegate NSObject
  • 从苹果下载 iPhone 示例代码 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 iphone sdk 文档包含示例代码的链接 但您必须从网络上单独下载它们 有没有可以从苹果一次性下载的捆绑包 例如 阅读第一个 iPho
  • 当我更改配置设置时,Visual Studio 生成“Settings1.Designer.vb”

    有时 并非总是 当我在 我的项目 页面中编辑设置时 当我从那里添加一个设置或编辑一个值时 会收到错误消息 Settings is ambiguous between declaration in Modules
  • 跳进C语言的一个块

    如果我像这个例子一样跳进一个块 跳过 声明 include
  • 找到 2 个 java.sql.Timestamps 之间的小时或分钟差异?

    我存储一个java sql Timestamp in a PostgreSQL数据库为时间戳数据类型 我想找出数据库中存储的数据类型与当前数据类型之间的差异 以分钟或小时为单位 时间戳 这样做的最佳方法是什么 是否有内置方法 或者我必须将其
  • 文本背景颜色溢出

    我将背景颜色应用于国家 地区列表中的链接 总体来说效果很好 然而 对于名称较长的国家来说 它的效果不太好 我试图让黄色溢出一切并清楚地显示国家的全名 HTML div class flagList div class flagColumn
  • Jade 模板布局无法与 Node.js 结合使用

    我正在尝试在 Node js 中创建一个使用 Jade 模板和布局的简单服务器 由于某种原因 它只会加载模板而不加载布局 这是我所得到的 main js var express require express var app express
  • 如何正确使用Feature2D(如SimpleBlobDetector)? (Python + OpenCV)

    我正在尝试使用一些简单的代码运行斑点检测 img cv2 imread args image height width channels img shape params cv2 SimpleBlobDetector Params para
  • 如何绘制样本的 PMF?

    是否有任何函数或库可以帮助我绘制样本的概率质量函数 就像绘制样本的概率密度函数一样 例如 使用 pandas 绘制 PDF 就像调用以下命令一样简单 sample plot kind density 如果没有简单的方法 我如何计算 PMF
  • 有人知道 10 位原始 RGB 吗?关于全视

    我正在使用 Omnivision ov5620 http electronics123 net amazon datasheet OV5620 CLCC DS 20 1 3 pdf http electronics123 net amazo
  • NLog 在发布模式下不工作

    我正在使用 NLog 记录我的 asp net mvc C 应用程序中的异常 NLog 在发布模式下不工作 在调试模式下运行时也是如此 可能是什么问题 有什么解决办法吗 我和你遇到了同样的问题 ASP NET MVC 3 NET 4 IIS
  • OrientDB 中带有子选择的根空间查询

    我正在尝试组合一个查询来查找图中节点 2 公里以内的节点 假设我有一个数据集 标记了纳斯卡线中的一些地理符号 Name Latitude Longitude Hummingbird 14 692131 75 148892 Monkey 14