Estoy en el proceso de leer shapefiles (que nos proporciona el proveedor que se ocupa de los productos GIS) utilizando un programa C# y cargándolos en una base de datos SQL. Primero leo el texto de la forma y luego uso ese texto para actualizar mis tipos de geometría y geografía. Y lo hago como parte de un paquete SSIS.
Mi paquete SSIS falló en un shapefile y me lanzó una excepción:
Se ha producido un error de .NET Framework durante la ejecución de la rutina definida por el usuario rutina o "geometría" agregada: System.FormatException: 24305: La entrada del polígono no es válida porque el anillo no tiene suficientes puntos distintos. Cada anillo de un polígono debe contener al menos tres puntos distintos.
Después de ejecutar algunas actualizaciones manuales, encontré el registro que me estaba dando problemas. Entonces saqué partes del polígono múltiple y ejecuté selecciones individuales en ellas, creando polígonos individuales, por ejemplo
SELECT geometry::STGeomFromText('POLYGON(( 118.501323586697 -20.3203577291617, 118.504216161911 -20.3220101539757, 118.502671059623 -20.3212136027048, 118.501323586697 -20.3203577291617 ))', 4326).MakeValid()
Finalmente, encontré el polígono que era la forma problemática: 'POLYGON(( 118.860739531873 -20.2274797478397, 118.860739531873 -20.2274797478397, 118.860739531873 -20.2274797478397, 118.860739531873 -20.2274797478397 ))'
Estoy tratando de entender cómo arreglar esto para que mi paquete SSIS se ejecute y traduzca y cargue mis tablas SQL sin que yo tenga que arreglar nada manualmente. Cualquier ayuda será muy apreciada.