1 votos

No se puede verificar el polígono WKT para su uso con la geometría de SQL Server

Estoy intentando crear un polígono, con recorte interior, y he creado una docena de ellos sin problema.
Sin embargo, no consigo verificar la siguiente lista de puntos.

POLYGON(
(53.890253 -114.150550, 53.890810 -113.124401, 53.832739 -113.124487, 53.832533 -112.975801, 53.716218 -112.975681, 53.716245 -112.950733, 53.367006 -112.951374, 53.367022 -112.926510, 53.249564 -112.927986, 53.250591 -112.969270, 53.250594 -113.074241, 53.192440 -113.074356, 53.192351 -114.001744, 53.248514 -114.001862, 53.279625 -114.002033, 53.279612 -114.026280, 53.279612 -114.147860, 53.294027 -114.148203, 53.890253 -114.150550)
,
(53.773877 -114.001813, 53.774105 -113.998508, 53.774105 -113.917720, 53.803400 -113.917398, 53.803575 -113.661065, 53.812242 -113.660379, 53.818221 -113.652482, 53.818221 -113.620124, 53.803575 -113.620124, 53.803499 -113.347294, 53.818120 -113.347380, 53.818145 -113.345062, 53.830178 -113.334934, 53.835015 -113.335750, 53.842232 -113.324506, 53.840485 -113.321759, 53.845245 -113.314550, 53.845448 -113.309958, 53.847321 -113.309271, 53.847296 -113.305537, 53.845827 -113.306310, 53.845827 -113.304164, 53.844030 -113.306267, 53.842283 -113.310601, 53.825365 -113.310601, 53.825340 -113.322317, 53.803524 -113.322961, 53.803244 -113.124330, 53.774265 -113.124223, 53.715852 -113.124309, 53.715846 -113.098581, 53.571181 -113.098811, 53.366714 -113.098865, 53.366702 -113.074291, 53.279625 -113.074530, 53.279664 -113.098670, 53.279606 -113.220582, 53.250595 -113.220603, 53.250582 -113.488503, 53.250531 -113.499918, 53.235790 -113.499918, 53.235892 -113.561716, 53.250531 -113.561716, 53.250556 -113.598323, 53.257720 -113.598452, 53.257771 -113.610425, 53.265139 -113.610468, 53.265062 -113.927419, 53.366600 -113.927333, 53.366715 -114.001904, 53.497785 -114.001980, 53.497785 -113.959151, 53.504837 -113.959151, 53.504837 -113.945397, 53.520338 -113.945397, 53.519726 -113.885364, 53.541153 -113.885364, 53.541101 -113.845993, 53.571438 -113.846851, 53.570012 -113.885364, 53.571082 -113.916435, 53.569349 -113.959007, 53.555451 -113.959383, 53.555985 -114.002024), (53.497785 -114.001980, 53.497785 -113.959151, 53.504837 -113.959151, 53.504837 -113.945397, 53.520338 -113.945397, 53.519726 -113.885364, 53.541153 -113.885364, 53.541101 -113.845993, 53.571438 -113.846851, 53.570012 -113.885364, 53.571082 -113.916435, 53.569349 -113.959007, 53.555451 -113.959383, 53.555985 -114.002024, 53.555804 -114.038727, 53.541397 -114.038512, 53.541372 -114.050958, 53.512009 -114.050958, 53.512111 -114.026410, 53.505169 -114.026410, 53.504320 -114.001980, 53.773877 -114.001813)
)

Obtengo el siguiente error en SQL server

Msg 6522, Nivel 16, Estado 1, Línea 22 Se ha producido un error de .NET Framework durante la ejecución de la rutina definida por el usuario o "geometría" agregada: System.FormatException: 24121: La entrada Polígono no es válida porque los puntos inicial y final del anillo interior número 1 no coinciden igual. Cada anillo de un polígono debe tener los mismos puntos inicial y final. System.FormatException: en Microsoft.SqlServer.Types.GeometryValidator.ValidatePolygonRing(Int32 iRing, Int32 cPoints, Double firstX, Double firstY, Double lastX, Double lastY) en

Puedo comprobar que el problema es la segunda lista de polígonos del objeto. Pero se puede ver que 53.773877 -114.001813 es tanto el punto inicial como el final de esa lista.

