到目前爲止,我已經篩選了我的結果以查看它們是否屬於緩衝行字符串。現在我想計算線段沿路線的長度,從路線的開頭到列3和列4中列出的每個經度和緯度。計算從預定義的行字符串開始的行字符串的長度,該字符串從該行字符串開始到該行字符串的緩衝區域內的點
我想要的距離在下面的照片中顯示:
declare @TripRecordsReportWaypoints table(Column1 int, column3 decimal(25,10), Column4 decimal(25,10), InRouteBuffer bit);
insert into @TripRecordsReportWaypoints values (210,40.1445,-82.9911,1),(211,40.1444,-82.991 ,1),(212,40.1442,-82.9909,1),(213,40.1441,-82.9907,1),(214,40.144 ,-82.9906,1);
declare @Columbus106from71to23 geography;
set @Columbus106from71to23 = Geography ::STLineFromText('LINESTRING(-82.969404 40.142222,-82.972580 40.141951,-82.976319 40.141602, -82.979534 40.141376,-82.981217 40.141339,-82.983593 40.141409)',4326);
declare @Routebuffer geography;
set @Routebuffer = @Columbus106from71to23.STBuffer('20');
select Column1
,Column3
,Column4
,@Routebuffer.STContains(geography::Point(Column3,Column4,4326)) as InRouteBuffer
from @TripRecordsReportWaypoints
where @Routebuffer.STContains(geography::Point(Column3,Column4,4326)) = 1;
什麼我需要做的,從我的定義線串的開始給每個緯度,經度計算線段的距離。我想要一個名爲DistanceAlongRoute的列。
戴夫,我想知道特定點的路線有多遠。有一個簡單的方法來計算這個?我不想要一個海峽線路距離,我想要從行字符串的開頭開始,沿着該行到我的數據集中的點。這是否更有意義? – Jon
在這種情況下,您可能需要調整問題中的數據/查詢,因爲數據中的任何一點實際上都不在問題的緩衝區中。其次,你的意思是*沿路線*有多遠?如果該點位於緩衝區內,您是否希望沿着'linestring'行進,直到直接位於該點的北部或南部,然後直線到達該位置,或者從該行的最近部分採用最短路線? – iamdave
如果這個點在緩衝區內,我想沿着線串行進,直到到達距離最近線路最短路線的點。所以從行字符串的開始到行字符串的距離,直到位於行字符串中距離列3和行4中給出的點最近的點。 – Jon