测绘坐标数据封装处理

1、测绘数据

2、数据处理

public void dealData() {

List<Map<String, Object>> shyqzdMapList = 截图数据;
                Map<String, List<Map<String, Object>>> groupMap = shyqzdMapList.stream().collect(Collectors.groupingBy(item -> String.valueOf(item.get("mbsxh"))));
                String geojson = "";//上传的geojson文件
                if (groupMap.size() == 1) { //只有一个面
                    List<Map<String, Object>> polygonList = shyqzdMapList.stream().sorted(Comparator.comparing(item -> String.valueOf(item.get("xh")))).collect(Collectors.toList());
                    List<Coordinate> coordinateList = new ArrayList<>(polygonList.size());
                    for (int i = 1; i < polygonList.size(); i++) {
                        double x = Double.valueOf(String.valueOf(polygonList.get(i).get("x")));
                        double y = Double.valueOf(String.valueOf(polygonList.get(i).get("y")));
                        Coordinate coordinate = new Coordinate(x, y);
                        coordinateList.add(coordinate);
                    }
                    double xEnd = Double.valueOf(String.valueOf(polygonList.get(0).get("x")));
                    double yEnd = Double.valueOf(String.valueOf(polygonList.get(0).get("y")));
                    coordinateList.add(coordinateList.size(), new Coordinate(xEnd, yEnd));
                    Coordinate[] coordinates = coordinateList.toArray(new Coordinate[coordinateList.size()]);

                    GeometryFactory gf = new GeometryFactory();
                    Polygon polygon = gf.createPolygon(coordinates);
                    geojson = GeometryParser.geometry2Geojson(polygon);
                    log.info("单面;{}", geojson);
                } else { //多面
                    List<Polygon> polygons = new ArrayList<>();
                    for (Map.Entry<String, List<Map<String, Object>>> entry : groupMap.entrySet()) {
                        List<Map<String, Object>> polygonList = entry.getValue().stream().sorted(Comparator.comparing(item -> String.valueOf(item.get("xh")))).collect(Collectors.toList());
                        List<Coordinate> coordinateList = new ArrayList<>(polygonList.size());
                        for (int i = 1; i < polygonList.size(); i++) {
                            double x = Double.valueOf(String.valueOf(polygonList.get(i).get("x")));
                            double y = Double.valueOf(String.valueOf(polygonList.get(i).get("y")));
                            Coordinate coordinate = new Coordinate(x, y);
                            coordinateList.add(coordinate);
                        }
                        double xEnd = Double.valueOf(String.valueOf(polygonList.get(0).get("x")));
                        double yEnd = Double.valueOf(String.valueOf(polygonList.get(0).get("y")));
                        coordinateList.add(coordinateList.size(), new Coordinate(xEnd, yEnd));
                        Coordinate[] coordinates = coordinateList.toArray(new Coordinate[coordinateList.size()]);

                        GeometryFactory gf = new GeometryFactory();
                        Polygon polygon = gf.createPolygon(coordinates);
                        polygons.add(polygon);
                    }
                    Polygon[] polygonArr = polygons.toArray(new Polygon[polygons.size()]);
                    Geometry geometry = new MultiPolygon(polygonArr, JTSFactoryFinder.getGeometryFactory());
                    geojson = GeometryParser.geometry2Geojson(geometry);
                    log.info("多面;{}", geojson);



}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值