2016-02-19 2 views
1

Я пытался оценить использование OrientDB для наших пространственных данных. Я использую следующую версию:Как использовать хранимую геометрию в пространственных функциях?

OrientDB: orientdb-community-2.2.0-20160217.214325-39

OrientDB-Spatial: JAR built from develop branch of the github Repo OS:

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: Error on parsing command at position #0: Error parsing query: SELECT from state WHERE ST_Contains(shape, ST_GeomFromText('POINT(77.420654296875 23.23929558106523)')) Encountered "" at line 1, column 25. Was expecting one of: Storage URL="plocal:E:/DevTools/OrientDB2.2_new/databases/spatial" Storage URL="plocal:E:/DevTools/OrientDB2.2_new/databases/spatial" --> com.orientechnologies.orient.core.sql.OCommandSQLParsingException: Encountered "" at line 1, column 25. Was expecting one of: Storage 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)')) 

Я просто не могу понять, как заставить эти функции работать на фигурах, которые ar e хранится как свойства в записях.

Как хранятся геометрии, которые будут использоваться в этих пространственных функциях? Есть ли другой синтаксис для этого?

ответ

2

попробовать этот

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

Синтаксис с тем, где функция() пока не поддерживается

+0

Спасибо! Оно работало завораживающе –

Смежные вопросы