如何在Spatial函数中使用存储的几何?

时间:2016-02-19 05:44:07

标签: sql spatial orientdb

我一直在尝试评估OrientDB在空间数据中的使用。 我使用以下版本:

  

OrientDB:orientdb-community-2.2.0-20160217.214325-39

     

OrientDB-Spatial:从github Repo OS的develop分支构建的JAR:

     

Win7 64Bit

现在我要做的是,如果我有多边形存储在数据库中,输入是一个位置(纬度和经度),那么我需要得到包含该位置的多边形。

我创建了一个类来存储像这样的状态多边形:

CREATE class state
CREATE PROPERTY state.name STRING
CREATE PROPERTY state.shape EMBEDDED OPolygon   

我使用以下命令插入状态:

INSERT INTO state SET name = 'Center', shape = ST_GeomFromText('POLYGON((77.16796875 26.068502530912397,75.7177734375 21.076171072527064,81.650390625 19.012137871930328,82.9248046875 25.196864372861896,77.16796875 26.068502530912397))')

我已尝试了几种获取包含给定latlong的状态的方法,但所有这些方法都会出错。

即使是简单的事情:

SELECT from state WHERE ST_Contains(shape, ST_GeomFromText('POINT(77.420654296875 23.23929558106523)'))

给出以下错误:

  

com.orientechnologies.orient.core.sql.OCommandSQLParsingException:   解析位置#0处的命令时出错:解析查询时出错:SELECT   来自州WHERE ST_Contains(形状,   ST_GeomFromText(' POINT(77.420654296875 23.23929558106523)'))   遇到了#34;"在第1行,第25栏。期待其中一个:存储   URL =" plocal:E:/DevTools/OrientDB2.2_new/databases/spatial"存储   URL =" plocal:E:/DevTools/OrientDB2.2_new/databases/spatial" - >   com.orientechnologies.orient.core.sql.OCommandSQLParsingException:   遇到了#34;"在第1行,第25栏。期待其中一个:存储   URL =" plocal:E:/DevTools/OrientDB2.2_new/databases/spatial"

当我直接在空间函数中输入几何时,我可以运行所有空间函数,例如:

Select ST_Contains(ST_geomFromText('POLYGON((77.16796875 26.068502530912397,75.7177734375 21.076171072527064,81.650390625 19.012137871930328,82.9248046875 25.196864372861896,77.16796875 26.068502530912397))'), ST_GeomFromText('POINT(77.420654296875 23.23929558106523)'))

我无法弄清楚如何让这些函数在存储为记录属性的形状上运行。

如何在这些空间函数中使用存储的几何图形?这样做还有其他一些语法吗?

1 个答案:

答案 0 :(得分:2)

试试这个

SELECT from state WHERE ST_Contains(shape, ST_GeomFromText('POINT(77.420654296875 23.23929558106523)')) = true

不支持function()的语法