package com.yb.service;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.yb.config.XzConfig;
|
import com.yb.helper.RsaHelper;
|
import com.yb.util.EntityHttpUtil;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.locationtech.jts.geom.*;
|
import org.locationtech.jts.operation.buffer.BufferOp;
|
|
|
import java.util.*;
|
import java.util.HashMap;
|
|
@Service
|
public class XzService {
|
@Autowired
|
private XzConfig xzConfig;
|
@Autowired
|
private EntityHttpUtil entityHttpUtil;
|
@Autowired
|
private AgentService agentService;
|
|
// 关键字查询
|
public String getQueryFiled(String place, String filed, String layerId, String dbId, String queryEntity) throws Exception {
|
String query = filed + " like '%" + place + "%'" + "";
|
String key = getPublickey();
|
String encrypt = RsaHelper.encrypt(key, query);
|
HashMap formData = getHashMap(layerId, dbId, "1", "0", encrypt, null);
|
String jsonString = entityHttpUtil.getPostMessage(queryEntity, formData);
|
System.out.println("rec getQueryFiled:" + jsonString);
|
JSONObject jsonObject = JSON.parseObject(jsonString);
|
JSONObject dataObjject = jsonObject.getJSONObject("data");
|
JSONArray dataArray = dataObjject.getJSONArray("items");
|
if (dataArray.size() > 0) {
|
return dataArray.getJSONObject(0).toString();
|
}
|
return "";
|
}
|
|
// 关键字查询
|
public String getQueryEntity(String place, String filed, String layerId, String dbId, String queryEntity) throws Exception {
|
String query = filed + " like '%" + place + "%'" + "";
|
String key = getPublickey();
|
String encrypt = RsaHelper.encrypt(key, query);
|
HashMap formData = getHashMap(layerId, dbId, "1", "100", encrypt, null);
|
formData.put("querytype", "entity");
|
String jsonString1 = entityHttpUtil.getPostMessage(queryEntity, formData);
|
System.out.println("rec getQueryFiled:" + jsonString1);
|
JSONObject jsonObject = JSON.parseObject(jsonString1);
|
JSONObject dataObjject = jsonObject.getJSONObject("data");
|
JSONArray dataArray = dataObjject.getJSONArray("items");
|
if(dataArray.size()<=0){
|
return null;
|
}
|
return dataArray.getJSONObject(0).toString();
|
|
|
}
|
|
// 范围查询
|
public String getQueryAround(String type, String wkt, String filed, String layerId, String dbid, String entity) throws Exception {
|
String query = filed + " like '%" + type + "%'" + "";
|
String encrypt = RsaHelper.encrypt(getPublickey(), query);
|
HashMap formData = getHashMap(layerId, dbid, "1", "0", encrypt, wkt);
|
String jsonString = entityHttpUtil.getPostMessage(entity, formData);
|
JSONObject jsonObject = JSON.parseObject(jsonString);
|
JSONObject dataObj = jsonObject.getJSONObject("data");
|
JSONArray dataArray = dataObj.getJSONArray("items");
|
return dataArray.toString();
|
|
}
|
|
//元信息查询
|
public String getQueryMeta(String layerId, String dbid, String filed, String entity) {
|
HashMap<String, Object> staticField = new HashMap<>();
|
JSONArray jsonArray = new JSONArray();
|
staticField.put("type", "count");
|
staticField.put("field", filed);
|
staticField.put("outfield", "count_" + filed);
|
jsonArray.add(staticField);
|
HashMap<String, String> formData = getHashMap(layerId, dbid, null, null, null, null);
|
formData.put("statistics", jsonArray.toString());
|
formData.put("groupby", filed);
|
return entityHttpUtil.getPostMessage(entity, formData);
|
}
|
|
// 获取返回信息Map
|
public HashMap<String, Object> getFuncMap(String func, String mid) {
|
HashMap<String, Object> hash = new HashMap<String, Object>();
|
hash.put("func", func);
|
hash.put("mid", mid);
|
return hash;
|
}
|
|
//获取秘钥接口
|
public String getPublickey() {
|
HashMap<String, String> map = new HashMap<>();
|
map.put("token", xzConfig.token);
|
String jsonString = entityHttpUtil.getPostMessage(xzConfig.publickey, map);
|
JSONObject jsonObject = JSON.parseObject(jsonString);
|
return jsonObject.getString("data");
|
}
|
|
// 传参
|
public HashMap<String, String> getHashMap(String layerId, String dbid, String start, String count, String where, String box) {
|
HashMap<String, String> hashMap = new HashMap<>();
|
hashMap.put("token", xzConfig.token);
|
hashMap.put("containCount", "true");
|
hashMap.put("layerid", layerId);
|
hashMap.put("dbid", dbid);
|
if (start != null && start != "") {
|
hashMap.put("start", start);
|
}
|
if (count != null && count != "") {
|
hashMap.put("count", count);
|
}
|
if (where != null && where != "") {
|
hashMap.put("where", where);
|
}
|
if (box != null && box != "") {
|
hashMap.put("box", box);
|
}
|
|
return hashMap;
|
}
|
|
//生成WKT
|
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 / 111319.9);
|
// 创建WKTWriter实例,用于将Geometry转换为WKT格式
|
// WKTWriter wktWriter = new WKTWriter();
|
|
// 将缓冲区Geometry转换为WKT格式
|
// 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;
|
}
|
|
|
}
|