如何生成有效的地理空间坐标集?随机生成法存在无效值问题
有效地理随机坐标生成方案
问题根源
你现有代码生成无效坐标的核心原因是取值范围不符合地理坐标的规范:
- 经度(Longitude)合法范围:-180° ~ 180°
- 纬度(Latitude)合法范围:-90° ~ 90°
原有代码对经纬度都采用了-180~180的取值区间,导致纬度可能超出合法范围,生成无效坐标。
修正后实现代码
function getRandomInRange(from, to, fixed) { return parseFloat((Math.random() * (to - from) + from).toFixed(fixed)); } // 配置生成100组坐标 const coordinateCount = 100; const validCoordinateList = []; for(let i = 0; i < coordinateCount; i++) { // 纬度用-90~90的取值范围 const latitude = getRandomInRange(-90, 90, 3); // 经度保持-180~180的取值范围 const longitude = getRandomInRange(-180, 180, 3); validCoordinateList.push([latitude, longitude]); // 按需打印输出 console.log(`${latitude}, ${longitude}`); }
补充说明
如果需要生成陆地区域的有效坐标(排除海洋坐标),需要引入内置陆地边界数据的地理空间计算库,对生成的坐标做空间包含校验,过滤掉落在海洋区域的坐标即可。
内容的提问来源于stack exchange,提问作者rob.m
相关产品推荐
相关产品推荐

