digital-guard / preserv

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

ESRI alias OpenStreetMap, (re)publicação automatica #147

Open 0e1 opened 10 months ago

0e1 commented 10 months ago

Em relação a publicar dados em https://addressforall.maps.arcgis.com/home/index.html está dominada a maneira de:

Com isso, o objeto é republicar todos os arquivos filtrados atuais. Motivo: guardar no banco de dados os dois identificadores gerados no processo:

Etapas do processo:

Adicionais:

IgorEliezer commented 10 months ago

de @0e1:

  • apagar dados antigos (igor)

Farei isso só quando as etapas anteriores estiverem prontas?

0e1 commented 10 months ago

de @0e1:

  • apagar dados antigos (igor)

Farei isso só quando as etapas anteriores estiverem prontas?

Sim.

0e1 commented 10 months ago

@IgorEliezer

Você pode avaliar o resultado na galeria:

Problemas encontrados, separados em duas classes e que ainda serão corrigidos:

CLASSE 1:

Dados originais com campos que podem ser aproveitados no OpenStreetMap mas que foram excluídos. Novo Hamburgo com problema em nome de campos: https://github.com/digital-guard/preserv-BR/blob/main/data/RS/NovoHamburgo/_pk0063.01/make_conf.yaml

Log da função que remove campos/atualiza alias:

Update fields Feature layer hosted: 341fe907d10b47bd88467297495e6560
Not added building=yes.
Delete fields: [{'name': 'gid'}, {'name': 'nsvia_name'}]
No aliases to update.
Update metadata hosted Feature layer: 341fe907d10b47bd88467297495e6560
Update metadata hosted Feature layer sublayer
Update categories.
Update completed. See https://addressforall.maps.arcgis.com/home/item.html?id=341fe907d10b47bd88467297495e6560
Update completed.

Update fields Feature layer hosted: 80e385a56bd44b71800eac6738f827b5
Not added building=yes.
Delete fields: [{'name': 'gid'}, {'name': 'error'}, {'name': 'nsref'}, {'name': 'nsvia'}]
No aliases to update.
Update metadata hosted Feature layer: 80e385a56bd44b71800eac6738f827b5
Update metadata hosted Feature layer sublayer
Update categories.
Update completed. See https://addressforall.maps.arcgis.com/home/item.html?id=80e385a56bd44b71800eac6738f827b5
Update completed.

Update fields Feature layer hosted: 99f6476cadd64bc1acde25b1e76eb222
Not added building=yes.
Delete fields: [{'name': 'gid'}, {'name': 'error'}, {'name': 'nmedificac'}, {'name': 'qtdpavimen'}]
Update alias: hnum -> addr:housenumber
Update metadata hosted Feature layer: 99f6476cadd64bc1acde25b1e76eb222
Update metadata hosted Feature layer sublayer
Update categories.
Update completed. See https://addressforall.maps.arcgis.com/home/item.html?id=99f6476cadd64bc1acde25b1e76eb222
Update completed.

Update fields Feature layer hosted: e6ae8b8f5a9149d4acb62d93767e3989
Not added building=yes.
Delete fields: [{'name': 'gid'}, {'name': 'bnum'}, {'name': 'error'}, {'name': 'nsvia'}, {'name': 'nsvia2'}]
No aliases to update.
Update metadata hosted Feature layer: e6ae8b8f5a9149d4acb62d93767e3989
Update metadata hosted Feature layer sublayer
Update categories.
Update completed. See https://addressforall.maps.arcgis.com/home/item.html?id=e6ae8b8f5a9149d4acb62d93767e3989
Update completed.

Update fields Feature layer hosted: 8cea0a49a9464dcb8c4ee517a6c27d5e
Not added building=yes.
Delete fields: [{'name': 'gid'}, {'name': 'error'}, {'name': 'complement'}]
Update alias: via -> addr:street
Update alias: hnum -> addr:housenumber
Update metadata hosted Feature layer: 8cea0a49a9464dcb8c4ee517a6c27d5e
Update metadata hosted Feature layer sublayer
Update categories.
Update completed. See https://addressforall.maps.arcgis.com/home/item.html?id=8cea0a49a9464dcb8c4ee517a6c27d5e
Update completed.

Update fields Feature layer hosted: a84143e0a1b64fb08dff0b26c68ae998
Not added building=yes.
Delete fields: [{'name': 'gid'}, {'name': 'error'}, {'name': 'nsvia_left'}, {'name': 'nsvia_righ'}]
Update alias: via -> name
Update metadata hosted Feature layer: a84143e0a1b64fb08dff0b26c68ae998
Update metadata hosted Feature layer sublayer
Update categories.
Update completed. See https://addressforall.maps.arcgis.com/home/item.html?id=a84143e0a1b64fb08dff0b26c68ae998
Update completed.

CLASSE 2: Timeout ao usar o parâmetro calcExpression de FeatureLayer.calculate para aplicar o valor yes no campo building criado. Possível solução: aplicar o valor em cada feature do layer.

