PostgreSQL supporta già tipi di dati spaziali, operatori e indicizzazione.
Cosa fornisce esattamente PostGIS che ha reso necessario esistere come estensione di PostgreSQL?
Perché non usiamo tutti solo la funzionalità spaziale di PostgreSQL?
PostgreSQL supporta già tipi di dati spaziali, operatori e indicizzazione.
Cosa fornisce esattamente PostGIS che ha reso necessario esistere come estensione di PostgreSQL?
Perché non usiamo tutti solo la funzionalità spaziale di PostgreSQL?
Risposte:
Se riavvolgi l'universo all'inizio del 2001 e non solo permetti agli inventori di PostGIS di vedere il futuro, ma permetti anche al PSC di PgSQL di vedere il futuro, forse PostGIS sarebbe una serie di patch su PgSQL. Ma come minimo, se avessimo iniziato come patch per core, la prima cosa che avremmo incontrato è:
E il core PgSQL avrebbe detto: "no, certo che no, le aree hanno un semantico ben compreso e non possiamo fare cambiamenti incompatibili come quelli precedenti".
Come sviluppatori non core, PostGIS è stato in grado di eliminare le versioni mensili e semestrali per un certo numero di anni, mentre il core PgSQL è andato avanti con versioni annuali e più lunghe. Siamo stati anche in grado di aggiungere qualsiasi funzionalità desiderassimo, ogni volta, poiché avevamo i diritti di commit nel nostro progetto, ma ottenere i diritti di commit in PgSQL richiede molto tempo.
Quando PostGIS stava dimostrando abbastanza valore esterno che il core di PgSQL si guardava e diceva a se stesso "eh, sarebbe stato bello avere nel core come funzionalità extra", c'era già così tanto codice di uno standard e uno stile così diversi da PgSQL (per non parlare di una licenza incompatibile) che l'idea di unire non era realmente possibile.
Invece, PostGIS è diventato l'esempio canonico di un'estensione davvero grande complessa che aiuta PgSQL a rimanere modulare ed estensibile. "In che modo questo avrà un effetto simile a PostGIS" è una domanda spesso posta dal core PgSQL che valuta alcuni cambiamenti. Anche questa è una buona cosa, forse non abbastanza carina come PostGIS fa parte del core, ma abbastanza buono.
Ci sono altri motivi, come il lungo elenco di dipendenze che PgSQL core avrebbe odiato vedere, la coerenza del codice generalmente inferiore e la pulizia dell'API che avrebbero disperato di migliorare, e così via. Anche al momento del concepimento, PostGIS era una palla troppo grande perché PgSQL potesse ingoiare in un boccone.
Semplicemente non è vero, PostgreSQL non supporta i tipi di dati spaziali. Supporta tipi geometrici. Questi sono perfettamente adatti per alcune cose, ma sono totalmente separati dai sistemi di coordinate del mondo reale. Tipi nativi
Per quanto riguarda la domanda sull'indice, è nelle FAQ
Perché gli indici R-Tree PostgreSQL non sono supportati?
Le prime versioni di PostGIS utilizzavano gli indici PostgreSQL R-Tree. Tuttavia, gli alberi R PostgreSQL sono stati completamente scartati dalla versione 0.6 e l'indicizzazione spaziale è fornita con uno schema R-Tree-over-GiST.
I nostri test hanno dimostrato che la velocità di ricerca di R-Tree e GiST nativi è comparabile. Gli alberi R nativi PostgreSQL hanno due limitazioni che li rendono indesiderabili per l'uso con le funzionalità GIS (si noti che queste limitazioni sono dovute all'attuale implementazione nativa di R-Tree PostgreSQL, non al concetto R-Tree in generale):
Gli indici R-Tree in PostgreSQL non sono in grado di gestire funzionalità di dimensioni superiori a 8 KB. Gli indici GiST possono, usando il trucco "lossy" di sostituire il riquadro di delimitazione con la funzione stessa.
Gli indici R-Tree in PostgreSQL non sono "null safe", quindi la costruzione di un indice su una colonna geometrica che contiene geometrie null avrà esito negativo. [Gli indici GiST sono null-safe]
PostGIS è un estensore di database spaziale per il database relazionale di oggetti PostgreSQL . Aggiunge il supporto per oggetti geografici consentendo l'esecuzione di query sulla posizione in SQL.
SELECT superhero.name FROM city, superhero WHERE ST_Contains(city.geom, superhero.geom) AND city.name = 'Gotham';
Oltre alla conoscenza di base della posizione, PostGIS offre molte funzionalità che raramente si trovano in altri database spaziali concorrenti come Oracle Locator / Spatial e SQL Server. Fare riferimento all'elenco delle funzioni di PostGIS per maggiori dettagli.
L'elenco delle caratteristiche di PostGIS espande anche queste funzionalità:
PostGIS aggiunge altri tipi (geometria, geografia, raster e altri) al database PostgreSQL . Aggiunge inoltre funzioni, operatori e miglioramenti dell'indice che si applicano a questi tipi spaziali. Queste funzioni aggiuntive, operatori, associazioni e tipi di indici aumentano la potenza del core DBMS PostgreSQL, rendendolo un sistema di gestione del database spaziale veloce, ricco di funzionalità e robusto.
Elenco delle caratteristiche
La serie PostGIS 2+ offre:
- Funzioni di elaborazione e analisi per dati vettoriali e raster per giunzioni, cubetti, morphing, riclassificazione e raccolta / unione con la potenza dell'algebra delle mappe raster SQL per l'elaborazione raster a grana fine
- Riproiezione spaziale Funzioni richiamabili SQL sia per i dati vettoriali che per quelli raster Supporto per l'importazione / esportazione di dati vettoriali di file di forma ESRI tramite sia gli strumenti impacchettati della riga di comando che della GUI e supporto per più formati tramite altri strumenti Open Source di terze parti
Riga di comando in pacchetto per l'importazione di dati raster da molti formati standard: GeoTiff, NetCDF, PNG, JPG
Rendering e importazione di funzioni di supporto di dati vettoriali per formati testuali standard come KML, GML, GeoJSON, GeoHash e WKT utilizzando SQL Rendering di dati raster in vari formati standard GeoTIFF, PNG, JPG, NetCDF, per citarne alcuni usando SQL
Funzioni SQL richiamabili senza soluzione di continuità raster / vettoriale per estrusione di valori di pixel per regione geometrica, esecuzione di statistiche per regione, raster di ritaglio di una geometria e vettorializzazione di raster Supporto di oggetti 3D, indice spaziale e funzioni Supporto di topologia di rete Packed Tiger Loader / Geocoder / Reverse Geocoder / utilizzando i dati US Census Tiger
Inoltre, ai punti / parti già menzionati in questo post. Vorrei aggiungere come indicato sul sito Web di PostGIS Come funziona
Poiché PostGIS è in C, può fare uso di altre librerie in C e C ++ e lo fa liberamente. PostGIS dipende da: