gpt4 book ai didi

sql-server - SQL Server 是否支持通过路由测量距离?

转载 作者:行者123 更新时间:2023-12-02 22:56:46 25 4
gpt4 key购买 nike

我一直在尝试 SQL Server 空间函数,发现 STDistance 方法允许您确定两个几何图形之间的距离。是否有任何功能可以让您通过道路测量两点之间的距离,例如 Google map ?

最佳答案

是的,您可以...预先警告,因为它需要一些工作(当然,在 GIS 中,例如 ArcGIS 或 postGIS,这对您来说是“免费”的)。

基本上想想,当您测量一系列道路上两点之间的距离(而不是直接欧几里德距离)时,您实际上正在穿越一个网络 graph .

所以你需要

  1. 道路负载(图形边缘)
  2. 加载交叉点(图形节点)
  3. 在A点和Z点加载
  4. 然后在 A 和 Z 之间使用最佳路由算法,沿着边缘但穿过节点。

这里有一篇深入的文章解释它:Roads in SQL Server 2008但你需要从这里 Hook 路由算法 Djkstra in SQL .

从阿拉斯泰拉网站(上图)生成道路网络的代码是重复的,以防它消失。

DECLARE @Roads TABLE (
RoadId int,
RoadName varchar(32)
);

INSERT INTO @Roads VALUES
(1, 'Britannia Road'),
(2, 'Belsize Road'),
(3, 'Vincent Road'),
(4, 'Plumstead Road');

DECLARE @RoadSegments TABLE (
SegmentId int,
RoadId int,
SegmentGeometry geography
);

INSERT INTO @RoadSegments VALUES
(1, 1, 'LINESTRING(1.313772 52.636871, 1.315038 52.635229)'),
(2, 1, 'LINESTRING(1.315038 52.635229,1.316052 52.63399,1.316401 52.633518)'),
(3, 1, 'LINESTRING(1.316401 52.633518,1.316497 52.632869,1.316642 52.632542)'),
(4, 2, 'LINESTRING(1.317538 52.632697,1.317307 52.633448,1.317098 52.633749)'),
(5, 3, 'LINESTRING(1.31734 52.633818,1.315982 52.635498,1.315038 52.635229)'),
(6, 4, 'LINESTRING(1.314546 52.633479,1.31529 52.633298,1.315902 52.633363,1.316401 52.633518)'),
(7, 4, 'LINESTRING(1.316401 52.633518,1.317097 52.633749)'),
(8, 4, 'LINESTRING(1.317098 52.633749,1.31734 52.633818)'),
(9, 4, 'LINESTRING(1.31734 52.633818,1.318332 52.634119)');

DECLARE @RoadIntersections TABLE (
IntersectionId varchar(32),
IntersectionLocation geography
);

INSERT INTO @RoadIntersections VALUES
('A', 'POINT(1.315038 52.635229)'),
('B', 'POINT(1.316401 52.633518)'),
('C', 'POINT(1.317097 52.633749)'),
('D', 'POINT(1.31734 52.633818)');

DECLARE @RoadIntersection_Segments TABLE (
IntersectionId varchar(32),
SegmentId int
);

INSERT INTO @RoadIntersection_Segments VALUES
('A',1),
('A',2),
('A',5),
('B',2),
('B',6),
('B',3),
('B',7),
('C',7),
('C',4),
('C',8),
('D',5),
('D',8),
('D',9);

关于sql-server - SQL Server 是否支持通过路由测量距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41708355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com