Pregunta

PostgreSQL admite una variedad de tipos geométricos fuera de cuadro, junto con muchos operadores y índices GiST que parecen ofrecer indexación espacial de datos.

Y luego también está PostGIS , que es una extensión de PG.

¿Cuál es la diferencia entre el soporte espacial incorporado en PG y PostGIS?

Si mi aplicación necesita almacenar coordenadas geográficas (puntos, áreas, polígonos) y luego realizar consultas de manera eficiente (como punto en polígono, intersección de polígonos), ¿necesito PostGIS o puedo usar el (posiblemente) más conveniente? y sintaxis / tipos de datos integrados más simples?

¿Fue útil?

Solución

Primero, me gustaría aclarar los índices GiST: GiST es en realidad un marco para crear índices para nuevos tipos de datos, no un esquema de indexación particular en sí mismo. Este marco se usa para los tipos geométricos que vienen con Postgres, pero también se usa para un índice de similitud de texto de coincidencia de trigramas en columnas de texto estándar y, por supuesto, lo usan los esquemas de indexación de muchos paquetes externos, entre los que podemos número PostGIS.

Si los tipos de datos geométricos estándar funcionarán para usted o si necesita PostGIS depende completamente de su aplicación.

PostGIS almacena datos geométricos en una columna de tipo "geometría"; en esto puedes almacenar datos más o menos arbitrarios (puntos, círculos, polígonos, lo que tengas). La indexación es rápida y bastante sofisticada: puede hacer cosas como la indexación con pérdida utilizando cuadros delimitadores para formas complejas que de otro modo no se pueden indexar de manera razonable. Se admiten diferentes sistemas de referencia espacial, con conversión automática de los resultados de las consultas. PostGIS también es compatible con los formatos OpenGIS estándar de la industria, que pueden ayudar a compartir datos con otros sistemas.

En contraste, el conjunto de tipos geométricos internos y sus índices es mucho menos sofisticado. No hay un verdadero "genérico" tipo de geometría; en su lugar, debe elegir que el tipo de columna sea un punto, una línea, un círculo, un polígono o lo que tenga; para combinaciones, probablemente tendrá que usar varias columnas. La indexación no es tan buena; no se pueden indexar tantos tipos diferentes de formas (aunque podría agregar soporte para cuadros delimitadores mediante el uso de una columna separada para ellos y generar los cuadros delimitadores manualmente) y los índices probablemente no sean tan rápidos en algunas situaciones. Por otro lado, si los tipos geométricos internos satisfacen sus necesidades, obtiene la ventaja de que su aplicación es más fácil de transportar a otros sistemas que tienen Postgres pero no PostGIS instalado.

Mi consejo sería jugar con los tipos geométricos internos y ver qué tan bien funciona para usted; Si comienza a tener problemas, pruebe PostGIS.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top