Guten Tag,
erstmal vorweg: ich bin kein Experte für PGSQL oder GIS, habe mir jetzt aber einiges an Wissen angelesen und die Info die ich jetzt benötige ist für einen kurzen Proof-of-Konzept den ich ausarbeiten soll.
Es sieht so aus dass ich ene Tabelle habe welche unter anderem eine Geometry Spalte beinhaltet. Diese Tabell soll später Punkte welche überall auf der Welt verstreut sind beinhalten. Nun muss ich versuchen alle Punkte innerhalb eines bestimmten Umkreises(in metern) auszugeben (und schauen wie performant das Ganze ist).
Nach Lesen der PostGis Dokumentation und Newsgroup bin ich zum Entschluss gekommen dass ich dafür wohl SRID 2163 benötige. Daher habe ich meine tabelle damit umgewandelt:
select updategeometrysrid('positions', 'position', 2163);
select setsrid(position, 2163) from positions;
In Chapter 6 der Dokumentation habe ich dann gelesen dass ich wohl ST_DWithin(geometry, geometry, float)
dafür nutzen könnte.
Meine Query sieht zur Zeit so aus:
SELECT AsText(position) FROM positions
WHERE st_dwithin(position, GeomFromText('POINT(46.95757 11.917551)',2163),1)
Die zweite Position wird später dann dynamisch in die Query integriert. Nun ist es aber so dass diese Query
alle Zeilen zurückgibt, auch wenn ich den Float erhöhe oder erniedrige. Auserdem ist mir nicht ganz klar ob
dieser Float meter oder km oder was auch immer sind.
Auch gesehen habe ich die Funktion ST_distance_sphere(point, point). Nun gibt mir diese aber föllig falsche Werte
zurück. Ich bekomme 1.000045 , ich weiss aber dass die 2 Punkte mit welchen ich es probiert habe ca. 60km voneinander entfernt sind.
Ich habe die Vermutung dass das ganze momentan an den SRIDs scheitert, bzw. ich dort den Fehler habe. Und genau bei denen blicke ich auch nicht
ganz durch. Ich glaube zu Wissen dass diese die “Einheit” und den Bezugspunkt in welchem die Daten vorliegen angiebtg, und es für manche Funktionen
umwandlungen/projektionen benötigt.
Kann mir bitte jemand ein wenig Hilfestellung bzw. Erklärung bereitstellen?
Guten Tag und Danke im voraus.
Schildhans