Как сделать ST_spatial запрос ST_Within Orientdb, выбрав пространственные классы
Я пытаюсь понять, как использовать пространственные запросы LUCENE в Orientdb 2.2.17, используя pyorient.
Я уже заметил, как выяснить, как выбрать все свойства класса точечной вершины, который находится в вершине многоугольника, из другого класса.
Регион Vertex Class имеет два свойства:
- название
координаты (врезанный OPolygon) LUCENE индекс
CREATE CLASS Region EXTENDS V
CREATE PROPERTY Region.name IF NOT EXISTS STRING
CREATE PROPERTY Region.coordinates IF NOT EXISTS EMBEDDED OPolygon
CREATE INDEX Region.coordinates ON Region(coordinates) SPATIAL ENGINE LUCENE
Класс вершин точек, также с двумя свойствами:
- Название станции
координаты (врезаны в точку) LUCENE index
CREATE CLASS Point EXTENDS V
CREATE PROPERTY Point.station_name IF NOT EXISTS STRING
CREATE PROPERTY Point.coordinates IF NOT EXISTS EMBEDDED OPoint
CREATE INDEX Point.coordinates ON Point(coordinates) SPATIAL ENGINE LUCENE
Теперь добавим точки полигона области:
INSERT INTO Region SET name = 'region01', coordinates = St_GeomFromText("POLYGON ((13.178784796476098 59.058001210852922,14.161006039084404 59.058001210852922,14.176596852459138 58.122552408368826,13.178784796476098 58.122552408368826,13.178784796476098 59.058001210852922))")
Добавление вершины точек:
INSERT INTO Point SET station_name = 0, coordinates = st_GeomFromText("POINT (13.459419437221328 58.808548196857167)")
INSERT INTO Point SET station_name = 1, coordinates = st_GeomFromText("POINT (14.332504986206489 58.605867622985606)")
INSERT INTO Point SET station_name = 2, coordinates = st_GeomFromText("POINT (13.724463264591824 57.779554514124655)")
INSERT INTO Point SET station_name = 3, coordinates = st_GeomFromText("POINT (12.617515514985637 58.66823087648455)")
Я попробовал что-то подобное и его варианты, но не получилось, вот пример запроса:
SELECT from Point WHERE ST_WITHIN(coordinates, ST_AsText(SELECT coordinates FROM Region where name='region01')) = true
Я получил следующую ошибку, я пытался разными способами на запрос без успеха.
Ошибка анализа запроса: SELECT из точки WHERE ST_WITHIN(координаты, ST_AsText(SELECT координаты FROM Region, где имя ='region01')) = true ^ Обнаружено "" в строке 1, столбец 25. Ожидалось одно из: DB name="envlay- БД"
Ожидаемый результат - получить точку с именем станции =0, которая содержится в многоугольнике.
Любая помощь будет наиболее ценной.
;)
Jobel