insert des points uniques avec tampon

J'utilise actuellement ceci:

IF OBJECT_ID('tempdb..#Source') IS NOT NULL DROP TABLE #Source IF OBJECT_ID('tempdb..#Target') IS NOT NULL DROP TABLE #Target CREATE TABLE #Source ( Point GEOGRAPHY ); CREATE TABLE #Target ( Point GEOGRAPHY ); DECLARE @PointBufferDistanceInMeters FLOAT; SET @PointBufferDistanceInMeters = 3; INSERT #Source SELECT GEOGRAPHY::STPointFromText(N'POINT(102.0 0.5)', 4326); INSERT #Source SELECT GEOGRAPHY::STPointFromText(N'POINT(102.0 0.5)', 4326); INSERT #Source SELECT GEOGRAPHY::STPointFromText(N'POINT(102.0 0.50009)', 4326); -- 10 meter-ish away SELECT * FROM #Source INSERT INTO #Target SELECT GEOGRAPHY::STPointFromText(Wkt, 4326) FROM ( SELECT DISTINCT Point.STAsText() AS Wkt FROM #Source AS S WHERE NOT EXISTS ( SELECT 42 FROM #Target WHERE S.Point.STDistance(Point) < @PointBufferDistanceInMeters) ) X SELECT Point.STAsText() FROM #Target 

pour insert des points "uniques" (avec un tampon de 3 mètres) dans une table cible #Target. J'ai testé cela et cela semble fonctionner correctement. Les résultats sont attendus:

 POINT (102 0.5) POINT (102 0.50009) 

Juste curieux, cela peut-il être amélioré en termes d'efficacité ou est-ce que quelqu'un voit quelque chose qui cloche ici? Merci.

Votre INSERT filter sur l'état actuel de #Target uniquement. Si #Source contient des points non identiques plus proches que @PointBufferDistanceInMeters un de l'autre, ils seront tous insérés.

Je crains que la seule méthode pare-balles pour gérer datatables GEOGRAPHY à l'heure actuelle soit RBAR qui pourrait ne pas être aussi inefficace que la double conversion Point.STAsText() AS Wkt => GEOGRAPHY::STPointFromText(Wkt, 4326) .