dg:Workflow: mudanças entre as edições

De Documentação
Linha 125: Linha 125:
== Visualização ==
== Visualização ==


<syntaxhighlight lang="sh">make make all_filtered
<syntaxhighlight lang="sh">make all_filtered


/var/gits/_dg/preserv-BR/data/RS/NovoHamburgo/_pk0063.01
/var/gits/_dg/preserv-BR/data/RS/NovoHamburgo/_pk0063.01

Edição das 17h57min de 9 de junho de 2023

Ingestão

  • Devido à hardcoding, qualquer base ingest depende da dl05s_main.
  • Vamos usar apenas a base ingest1, e não adulterar mais nada no servidor.
  • É possível trocar ingest1 por outra com os devidos cuidados e parametrizações.

Preparo do ambiente e da base

cd /var/gits/_a4a/pg_pubLib-v1
git pull

cd /var/gits/_dg/preserv/src
git pull

make fix_permissions # vai solicitar sudor

make # vai listar as opções

make ini_ingest pg_db=ingest1 # cria base ingest1

Preparo do processo de ingestão

make fix_permissions # vai solicitar sudor

cd /var/gits/_dg/preserv-BR/src
git pull

make # vai listar as opções
make all # copia makefile inicial em todos pacotes de dados

cd /var/gits/_dg/preserv-BR/data/

ls  # vamos seguir a ordem alfabética

Exemplo do pk42.01

Verificando a situação no filesystem:

make fix_permissions # vai solicitar sudor
cd /var/gits/_dg/preserv-BR/data/
ls AC/RioBranco/_pk0042.01/
grep "^42" donor.csv
grep ",42,1" donatedPack.csv
cd  AC/RioBranco/_pk0042.01/
more sha256sum.txt
grep file  make_conf.yaml
# ... até aqui foi só conferir se batem IDs, hashes e títulos

more make_conf.yaml
# detectamos problemas por ser antigo: falta licença, faltam file sizes, etc.

make me # para a ingest indicada em commomFirst.yaml ou make me pg_db=ingestXX para uma ingest diferente.
        # Idem para qualquer target em preserv-BR
# .. responder senhas ENTERs etc.

make all_layers # para ingerir todos os layers ou make <nome_do_layer> para ingerir um layer especifico.
make all_joins # para executar todos os joins ou se existir a necessidade.

Exemplo do pk0004.01 (OpenStreetMap)

make fix_permissions # vai solicitar sudor

pushd /var/gits/_dg/preserv-BR/data/_pk0004.01
ls _pk0004.01/
grep "^4," donor.csv
grep ",4,1" donatedPack.csv
pushd  _pk0004.01/
more sha256sum.txt
grep file  make_conf.yaml
# ... até aqui foi só conferir se batem IDs, hashes e títulos

more make_conf.yaml
# detectamos problemas por ser antigo: falta licença, faltam file sizes, etc.

make me # para a ingest indicada em commomFirst.yaml ou make me pg_db=ingestXX para uma ingest diferente.

# caso falte file sizes:
make wget_files orig=/tmp/pg_io/tmpfolder
make insert_size orig=/tmp/pg_io/tmpfolder
rm -rf /tmp/pg_io/tmpfolder

make openstreetmap # executar antes da ingestão, apenas uma vez.
# .. responder senhas ENTERs etc.
make all_layers


Publicação

Gerar os arquivos para preservCutGeo

Para gerar os arquivos que serão publicados no respectivo preservCutGeo do país:

make publicating_geojsons_<nome_do_layer> # exemplo: make publicating_geojsons_via` gera os arquivos em `/var/gits/_dg/preservCutGeo-BR2021/data/AC/RioBranco/_pk0042.01/via/`

make target audit-geojsons_<nome do layer> # exibe informações sobre os arquivos gerados.

Atualmente, apenas em casos excepcionais é necessário recorrer a busca de parâmetros de distribuição.

Subir para o repositório

Concluída a geração dos arquivos publicáveis, fazer o pull dos arquivos gerados na branch main do no respectivo preservCutGeo do país:

cd /var/gits/_dg/<repositorio CutGeo>
git pull


Copiar informações para DL05s_main

Para copiar o conteúdo da tabela ingest.donated_packcomponent para optim.donated_PackComponent_not_approved em DL05s_main:

cd /var/gits/_dg/preserv/src
make to_donated_packcomponent pg_db=<nome_base_ingest> pg_datalake=dl05s_main

Aprovação

A aprovação se dá pela avaliação dos arquivos e movendo os dados de optim.donated_PackComponent_not_approved para optim.donated_PackComponent em DL05s_main:

# obter a variavel id
psql postgres://postgres@localhost/dl05s_main <<< "SELECT * FROM optim.donated_PackComponent_not_approved;"
pushd /var/gits/_dg/preserv/src
make approved_donated_packcomponent id=ZZ pg_datalake=dl05s_main

