De todo un poco.

26/10/15

Si al intentar cargar un poligono WKT en un campo de tipo geográfico en SQL Server falla, puede que se trate del orden en que se ha especificado los puntos es incorrecto.

Ejemplo:
CREATE TABLE #ZONES(
 [ID] [int] IDENTITY(1,1) NOT NULL,
 [POLYGON] [geography] NOT NULL
 CONSTRAINT [PK_ZONES] PRIMARY KEY CLUSTERED ([ID] ASC))

--Falla
INSERT INTO #ZONES([POLYGON])VALUES(geography::STPolyFromText('POLYGON((-9.123 43.123, -8.123 43.123, -8.123 42.123, -9.123 42.123,-9.123 43.123))' ,4326))

--Funciona
INSERT INTO #ZONES([POLYGON])VALUES(geography::STPolyFromText('POLYGON((-9.123 43.123, -9.123 42.123, -8.123 42.123, -8.123 43.123,-9.123 43.123))' ,4326))

Solución para evitar cambiar a mano el orden de las coordenadas:
DECLARE @geom GEOMETRY = 'POLYGON((-9.123 43.123, -8.123 43.123, -8.123 42.123, -9.123 42.123,-9.123 43.123))';
DECLARE @geog GEOGRAPHY = @geom.MakeValid().STUnion(@geom.STStartPoint()).STAsText()
INSERT INTO #ZONES([POLYGON])VALUES(@geog)

0 comentarios:

Publicar un comentario