postgresql 使用Sequelize和postgis查找面中的点

xjreopfe  于 2023-10-18  发布在  PostgreSQL
关注(0)|答案(2)|浏览(167)

我使用sequelize和postgis,我有一个表设备,列坐标类型为GEOMETRY('POINT')。
当插入一个新设备时,在我的列coord值中,我使用这个:
coord = { type:“点”,坐标:[,lat],crs:{ type:'name',properties:{ name:'EPSG:3857'}
现在还可以
接下来,我需要在一个多边形限定的区域内查找所有设备
伪代码示例:
设备坐标为(lng 1,lat 1)
我的poligon是[lng 2 lat 2,lng 3 lat 3,lng 4 lat 4,.]
如何使用sequelize进行查询?
Sequelize 4.41.0节点v9.4.0

x6492ojm

x6492ojm1#

可以使用sequelize.fn()调用postgis函数st_within(),如果第一个几何参数完全位于第二个几何参数内,则该函数基本上返回true。这里有一个例子

Device.findAll({
  where: sequelize.where(
    sequelize.fn('ST_Within', sequelize.col('coord'), sequelize.fn('ST_GeomFromText', 'POLYGON((lng2 lat2, lng3 lat3, lng4 lat4, ...))')),
    true
  )
});
vdgimpew

vdgimpew2#

您需要使用sequelize.fn()来调用postgis st_within()函数
https://postgis.net/docs/ST_Within.html
https://sequelize.readthedocs.io/en/v3/api/sequelize/#fnfn-args-sequelizefn

相关问题