polygon (POLYGON) 字典针对点是否落在多边形内的查询进行了优化,本质上属于“反向地理编码”查找。
给定一个坐标 (纬度/经度) ,它可以高效找出包含该点的多边形/区域 (从多个多边形组成的集合中,例如国家或区域边界) 。
它非常适合将位置坐标映射到其所在区域。
- DDL
- 配置文件
配置 Polygon 字典时,键必须是以下两种类型之一:
- 简单多边形。它是一个点数组。
- MultiPolygon。它是一个多边形数组。每个多边形都是一个二维点数组。该数组的第一个元素是多边形的外边界,后续元素表示需要从中排除的区域。
| Layout | Description |
|---|---|
POLYGON_SIMPLE | 朴素实现。每次查询都会线性遍历所有多边形,在没有额外索引的情况下检查是否包含该点。 |
POLYGON_INDEX_EACH | 为每个多边形单独构建索引,在大多数情况下都能快速完成包含关系检查 (针对地理区域做了优化) 。系统会在区域上叠加一个网格,并递归地将单元划分为 16 个相等部分。当递归深度达到 MAX_DEPTH,或某个单元穿过的多边形数量不超过 MIN_INTERSECTIONS 时,停止划分。 |
POLYGON_INDEX_CELL | 同样会使用上述相同选项创建网格。对于每个叶子单元,都会对落入其中的所有多边形片段构建索引,从而实现快速查询响应。 |
POLYGON | POLYGON_INDEX_CELL 的同义词。 |
points 表中的每个点找到包含该点的最小面积多边形,并输出所需的属性。
示例
你可以通过 SELECT 查询从多边形字典中读取列;只需在字典配置或相应的 DDL 查询中启用 store_polygon_key_column = 1 即可。
Query
Response