fenfu
中国地图分幅编号计算工具,符合GB/T 13989-2012国家标准。支持单点计算和范围查询,适用于测绘、GIS开发、城市规划等场景。
特性
- ✅ 支持8种比例尺(100万至5000)
- ✅ 单点坐标转图幅编号
- ✅ 矩形范围批量图幅查询
- ✅ 自动处理高纬度特殊分幅规则
- ✅ 输入验证与错误处理
- ✅ TypeScript类型支持
安装
npm install fenfu
# 或
yarn add fenfu
使用示例
1. 单点计算
const MapSheetCalculator = require('fenfu');
// 或
import MapSheetCalculator from 'fenfu';
// 计算北京天安门(1:10万)
const code = MapSheetCalculator.calculate(116.3912, 39.9067, '10万');
console.log(code); // 输出:J50B001002
2. 范围查询
// 计算北京市朝阳区范围(1:5万比例尺)
const codes = MapSheetCalculator.calculateInRange(
116.4, 39.8, // 西南角(经度,纬度)
116.6, 40.0, // 东北角
'5万'
);
console.log(codes);
/* 输出示例:
[
'J50E001001',
'J50E001002',
'J50E002001',
'J50E002002',
'J50E003001'
]
*/
API文档
calculate(lng, lat, scale)
- 参数:
lngnumber经度(-180~180)latnumber纬度(-90~90)scalestring比例尺(支持值:100万、50万、25万、10万、5万、2.5万、1万、5000)
- 返回:
string图幅编号 - 错误:无效输入时抛出异常
calculateInRange(minLng, minLat, maxLng, maxLat, scale)
- 参数:
minLngnumber范围最小经度minLatnumber范围最小纬度maxLngnumber范围最大经度maxLatnumber范围最大纬度scalestring比例尺
- 返回:
string[]覆盖范围内的所有图幅编号 - 注意:大范围计算可能返回大量结果,建议分块处理
##用户可以通过以下命令验证安装:
npm install fenfu
node -e "console.log(require('fenfu').calculate(116.3912, 39.9067, '10万'))"
npm install fenfu
node -e "console.log(require('fenfu').calculateInRange(116.2, 39.8,116.5, 40.0,'10万'))"
node -e “console.log(require(‘fenfu’).calculateInRange(116.4, 39.8, 116.6, 40.0, ‘5万’))”