Tool for finding extents of spatial features.
/*
Created by Ryan Dammrose for the purpose of dynamically analyzing
a spatial feature's max X and Y extents.
For SQL Server 2008 and older, see https://alastaira.wordpress.com/2011/07/26/determining-the-geographic-extent-of-spatial-features-in-a-sql-server-table/
*/
CREATE PROCEDURE Get_Spatial_Extent
@TABLE_NAME nvarchar(50)
, @SPATIAL_COLUMN_NAME nvarchar(50) = 'SHAPE'
as
BEGIN
/* Dynamic SQL Variables */
DECLARE @DEBUG BIT = 0
DECLARE @SQL nvarchar(4000)
DECLARE @COUNT INT = 1
--/* TEST VARIABLES */
--DECLARE @TABLE_NAME nvarchar(50) = 'Field_Boundary'
--DECLARE @SPATIAL_COLUMN_NAME nvarchar(50) = 'SHAPE'
SET @SQL =
'SELECT
geometry::EnvelopeAggregate(' + @SPATIAL_COLUMN_NAME + ').STPointN(1).STX AS MinX,
geometry::EnvelopeAggregate(' + @SPATIAL_COLUMN_NAME + ').STPointN(1).STY AS MinY,
geometry::EnvelopeAggregate(' + @SPATIAL_COLUMN_NAME + ').STPointN(3).STX AS MaxX,
geometry::EnvelopeAggregate(' + @SPATIAL_COLUMN_NAME + ').STPointN(3).STY AS MaxX
FROM ' + @TABLE_NAME
IF @DEBUG = 1 PRINT CONCAT (@COUNT, '. ', char(13), @SQL, char(13))
SET @COUNT = @COUNT + 1
EXECUTE sp_executesql @SQL
END