基于AutoLISP实现从邮编获取英国国家格网参考的技术咨询
英国邮编转国家格网参考的CAD脚本实现方案
一、格网前缀(两位字母)计算方法
英国国家格网的两位字母前缀完全可以通过你已有CSV里的Easting和Northing计算得出,无需依赖邮编前缀关联:
- 英国国家格网的坐标范围为Easting 0-700000米,Northing 0-1300000米
- 整个格网先划分为25个500km×500km的大正方形,每个对应一个字母(A-Z排除I);每个大正方形再拆分为100km×100km的小正方形,同样用A-Z排除I的字母标识,两者组合就是两位前缀
- 核心计算逻辑:
- 取整后的Easting除以500000,得到0或1,对应横向大字母(0=E,1=N);Northing除以500000,得到0-2,对应纵向大字母(0=S,1=T,2=U)
- 用
(Easting % 500000)/100000得到0-9,对应小正方形横向字母(0-4=A-E,5-9=F-J,排除I);(Northing % 500000)/100000得到0-9,对应纵向小字母,两者组合为前缀第二位 - 把上述字母映射表直接写死在脚本里即可,无需额外数据
二、CSV数据处理的性能优化
不用拆分多个CSV,直接把整个CodePoint-Open数据集加载到内存字典:
- AutoLISP中用
dictcreate创建哈希字典,将邮编作为键,对应的Easting、Northing作为值 - 一次性读取CSV所有行并拆分存入字典,1万+行数据在AutoLISP中加载速度极快,完全不会有性能问题
- 后续查询直接通过邮编键取值,响应速度毫秒级
三、AutoLISP调用API的可行性
完全可行,但没必要:
- 英国地形测量局有官方API可实现邮编转格网参考,但需要申请密钥,且依赖网络,还有调用次数限制
- 你已经有本地数据集,本地处理比API调用更稳定、更快,无需依赖网络,也没有额外成本
- 若非要用API,AutoLISP可通过
(vlax-create-object "MSXML2.XMLHTTP")发送HTTP请求,解析返回的JSON/XML数据,但需要处理认证和解析逻辑,步骤比本地处理繁琐很多
四、具体实现步骤
- 编写AutoLISP函数读取CSV文件,将邮编、Easting、Northing存入内存字典
- 编写前缀计算函数,输入Easting和Northing,返回两位字母前缀
- 编写主函数:接收用户输入的邮编,从字典取出Easting和Northing,计算前缀,再将Easting、Northing转换为格网参考的数字部分(取前5位,对应示例中的14584和06989)
- 在CAD命令行输出结果,或直接在图纸上标注
内容的提问来源于stack exchange,提问作者BlvckSZN
相关产品推荐
相关产品推荐

