Este es un seguimiento de la pregunta anterior . Verás que soy un nuevo usuario de PostGIS.
He analizado la validez de la topología en mis datos y encuentro alrededor de 1700 problemas de topología en el conjunto de datos de cobertura terrestre (polígono). Todos estos son "Ring Self_intersection".
Utilizando información útil en esta presentación de Paul Ramsay (página 20), he intentado almacenar mis datos en búfer en consecuencia:
ACTUALIZAR schema.data SET the_geom = buffer (the_geom, 0.0) WHERE isvalid (the_geom) = false and isvalid (buffer (the_geom, 0.0)) = true;
Pero recibo la respuesta:
AVISO: anillo de auto-intersección en o cerca del punto (editado) ERROR: la nueva fila para la relación "sgm_buffer" viola la restricción de verificación "enforce_geotype_the_geom"
********** Error **********
ERROR: nueva fila para la relación "sgm_buffer" viola la restricción de verificación "enforce_geotype_the_geom" Estado SQL: 23514
También he intentado solo:
ACTUALIZAR csgn.sgm_buffer SET the_geom = buffer (the_geom, 0.0)
y obten:
ERROR: la nueva fila para la relación "sgm_buffer" viola la restricción de verificación "enforce_geotype_the_geom"
********** Error **********
ERROR: nueva fila para la relación "sgm_buffer" viola la restricción de verificación "enforce_geotype_the_geom" Estado SQL: 23514
Entonces, ¿asumo que esta técnica de amortiguación no funcionará en mis problemas? ¿O estoy haciendo algo mal?
El Sr. Ramsay continúa en el mismo documento para sugerir una técnica adicional para tratar con polígonos de "figura de 8". No entiendo completamente cómo escribir esto por completo en código (o qué está haciendo y si me ayudará):
SELECCIONA ST_BuildArea (ST_Union ('LINESTRING EMPTY', ST_ExteriorRing ('POLYGON ((...))'
Entonces ... ¿alguien puede ayudar? Esto está resultando una verdadera pesadilla con mis escalas de tiempo apretadas y habilidades limitadas en PostGIS.
ST_Multi()
para forzar a todos los polígonos a ser MULTIPOLYGON
s (esto es una suposición)