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)
- 参数:
lng
number
经度(-180~180)lat
number
纬度(-90~90)scale
string
比例尺(支持值:100万
、50万
、25万
、10万
、5万
、2.5万
、1万
、5000
)
- 返回:
string
图幅编号 - 错误:无效输入时抛出异常
calculateInRange(minLng, minLat, maxLng, maxLat, scale)
- 参数:
minLng
number
范围最小经度minLat
number
范围最小纬度maxLng
number
范围最大经度maxLat
number
范围最大纬度scale
string
比例尺
- 返回:
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万’))”