|
@@ -4,7 +4,9 @@ import cn.com.taiji.common.domain.PageResult;
|
|
|
import cn.com.taiji.common.model.*;
|
|
|
import cn.com.taiji.cql.service.IECqlService;
|
|
|
import cn.com.taiji.cql.service.ISqlService;
|
|
|
+import cn.com.taiji.tile.model.FeatureDetailInfo;
|
|
|
import cn.com.taiji.tile.model.FeatureInfo;
|
|
|
+import cn.com.taiji.tile.model.GeometryInfo;
|
|
|
import cn.com.taiji.tile.model.POI;
|
|
|
import cn.com.taiji.tile.service.ITileService;
|
|
|
import cn.com.taiji.tile.util.ShapeUtils;
|
|
@@ -17,6 +19,9 @@ import org.geotools.data.jdbc.datasource.DBCPDataSourceFactory;
|
|
|
import org.geotools.data.mysql.MySQLFilterToSQL;
|
|
|
import org.geotools.filter.text.ecql.ECQL;
|
|
|
import org.geotools.jdbc.JDBCDataStoreFactory;
|
|
|
+import org.locationtech.jts.geom.Geometry;
|
|
|
+import org.locationtech.jts.io.ParseException;
|
|
|
+import org.locationtech.jts.io.WKTReader;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
@@ -202,7 +207,7 @@ public class TileServiceImpl implements ITileService {
|
|
|
|
|
|
}
|
|
|
|
|
|
- layerDataRun = layerDataRun + " and " +actual;
|
|
|
+ layerDataRun = layerDataRun + " where " +actual;
|
|
|
|
|
|
}catch (Exception exception){
|
|
|
exception.printStackTrace();
|
|
@@ -244,18 +249,30 @@ public class TileServiceImpl implements ITileService {
|
|
|
@Override
|
|
|
public FeatureInfo getFeatureInfo(GeoRequestParam requestParam, List<LayerGroupDsView> layerGroupDsViewList, Map<String, List<LayerStyleView>> dataMaps) {
|
|
|
FeatureInfo featureInfo = new FeatureInfo();
|
|
|
- List<Map<String, Object>> features = new CopyOnWriteArrayList<>();
|
|
|
+ List<FeatureDetailInfo> list = new CopyOnWriteArrayList<>();
|
|
|
+ WKTReader wktReader = ShapeUtils.WKT_READER;
|
|
|
layerGroupDsViewList.parallelStream().forEach(layerGroupDsView -> {
|
|
|
Result result = getResult(requestParam, dataMaps, layerGroupDsView);
|
|
|
if (result.pageResult != null && result.pageResult.getRecordCount() > 0) {
|
|
|
List<Map<String, Object>> cqlDataList = (List<Map<String, Object>>) result.pageResult.getDatas();
|
|
|
//3根据空间地理数据生成图层二进制数据
|
|
|
List<Map<String, Object>> maps = ShapeUtils.detectClick(requestParam.getGeoType(),requestParam.getBbox(), cqlDataList, layerGroupDsView.getBoxColumn(), result.layerStyleViewList, requestParam.getX(), requestParam.getY());
|
|
|
- features.addAll(maps);
|
|
|
+// features.addAll(maps);
|
|
|
+ maps.parallelStream().forEach(item->{
|
|
|
+ FeatureDetailInfo featureDetailInfo = new FeatureDetailInfo();
|
|
|
+ try {
|
|
|
+ Geometry read = wktReader.read(item.get(layerGroupDsView.getBoxColumn()).toString());
|
|
|
+ featureDetailInfo.setGeometry(new GeometryInfo(new Double[]{read.getCoordinate().x,read.getCoordinate().y},read.getGeometryType()));
|
|
|
+ } catch (ParseException e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+ featureDetailInfo.setProperties(item);
|
|
|
+ list.add(featureDetailInfo);
|
|
|
+ });
|
|
|
}
|
|
|
});
|
|
|
- featureInfo.setFeatures(features);
|
|
|
- featureInfo.setNumberReturned(features.size());
|
|
|
+ featureInfo.setFeatures(list);
|
|
|
+ featureInfo.setNumberReturned(list.size());
|
|
|
featureInfo.setTimeStamp(DateUtil.format(new Date(),DateTimeFormatter.ISO_INSTANT));
|
|
|
return featureInfo;
|
|
|
}
|
|
@@ -263,16 +280,27 @@ public class TileServiceImpl implements ITileService {
|
|
|
@Override
|
|
|
public FeatureInfo getFeature(GeoRequestParam requestParam, List<LayerGroupDsView> layerGroupDsViewList, Map<String, List<LayerStyleView>> dataMaps) {
|
|
|
FeatureInfo featureInfo = new FeatureInfo();
|
|
|
- List<Map<String, Object>> features = new CopyOnWriteArrayList<>();
|
|
|
+ List<FeatureDetailInfo> list = new CopyOnWriteArrayList<>();
|
|
|
+ WKTReader wktReader = ShapeUtils.WKT_READER;
|
|
|
layerGroupDsViewList.parallelStream().forEach(layerGroupDsView -> {
|
|
|
Result result = getResult(requestParam, dataMaps, layerGroupDsView);
|
|
|
if (result.pageResult != null && result.pageResult.getRecordCount() > 0) {
|
|
|
List<Map<String, Object>> cqlDataList = (List<Map<String, Object>>) result.pageResult.getDatas();
|
|
|
- features.addAll(cqlDataList);
|
|
|
+ cqlDataList.parallelStream().forEach(item->{
|
|
|
+ FeatureDetailInfo featureDetailInfo = new FeatureDetailInfo();
|
|
|
+ try {
|
|
|
+ Geometry read = wktReader.read(item.get(layerGroupDsView.getBoxColumn()).toString());
|
|
|
+ featureDetailInfo.setGeometry(new GeometryInfo(new Double[]{read.getCoordinate().x,read.getCoordinate().y},read.getGeometryType()));
|
|
|
+ } catch (ParseException e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+ featureDetailInfo.setProperties(item);
|
|
|
+ list.add(featureDetailInfo);
|
|
|
+ });
|
|
|
}
|
|
|
});
|
|
|
- featureInfo.setFeatures(features);
|
|
|
- featureInfo.setNumberReturned(features.size());
|
|
|
+ featureInfo.setNumberReturned(list.size());
|
|
|
+ featureInfo.setFeatures(list);
|
|
|
featureInfo.setTimeStamp(DateUtil.format(new Date(),DateTimeFormatter.ISO_INSTANT));
|
|
|
return featureInfo;
|
|
|
}
|