как проверить, что полигон содержит Point Sequelize и postgres - PullRequest
0 голосов
/ 19 ноября 2018

Я работаю с nodejs, orm sequelize, база данных postgresql. Я хочу получить Полигон с другого стола и где на транспортном столе вот код:

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"

1 Ответ

0 голосов
/ 07 декабря 2018

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

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

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

...