GeoJSON 边界范围不对?先检查坐标顺序和投影
GeoJSON 图层跑到海里、覆盖半个地球,或者完全看不到时,不要第一时间怀疑地图样式。很多问题都来自数据本身:bounds 异常、坐标顺序写反、投影不对,或者某一个离群点把范围拉大。
用浏览器本地的 GeoJSON 地球查看 先预览,可以在接入生产地图前看到 feature 数量、geometry 类型、坐标数量和大致边界范围。
先看 bounds
bounds 会概括数据里的最小和最大经纬度,是最快的 sanity check。
比如一个城市配送数据,理论上只应该覆盖一个城市。如果它的 bounds 覆盖了北美、欧洲和大海,大概率有问题。哪怕只有一个坏坐标,也可能把整体范围拉得很大,让正常要素看起来像消失了。
重点看:
- 最小经度
- 最大经度
- 最小纬度
- 最大纬度
- 是否有坐标接近
0,0 - 是否有值超出合法经纬度范围
常见地理经度范围是 -180 到 180,纬度范围是 -90 到 90。
检查坐标顺序
GeoJSON 的位置坐标是经度在前、纬度在后。官方标准 RFC 7946 以十进制度地理坐标描述 GeoJSON。Mapbox 的 GeoJSON glossary 也明确说明,第一个元素是 longitude,第二个元素是 latitude。
也就是说,纽约的位置应该这样写:
[-73.935242, 40.73061]
而不是这样:
[40.73061, -73.935242]
如果把顺序写反,点位可能跳到另一个大陆;如果纬度位置收到了超过 -90..90 的数字,还可能直接校验失败。
检查投影假设
GeoJSON 通常预期使用 WGS84 经纬度坐标。如果你的数据来自投影坐标系、CAD、本地网格或 Web Mercator 米制坐标,数字就不一定能直接当经纬度用。
投影问题常见表现包括:
- 坐标值远大于
180或90。 - 要素离预期国家很远。
- fit bounds 后图层消失。
- 所有点堆在奇怪位置。
- 路线突然跨越整个世界。
如果坐标值看起来像米,而不是十进制度数,就要先做投影转换,再把它当普通 GeoJSON 预览。
找一个坏要素
不要一看到 bounds 异常就认为整个文件都错了。很多时候只有一个点、一个 feature 或一段导出数据异常。
可以按这个顺序缩小范围:
- 先预览一小段样本。
- 把文件按区域或 feature 分组。
- 分别检查每组 bounds。
- 找到把范围异常拉大的 feature。
- 检查这个 feature 的坐标和 properties。
这个过程通常比反复改地图样式、换底图或调缩放级别更快。
例子:城市点位突然覆盖全世界
假设你有一个门店点位文件,理论上都在同一个城市,大多数坐标接近 [-73, 40]。但 bounds 里突然出现经度 0、纬度 0,地图缩放后把几内亚湾也包含进来了。这通常表示某个 feature 的缺失值被导出成了 0,0,或者测试占位点混进了真实数据。
另一种常见情况是顺序写反。坐标 [40, -73] 对人来说可能像“纬度,经度”,但 GeoJSON 会把它读成经度 40、纬度 -73。文件语法没错,地理位置却完全错了。
不要用样式掩盖数据问题
预览坏了以后,很多人会先改 zoom、center、颜色、透明度或底图。但如果 bounds 本身是错的,样式只能暂时让画面好看一点,不能解决后续问题。
错误 bounds 会影响自动缩放、搜索、聚合、截图、导出和下游分析。应该先修坐标,再调样式。样式是最后一步,不应该是主要排查工具。
团队交接 GeoJSON 时,最好把坐标来源一起写清楚:是 GPS 采集、后端接口、GIS 导出,还是 CAD 或其他投影数据转换而来。如果来源不清楚,接收方很难判断应该直接预览,还是先做投影转换和字段清洗。
FeatureCollection 结构也要看
合法 JSON 不等于合法 GeoJSON。最外层应该是 FeatureCollection、Feature 或 geometry 对象。如果是 FeatureCollection,features 应该是数组。如果某个 Feature 有 properties 但没有 geometry,查看器可能能统计到它,但画不出任何形状。
Polygon 还要检查 ring 的嵌套和闭合。多边形结构错误时,看起来也可能像 bounds 或渲染问题。
发布前安全流程
把 GeoJSON 接入网站、仪表盘或客户地图前,可以按这个顺序:
- 先本地预览,避免上传私有数据。
- 检查 feature 数量和 geometry 类型。
- 检查 bounds。
- 确认坐标是经度在前、纬度在后。
- 确认坐标是 WGS84 十进制度。
- 查找离群点。
- 最后再调样式和图层配置。
一句话总结
GeoJSON bounds 不对时,先检查经纬度顺序、合法坐标范围、投影假设和离群 feature。浏览器本地预览可以先判断问题是否在数据本身,避免把时间浪费在地图渲染器或样式配置上。