Log:

Update fields Feature layer hosted: dfb48ec960c948b5969ce6521a3baca6
Add building=yes.
1  Unable to calculate fields.
Execution Timeout Expired.  The timeout period elapsed prior to completion of the operation or the server is not responding. Operation cancelled by user. The statement has been terminated.
(Error Code: 400)

Update fields Feature layer hosted: 775936fdcda549d6b0b4aab51e36537c
Add building=yes.
1  Unable to calculate fields.
Execution Timeout Expired.  The timeout period elapsed prior to completion of the operation or the server is not responding. Operation cancelled by user. The statement has been terminated.
(Error Code: 400)

Update fields Feature layer hosted: 55e75effe8e44063bb674ca174db7e0a
Add building=yes.
1  Unable to calculate fields.
Execution Timeout Expired.  The timeout period elapsed prior to completion of the operation or the server is not responding. Operation cancelled by user. The statement has been terminated.
(Error Code: 400)

Update fields Feature layer hosted: cf1b4240731a4fa789a5a6fb1f9c35e7
Add building=yes.
1  Unable to calculate fields.
Execution Timeout Expired.  The timeout period elapsed prior to completion of the operation or the server is not responding. Operation cancelled by user. The statement has been terminated.
(Error Code: 400)

Update fields Feature layer hosted: 08f16e58ecd74bbd83b4ab1e6da42823
Add building=yes.
1  Unable to calculate fields.
Execution Timeout Expired.  The timeout period elapsed prior to completion of the operation or the server is not responding. Operation cancelled by user. The statement has been terminated.
(Error Code: 400)

Update fields Feature layer hosted: 465b774d52d34aeda6ffe1db55fe004a
Add building=yes.
1  Unable to calculate fields.
Execution Timeout Expired.  The timeout period elapsed prior to completion of the operation or the server is not responding. Operation cancelled by user. The statement has been terminated.
(Error Code: 400)

Update fields Feature layer hosted: 9eafe56e1a88467cb9d0d7eb2f66ee6c
Add building=yes.
1  Unable to calculate fields.
Execution Timeout Expired.  The timeout period elapsed prior to completion of the operation or the server is not responding. Operation cancelled by user. The statement has been terminated.
(Error Code: 400)

Update fields Feature layer hosted: 91f9cadb16c848feba528eaa5d69e317
Add building=yes.
1  Unable to calculate fields.
Execution Timeout Expired.  The timeout period elapsed prior to completion of the operation or the server is not responding. Operation cancelled by user. The statement has been terminated.
(Error Code: 400)

Update fields Feature layer hosted: a242697203e84f0eb95e076e074c5ef5
Add building=yes.
1  Unable to calculate fields.
Execution Timeout Expired.  The timeout period elapsed prior to completion of the operation or the server is not responding. Operation cancelled by user. The statement has been terminated.
(Error Code: 400)

Update fields Feature layer hosted: 0f12dc9355954a5a88d32b67cacce750
Add building=yes.
1  Unable to calculate fields.
Execution Timeout Expired.  The timeout period elapsed prior to completion of the operation or the server is not responding. Operation cancelled by user. The statement has been terminated.
(Error Code: 400)

Update fields Feature layer hosted: 40ab4bcc6da347aca0fa53dfc1ba5b6b
Add building=yes.
1  Unable to calculate fields.
Execution Timeout Expired.  The timeout period elapsed prior to completion of the operation or the server is not responding. Operation cancelled by user. The statement has been terminated.
(Error Code: 400)
IgorEliezer commented 10 months ago

Eu e @ThierryAJean damos uma rápida olhada, vimos que está indo bem para a apresentação para Esri.

Vimos Jundiaí Address points. Como sugestão de melhoria: addr:postcode precisa seguir o formato 00000-000, que é adotado no OSM Brasil.

image

0e1 commented 10 months ago

Eu e @ThierryAJean damos uma rápida olhada, vimos que está indo bem para a apresentação para Esri.

Vimos Jundiaí Address points. Como sugestão de melhoria: addr:postcode precisa seguir o formato 00000-000, que é adotado no OSM Brasil.

image

Adicionei a sugestão na lista de ajustes adicionais no primeiro comentário.

0e1 commented 10 months ago

Teste de consolidação para MG/Contagem/_pk0009.01 e SP/Jundiai/_pk0025.01.

Arquivos para abrir no QGIS (campos antigos possuem o prefixo _old__): https://addressforall.org/_private/con/a4a_br_mg_contagem_geoaddress_7600000901101.zip https://addressforall.org/_private/con/a4a_br_mg_contagem_via_7600000901101.zip https://addressforall.org/_private/con/a4a_br_sp_jundiai_nsvia_7600002501401.zip https://addressforall.org/_private/con/a4a_br_mg_contagem_parcel_7600000901101.zip https://addressforall.org/_private/con/a4a_br_sp_jundiai_geoaddress_7600002501501.zip https://addressforall.org/_private/con/a4a_br_sp_jundiai_via_7600002501201.zip

