从 esri geometry api 获取几何对象的 2d 坐标

Get 2d coordinates of a geometry object from esri geometry api

提问人:Eduardo B. 提问时间:11/11/2023 更新时间:11/11/2023 访问量:14

问:

我有一个服务器客户端架构,后端使用 java 和 spring boot,前端使用 javascript 使用 react。我使用 ArcGis 框架在地图中绘制表单。

在前端,我只绘制了一个 poligon,而在后端,它正在进行计算。 它将一个 Geometry 对象返回到前端,该对象被解析为 json,然后获取坐标以制作多边形。

这是后端逻辑。

public FinalBufferModel getBuffers(BufferModel pointsModel){ 
    
    Point point[] = new Point[pointsModel.getGeometries().size()];
    
    var distances = new double[pointsModel.getGeometries().size()];
    var cautionAreaLength = pointsModel.getCautionAreaLength();
    var warningAreaLength = pointsModel.getWarningAreaLength(); 
    
    for (int i = 0; i < pointsModel.getGeometries().size(); i++) {
        
        point[i] = new Point(pointsModel.getGeometries().get(i).getX(), pointsModel.getGeometries().get(i).getY());
        distances[i] = 1.0;
        
    }          
            
    var spatialReference = SpatialReference.create(pointsModel.getSpatialReference().getWkid().intValue());        
    var finalBuffers = GeometryEngine.buffer(point, spatialReference, distances, true);        
    var finalBuffer = GeometryEngine.union(finalBuffers, spatialReference);                  
    
    var finalBufferYellow = GeometryEngine.buffer(finalBuffer, spatialReference, cautionAreaLength);        
    var finalBufferRed = GeometryEngine.buffer(finalBufferYellow, spatialReference, warningAreaLength);
    var finalBufferBlack = GeometryEngine.buffer(finalBufferRed, spatialReference, 200);
    
    
    var finalBufferBlack1 = GeometryEngine.difference(finalBufferBlack, finalBufferRed, spatialReference);
    var finalBufferRed1 = GeometryEngine.difference(finalBufferRed, finalBufferYellow, spatialReference);
    var finalBufferYellow1 = GeometryEngine.difference(finalBufferYellow, finalBuffer, spatialReference);  
    
    //finalBufferBlack1 = GeometryEngine.union(fin, spatialReference); 
    
           
    return new FinalBufferModel(
            GeometryEngine.geometryToGeoJson(finalBufferBlack1),
            GeometryEngine.geometryToGeoJson(finalBufferRed1),
            GeometryEngine.geometryToGeoJson(finalBufferYellow1
            )
    );

对象 finalBufferBlack1、finalBufferRed1、finalBufferYellow1 将在前端解析,然后我就可以得到 2d 坐标了。但是在地图中,我绘制了几个多边形,当有 1 个以上的多边形时,它会返回到前端一个“Multipoligon”对象,该对象具有一系列坐标。我想在后端合并这个坐标,以删除前端的任何逻辑,因为我不愿意在后端获取这个坐标数组。

感谢您的任何帮助

Java spring-Boot ArcGIS Esri

评论


答: 暂无答案