Como referencia, se trata de puntos lat-long.

¿Puede alguien ayudarme a averiguar por qué este objeto poligonal no se verifica

3voto

BWW Puntos 302

Reindenting, the issue is obvious e.g

POLYGON(
(53.890253 -114.150550, 53.890810 -113.124401, 53.832739 -113.124487, 53.832533 -112.975801, 53.716218 -112.975681, 53.716245 -112.950733, 53.367006 -112.951374, 53.367022 -112.926510, 53.249564 -112.927986, 53.250591 -112.969270, 53.250594 -113.074241, 53.192440 -113.074356, 53.192351 -114.001744, 53.248514 -114.001862, 53.279625 -114.002033, 53.279612 -114.026280, 53.279612 -114.147860, 53.294027 -114.148203, 53.890253 -114.150550)
,
(53.773877 -114.001813, 53.774105 -113.998508, 53.774105 -113.917720, 53.803400 -113.917398, 53.803575 -113.661065, 53.812242 -113.660379, 53.818221 -113.652482, 53.818221 -113.620124, 53.803575 -113.620124, 53.803499 -113.347294, 53.818120 -113.347380, 53.818145 -113.345062, 53.830178 -113.334934, 53.835015 -113.335750, 53.842232 -113.324506, 53.840485 -113.321759, 53.845245 -113.314550, 53.845448 -113.309958, 53.847321 -113.309271, 53.847296 -113.305537, 53.845827 -113.306310, 53.845827 -113.304164, 53.844030 -113.306267, 53.842283 -113.310601, 53.825365 -113.310601, 53.825340 -113.322317, 53.803524 -113.322961, 53.803244 -113.124330, 53.774265 -113.124223, 53.715852 -113.124309, 53.715846 -113.098581, 53.571181 -113.098811, 53.366714 -113.098865, 53.366702 -113.074291, 53.279625 -113.074530, 53.279664 -113.098670, 53.279606 -113.220582, 53.250595 -113.220603, 53.250582 -113.488503, 53.250531 -113.499918, 53.235790 -113.499918, 53.235892 -113.561716, 53.250531 -113.561716, 53.250556 -113.598323, 53.257720 -113.598452, 53.257771 -113.610425, 53.265139 -113.610468, 53.265062 -113.927419, 53.366600 -113.927333, 53.366715 -114.001904, 53.497785 -114.001980, 53.497785 -113.959151, 53.504837 -113.959151, 53.504837 -113.945397, 53.520338 -113.945397, 53.519726 -113.885364, 53.541153 -113.885364, 53.541101 -113.845993, 53.571438 -113.846851, 53.570012 -113.885364, 53.571082 -113.916435, 53.569349 -113.959007, 53.555451 -113.959383, 53.555985 -114.002024)
,
(53.497785 -114.001980, 53.497785 -113.959151, 53.504837 -113.959151, 53.504837 -113.945397, 53.520338 -113.945397, 53.519726 -113.885364, 53.541153 -113.885364, 53.541101 -113.845993, 53.571438 -113.846851, 53.570012 -113.885364, 53.571082 -113.916435, 53.569349 -113.959007, 53.555451 -113.959383, 53.555985 -114.002024, 53.555804 -114.038727, 53.541397 -114.038512, 53.541372 -114.050958, 53.512009 -114.050958, 53.512111 -114.026410, 53.505169 -114.026410, 53.504320 -114.001980, 53.773877 -114.001813)
)

Las coordenadas de inicio y fin están bien para el elemento 1 pero mal para los otros 2 elementos: 53.773877 -114.001813 diferente de 53.555985 -114.002024 y 53.497785 -114.001980 diferente de 53.773877 -114.001813

2voto

Joe Puntos 16

Puede visualizar la geometría a pesar del error editando el WKT. Basta con cambiar POLYGON en MULTILINESTRING .

Parte 1 enter image description here

Parte 2 enter image description here

Parte 3 enter image description here

Los anillos que no cierran no son el único problema. Es imposible expresar esta geometría como un único polígono o multipolígono. Podría ser una colección de geometría donde los anillos 1 y 2 forman un polígono con un agujero y el anillo 3 es un polígono separado.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X