Links para visualização no Arcgis online (no padrão OpenStreetMap, sem campos desnecessários e desabreviados):

https://viz.addressforall.org/BR-MG-Contagem/_pk0009.01/geoaddress https://viz.addressforall.org/BR-MG-Contagem/_pk0009.01/parcel https://viz.addressforall.org/BR-MG-Contagem/_pk0009.01/via https://viz.addressforall.org/BR-SP-Jundiai/_pk0025.01/geoaddress https://viz.addressforall.org/BR-SP-Jundiai/_pk0025.01/nsvia https://viz.addressforall.org/BR-SP-Jundiai/_pk0025.01/via

Wiki com rascunho do que foi aplicado aos campos, especialmente a tabela de abreviaturas: https://github.com/digital-guard/preserv/wiki/Consolida%C3%A7%C3%A3o

Resumo do que foi feito:


Questões:

  1. A filtragem não considera os dados com error não-nulo. Os arquivos shapefile gerados para ESRI incluem esses casos. Os procedimentos descritos na wiki mencionada acima foram aplicados nos casos onde error é nulo, ou seja, no resultado da filtragem. Devemos aplicar os procedimentos nos casos onde error é não-nulo?
  2. A desabreviação da string (quebrada por espaço) se concentrou nas duas primeiras partes. Empiricamente, isso resolve a maior parte dos casos. A desabreviação deve ser exaustiva?
IgorEliezer commented 10 months ago

Vejo que é 80% utilizável, mas há casos que precisamos ver: Jundiaí:

Até agora foram estes.

0e1 commented 10 months ago

Vejo que é 80% utilizável, mas há casos que precisamos ver: Jundiaí:

* Campo sup vazio. É possível ocultá-lo caso esteja vazio?
  ![image](https://user-images.githubusercontent.com/4673289/271339548-b19b9e2e-c87c-4b4c-a560-b70f12004df9.png)

Não dá. O campo é vazio para o exemplo em questão. Mas existem geometrias onde ele é não-vazio.

* Preposição fora do lugar, "Rua do Rosário" está como "Rua Rosário Do". Talvez seja difícil de resolver.
  ![image](https://user-images.githubusercontent.com/4673289/271340149-3bbcbba0-555d-41d6-bee1-4d8c49bb8be7.png)

Dá pra resolver. De forma genérica eu acho melhor não fazer. Por exemplo, R SEM DO, poderia ser um falso positivo. É comum removerem acentuação, além de abreviarem. Esse exemplo fictício poderia ser Rua Sem Dó ou Rua do Sem.

Dois caminhos:

  1. Comparar com outra fonte (exemplo: OpenStreetMap) e para cada diferença decidir qual a usar
  2. Listar os casos encontrados na forma <errado,certo> e, no final do processo, realizar a troca errado -> certo (uma lista de candidatos para o caso de preposição do final pode ser gerada usando expressão regular.)
0e1 commented 10 months ago

2. (uma lista de candidatos para o caso de preposição do final pode ser gerada usando expressão regular.)

Por exemplo, a consulta

SELECT properties->>'via', clean_string(properties->>'old_via','via','BR-SP-Jundiai'), REGEXP_MATCHES(properties->>'via', ' (de|dos?|das?)$','gi') AS rgx
FROM ingest.feature_asis
WHERE file_id =7

Retorna 427 vias num universo de 14000 em Jundiaí. Cerca de 3%. É pouco, mas exige tempo para avaliar cada caso. Sugestão do @ppKrauss, a qual eu concordo, é resolver a maior parte dos casos, e não gastar tempo com a miudeza agora.

IgorEliezer commented 10 months ago

Sugestão do @ppKrauss, a qual eu concordo, é resolver a maior parte dos casos, e não gastar tempo com a miudeza agora.

Concordo.

IgorEliezer commented 10 months ago

@0e1 Depois você vai regerar os CutGeos? Vejo que os CutGEOs de vias de Contagem estão com texto CAIXA ALTA.

0e1 commented 10 months ago

@0e1 Depois você vai regerar os CutGeos? Vejo que os CutGEOs de vias de Contagem estão com texto CAIXA ALTA.

Não pretendia gerar. (Mas, como tudo ainda está no servidor, é possível gerar)

Os repositórios CutGeo, até o momento, são para os arquivos filtrados (resultado da ingestão). Note que até mesmo os dados com error não-nulo não estão no CutGeo. Em Contagem e Jundiaí foram feitas operações (desabreviação, ajuste de case, remoção de espaços) em cima dos arquivos filtrados, produzindo o que se chama de consolidado.

O que o @ppKrauss havia me pedido era para usar as as keys do OpenStreetMap no CutGeo de Contagem e Jundiaí (para você usar na apresentação dia 30). Acabei de fazer isso, relatei aqui https://github.com/digital-guard/preservCutGeo-BR2021/issues/15.