¿Cuál es el propósito de PostGIS en PostgreSQL?

43

PostgreSQL ya admite tipos de datos espaciales, operadores e indexación.

¿Qué proporciona PostGIS exactamente que hizo necesario existir como una extensión de PostgreSQL?

¿Por qué no usamos la funcionalidad espacial de PostgreSQL?

    
pregunta Zeruno 06.01.2017 - 00:59

3 respuestas

78

Si vuelves a enrollar el universo a principios de 2001 y no solo dejas que los inventores de PostGIS vean el futuro, sino que también deja que el PSC de PgSQL vea el futuro, quizás PostGIS sea una serie de parches en PgSQL. Pero como mínimo, si hubiéramos empezado como parches a core, lo primero que habríamos encontrado es:

  • las áreas principales de PgSQL no admiten agujeros, pero el modelo GIS realmente quiere agujeros, ¿podemos cambiar eso?

Y el núcleo PgSQL habría dicho: "no, por supuesto que no, las áreas tienen una semántica bien entendida y no podemos hacer cambios al revés como ese".

Como desarrolladores no centrales, PostGIS pudo eliminar los lanzamientos mensuales y semestrales durante varios años, mientras que el núcleo de PgSQL avanzaba con los lanzamientos anuales y más largos. También pudimos agregar las funciones que queríamos, siempre que tuviéramos derechos de compromiso en nuestro proyecto, pero obtener derechos de confirmación en PgSQL lleva mucho tiempo.

Para cuando PostGIS estaba demostrando suficiente valor externo que PgSQL core miró y se dijo a sí mismos "eh, hubiera sido bueno tenerlo en el núcleo como una característica adicional", ya había tanto código de un estándar tan diferente y el estilo de PgSQL (por no mencionar bajo una licencia incompatible) de que la idea de fusión no era realmente posible.

En cambio, PostGIS se ha convertido en el ejemplo canónico de una extensión compleja realmente grande que ayuda a que PgSQL siga siendo modular y extensible. "Cómo afectará esto a algo como PostGIS" es una pregunta que se hace a menudo cuando el PgSQL central evalúa algún cambio. Esto también es algo bueno, tal vez no sea tan bueno como que PostGIS sea parte del núcleo, pero es lo suficientemente bueno.

Hay otras razones, como la larga lista de dependencias que PgSQL core hubiera odiado ver, la menor consistencia del código y la limpieza de la API, que habrían desesperado de mejorar, y así sucesivamente. Incluso en la concepción, PostGIS era una bola de pelo demasiado grande para que PgSQL la tragara de un bocado.

    
respondido por el Paul Ramsey 06.01.2017 - 01:24
31

Eso simplemente no es cierto, PostgreSQL no admite tipos de datos espaciales. Admite tipos geométricos. Estos están perfectamente bien para algunas cosas, pero son totalmente separado de los sistemas de coordenadas del mundo real. Tipos nativos

Actualizar

En cuanto a la pregunta del índice, está en las Preguntas frecuentes

  

¿Por qué no se admiten los índices de PostgreSQL R-Tree?

     

Las primeras versiones de PostGIS utilizaban los índices de PostgreSQL R-Tree. Sin embargo,   Los R-Trees de PostgreSQL se han descartado por completo desde la versión 0.6,   y la indexación espacial se proporciona con un esquema R-Tree-over-GiST.

     

Nuestras pruebas han demostrado la velocidad de búsqueda de R-Tree y GiST nativos   comparable. Los árboles R nativos de PostgreSQL tienen dos limitaciones que hacen   indeseables para su uso con características GIS (tenga en cuenta que estas   Las limitaciones se deben al actual R-Tree nativo de PostgreSQL   implementación, no el concepto de R-Tree en general):

     
  • Los índices de R-Tree en PostgreSQL no pueden manejar características que son más grandes que 8K de tamaño. Los índices GiST pueden, utilizando el truco "con pérdida" de sustituir el cuadro delimitador por la característica en sí.

  •   
  • Los índices de R-Tree en PostgreSQL no son "nulos seguros", por lo que generar un índice en una columna de geometría que contenga geometrías nulas fallará. [Los índices GiST son seguros para nulos]

  •   
    
respondido por el Evan Carroll 06.01.2017 - 01:20
6
  

PostGIS es un extensor de base de datos espacial para    PostgreSQL base de datos objeto-relacional. Agrega soporte para   objetos geográficos que permiten que las consultas de ubicación se ejecuten en SQL.

SELECT superhero.name
FROM city, superhero
WHERE ST_Contains(city.geom, superhero.geom)
AND city.name = 'Gotham';
     

Además del conocimiento de ubicación básico, PostGIS ofrece muchas características   Rara vez se encuentra en otras bases de datos espaciales de la competencia como Oracle   Localizador / espacial y SQL Server. Consulte Lista de características de PostGIS para   más detalles.

Lista de características de PostGIS también expande esas capacidades:

  

PostGIS agrega tipos adicionales (geometría, geografía, raster y otros) a la base de datos PostgreSQL . También agrega funciones, operadores y mejoras de índice que se aplican a estos tipos espaciales. Estas funciones, operadores, enlaces de índice y tipos adicionales aumentan la potencia del sistema de base de datos PostgreSQL DBMS, lo que lo convierte en un sistema de gestión de bases de datos espaciales rápido, con muchas funciones y robusto.

     

Lista de funciones

     

La serie PostGIS 2+ proporciona:

     
  • Funciones de procesamiento y analíticas para datos vectoriales y raster para empalmar, cortar en dados, transformar, reclasificar y recopilar / unir   con el poder del álgebra de mapas ráster SQL para trama de grano fino   procesamiento
  •   
  • Reprusión espacial Funciones de SQL que se pueden llamar para datos vectoriales y rasterizados Soporte para importar / exportar vectores de shapefile ESRI   datos a través de la línea de comandos y herramientas empaquetadas GUI y soporte para más   formatos a través de otras herramientas de código abierto de terceros
  •   
  • Línea de comando empaquetada para importar datos rasterizados desde muchos formatos estándar: GeoTiff, NetCDF, PNG, JPG

  •   
  • Representación e importación de funciones de soporte de datos vectoriales para formatos textuales estándar como KML, GML, GeoJSON, GeoHash y WKT usando SQL   Procesando datos raster en varios formatos estándar GeoTIFF, PNG, JPG,   NetCDF, por nombrar algunos usando SQL

  •   
  • Funciones invocables de raster / vector SQL para la extrusión de valores de píxeles por región geométrica, estadísticas de ejecución por región, recorte   rásteres por una geometría, y vectorización de rásteres compatibilidad con objetos 3D,   índice espacial, y funciones Soporte de topología de red Packaged Tiger   Loader / Geocoder / Reverse Geocoder / utilizando datos del Tigre del Censo de EE. UU.

  •   

Además, a los puntos / partes mencionados ya en esta publicación. Me gustaría agregar como se menciona en el sitio web de PostGIS Cómo funciona

  

Como PostGIS está en C, puede hacer uso de otras bibliotecas en C y   C ++, y lo hace generosamente. PostGIS depende de:

     
  • GEOS para muchos algoritmos de procesamiento de geometría
  •   
  • Proj.4 para funciones de re-proyección de coordenadas
  •   
  • GDAL para el procesamiento de ráster y el soporte de formato
  •   
  • LibXML2 para el análisis de XML
  •   
  • JSON-C para el análisis JSON
  •   
  • SFCGAL para soporte 3D ampliado y algoritmos de geoprocesamiento adicionales
  •   
    
respondido por el whyzar 06.01.2017 - 17:57

Lea otras preguntas en las etiquetas