首页 > 解决方案 > SQL Server 空间问题

问题描述

我正在尝试在两点之间创建一条曲线,以便我可以将它与映射产品 MapBox 一起使用,并在坐标部分中使用它。我遇到了一些问题,不清楚如何控制曲线

微软文档谈到弯曲线

https://docs.microsoft.com/en-us/sql/t-sql/spatial-geometry/stcurvetoline-geometry-data-type?view=sql-server-ver15

我开始使用他们网站上的代码,如下所示。如何更好地控制曲线?目前它产生65分?我正在考虑实现它并将其与 GeoJson 一起使用,但这会产生大量坐标

问题: - 你如何控制点数?- 你如何计算中心点?

 DECLARE @g1 geometry, @g2 geometry; 
 SET @g1 = geometry::Parse('CIRCULARSTRING(10 0, 0 10, 15 15)'); 
 SET @g2 = @g1.STCurveToLine(); 

 SELECT @g1.STGeometryType() AS [G1 Type], @g2.STGeometryType() AS [G2 Type], @g1.STLength() AS [G1 Perimeter], @g2.STLength() AS [G2 Perimeter]
 SELECT @g2.ToString() AS [G2 Def]; 
 SELECT @g1.STNumPoints(), @g2.STNumPoints();

标签: sqlsql-serversql-server-2012geometryspatial

解决方案


CIRCULARSTRING“定义”曲线

https://docs.microsoft.com/en-us/sql/relational-databases/spatial/circularstring?view=sql-server-ver15

 DECLARE @g1 geometry, @g2 geometry; 
 SET @g1 = geometry::Parse('CIRCULARSTRING(10 0, 0 10, 15 15)'); 
 SELECT @g1 --and check the spatial results in sssms

“微软文档谈到了曲线”,实际上是相反的,STCurveToLine() 是在曲线上。


推荐阅读