From 5b14811aaeb72e828d948068e899c65877aaca9a Mon Sep 17 00:00:00 2001 From: suerprisePlus <15810472099@163.com> Date: 星期三, 28 八月 2024 11:32:43 +0800 Subject: [PATCH] API名称:[周边属性查询] 接口添加 --- src/main/java/com/yb/controller/XzController.java | 127 ++++++++++++++++++++++++++++++++++++++---- 1 files changed, 114 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/yb/controller/XzController.java b/src/main/java/com/yb/controller/XzController.java index 69db081..61ec0f8 100644 --- a/src/main/java/com/yb/controller/XzController.java +++ b/src/main/java/com/yb/controller/XzController.java @@ -13,12 +13,16 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; - +import org.locationtech.jts.geom.*; +import org.locationtech.jts.io.WKTWriter; +import org.locationtech.jts.operation.buffer.BufferOp; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; + import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -46,6 +50,9 @@ @Value("${spring.geographical.token}") String token; private JSONObject jsonObject; + private JSONObject dataObjject; + private Coordinate coord; + private Object filObj; @PostMapping("/poiMap") @Operation(summary = "鏄剧ず鍦扮偣") @@ -55,6 +62,109 @@ hash.put("func", "poiMap"); hash.put("mid", mid); ReqEntity reqEntity = new ReqEntity(); + String item = getQueryFiled(place); + JSONObject obj = JSONObject.parseObject(item); + reqEntity.setX(obj.getString("lon")); + reqEntity.setY(obj.getString("lat")); +// System.out.print(obj); + reqEntity.setPlace(obj.getString("enti_name")); + System.out.println("rec message:" +reqEntity); + hash.put("poi", reqEntity); + String message = JSON.toJSONString(hash); + webSocketController.sendAllMessage(message); + return R.ok(hash); + } + + @PostMapping("/aroundPoi") + @Operation(summary = "鏄剧ず鍦扮偣") + public R aroundPoi(@Parameter String place, @Parameter String mid, @Parameter String type, @Parameter int radius) throws Exception { + + System.out.println("rec message:" + place + " mid:" + mid + " type:" + type + " radius:" + radius); + HashMap<String, Object> hash = new HashMap<>(); + hash.put("func", "aroundpoi"); + hash.put("mid", mid); + String item = getQueryFiled(place); + JSONObject obj = JSONObject.parseObject(item); + Double lon = Double.parseDouble(obj.getString("lon")); + Double lat = Double.parseDouble(obj.getString("lat")); + String wkt = getWKt(lon,lat,radius); + String itemList = getQueryAround(type,wkt); +// System.out.print("ces: "+itemList); + JSONArray dataArray =JSONArray.parseArray(itemList); + ArrayList<ReqEntity> arrayList= new ArrayList<>(); + for(int i =0;i< dataArray.size();i++ ){ + + Object element = dataArray.get(i); + if (element instanceof JSONObject) { + JSONObject jsonObject = (JSONObject) element; + ReqEntity reqEntity= new ReqEntity(); + reqEntity.setX(jsonObject.getString("lon")); + reqEntity.setY(jsonObject.getString("lat")); + reqEntity.setPlace(jsonObject.getString("enti_name")); + arrayList.add(reqEntity); + } + } + System.out.println("rec message:" +arrayList); + hash.put("poi", arrayList); + String message = JSON.toJSONString(hash); + webSocketController.sendAllMessage(message); + return R.ok(hash); + } + + public String getWKt(double lon, double lat, int radius) { + // 鍒涘缓涓�涓潗鏍囩偣 + Coordinate coord = new Coordinate(lon, lat); + // 鍒涘缓GeometryFactory瀹炰緥锛屽苟鎸囧畾鍧愭爣鍙傝�冪郴缁熶负WGS84 + GeometryFactory geometryFactory = new GeometryFactory(new PrecisionModel(), 4326); + // 浣跨敤鍧愭爣鍒涘缓涓�涓偣 + Point point = geometryFactory.createPoint(coord); + // 鍒涘缓BufferOp瀹炰緥锛岀敤浜庣敓鎴愮紦鍐插尯 + BufferOp bufferOp = new BufferOp(point); + int dis = 500; + if (radius != 0) { + dis = radius; + } + // 璁剧疆缂撳啿鍖鸿窛绂讳负500绫� + Geometry bufferedGeometry = bufferOp.getResultGeometry(dis); + // 鍒涘缓WKTWriter瀹炰緥锛岀敤浜庡皢Geometry杞崲涓篧KT鏍煎紡 +// WKTWriter wktWriter = new WKTWriter(); + + // 灏嗙紦鍐插尯Geometry杞崲涓篧KT鏍煎紡 +// String wkt = wktWriter.write(bufferedGeometry); + // 杈撳嚭WKT +// System.out.println("WKT: " + wkt); + Envelope envelope = bufferedGeometry.getEnvelopeInternal(); + double [] wkt = new double[4]; + wkt[0]=envelope.getMinX(); + wkt[1]=envelope.getMinY(); + wkt[2]=envelope.getMaxX(); + wkt[3]=envelope.getMaxY(); + String arrayAsString = Arrays.toString(wkt); + System.out.println("arrayAsString: " + arrayAsString); + return arrayAsString; + } + + public String getQueryAround(String type,String wkt) throws Exception { + String query = "sjnr like '%" + type + "%'" + ""; + String key = getPublickey(); + String encrypt = RsaHelper.encrypt(key, query); + HashMap formData = new HashMap<>(); + formData.put("token", token); + formData.put("start", "1"); + formData.put("count", "0"); + formData.put("containCount", "true"); + formData.put("layerid", layerId); + formData.put("dbid", dbid); + formData.put("where", encrypt); + formData.put("box", wkt); + String jsonString = entityHttpUtil.getPostMessage(queryEntity, formData); + JSONObject jsonObject = JSON.parseObject(jsonString); + JSONObject dataObjject = jsonObject.getJSONObject("data"); + JSONArray dataArray = dataObjject.getJSONArray("items"); + return dataArray.toString(); + } + //鍏抽敭瀛楁煡璇� + public String getQueryFiled(String place) throws Exception { String query = "enti_name like '%" + place + "%'" + ""; String key = getPublickey(); String encrypt = RsaHelper.encrypt(key, query); @@ -70,15 +180,8 @@ JSONObject jsonObject = JSON.parseObject(jsonString); JSONObject dataObjject = jsonObject.getJSONObject("data"); JSONArray dataArray = dataObjject.getJSONArray("items"); - JSONObject item = dataArray.getJSONObject(0); - reqEntity.setX(item.getString("lon")); - reqEntity.setY(item.getString("lat")); - System.out.print(item); - reqEntity.setPlace(item.getString("enti_name")); - hash.put("poi", reqEntity); - return R.ok(hash); + return dataArray.getJSONObject(0).toString(); } - //鑾峰彇绉橀挜鎺ュ彛 public String getPublickey() { @@ -90,9 +193,9 @@ } - @PostMapping("/aroundPoi") + @PostMapping("/aroundPoi2") @Operation(summary = "鍛ㄨ竟鏌ヨ") - public R aroundPoi(@RequestBody ReqEntity reqEntity) { + public R aroundPoi2(@RequestBody ReqEntity reqEntity) { System.out.println("rec message:" + reqEntity); HashMap<String, Object> hash = new HashMap<>(); hash.put("func", "aroundPoi"); @@ -135,9 +238,7 @@ hash.put("func", "queryMeta"); hash.put("mid", mid); List<ReqEntity> list = new ArrayList<>(); - hash.put("meta", list); - String message = JSON.toJSONString(hash); webSocketController.sendAllMessage(message); -- Gitblit v1.9.3