Как сделать ST_spatial запрос ST_Within Orientdb, выбрав пространственные классы

Я пытаюсь понять, как использовать пространственные запросы LUCENE в Orientdb 2.2.17, используя pyorient.

Я уже заметил, как выяснить, как выбрать все свойства класса точечной вершины, который находится в вершине многоугольника, из другого класса. Это наглядное представление проблемы, где метки представлены имена станций

Регион Vertex Class имеет два свойства:

  1. название
  2. координаты (врезанный 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

Класс вершин точек, также с двумя свойствами:

  1. Название станции
  2. координаты (врезаны в точку) 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

0 ответов

Другие вопросы по тегам