Top 5 Recent Articles
ARTICLES CATEGORIES
- Algorithms (22)
- All (399)
- Biography (1)
- Blog (44)
- Business Requirements (1)
- Commentary (1)
- Conversion (2)
- Customers (2)
- Data Models (1)
- Education (2)
- GeoRaptor (13)
- GPS (1)
- Image Processing (2)
- Import Export (8)
- Licensing (2)
- LiDAR (1)
- Linear Referencing (4)
- Manifold GIS (3)
- Mapping (1)
- MySQL Spatial (7)
- Networking and Routing (including Optimization) (5)
- Open Source (18)
- Oracle Spatial and Locator (194)
- Partitioning (1)
- PostGIS (36)
- Projections (1)
- Published Articles (1)
- qGIS (1)
- Recommendations (1)
- Services (1)
- Software Change Log (1)
- Source Code (37)
- Space Curves (9)
- Spatial Database Functions (109)
- Spatial DB comparison (1)
- Spatial XML Processing (11)
- SQL Server Spatial (92)
- Standards (3)
- Stored Procedure (17)
- Tessellation or Gridding (10)
- Tools (2)
- Topological Relationships (1)
- Training (2)
- Triangulation (2)
COGO: Compute chord length of segment of a circle (arc)
In working with circles one must be able to compute the arc2chord separation, the length of an arc and the length of the chord subtended by an angle subtended at the centre of a circle.
In particular this is important for converting circles to vertex-stroked polygons and vice versa.
Here is an encoding of the calculation of the length of a chord subtended by an angle at the centre of a circle for use in SQL Server 2008 spatial.
Note that I have a schema call cogo in which I create functions like this. You can use anything you like.
/* ---------------------------------------------------------------------------------------- * @function : ComputeChordLength * @precis : Returns the length of the chord subtended by an angle of a circle. * @version : 1.0 * @usage : FUNCTION ComputeChordLength( @p_dRadius Float, * @p_dAngle Float) * RETURNS FLOAT; * eg select cogo.ComputeChordLength(10,90.0) as chordLength; * @param : p_dRadius : Radius of Circle * @paramtype : p_dRadius : FLOAT * @param : p_dAngle : Angle subtended at centre for which chord length is to be calculated (Value > 0 and <= 360 * @paramtype : p_dAngle : FLOAT * @return : ChordLength : The chord subtended by the angle * @rtnType : ChordLength : FLOAT * @note : Does not throw exceptions * @note : Assumes planar projection eg UTM. * @history : Simon Greener - Feb 2005 - Original coding. * @history : Simon Greener - May 2011 - Converted to SQL Server 2008 * @copyright : Licensed under a Creative Commons Attribution-Share Alike 2.5 Australia License. (http://creativecommons.org/licenses/by-sa/2.5/au/) TSQL */ Create Function ComputeChordLength( @p_dRadius Float, @p_dAngle Float) Returns Float AS BEGIN DECLARE @dChord Float, @dAngleRad Float; BEGIN SET @dAngleRad = RADIANS(@p_dAngle); SET @dChord = 2 * @p_dRadius * Sin(@dAngleRad / 2); Return @dChord; END; END GO
An example of how to execute this function is as follows:
select cogo.ComputeChordLength(10,90.0) as chordLength;
chordLength |
---|
14.1421356237309 |
I hope this helps someone.
Documentation
- MySQL Spatial General Functions
- Oracle LRS Objects
- Oracle Spatial Exporter (Java + pl/SQL)
- Oracle Spatial Object Functions
- Oracle Spatial Object Functions (Multi Page)
- PostGIS pl/pgSQL Functions
- SC4O Oracle Java Topology Suite (Java + pl/SQL)
- SQL Server Spatial General TSQL Functions
- SQL Server Spatial LRS TSQL Functions