地理空间计算 可视化实验室

用交互式 SVG 呈现坐标系投影、空间索引、空间查询、路径规划、瓦片金字塔等 GIS 核心技术。八个模块,纯原生实现。

zero-deps HTML / CSS / JS + SVG requestAnimationFrame prefers-reduced-motion
MODULE 01

坐标系与地图投影

WGS84 球面坐标与 Web Mercator 投影的对比。Mercator 保角但面积随纬度放大,纬度越高变形越大。拖动纬度滑块观察单位圆的形变。

projection.svg
WGS84 球面 Web Mercator 单位圆(地物) 形变放大

投影公式

Web Mercator (EPSG:3857) 把经纬度映射为平面坐标,纬度方向使用 y = R·ln(tan(π/4+φ/2))。它保角(局部角度正确),但不保面积——

scale(φ) = 1 / cos(φ) area_scale(φ) = 1 / cos²(φ)

在赤道(φ=0°)形变为 1,在纬度 60° 放大 2 倍,85° 放大 11.5 倍,趋近 90° 时趋于无穷。这也是 Web 地图在两极裁切的原因。

纬度 φ
0°
线性放大
1.00
面积放大
1.00
投影
Mercator
MODULE 02

空间索引结构

R-Tree 用层次包围盒加速查询;GeoHash 用一维字符串编码二维区域,前缀共享即邻近;H3 用六边形离散全球网格。切换索引并执行区域查询。

spatial-index.svg
命中点 索引节点 查询窗 未命中

R-Tree

R-Tree 把空间对象按 MBR(最小外接矩形)分组,父节点包含子节点 MBR 的并。区域查询只需对相交的 MBR 递归下探,避免遍历全部点。

总点数
—
命中数
—
访问节点
—
剪枝率
—
MODULE 03

空间查询操作

KNN 最近邻、范围查询、缓冲区(Buffer)分析是 GIS 三大基础查询。点击地图设置查询点,切换模式并调整参数。

spatial-query.svg
查询点 KNN 命中 范围/缓冲 普通点

KNN 查询

KNN 查找距离查询点最近的 K 个对象。朴素法 O(n),借助空间索引(如 R-Tree 的 Best-First 搜索)可达 O(log n) 级别。

查询模式
KNN
参数
K=3
命中
—
扫描
—
MODULE 04

地理编码与逆地理编码

正向编码:地址文本 → 经纬度。逆向编码:经纬度 → 最近地址。模糊匹配用编辑距离(Levenshtein)容忍拼写错误。输入地址进行匹配。

geocoding.svg
最佳匹配 候选 逆编结果 其他地址

地理编码

输入地址文本,系统返回最匹配的位置及其经纬度。模糊匹配允许 1–2 字符差异,例如「天安门」可匹配「天安门广场」。

地址数
—
最佳相似度
—
候选数
—
模式
正向
MODULE 05

最短路径算法

Dijkstra 无启发地均匀扩展;A* 用到终点的估计距离引导搜索;Contraction Hierarchies 预先收缩节点、查询时走捷径。对比三者搜索范围。

routing.svg
起点/终点 已探索 边界 最短路径

Dijkstra

Dijkstra 以起点为中心逐层扩展,保证得到精确最短路径,但搜索范围大。点击“运行”观察算法扩展过程。

算法
Dijkstra
访问节点
—
路径长度
—
探索率
—
MODULE 06

瓦片金字塔与 LOD

XYZ 与 TMS 两种瓦片索引:XYZ 的 Y 轴向下,TMS 的 Y 轴向上。每加深一级缩放,瓦片数 ×4。切换层级与方案观察金字塔结构。

tile-pyramid.svg
当前层瓦片 父层 选中瓦片 LOD 命中

XYZ 方案

XYZ(Google/OSM 标准):原点在左上,Y 向下递增;TMS:原点在左下,Y 向上递增。两者瓦片内容相同,仅 Y 坐标翻转:y_tms = 2^z − 1 − y_xyz。

缩放 z
2
瓦片数
4
方案
XYZ
总瓦片(0..z)
5
MODULE 07

空间聚合与聚类

热力图按密度叠加核函数;DBSCAN 按密度连通聚类,能发现任意形状簇并标识噪声。调整 ε 与 MinPts 观察簇结构变化。

clustering.svg
簇 1 簇 2 簇 3 噪声

DBSCAN

DBSCAN:若某点 ε 邻域内至少有 MinPts 个点则为核心点,核心点密度相连构成一簇;非核心且无核心邻居者为噪声。无需预设簇数。

模式
DBSCAN
簇数
—
噪声点
—
总点数
—
MODULE 08

矢量瓦片 vs 栅格瓦片

栅格瓦片是预渲染图片,放大即马赛克;矢量瓦片(MVT)传输几何与属性,浏览器按样式实时绘制,任意缩放保持清晰。拖动缩放对比。

vector-raster.svg
矢量 (MVT) 栅格 (PNG) 道路 建筑

矢量瓦片

MVT 用 Protocol Buffers 编码简化几何(线/面/点)与图层属性,客户端按样式(如 Mapbox GL)实时着色、可旋转可换肤;栅格瓦片体积大、不可重设样式,但渲染开销低。

缩放
1.0×
矢量清晰度
100%
栅格像素
—
显示
对比