PostgreSQL支持各种geometric types开箱即用,以及许多几何operators和GiST indexes,它们似乎提供了数据的空间索引。
然后还有PostGIS,这是PG的扩展。
PG和PostGIS中的内置空间支持有什么区别?
如果我的应用程序需要存储地理坐标(点,区域,多边形)然后有效地进行查询(例如多边形点,多边形交叉点),我是否需要PostGIS或者我可以使用(可以说)更方便和更简单的内置数据类型/语法?
答案 0 :(得分:31)
首先,我想澄清GiST索引:GiST实际上是一个用于为新数据类型创建索引的框架,而不是任何特定的索引方案本身。这个框架碰巧用于Postgres附带的几何类型,但它也用于标准文本列上的三元组匹配文本相似性索引,当然也被许多外部包的索引方案使用,其中我们可以编号PostGIS。
标准几何数据类型是否适合您或您需要PostGIS完全取决于您的应用程序。
PostGIS将几何数据存储在“几何”类型的列中;在这里你可以存储或多或少的任意数据(点,圆,多边形,你有什么)。索引很快且非常复杂:它可以使用有限复杂形状的边界框来进行有损索引等操作,否则这些复杂形状不能以任何合理的方式进行索引。支持不同的空间参考系统,自动转换查询结果。 PostGIS还支持行业标准的OpenGIS格式,可以帮助与其他系统共享数据。
相比之下,内部几何类型及其索引的集合要复杂得多。没有真正的“通用”几何类型;相反,你必须选择让一个列的类型为点,线,圆,多边形或者你有什么;对于组合,您可能必须使用多个列。索引不是那么好;并不是可以索引很多不同类型的形状(尽管你可以通过为它们使用单独的列并手动生成边界框来添加边界框支持),并且在某些情况下索引可能不那么快。另一方面,如果内部几何类型满足您的需求,您将获得以下优势:您的应用程序更容易移植到其他具有Postgres但未安装PostGIS的系统。
我的建议是玩弄内部几何类型,看看它对你有多好;如果你开始遇到问题,请试试PostGIS。