[英]Issue in getting distance between spatial points from two tables in mysql
[英]find out if there is a route between two points in spatial database
我是spatial databases
方面的初學者,我正在使用MS SQL Server 2014
,其數據庫結構如下:
Point {
id int AI,
point geometry,
name text
}
Path{
id int AI,
path geometry,
}
列point
創建為(x,y)
, path
作為起點和終點的集合作為linestring
(xy, xy)
我想檢查從一個point
到另一point
許多paths
是否存在連接。 反正有在SQL
檢查它嗎? 我可以相信我可以在服務器端做到這一點,也可以手動檢查第一個point
等的所有連接,最后我將知道每種組合(但是我想知道布爾值是或否或可能的路徑數)。
我找不到任何好的文章,也找不到關於空間數據庫和尋找路徑功能的書...
使用地理空間STIntersects方法。 在這里查看MSDN文章
DECLARE @g geometry;
DECLARE @h geometry;
SET @g = geometry::STGeomFromText('LINESTRING(0 2, 2 0, 4 2)', 0);
SET @h = geometry::STGeomFromText('POINT(1 1)', 0);
SELECT @g.STIntersects(@h);
在select語句中使用:
Select geometryColumn.STIntersects(@g)
from Test
沙林的答案是正確的,但仍然不完整。
以下查詢選擇點ID 1,並檢查是否與任何路徑相交:
SELECT Path.path.STIntersects(Point.point)
FROM Point CROSS JOIN dbo.Path
WHERE Point.id=1
我已經使用與sarin答案相同的值測試了查詢:
INSERT INTO Path (path)
VALUES (geometry::STGeomFromText('LINESTRING(0 2, 2 0, 4 2)', 0)),
(geometry::STGeomFromText('LINESTRING(0 0, 2 2, 4 4)', 0))
GO
INSERT INTO Point (point, name)
VALUES (geometry::STGeomFromText('POINT(1 1)', 0), 'myPoint');
因此,第一個路徑返回0(不與1,1相交),第二個路徑返回1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.