Nesse momento, os novos dados fazem parte das estatísticas disponibilizadas em API. Também, listas disponibilizadas no site addressforall e em documentações podem ser atualizadas.

Visualização

make all_filtered

/var/gits/_dg/preserv-BR/data/RS/NovoHamburgo/_pk0063.01
/tmp /var/gits/_dg/preserv-BR/data/RS/NovoHamburgo/_pk0063.01
Generating ziped shapefile...
Initializing... 
Done (postgis major version: 3).
Output shape: Polygon
Dumping: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [130936 rows].
  adding: a4a_br_rs_novohamburgo_building_7600006301101/ (stored 0%)
  adding: a4a_br_rs_novohamburgo_building_7600006301101/a4a_br_rs_novohamburgo_building_7600006301101.shx (deflated 58%)
  adding: a4a_br_rs_novohamburgo_building_7600006301101/a4a_br_rs_novohamburgo_building_7600006301101.dbf (deflated 87%)
  adding: a4a_br_rs_novohamburgo_building_7600006301101/a4a_br_rs_novohamburgo_building_7600006301101.prj (deflated 40%)
  adding: a4a_br_rs_novohamburgo_building_7600006301101/a4a_br_rs_novohamburgo_building_7600006301101.cpg (stored 0%)
  adding: a4a_br_rs_novohamburgo_building_7600006301101/a4a_br_rs_novohamburgo_building_7600006301101.shp (deflated 59%)
Upload and get uri cloud...
Insert infos in optim.donated_PackComponent_cloudControl...
File available at: http://dl.digital-guard.org/out/a4a_br_rs_novohamburgo_building_7600006301101.zip
File available at: https://addressforall-my.sharepoint.com/personal/operacao_addressforall_org/_layouts/15/download.aspx?share=EaJb5nvzNblLthafTgulxToBYNG-bvSbv3Q7oPNiUGwYnw
File available at: /tmp/a4a_br_rs_novohamburgo_building_7600006301101.zip
End.

Inserir size no make_conf.yaml

Procedimento para inserir size em files de um make_conf:

pushd /var/gits/_dg/preserv-BR/src
make all
pushd /var/gits/_dg/preserv-BR/data/AC/RioBranco/_pk0042.01
make me
make wget_files orig=/tmp/pg_io/tmpfolder
make insert_size orig=/tmp/pg_io/tmpfolder
rm -rf /tmp/pg_io/tmpfolder
popd
popd


Licenças

Executar o target make insert_license utiliza os dados de digital-guard/licenses para gerar no respectivo make_conf.yaml o seguinte, por exemplo:

