今天,要实现使用PostgreSQL的PostGIS功能根据经纬度计算距离,并计算某个经纬度附近x米以内的地点,请访问发现了一些错误,实现SQL语句和更正的语句如下
计算纬度和经度之间的距离:
selectst _ distance (ST _ geomfromewkt (srid=4326; point(LNG1laT1) )、ST _ sets rid (ST _ point ) LNG 23360:双精度处理、lat 2:双精度处理)、4326
selectst _ d within (ST _ sets rid (ST _ point (LNG 13360:双精度处理,lat 13360:双精度处理(,4326 ) ) point(LNG2lat2)、x )示例:
(116.45815259398,39.938559769396 )北京三里屯Chao ) 117.26089170529,40.644852995474 )古北水镇(117.266608,40.647293 )北京好梦居民
于是我打开了ST_Distance函数
createfunctionst _ distance (地理, 地理位置) returnsdoubleprecisionimmutablestrictparallelsafelanguagesqlas $ (selection ) parallelsafelanguagesqlas $ (sele ction ) phy,Geography ) is 'args: gg1,G2-forgeometrytypereturnsthe2dcartesiandistancebetweentwogeometriesinprojectedunits () . forgeographytypedefaultstoreturnminimumgeodesicdistancebetweentwogeographiesinmeters.'; alterfunctionst _ distance (geography,geography ) owner to postgres; 评论写得很清楚。距离算出来的是相差度数,附近的点直接将X米当作度数处理
计算纬度和经度之间的距离:
selectst _ distance (ST _ geomfromewkt (srid=4326; point(LNG1lat1() ) 3360:geography,ST_setsrid ) ST_point ) lat2:double precision,lat 2: double
selectst _ d within (ST _ sets rid (ST _ point (LNG 13360:双精度处理,lat 13360:双精度处理) 4326 ) 326 PPT