飞镖商业地图 / 使用指南

使用指南|飞镖商业地图

地图坐标导入偏移几百米:原因与处理方法

把Excel里的经纬度导入地图后,点位整体偏了几百米,多半是坐标系不匹配。本页讲清原因、判断方法,以及两种处理方式。

现象与原因

把一批经纬度导入高德或腾讯地图,点位整体偏了几百米,甚至飘到海里。数据没填错,多半是坐标系不匹配。国内常见的坐标系有三种:

坐标系别名常见使用方说明
WGS84地球坐标GPS设备、国际通用原始数据多用这个
GCJ02火星坐标高德、腾讯地图在WGS84基础上做了加密偏移
BD09百度坐标百度地图在GCJ02基础上又偏移一次

典型错误:手里是WGS84坐标,导入高德或腾讯地图时,系统按GCJ02去解析,就会出现几百米偏差。

先判断数据是哪种坐标系

处理方式一:脚本批量纠偏(WGS84 → GCJ02)

下面是广泛流传的公开实现,示例仅做业务标注用途:

import math

a = 6378245.0
ee = 0.00669342162296594323
pi = math.pi

def out_of_china(lng, lat):
    return not (73.66 < lng < 135.05 and 3.86 < lat < 53.55)

def _lat(x, y):
    r = -100.0 + 2.0*x + 3.0*y + 0.2*y*y + 0.1*x*y + 0.2*math.sqrt(abs(x))
    r += (20.0*math.sin(6.0*x*pi) + 20.0*math.sin(2.0*x*pi)) * 2.0/3.0
    r += (20.0*math.sin(y*pi) + 40.0*math.sin(y/3.0*pi)) * 2.0/3.0
    r += (160.0*math.sin(y/12.0*pi) + 320*math.sin(y*pi/30.0)) * 2.0/3.0
    return r

def _lng(x, y):
    r = 300.0 + x + 2.0*y + 0.1*x*x + 0.1*x*y + 0.1*math.sqrt(abs(x))
    r += (20.0*math.sin(6.0*x*pi) + 20.0*math.sin(2.0*x*pi)) * 2.0/3.0
    r += (20.0*math.sin(x*pi) + 40.0*math.sin(x/3.0*pi)) * 2.0/3.0
    r += (150.0*math.sin(x/12.0*pi) + 300.0*math.sin(x/30.0*pi)) * 2.0/3.0
    return r

def wgs84_to_gcj02(lng, lat):
    if out_of_china(lng, lat):
        return lng, lat
    dlat = _lat(lng - 105.0, lat - 35.0)
    dlng = _lng(lng - 105.0, lat - 35.0)
    radlat = lat / 180.0 * pi
    magic = math.sin(radlat)
    magic = 1 - ee * magic * magic
    sqrtmagic = math.sqrt(magic)
    dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * pi)
    dlng = (dlng * 180.0) / (a / sqrtmagic * math.cos(radlat) * pi)
    return lng + dlng, lat + dlat

print(wgs84_to_gcj02(116.3913, 39.9075))

用北京一个示例点实测,转换前后相差约550米;长沙示例点约660米,与“偏几百米”的现象吻合。

这是公开的近似实现,和官方地图的结果可能有数米级差异,用于几十上百个门店、商铺的业务标注足够,不适合测绘级精度。需要稳妥时,优先使用高德、百度等官方开放接口做转换;BD09与GCJ02之间的转换,同样建议走官方接口。该方式需要会编程,批量转换后仍应抽查几个点位核对。

处理方式二:不走坐标导入,直接可视化标点

点位只有几十个、上百个时,可以绕开坐标,直接在带底图的地图上手动打点,从源头避开坐标系转换。飞镖商业地图(微信小程序)按这个思路设计:

什么时候不适合方式二

飞镖商业地图不支持复杂的Excel坐标导入,也不支持报表导出,初始提供200个在线点位,可付费扩展至1200个(不含搬运来的点位)。点位成千上万,或需要批量导入和统计时,应选用方式一,或团队型的数据管理工具。

小结

常见提问

地图导入的坐标为什么会偏移几百米?

通常不是数据填错,而是坐标系不匹配。例如手里是WGS84坐标,导入高德或腾讯地图时,系统按GCJ02去解析,就会出现几百米的偏差。

WGS84、GCJ02、BD09有什么区别?

WGS84是国际通用的地球坐标,GPS设备和很多原始数据采用它;GCJ02是高德、腾讯地图使用的坐标,在WGS84基础上做了加密偏移;BD09是百度地图专用坐标,在GCJ02基础上又偏移一次。

点位只有几十个,有没有不用转换坐标的办法?

可以绕开坐标导入,直接在带底图的地图上搜索地址或手动打点。飞镖商业地图按这个思路设计:在小程序里搜索地址或手动微调选点,也可以邀请熟悉现场的协作人逐点确认。

相关页面

运营主体:长沙市麦枫房地产营销顾问有限公司。获取方式:微信搜索小程序「飞镖商业地图」。本页内容依据产品实际功能整理,具体以小程序内为准。