До сих пор я фильтровал свои результаты, чтобы увидеть, попадают ли они в буферизованную строку. Теперь я хотел бы рассчитать длину сегмента линии вдоль линии от начала маршрута до каждой широты и долготы, перечисленных в столбцах 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.