1
ユニークな点を挿入:は、私は現在、これを使用していバッファ
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
ターゲット表#Targetに(3メートルの緩衝液を用いて)「ユニーク」点を挿入します。私はこれをテストし、それは正常に動作するようです。結果は期待通りです:
POINT (102 0.5)
POINT (102 0.50009)
これは効率の点で改善できるのですか?ありがとう。
これについて詳しく説明し、修正を提案することはできますか? – cs0815
'#Source'に別のレコードがあるとします:' INSERT #Source SELECT GEOGRAPHY :: STPointFromText(N'POINT(102.0 0.500091) '、4326); - 1メートル離れている。どのポイントは '#Tagret'にするべきですか? –
私はタンクを見る。ここで役に立つかもしれないrownumberを含むタイ・ブレーカーのようなものがあります。 – cs0815