Skip to content

Instantly share code, notes, and snippets.

@kid-cavaquinho
Last active October 25, 2018 08:10
Show Gist options
  • Save kid-cavaquinho/40abcc10563fa04f0b78935dd2b18aeb to your computer and use it in GitHub Desktop.
Save kid-cavaquinho/40abcc10563fa04f0b78935dd2b18aeb to your computer and use it in GitHub Desktop.
Validate WKT geometries in SQL
DECLARE @valid BIT
DECLARE @geometryWKT NVARCHAR(MAX)
DECLARE @geometry GEOMETRY
SET @geometryWKT = 'LINESTRING(264424.9652 569222.1755, 264391.5552 569306.8028, 264347.5728 569370.1507, 264279.3844 569496.5162, 264151.5842 569779.2783, 264102.1571 569876.3473, 264064.9039 569909.1248, 264082.4099 569934.902, 264148.7657 569980.9312, 264197.7566 570045.2707, 264264.2537 570126.3715, 264351.5345 570242.1204, 264461.6298 570397.3514, 264508.7931 570471.0041, 264540.9409 570500.789, 264585.7437 570474.7547, 264663.5564 570446.4651, 264710.7298 570389.8719, 264861.704 570149.3973, 264802.3649 570104.5195, 264579.9936 570005.1748, 264774.1915 569593.5737, 264627.7661 569530.0202, 264604.2309 569589.8227, 264583.3815 569693.6588, 264564.4047 569744.5479, 264545.5456 569781.413, 264516.4291 569824.5021, 264497.7144 569849.1252, 264385.1763 569780.4476, 264471.0827 569602.4976, 264410.3238 569572.5101, 264548.9528 569291.7813, 264424.9652 569222.1755)'-- Test faulty value
SET @valid = 1
BEGIN TRY
SET @valid = geometry::STGeomFromText(@geometryWKT, 4326).STIsValid()
END TRY
BEGIN CATCH
SET @valid = 0
END CATCH
IF @valid = 1
BEGIN
SET @geometry = geometry::STGeomFromText(@geometryWKT, 4326)
PRINT('Valid geometry')
SELECT (@geometry)
END
ELSE
BEGIN
PRINT('Invalid geometry')
PRINT(@geometryWKT)
END
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment