我尝试像这样在postgis中进行查询
from(r in Region,
select: count(r.ogc_fid),
where:
st_intersects(
r.region_geometry,
fragment(
"ST_Buffer(ST_GeomFromText('POINT(? ?)', '4326'), ?, 'quad_segs=2')",
^long,
^lat,
0.05
)
)
)
|> Repo.one() > 0
但这不起作用,因为引号内的参数对于 pg 来说是不可见的..
我尝试一下
point = %Geo.Point{coordinates: {long, lat}, srid: 4326}
from(r in Region,
select: count(r.ogc_fid),
where: st_intersects(r.region_geometry, st_buffer(^point, 0.05))
)
|> Repo.one() > 0
但是抛出错误:
Postgrex expected a binary, got %Geo.Point{coordinates: {34.427798809874055, 53.26427478941554}, srid: 4326, properties: %{}}.
如何在postgis中的ecto查询中使用
st_buffer
函数?
我不太明白你在做什么,但从错误消息来看,我猜你需要使用不同的点值。
再次,不熟悉您尝试调用的接口,但考虑到错误消息,我想如果您尝试这样做,您可能会发现一些东西:
point = "34.427798809874055, 53.26427478941554"
from(r in Region,
select: count(r.ogc_fid),
where: st_intersects(r.region_geometry, st_buffer(^point, 0.05))
)
|> Repo.one() > 0
它可能不会(也可能不会)解决你的问题,但它可能会给你一些关于问题所在的线索。