From 2d5e75d867cf77c8004907ccbe606561df3549ff Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期一, 13 三月 2023 11:11:41 +0800 Subject: [PATCH] 1 --- src/main/java/com/lf/server/service/all/BaseQueryService.java | 16 ++++++++++++++++ src/main/java/com/lf/server/controller/all/BaseQueryController.java | 21 ++++++++++++++++++++- src/main/java/com/lf/server/entity/all/StaticData.java | 5 +++++ data/db_cx.sql | 6 ++++-- 4 files changed, 45 insertions(+), 3 deletions(-) diff --git a/data/db_cx.sql b/data/db_cx.sql index 7d522d6..eadbd06 100644 --- a/data/db_cx.sql +++ b/data/db_cx.sql @@ -18,9 +18,7 @@ -- delete from lf.sys_layer where id=427; -- 28.178 -select * from bd.dlg_25w_boul where ST_Intersects(geom, ST_Buffer(ST_GeomFromText('POINT (101.9281 36.58675)', 4490), 10, 'endcap=round join=round')) limit 20; -select * from bd.dlg_25w_boul where ST_DWithin(geom, ST_GeomFromText('POINT (101.9281 36.58675)', 4490), 10) = true limit 20; @@ -37,6 +35,10 @@ ---------------------------------------------------------------------------------------------- 00.SQL鏌ヨ +-- 缂撳啿鍖烘煡璇� +select * from bd.dlg_25w_boul where ST_Intersects(geom, ST_Buffer(ST_GeomFromText('POINT (101.9281 36.58675)', 4490), 10, 'endcap=round join=round')) limit 20; +select * from bd.dlg_25w_boul where ST_DWithin(geom, ST_GeomFromText('POINT (101.9281 36.58675)', 4490), 10) = true limit 20; + select id,cn_name,en_name,url,serve_type,data_type from lf.sys_layer where url is not null and serve_type='WMS' and data_type in ('宸ョ▼椤圭洰','宸ョ▼椤圭洰-鍦扮伨绫�','宸ョ▼椤圭洰-娴嬮噺绫�','宸ョ▼椤圭洰-娲炲簱绫�','宸ョ▼椤圭洰-鍕樺療绫�') order by id; diff --git a/src/main/java/com/lf/server/controller/all/BaseQueryController.java b/src/main/java/com/lf/server/controller/all/BaseQueryController.java index 42f5448..24773f9 100644 --- a/src/main/java/com/lf/server/controller/all/BaseQueryController.java +++ b/src/main/java/com/lf/server/controller/all/BaseQueryController.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.lf.server.annotation.SysLog; import com.lf.server.entity.all.ResponseMsg; +import com.lf.server.entity.all.StaticData; import com.lf.server.entity.ctrl.DownloadReqEntity; import com.lf.server.entity.ctrl.IdNameEntity; import com.lf.server.entity.ctrl.KeyValueEntity; @@ -145,11 +146,29 @@ @ApiImplicitParams({ @ApiImplicitParam(name = "name", value = "鏄犲皠鍚嶇О", dataType = "String", paramType = "query", example = "dlgagnp"), @ApiImplicitParam(name = "wkt", value = "WKT锛堣憲鍚嶆枃鏈級", dataType = "String", paramType = "query", example = ""), + @ApiImplicitParam(name = "buffer", value = "缂撳啿鍖哄ぇ灏�", dataType = "Double", paramType = "query", example = "10"), @ApiImplicitParam(name = "limit", value = "闄愬埗鏉℃暟", dataType = "Integer", paramType = "query", example = "20") }) @GetMapping(value = "/selectByBuffer") - public ResponseMsg<List<Object>> selectByBuffer(String name, String wkt, Integer limit) { + public ResponseMsg<List<Object>> selectByBuffer(String name, String wkt, Double buffer, Integer limit) { try { + if (StringHelper.isEmpty(wkt)) { + return fail("WKT涓嶈兘涓虹┖", null); + } + if (null == limit || limit < 1 || limit > StaticData.ONE_HUNDRED) { + limit = 20; + } + if (null == buffer || buffer < 0 || buffer > StaticData.ONE_HUNDRED_THOUSAND) { + buffer = 10.0; + } + + GeomBaseMapper baseMapper = ClassHelper.getGeoBaseMapper(name); + if (baseMapper == null) { + return fail("鏌ヨ瀵硅薄涓嶅瓨鍦�", null); + } + + QueryWrapper wrapper = new QueryWrapper(); + baseQueryService.addBufferWrapper(baseMapper, wrapper, wkt, buffer); return success(0, null); } catch (Exception ex) { diff --git a/src/main/java/com/lf/server/entity/all/StaticData.java b/src/main/java/com/lf/server/entity/all/StaticData.java index 2ce2e2b..3ea7fe2 100644 --- a/src/main/java/com/lf/server/entity/all/StaticData.java +++ b/src/main/java/com/lf/server/entity/all/StaticData.java @@ -47,6 +47,11 @@ public final static int ONE_HUNDRED = 100; /** + * 鏁板�硷細100,000 + */ + public final static int ONE_HUNDRED_THOUSAND = 100000; + + /** * 鏁板�硷細200 */ public final static int TWO_HUNDRED = 200; diff --git a/src/main/java/com/lf/server/service/all/BaseQueryService.java b/src/main/java/com/lf/server/service/all/BaseQueryService.java index 286df38..68d5495 100644 --- a/src/main/java/com/lf/server/service/all/BaseQueryService.java +++ b/src/main/java/com/lf/server/service/all/BaseQueryService.java @@ -208,6 +208,22 @@ return tabName; } + /** + * 娣诲姞缂撳啿鍖鸿繃婊ゆ潯浠� + * + * @param baseMapper 鐖禡apper + * @param wrapper QueryWrapper + * @param wkt WKT锛堣憲鍚嶆枃鏈級 + */ + public void addBufferWrapper(GeomBaseMapper baseMapper, QueryWrapper wrapper, String wkt, double buffer) { + Integer srid = getSrid(baseMapper); + if (null == srid) { + srid = 4490; + } + + wrapper.apply(String.format("ST_Intersects(geom, ST_Buffer(ST_GeomFromText('%s', %d), %f, 'endcap=round join=round'))", wkt, srid, buffer)); + } + @Override public List<IdNameEntity> selectUserFuzzy(String name) { name = StringHelper.getLikeStr(name); -- Gitblit v1.9.3