Geo-Zaun: Finden Anzahl von Merkmalen (Punkte / Linien / Polygone) innerhalb eines Polygons mit Oracle räumlichen

StackOverflow https://stackoverflow.com/questions/4611944

  •  26-09-2019
  •  | 
  •  

Frage

Wie schreibe ich eine SQL-Abfrage (unter Verwendung von Oracle Spatial), um die Anzahl von Merkmalen innerhalb eines Polygons (Geofence) zur Verfügung zu finden;

Die Funktionen können entweder Punkte, Linien oder ein Polygon selbst sein.

Danke.

War es hilfreich?

Lösung

Versuchen Sie diese Aussage:

select count(*) from geometry_table t where SDO_RELATE(t.geom_column, geofence, 'mask=INSIDE') = 'TRUE'
/

Es ist mandetory dass der erste Parameter von SDO_RELATE ist die Geometrie-Säule mit einem räumlichen Index.

Andere Tipps

Update: Ignorieren Sie diesen Vorschlag vollständig, Albert Godfrind sagte er wiederholt, was bereits intern getan. So ist es ineffizient und langsam:

zu Tims Antwort hinzuzufügen, ist es gute Praxis SDO_FILTER und SDO_RELATE aus Leistungsgründen zu kombinieren. SDO_FILTER ist schnell, aber kehrt zu viele Geometrien, wird es Ihnen alle Geometrien, deren Mindest geben umschließende Rechteck (MBR) schneidet Geometrie Ihres Zauns. SDO_RELATE ist genau aber langsam. Also beide kombinieren:

select count(*) 
from geometry_table t 
where SDO_FILTER(t.geom_column, geofence) = 'TRUE' and SDO_RELATE(t.geom_column, geofence, 'mask=INSIDE') = 'TRUE' 

Viele Grüße, Chris

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top