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
插入“独特”点(带3米的缓冲区)到目标表#Target。我测试了这个,它似乎工作正常。结果是预期的:
POINT (102 0.5)
POINT (102 0.50009)
只是好奇,这可以提高效率方面或没有人看到任何不妥之处吗?谢谢。
你可以请详细说明这一点,并可能建议修复? – cs0815
假设你在'#Source'中有另一条记录:'INSERT #Source SELECT GEOGRAPHY :: STPointFromText(N'POINT(102.0 0.500091)',4326); - 1米远[']。哪个点应该到达#Tagret? –
我看到 - tahnks。猜猜某些涉及rownumber的决胜盘在这里会很有用。 – cs0815