javascript - 如何检查多边形是否包含 Point Sequelize 和 postgres
问题描述
我正在使用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"
解决方案
ST_Intersects需要两个几何/地理作为参数。所以,我可能猜到,您的查询应该如下所示:
select v.*
from Vehicles v
join geoRegion r
on st_intersects(v.lastReportedLocation, r.polygon)
假设 Vehicles 表中的“lastReportedLocation”字段和 geoRegion 表的“polygon”两个字段都包含有效的几何图形,这应该会为您提供感兴趣区域内的车辆。
推荐阅读
- python - 涉及 `format()` 点符号时的 Python 格式化
- reactjs - 边框颜色在 Tailwind CSS 中不起作用
- javascript - 使用 axios 使用客户端凭据获取 Keycloak access_token 在 NextJS 应用程序中引发 400 错误
- html - 如何从IE页面复制文本并将其粘贴到excel中
- project-reactor - 为助焊剂使用者注册不同的线程
- excel - Excel Sumifs 多个标准
- ios - 从模态呈现的视图控制器导航到根视图控制器
- sql - 选择子查询 - 基于值
- postgresql - VSCode 我忘记了我的 postgresql 扩展用户名和密码
- java - 我的 minecraft 的 fabric mod 给出错误和警告