首页 / 浏览问题 / WebGIS / 问题详情
生成等值面报错400
10EXP 2023年04月17日

使用产品:iserver 10i 结合iClient 11i,操作系统:win11 x64 数据类型: json 问题详细描述:使用GeometrySurfaceAnalystParameters生成等值面,当zValues全部为0的时候正常请求,获得返回,当其中几个数变更为有值的时候,就会报错400 请问

1个回答

您好, GeometrySurfaceAnalystParameters应该不是我们iSever的接口,而是iClient的,请问您具体使用的是哪一个iClient呢。

如果您使用的是Classic,

通常报参数400是请求参数不合法,而不是分析结果而问题。

设置ZValue时的Z是对应点序points,所以设置一要注意ZValue的顺序和数量要和points一一对应的,二是注意ZValue要在您该点位的数据范围内才可以生成等值面。

希望可以帮助到您。
10,758EXP 2023年04月17日
代码段

//几何对象表面分析参数类。

    let parameterOptions = {

        //表面分析的坐标点数组

        points: points,

        //表面分析的坐标点的 Z 值数组

        zValues: zValues,

        //获取或设置指定中间结果(栅格数据集)的分辨率

        resolution: 9000,

        //结果返回设置类

        //resultSetting

        //获取或设置表面分析参数

        extractParameter: analystParametersSetting,

        //取或设置表面分析的提取方法:ISOLINE 等值线提取, ISOREGION 等值面提取

        surfaceAnalystMethod: L.supermap.SurfaceAnalystMethod.ISOREGION

    };

    let surfaceAnalystParameters = new L.supermap.GeometrySurfaceAnalystParameters(parameterOptions);

points和values数据是同一个数组转换出来的,数量是一致的,全部设置为0正常,仅仅改变一个数据就会报错,测试过小数和整数都不行,数据获取示例:

for (let item of pointArr) {

        points.push(_getMercator({ lat: item[1], lng: item[0] }));

        zValues.push(0);

    }

    zValues[0] = 1;

/**

 * 经纬度转墨卡托

 * @param poi 格式:{lng:118.07,lat:35.97}

 */

export function _getMercator(poi: ILngLat): IMercator {

    let mercator: IMercator = { x: 0, y: 0 };

    let earthRad = 6378137.0;

    mercator.x = poi.lng * Math.PI / 180 * earthRad;

    let a = poi.lat * Math.PI / 180;

    mercator.y = earthRad / 2 * Math.log((1.0 + Math.sin(a)) / (1.0 - Math.sin(a)));

    return mercator; //[12727039.383734727, 3579066.6894065146]

}
我使用的是for leaflet 1101,调用的服务为iserver 10i :请求地址/iserver/services/spatialAnalysis-SDYZT_DATA/restjsr/spatialanalyst

您好,我这边使用官网11i的leaflet测试丰0的 zValues 分析是正常的,建议您检查传参规范和本身高程是否匹配。

...