【发布时间】:2016-05-31 14:27:05
【问题描述】:
我一直在尝试评估 OrientDB 对我们的空间数据的使用情况。 我正在使用以下版本:
OrientDB:orientdb-community-2.2.0-20160217.214325-39
OrientDB-Spatial:从 github Repo OS 的开发分支构建的 JAR:
Win7 64位
现在我要做的是,如果我在数据库中存储了多边形,并且输入是一个位置(纬度和经度),那么我需要获取包含该位置的多边形。
我创建了一个类来存储这样的状态多边形:
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.orienttechnologies.orient.core.sql.OCommandSQLParsingException: 在位置 #0 解析命令时出错:解析查询时出错:SELECT 从状态 WHERE ST_Contains(shape, ST_GeomFromText('POINT(77.420654296875 23.23929558106523)')) 在第 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: 在第 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)'))
我只是不知道如何让这些函数在作为属性存储在记录上的形状上运行。
存储的几何图形如何用于这些空间功能?是否有其他语法可以这样做?
【问题讨论】: