Closed ppKrauss closed 11 months ago
Talvez devêssemos acrescentar mais um critério:
Erros do tipo:
ERROR: field name must not be null
CONTEXT: SQL function "feature_asis_geohashes" statement 1
SQL function "feature_asis_assign_signature" statement 1
SQL statement "UPDATE ingest.donated_PackComponent
SET proc_step=3, -- if insert process occurs after q_query.
lineage = lineage || ingest.feature_asis_assign_signature(q_file_id)
WHERE id=q_file_id"
PL/pgSQL function ingest.any_load(text,text,text,text,bigint,text,text[],integer,text,boolean) line 178 at SQL statement
make: *** [makefile:192: parcel] Error 1
São ocasionados por geometrias vazias. Quando a geometria é vazia, ST_GeoHash não retorna um geohash, ocasionando o erro citado acima.
O erro acima foi retornado por causa dos seguintes _featureid do parcel
de Rio Branco:
file_id | feature_id | properties | geom | kx_ghs9 | gtype | ghs
---------+------------+------------------------------------------------------+----------------------------+---------+-------+-----
6 | 60066 | {"via_name": "RUAMADEREIRA", "house_number": "662"} | 0103000020E610000000000000 | | poly |
6 | 62999 | {"via_name": "RUA13 DE MAIO", "house_number": "410"} | 0103000020E610000000000000 | | poly |
6 | 89718 | {"via_name": "TRVMINEIRO,", "house_number": null} | 0103000020E610000000000000 | | poly |
Aplicando ST_AsText à geom:
SELECT ST_AsText('0103000020E610000000000000');
st_astext
---------------
POLYGON EMPTY
O tratamento atual data as geometrias foi descrito em https://github.com/digital-guard/preserv/blob/main/docs/pt/man-diversos.md#resumo-do-tratamento-aplicado-%C3%A0s-geometrias-no-processo-de-ingest%C3%A3o
Durante a ingestão é importante descartar geometrias inválidas, para garantir que o custo de revisão das geometrias problemáticas fique por conta do fornecedor (envia mais tarde uma segunda versão dos dados). A tabela
ingest.feature_asis
portanto não deveria conter "dados muito ruins".Alguns critérios são óbvios, outros requerem discussão para decidirmos sua implementação:
PS: o caso de parcel (ex. condomínios horizontais e fazendas) é mais complexo. Ao contrário das jurisdições globais (país), a demanda por separação em escala maior (ex. municipal) é menos rígida. Estando na na fronteira, por default recortamos parcel conforme interseção da jurisdição. A parte que ficou de fora é também jurisdição da cidade vizinha, precisamos avaliar como garantir que a inclusão completa ocorra. Idem estradas municipais e trechos federais, segmentados por jurisdição.
Indicar aqui nesta issue as decisões finais e fechar a issue quando todas estiverem implementadas nas funções de ingestão, em particular
ingest.any_load
.