Kann man für eine Datenbank eine Boundinbox definieren, und die gesamten Elemente die darin enthalten sind eine neue datenbank speichern?
ich vermute nicht…
Ansonsten…
Ist es möglich auf eine Tabelle eine Boundingbox anzuwenden, und diese Ergebnisse in eine neue Tabelle zu speichen? Oder ist es besser eine View zu erstellen?
Wenn Ja, wäre mir ein kleines Beispiel hilfreich!
Ansonsten: das, was als Select geht, kann auch als VIEW-Definition dienen. Und: ein Beispiel von dem, was Du vorhast, wäre praktisch, um zu verstehen, was Du willst.
Postscript? wie ist diese Antwort zu verstehen?
Ich hab mich ja extra ins PostGIS-Unterverzeichnis gepostet… oder?
Im speziellen interessieren mich räumliche Abfragen…
Die räumlichen Funktionen von PostGIS bieten die Möglichkeit, eine Boundingbox zu definieren. Jedoch würde ich gerne wissen wie ich am besten eine View erstelle, in der alle Daten einer Tabelle gespeichert werden, welche sich innerhalb der definierten Boundingbox befinden. Oder ob es sogar möglich ist diese Boundingbox über die gesamte Datenbank anzuwenden.
Ein Beispiel meinerseits zum Verständnis:
In einer (räumlichen)Datenbank befinden sich Straßendaten eines ganzen Landes, jedoch ist man nur an den Straßendaten einer bestimmten Stadt interessiert. -> eine Stadt kann mit einer Boundingbox eingegrenzt werden, das heißt alle Daten, die innerhalb dieser Boundingbox liegen, sollten in einer View gespeichert werden.
Ich hoffe, dass ich mich nun konkreter ausgedrückt habe, und würde mich über Antworten von PostGIS Nutzern freuen!
Danke,
Peter
zu 1.: Das geht schon, aber warum sollte man das tun?
zu 2.: Ja das geht auch. Der Pseudocode unten sollte weiterhelfen, die Suche nach den korrekten Schreibweisen in der Doku überlasse ich dem geneigten Leser zur Übung
select st_bbox(collect(the_geom)) from <meine_Tabelle> where Bla=blubb group by irgendwas
Ob ein View besser ist kommt drauf an. Wenn sich deine Boundingbox entsprechend des Tabelleninhalts dynamisch oft ändert ist ein View sinnvoll. Andernfalls kann eine fest erstellte Boundingbox schneller sein wenn man oft darauf zugreifen muß. In PostGIS 1.4 gibt es dann ‘prepared Geometrys’, die sollten einen View mit Geometrien gehörig beschleunigen können.
Das bringt mir das gewünschte Ergebnis… @gisman: Ich wäre aber auch in deiner Abfrage (Pseudocode) interessiert. Das hat bei mir irgendwie nicht geklappt…
Das war ja auch als Anregung gedacht, aus dem hohlen Bauch und der Hüfte und ohne Handbuch geschossen. Nächste Woche hab ich wieder ein bisschen mehr Zeit zum im Handbuch nachschlagen.
Kleine Korrektur: Der PostGIS-Befehl zur Erstellung einer BoundingBox heist ST_Envelope. Dabei ist es wohl egal, welche Geometrien da reingefüttert werden, das von dir verwendetet ST_MakeBox braucht halt explizit die Punkte, die du selbst bestimmen musst.
Somit ergibt sich:
select st_envelope(collect(the_geom)) from <meine_Tabelle> where Bla=blubb group by irgendwas
Ob das ‘collect’ notwendig ist, must du ausprobieren, es dient nur dazu, die Geometrien nach Attributen zu gruppieren und daraus eine Collection zu erzeugen. Eventuell reicht auch
select st_envelope(the_geom) from <meine_tabelle>
wenn man eine Boundingbox über alle Geometrien haben will.