Ich möchte alle Punkte finden, die nicht weiter als eine punktspezifische Entfernung von einem bestimmten Punkt entfernt sind. Wie bei einer normalen Radius-Suche ist nur der Radius für jeden Punkt variabel (jeder Eintrag definiert einen Kreis um sich selbst mit einem Punkt + Radius).PostGIS finde alle Kreise mit einem bestimmten Punkt - wie definiere ich einen Index
Die Frage, die ich habe, ist, wie man einen Index für dieses Problem definiert (die Abfrage, die ich im Moment verwende), auch wenn es möglich ist, einen Index mit Nicht-GIS- und GIS-Feldern zu erstellen (wie das Enable-Feld unten)).
ich diese Arbeits Abfrage haben derzeit für sie
SELECT "Locations"."Name",
FROM public."Locations"
WHERE
"Locations"."Enabled" = TRUE
AND ST_DWithin(
"Locations"."MyCoord"::geography,
ST_SetSRID(ST_MakePoint(<Given Long>, <Given Lat>),4326)::geography,
"Locations"."Radius");
mit einer Tabelle wie folgt aus
Id: uuid
Name: text
Enabled: boolean
MyCoord: GEOGRAPHY(Point)
Radius: double precision
Dies war ein Kopieren und Einfügen Fehler, sowohl eine Geographie. Aber wie kann der Index auf nur MyCoord (welches das Zentrum des Kreises ist) die Suche beschleunigen, wenn der Radius überhaupt nicht im Index verwendet wird (AFAIK wird mindestens eine Bounding Box benötigt, um die Suche zu beschleunigen). – Fionn
Der feine Unterschied, den ich in der Abfrage sehe, ist, dass Sie eine statische Distanz haben, nach der gesucht werden soll, aber in meiner Abfrage befindet sich sowohl die Entfernung als auch eine Koordinate in der abgefragten Tabelle. Ihre Abfrage hat also nur ein Variablenelement und meins hat zwei. – Fionn
Haben Sie es überprüft? Dieses Element ist auch eine Variable, die ich mir ausgedacht habe, nachdem der Index erstellt wurde ... Es gibt keinen Unterschied. Wie Sie sehen, gibt es keine 300 in der Indexdefinition ... – Jendrusk