唯杰地图 logo唯杰地图
VJMAP
EN

坐标转换总览

vjmap/references/coord/overview.md 3.5 KB47 行
原文

本文回答:vjmap / vjmapext 所有坐标相关概念的入口和索引。 跨 SDK(含 vjmap3d 世界坐标、vjcad WCS/UCS)的坐标空间决策、覆盖物该传哪个空间的坐标、查询结果字段坐标语义与常见反模式,本目录已收录相关结论精华。

核心概念一张图

   CAD 几何坐标 (笛卡尔,真实数值,单位米)
        │
        │   prj.toLngLat  /  map.toLngLat
        ▼
   渲染经纬度 (vjmap 底层 WebGL 渲染用,范围 -180..180, -85.0511..85.0511)
        │
        │   仅当底图是互联网地图时,此经纬度才有地理含义
        │
        ▼
   实际地理坐标 (WGS84 / GCJ02 / BD09)

子项索引

子文件 回答什么
concepts 几何坐标 / 渲染经纬度 / 真实经纬度 / 墨卡托 / UCS / WCS / 四参数的心智模型 + 空间判断速查
projection-api GeoProjection / LnglatProjection / map.toLngLat / fromLngLat / project / unproject / 长度换算 API 一览 + 原地修改陷阱
overlay-coords 覆盖物坐标矩阵:Marker/Symbol/GeoJSON 吃渲染经纬度,CircleFill/MarkerCluster/DivOverlay/SvgOverlay 吃 CAD 坐标
query-coords 查询结果字段坐标语义:.geom=渲染经纬度 / .geojson=原始墨卡托或 CAD / envelop=墨卡托 WKT / points·bounds=CAD;includegeom/realgeom/toMapCoordinate 行为
gis-transforms WGS84 / GCJ02 / BD09 / EPSG 之间互转(vjmap.transform.convert / svc.cmdTransform / proj4)
internet-basemap-align 互联网底图(天地图 / 高德 / 百度)上叠加 CAD 的自动/四参数对齐;srs/crs/tileCrs 三 API 语义差异
cad-mapper mapext CoordMapper 的 API + 实体"投影源空间"坐标规则 + 查询→实体管线 + fx 坐标字段
cad-epsg 如何从 CAD 图的坐标值反推它属于哪个 EPSG(北京 54 / 西安 80 / CGCS2000 + 三度带/六度带、带号/不带号变体)

四条总则

  1. 渲染经纬度是底层绘制用的坐标:只有以互联网地图为底图时才是真正的经度纬度;以 CAD 为底图时只是用来解决"大坐标数值超出渲染器可处理范围"的技术需要。
  2. 几何计算用 CAD 坐标,绘制时转经纬度:相交、插值、偏移等非线性运算若在经纬度空间做会累计误差。
  3. 保存到后台必须用 CAD 坐标:CAD 图可能因后续更新范围发生变化,经纬度会对不上;CAD 坐标永远精确。
  4. map.attach(svc, prj) 之后,map.toLngLat = prj.toLngLat:两者可互换使用。

主题级高频陷阱

  1. 把渲染经纬度当真实经纬度打印/上报 → 永远不对,因为它是 CAD 范围映射的结果。见 concepts。
  2. 高德 / 百度上叠 CAD 画面整体偏移 → GCJ02/BD09 加偏未做或 EPSG 选错。见 internet-basemap-align。
  3. 同一坐标被转两次:map.toLngLat 输出再喂给 toLngLat,或已转 GCJ02 的坐标再走一遍 WGS84→GCJ02 → 双重偏移。每个变量记清当前所在坐标系。
  4. 覆盖物传错坐标空间(最高频)→ Marker/GeoJSON 要渲染经纬度、CircleFill/MarkerCluster 要 CAD 坐标;查 overlay-coords 矩阵。