digital-guard / preserv

Digital Preservation Project
http://git.digital-guard.org/preserv
Apache License 2.0
0 stars 0 forks source link

Points of LinearRing do not form a closed linestring #87

Closed 0e1 closed 2 years ago

0e1 commented 2 years ago

make block de VilaVelha/ES e make parcelde SaoBernardoCampo/SP retornam:

ERROR: Geometry could not be converted to GEOS: IllegalArgumentException: Points of LinearRing do not form a closed linestring.

Averiguar melhor maneira de descartar essas geometrias.

ppKrauss commented 2 years ago

Se não for possível evitar o abort da ingestão, criar no YAML uma lista (array) de exclusão.

gid_ignore: 123,456,789

O parser pode levar do YAML para o SQL com '{123,456,789}'::bigint[]. No SQL o filtro é direto, WHERE NOT( gid = ANY (gid_ignore) ) .

0e1 commented 2 years ago

A função ST_IsClosed captura as geometrias. Permitindo descartá-las.

O detalhe é que para inserir em ingest.feature_asis_discarded apliquei ST_MakeValid na geometria, para poder aplicar ST_PointOnSurface e então a ST_Geohash. Se não aplicar ST_MakeValid retorna o erro:

ERROR: lwgeom_pointonsurface: GEOS Error: IllegalArgumentException: Points of LinearRing do not form a closed linestring

Como é uma tabela de descartados, não vejo problema em aplicar a ST_MakeValid.