ib交换机 postgresql,postgresql postgis如果点在圆内

I'm using postgresql as db , i have the table named car_wash with field "point geometry"(use postgis) so in application I'm getting lon lat from user using GOOGLE API, next step I need to create circle around user and check if car_wash inside this circle I use

select *

from car_wash cw

where

ST_DWithin (

cw.lon_lat,

ST_GeomFromText('POINT(54.21 22.54)')

)=false

AND

not cw.was_deleted

Is it corect way? IF you need my srid is 0 according to this query

Select Find_SRID('public', 'car_wash', 'lon_lat')

解决方案

SRID of the ST_GeomFromText('POINT(54.21 22.54)') must be same as the SRID of cw.lon_lat. Suppose SRID of cw.lon_lat is 4326 you can set the other attribute srib by using ST_GeomFromText('POINT(54.21 22.54)',4326).

Secondly, ST_DWithin needs buffer distance as 3rd parameter. So suppose if you want to check if point is within 100 meter buffer it should be like

ST_DWithin (

cw.lon_lat,

ST_GeomFromText('POINT(54.21 22.54)', 3857), 100

)

Buffer value is according to the srid unit. in case of 3857 its meter. You need to convert cw.lon_lat and POINT(54.21 22.54) to the same SRID in order to make this work, using st_setSRID e.g.

你可能感兴趣的:(ib交换机,postgresql)