河南网站优化要多少钱,wordpress 作者 描述,wordpress会员邮件通知,网站关键词如何优化上首页项目上的需求#xff0c;要判断当前打卡位置是否在项目范围10m内。 先做需求分析#xff1a; #xff08;1#xff09;既然有10m的缓冲范围#xff0c;那么就要用到st_buffer函数#xff1b; #xff08;2#xff09;既然以m为单位#xff0c;就要用到投影坐标系…项目上的需求要判断当前打卡位置是否在项目范围10m内。 先做需求分析 1既然有10m的缓冲范围那么就要用到st_buffer函数 2既然以m为单位就要用到投影坐标系如果前端传过来的是经纬度坐标需要使用st_transform进行转换 3要求在范围内就是判断点是否包含在面内就需要用到st_contains函数 4根据业务上的需求应该是要有项目的标识码来确定一条矢量记录 5返回值很简单就是true或者false 组合以上的需求得到如下sql语句
select st_contains((select st_transform(st_buffer(st_transform(geom,4528),10),4490)FROM tablenamewhere xmbm ${xmbm}),st_geomfromtext(POINT(${x} ${y}),4490))考虑实际情况可能有项目记录查不到的情况这时候返回值是null无法转换成要求的布尔值形式集成到java程序中会报错于是添加个case语句防止返回null值 with buffer_res as (select st_contains((select st_transform(st_buffer(st_transform(geom,4528),10),4490)FROM tablenamewhere xmbm ${xmbm}),st_geomfromtext(POINT(${x} ${y}),4490)) res)select case when buffer_res.res is null then false else buffer_res.res end from buffer_res