进阶 postgis.net 2026-10-09 21:31:24 · 0 阅读
第26章 应使用 geometry 还是 geography 类型?
使用 geometry 还是 geography 类型?
geography 类型对于处理全球范围的数据、以及不打算深入研究投影坐标系统的用户来说非常方便。但是,在椭球体上计算非常昂贵,因此许多查询使用 geography 类型会比 geometry 类型更慢。
此外,由于球面计算颇为复杂,geography 类型仅直接实现了部分功能。具体来说,以下空间函数直接在球面/椭球体上进行计算,并在可能时利用空间索引:
ST_Area ST_Azimuth ST_CoveredBy ST_Covers ST_DWithin ST_Distance ST_Intersects ST_Length ST_Perimeter ST_Project ST_Segmentize
geometry 类型直观易懂,代表的是笛卡尔平面上的数据。PostGIS 中所有的矢量函数都作用于 geometry。如果数据没有预设,你需要为其选择一个平面“空间参考系统”,但这样一来,所有计算都会非常简单,运行速度也将远快于 geography。
如果你的数据可以放入平面坐标系统(即并非真正具有全球范围),你应该考虑使用 geometry 而不是 geography。