license_evidences:
    definition: [ODbL-1.0, odbl, http://www.opendefinition.org/licenses/odc-odbl]

onde definition: equivale a [name, family, url] conforme discutido em https://github.com/digital-guard/preserv/issues/32

Manualmente, inserir file e uri_evidency, conforme discutido em https://github.com/digital-guard/preserv/issues/19:

    file: f0cbf591bda09880dc27cdbfcf4ee45189eb1e2c3742800c066f0b5576d81744.zip
    uri_evidency: http://web.archive.org/web/20211012105347/https://www.openstreetmap.org/copyright

onde file indica o sha256 do arquivo compactado contendo as evidencias e uri_evidency indica o sha256.eml ou archive.org/url como discutido aqui https://github.com/digital-guard/preserv/issues/32#issuecomment-998347112.

Resultando em:

license_evidences:
    definition: [ODbL-1.0, odbl, http://www.opendefinition.org/licenses/odc-odbl]
    file: f0cbf591bda09880dc27cdbfcf4ee45189eb1e2c3742800c066f0b5576d81744.zip
    uri_evidency: http://web.archive.org/web/20211012105347/https://www.openstreetmap.org/copyright

Exemplo utilizado em https://github.com/digital-guard/preserv-CO/blob/main/data/_pk0004.01/make_conf.yaml

Gerar README.md

Template em ptbr: https://github.com/digital-guard/preserv/blob/main/src/maketemplates/readme_ptbr.mustache

Template em es: https://github.com/digital-guard/preserv/blob/main/src/maketemplates/readme_es.mustache

A seguir exemplo fictício de make_conf.yaml para gerar um README.md do pacote. Reparar nas chaves: comments, comment, test_evidence, standardized_fields, other_fields, other_files e to-do.

Informações extras ou que não se encaixam nas referidas chaves devem ser incluídas num arquivo attachment.md, que terá seu conteúdo anexado ao final do README.md numa seção chamada anexo.

pack_id: 81.1
pkversion: 001
schemaId_input: 
schemaId_template: 
codec:descr_encode: srid=31983

files:
  -
    p:    1
    file: d9cddc63f7782d250fc80f0572b9fb884ee7ec1911e19deea4381a4ad5d0a172.zip
    name: Bairros
    comments: Comentários sobre o arquivo, se houver.
    size: 1234

layers:

  geoaddress:
    subtype: ext
    method: shp2sql
    file: 1
    sql_select: ['gid', 'numnovo as hnum', 'cod_log', 'geom']
    orig_filename: pg_renumeracoes
    comments: Comentários referente ao layer, se houver.
    test_evidence: endereço da imagem de evidencia do layer.
    
    # dados relevantes, padronizados
    standardized_fields:
     -
      name: nome do campo ou combinação de campos
      standard: 'nome padronizado, por exemplo: hnum'
      comment: comentários sobre o campo, se houver.

    # dados relevantes, NÃO padronizados, se houver
    other_fields:
     -
      name: nome do campo ou combinação de campos
      comment: comentários sobre o campo, se houver.

comments: Comentários gerais sobre os dados, sobre o pacote, etc, se houver.

test_evidence: endereço da imagem de evidencia de todos os dados. 

# outros arquivos que podem ser úteis
other_files:
  -
    p: 2
    file: pg_div_municipio.zip
    name: pg_div_municipio
    format: shp
    comment: Arquivo com a divisa territorial de guarulhos e vizinhos.

# Lista de tarefas
to-do: 
  - Tarefa 1.

Como gerar

Exemplo de geração de README.md:

pushd /var/gits/_dg/preserv-BR/src
make all
pushd /var/gits/_dg/preserv-BR/data/AC/RioBranco/_pk0042.01
make readme pg_db=ingest99
popd
popd

Exemplos:

No rule to make target

Ao executar make layer ou make all_layers, caso encontre um erro do tipo

make: *** No rule to make target '/var/www/dl.digital-guard.org/bae2054448855305db0fc855d2852cd5a7b369481cc03aeb809a0c3c162a2c04.zip', needed by 'parcel'.  Stop.

o arquivo especificado não está no diretório default /var/www/dl.digital-guard.org, informado na chave orig de uma jurisdição, por exemplo, em commomFirst.yaml. Significando que o arquivo está armazenado em outro lugar. Isso está indicado na tabela de-para.

Nesse caso usar:

wget -P /diretorio/para/arquivo/baixado http://dl.digital-guard.org/bae2054448855305db0fc855d2852cd5a7b369481cc03aeb809a0c3c162a2c04.zip

make me pg_db=ingestXX

make parcel orig=/diretorio/para/arquivo/baixado pg_db=ingestXX

Se o download for realizado em /var/www/dl.digital-guard.org utilizar apenas

make parcel pg_db=ingestXX

uma vez que o valor default de orig é /var/www/dl.digital-guard.org.

Observação: atualmente, common002_layerHeader.mustache interage com o usuário solicitando a confirmação de download de dl.digital-guard.org ou o fornecimento do valor correto de orig. Caso o download seja realizado, o arquivo estará localizado na respectiva sandbox do layer. Notar que se nointeraction=y não haverá interação com o usuário e o download será feito.

Clean sandbox

O processo de ingestão utiliza subpastas no caminho informado em sandbox, cujo valor default é informado no commomFirst.yaml. Antes na execução da ingestão de cada layer, o target makedirs cria ou limpa a subpasta utilizada pelo layer. Após a execução, o target clean-sandbox remove a subpasta, evitando que arquivos não mais necessários permanecem no sistema de arquivos.

make layer sem interação com usuário:

Para rodar um target sem serem solicitadas confirmações do usuário, utilizar nointeraction=y.

Por exemplo, make block nointeraction=y faz a ingestão dos dados sem solicitar confirmações do usuário.[1]

Essa variável só produz efeito em target layer, publicating_geojsons_layer ou me. Para os demais, não.


Atualizar tabelas de optim (atualmente em dl05s_main):

Se donatedPack.csv ou donor.csv (em qualquer jurisdição) forem alterados ou um novo make_conf.yaml for criado (se não existia e passou a existir), é necessário atualizar as tabelas do schema optim. Para isso, utilizar:

pushd /var/gits/_dg/preserv/src
make load_optim_csv pg_datalake=dl05s_main

Notar que se as restrições das tabelas não forem respeitadas o carregamento ou atualização dos dados não acontece. Retornando erro.

Caso for alterado o sha256 em um make_conf.yaml já existente, ver preserv-BR/issues/68.

Alterações de sha256 em make_conf.yaml

Ao alterações no sha256 de arquivos make_conf.yaml:

  1. incrementar pkversion;
  2. insrir nova entrada no arquivo donatePack.csv;
  3. excecutar https://github.com/digital-guard/preserv/blob/main/docs/pt/man-diversos.md#atualizar-tabelas-de-optim-atualmente-em-dl05s_main


Diagrama

https://lucid.app/lucidchart/03536d69-dd73-4f38-92ec-4d32542b29c0/edit?invitationId=inv_9b03ed68-54ce-4d0f-ad77-da1eff87ed43&page=0_0#

Workflow da DG.
  1. Layer com method que utiliza o ogr2ogr via docker, ou target me, podem solicitar a senha do usuário.