как проверить, что полигон содержит Point Sequelize и postgres

1

Я работаю с nodejs, orm is sequelize, база данных - postgresql. Я хочу получить Polygon из другого стола и где к таблице "Транспортные средства" приведен код:

const geoRegion = await models.GeoRegion.find({
      where: {
        id: id,
      },
    });

    const scooters = await models.Vehicle.findAll({
      where: {
        $and: models.sequelize.where(models.sequelize.fn('ST_Intersects', geoRegion.polygon, models.sequelize.fn('ST_SetSRID', models.sequelize.fn('ST_MakePoint', models.sequelize.col('lastReportedLocation')), '4326')), true),
      },
      plain: true,
    });

geoRegion имеет полевой многоугольник, я хочу проверить Транспортные средства внутри многоугольника, вот ошибка:

SELECT * FROM \"Vehicles\" AS \"Vehicle\" WHERE ST_Intersects(\"lastReportedLocation\", \"type\" = 'Polygon' AND \"coordinates\" IN (ARRAY[ARRAY[105.293,21.145],...)
 "name": "SequelizeDatabaseError",
"error": "column \"type\" does not exist"
Теги:
sequelize.js
postgis

1 ответ

1

ST_Intersects ожидает в качестве аргументов две геометрии/географии. Итак, я могу догадаться, ваш запрос должен выглядеть так:

select v.* 
from Vehicles v
join geoRegion r
on st_intersects(v.lastReportedLocation, r.polygon)

предполагая, что оба поля "lastReportedLocation" из таблицы "Транспортные средства" и "полигон" таблицы geoRegion содержат допустимые геометрии, которые должны предоставлять вам транспортные средства в интересующей области.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню