maplion
11/24/2015 - 8:57 PM

Tool for finding extents of spatial features.

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