GeoData Lab / 实验手记
每个几何判断,都带上前提。
复用结果之前,先明确坐标、拓扑与测量范围。
WGS84,经度在前
输入遵循 RFC 7946 的经纬度约定。本版接受 FeatureCollection 中的二维 Point、Polygon、MultiPolygon 和 LineString。其他坐标系需要先转换;旧式 crs 成员会被拒绝。高程、跨日期变更线和全球几何暂不支持。
图形按数据自动缩放,采用局部等距圆柱视图,并按中心纬度修正横向比例。这是没有底图瓦片的坐标图;点面判断将经纬度中的线段按平面处理,因此每个坐标轴的范围限制为 30°。它不用于面积、导航或地籍测量。
集合、要素和几何级别的 crs 成员都会被拒绝,包括 null 或标为 WGS84 的成员。请先转换坐标;核心不会猜测或转换 CRS。看似合理的轴序颠倒与坐标系误标,无法仅靠数值范围可靠发现。
边界与拓扑
位置判断使用射线法,并对点到线段采用约 10⁻¹⁰ 度的容差。外环和孔洞边缘均属于边界,由开关决定边界是否计入命中。重叠区域允许一个点产生多条关联。
校验会拒绝未闭合或零面积环、自交、相邻重复顶点、跨出外环的孔洞、相交或嵌套孔洞、重复要素 ID 和无效坐标。这是在支持范围内的校验,不是全部 GeoJSON 或 OGC 几何规则的完整实现。
MultiPolygon 分量连同边界必须严格分离;即使 GEOS 判为有效,本版也不支持点接触。严格位于另一分量孔洞内的小岛可以接受。每个点对每个区域要素 ID 最多匹配一次;不同要素之间允许重叠。参见独立 oracle 与近边缘反例。
轨迹复核,不是轨迹真值
距离使用球面 haversine 公式,半径取 6,371,008.8 米;速度为距离除以时间差。这里将地球近似为球体,没有道路网络或椭球反解。
孤立跳点候选需同时满足:相邻两段超阈值,而跨过该点的连接速度未超阈值。相邻的多个候选不会被自动移除,端点始终保留。预览只是供复核的建议结果,不覆盖输入,也不证明轨迹已经正确。
输入与输出范围
浏览器输入最多 2 MB、10,000 个要素、20,000 个坐标、200 个面分量;每个 MultiPolygon 最多 20 个分量,每分量最多 20 个环,每环最多 600 个坐标。关联最多计算 1,000,000 个点与分量候选对,最多输出 100,000 个匹配对;更大的数据请按区域拆分。表格最多显示 500 行。
计算在当前标签页完成。网站会加载静态资源,没有数据上传接口、地图服务调用、统计 SDK 或持久文件存储。需要保留结果时请下载;每次发布前都会使用固定测试集检查几何计算与合成输入。
工作台的精确判断数表示点与区域的谓词调用次数,不是环边操作数或复杂度上界。MultiPolygon 整体包围盒可能纳入分量间隙。练习均用合成坐标,导入数据只在当前标签页处理。主页与 GeoData 创作源码保持私有;浏览器交付的 JavaScript 可以阅读。
继续阅读
- RFC 7946 · The GeoJSON Format · §3.1.1 Position, §3.1.7 MultiPolygon, §3.1.9 Antimeridian Cutting, §4 Coordinate Reference System
- Shapely 2.0.6 · covers / contains / validation · covers(A, Point) versus contains(A, Point)
- pyproj · Geod API · Geod.inv and ellps=WGS84