Ich habe eine Tabelle mit 40 Polygonen, die den Namen, die ID und die Geometrie enthalten. Ich habe eine zweite Tabelle mit Adressen, deren eigene Geometrie als Punkte dargestellt wird. Ich habe die 40 Polygone mit geometry::UnionAggregate
aggregiert.Polygon zurückgeben Name, der einen Punkt in SQL Server 2014 enthält
Ich möchte in der Lage sein, die ID des Polygons für einen Punkt insbesondere aus meiner Tabelle von Adressen zurückzugeben. Das Folgende ist mein Code, aber ich bekomme einen wahren Wert (1) für jedes der 40 Polygone. Ich erwartete 39 nulls
und '1' für das Polygon, das den Punkt tatsächlich enthält. Liegt das daran, dass es jetzt die aggregierten Polygone als eine Einheit behandelt, also enthalten sie alle den Punkt?
Ich bin neu bei räumlichen Abfragen und mag etwas blendend offen, aber würde etwas Hilfe zu schätzen wissen.
declare @n geometry
set @n = (select geometry::UnionAggregate(sp_geometry) from Polygons)
declare @p geometry
set @p = (select sp_geometry from PointData);
select n.id from Polygons n, pointdata p
where @n.MakeValid().STWithin(@p) = 1
Dank Ben Ihre Antwort zu schätzen, zurückgegeben genau das, was ich wollte! – SSingh