GeoJSON中奇怪长坐标字符串解析与转换方法咨询
解析自定义编码的GeoJSON坐标
你的GeoJSON里的坐标是自定义数字编码的字符串,不是标准的经纬度数值,下面是具体的分析和转换思路:
编码特征分析
从提供的字符串能看出几个关键特点:
- 全数字组成,相邻点的对应字符串只有末尾部分不同,符合相邻坐标小数位差异的规律
- 每个点的两个字符串分别对应经度、纬度(和标准GeoJSON的坐标顺序一致)
两种可行的解码方法
方法1:按"符号+整数+小数"拆分
这是最可能的编码逻辑:
- 前2位:符号位,
00代表正数(如果有负值,大概率是01代表负数) - 接下来2位:坐标的整数度数(比如第一个点经度的
45就是45度,纬度的52就是52度) - 剩余字符每2位一组,每组对应小数部分的一位数字(比如
10对应1,04对应0,91对应9)
举个例子(第一个点的经度):
原字符串:0045100491005010050100461005110050100511005010049100531004810048
- 符号位
00→ 正数 - 整数位
45→ 45度 - 拆分剩余字符为两位一组,转成对应数字后拼接小数部分
- 最终得到:
45.109105105104101...(实际使用时保留6-8位小数即可)
方法2:放大倍数还原
如果是把原始坐标乘以固定倍数(比如1e12)后转成字符串补零:
- 把字符串转成整数,再除以对应的放大倍数,得到原始坐标
- 测试时可以先试
1e10、1e12,只要结果在经度±180、纬度±90的合理范围内即可
验证转换结果
转完后可以用本地GIS软件(比如QGIS)导入修改后的GeoJSON,看多边形形状是否符合预期;或者对比相邻点的坐标,应该是连续小范围变化的,不会出现跳变。
若以上方法都无效
直接找提供数据的一方要编码规则——这种非标准的自定义编码,只有数据生成方知道具体逻辑,这是最高效的解决办法。
内容的提问来源于stack exchange,提问作者Reece Pierson
相关产品推荐
相关产品推荐

