Я работаю с 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"
ST_Intersects ожидает в качестве аргументов две геометрии/географии. Итак, я могу догадаться, ваш запрос должен выглядеть так:
select v.*
from Vehicles v
join geoRegion r
on st_intersects(v.lastReportedLocation, r.polygon)
предполагая, что оба поля "lastReportedLocation" из таблицы "Транспортные средства" и "полигон" таблицы geoRegion содержат допустимые геометрии, которые должны предоставлять вам транспортные средства в интересующей области.