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

5 504 bytes adicionados ,  14 de dezembro de 2023
m
Sem resumo de edição
 
(33 revisões intermediárias por 3 usuários não estão sendo mostradas)
Linha 1: Linha 1:
== Pré Ingestão ==
{{Dg info}}
<pre>
Carlos, Luiz e Igor favor refazer ou revisar esta seção.
</pre>
Fluxo de trabalho do Igor e do Carlos


=== Atualizar tabelas de optim ===
== Resumo geral e opções ==
[[Arquivo:DG-workflow2023-Limpo-v1.png|thumb|420px]]
O fluxo de trabalho (''workflow'') completo envolve diversas etapas, que no futuro poderão vir automatizadas pelo [[Airflow]], mas por hora  precisam ser realizadas por uma pessoa previamente treinada no uso do console Linux.


'''Se''' donatedPack.csv ou donor.csv (em qualquer jurisdição) '''forem alterados''' ou um '''novo''' ''make_conf.yaml'' for criado, é necessário atualizar as tabelas do [https://git.digital-guard.org/preserv/blob/main/src/optim-step1-ini.sql schema optim]:
No dia-a-dia da Digita-guard são 3 três serviços relativamente independentes, que não precisam ser realizados simultaneamente:
 
# [[dg:Workflow#Pré-Ingestão|Pré-Ingestão]]: são tarefas de preparo dos metadados e dos arquivos de ''download'', durante ou logo após o recebimento. Seu principal resultado é o arquivo <code>make_conf.yaml</code>.
# [[dg:Workflow#Ingestão|Ingestão]]: filtra e leva os dados brutos (externos da doação) para dentro do banco SQL, viabilizando todas as demais ações. Seu principal resultado são os ''dados filtrados'', no banco.
# [[dg:Workflow#Publicação|Publicação]]: é a ação mais importante, entrega o produto. Os dados filtrados são preservados no ''git'' "preservCutGeo" do país (podendo ser reusados posteriormente pelo banco de dados).
 
Demais ações são auxiliares, para manutenção da base, do ''sandbox'' ou integração com outros recursos, como o site ESRI de publicação amigável.
---------
 
== Pré-Ingestão ==
 
=== Atualização do optim ===
 
'''Se''' [[dg:Guia de preenchimento da Planilha de Doadores|donor.csv]] (em qualquer jurisdição) ou [[dg:Guia de preenchimento da Planilha de Pacotes|donatedPack.csv]] '''forem alterados''' ou um '''novo''' ''make_conf.yaml'' for criado, é necessário atualizar as tabelas do [https://git.digital-guard.org/preserv/blob/main/src/optim-step1-ini.sql schema optim]:


<syntaxhighlight lang="sh">cd /var/gits/_dg/preserv/src
<syntaxhighlight lang="sh">cd /var/gits/_dg/preserv/src
make load_optim_csv pg_datalake=dl05s_main</syntaxhighlight>
make load_optim_csv pg_datalake=dl05s_main</syntaxhighlight>


=== Alterações de sha256 em make_conf.yaml ===
=== Atualização de sha256 ===


Se o ''sha256'' de arquivos for alterado em um make_conf:
Se o ''sha256'' de arquivos for alterado em um make_conf existente:


# incrementar <code>pkversion</code>;
# incrementar <code>pkversion</code>;
Linha 25: Linha 45:


Ver [[dg:Convenções/Armazenamento_de_dados]].
Ver [[dg:Convenções/Armazenamento_de_dados]].
=== Estrutura do make_conf ===
Exemplo fictício de make_conf. Reparar nas chaves: <code>comments, comment, test_evidence, standardized_fields, other_fields, other_files e to-do</code> utilizadas na geração automatizada de README.md. Informações extras ou que não se encaixam nas referidas chaves podem ser incluidas no arquivo ''attachment.md'', anexado ao final do README.md na seção ''Anexo''. Templates em [https://git.digital-guard.org/preserv/blob/main/src/maketemplates/readme_ptbr.mustache ptbr] e [https://git.digital-guard.org/preserv/blob/main/src/maketemplates/readme_es.mustache es].
<syntaxhighlight lang="yaml">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.</syntaxhighlight>
=== Arquivos não compactados ===
Em casos que o arquivo original doado não for compactado<ref>https://github.com/digital-guard/preserv-BR/issues/149#issuecomment-1810758833</ref>:
* compactar (em zip, preferencialmente), informar o hash do arquivo compactado ao doador (respondendo email);
* preservar o arquivo compactado;
* usar ''hash'' do arquivo compactado no make_conf.


== Ingestão ==
== Ingestão ==
Linha 63: Linha 149:
</syntaxhighlight>
</syntaxhighlight>


=== Exemplo do pk42.01 ===
==== Exemplo do pk42.01 ====


Verificando a situação no filesystem:
Verificando a situação no ''filesystem'':


<syntaxhighlight lang="sh">make fix_permissions # vai solicitar sudor
<syntaxhighlight lang="sh">make fix_permissions # vai solicitar sudor
Linha 90: Linha 176:
make all_joins # para executar todos os joins ou se existir a necessidade.</syntaxhighlight>
make all_joins # para executar todos os joins ou se existir a necessidade.</syntaxhighlight>


=== Exemplo do pk0004.01 (OpenStreetMap) ===
==== Exemplo do pk0004.01 (OpenStreetMap) ====


<syntaxhighlight lang="sh">make fix_permissions # vai solicitar sudor
<syntaxhighlight lang="sh">make fix_permissions # vai solicitar sudor


pushd /var/gits/_dg/preserv-BR/data/_pk0004.01
cd /var/gits/_dg/preserv-BR/data/_pk0004.01
ls _pk0004.01/
ls _pk0004.01/
grep "^4," donor.csv
grep "^4," donor.csv
grep ",4,1" donatedPack.csv
grep ",4,1" donatedPack.csv
pushd _pk0004.01/
cd _pk0004.01/
more sha256sum.txt
more sha256sum.txt
grep file  make_conf.yaml
grep file  make_conf.yaml
Linha 117: Linha 203:
make all_layers
make all_layers
</syntaxhighlight>
</syntaxhighlight>


== Publicação ==
== Publicação ==


=== Gerar os arquivos para preservCutGeo ===
=== Gerar os arquivos ===


Para gerar os arquivos que serão publicados no respectivo ''preservCutGeo'' do país:
Para gerar os arquivos que serão publicados no respectivo ''preservCutGeo'' do país:
Linha 144: Linha 229:
git pull</syntaxhighlight>
git pull</syntaxhighlight>


=== Copiar informações para DL05s_main ===
=== Copiar para datalake ===


Para copiar o conteúdo da tabela <code>ingest.donated_packcomponent</code> para <code>optim.donated_PackComponent_not_approved</code> em <code>DL05s_main</code>:
Para copiar o conteúdo da tabela <code>ingest.donated_packcomponent</code> para <code>optim.donated_PackComponent_not_approved</code> em <code>DL05s_main</code>:
Linha 157: Linha 242:
<syntaxhighlight lang="sh"># obter a variavel id
<syntaxhighlight lang="sh"># obter a variavel id
psql postgres://postgres@localhost/dl05s_main <<< "SELECT * FROM optim.donated_PackComponent_not_approved;"
psql postgres://postgres@localhost/dl05s_main <<< "SELECT * FROM optim.donated_PackComponent_not_approved;"
cd /var/gits/_dg/preserv/src
cd /var/gits/_dg/preserv/src
make approved_donated_packcomponent id=ZZ pg_datalake=dl05s_main</syntaxhighlight>
make approved_donated_packcomponent id=ZZ pg_datalake=dl05s_main</syntaxhighlight>
Linha 162: Linha 248:
Comando para gerar uma lista de comandos, escolher os que precisar por meio do id:
Comando para gerar uma lista de comandos, escolher os que precisar por meio do id:


<syntaxhighlight lang="sh">psql postgres://postgres@localhost/dl05s_main -qtAX -c "SELECT packvers_id, 'make approved_donated_packcomponent pg_datalake=dl05s_main id=' || id FROM optim.donated_packcomponent_not_approved;"</syntaxhighlight>
<syntaxhighlight lang="sh">psql postgres://postgres@localhost/dl05s_main -qtAX -c "SELECT packvers_id, 'make approved_donated_packcomponent pg_datalake=dl05s_main id=' || id FROM optim.donated_packcomponent_not_approved ORDER BY 1;"</syntaxhighlight>


Escolhido o que será aprovado executar, por exemplo:
Escolhido o que será aprovado executar, por exemplo:
Linha 172: Linha 258:


== Reprodutibilidade ==
== Reprodutibilidade ==
 
=== Como gerar ===
<syntaxhighlight lang="sh">cd /var/gits/_dg/preserv-<caminho_do_pacote_de_dados>
<syntaxhighlight lang="sh">cd /var/gits/_dg/preserv-<caminho_do_pacote_de_dados>
make me_reproducibility # gerar/atualizar script reproducibility.sh</syntaxhighlight>
make me_reproducibility # gerar/atualizar script reproducibility.sh</syntaxhighlight>


== Gerar filtrados ==
== Filtrados ==
 
São os arquivos utilizados para publicação no provedor de visualizaçao de dados.
 
=== Como gerar ===
 
Para gerar Shapefile ou CSV dos dados ingeridos:


<syntaxhighlight lang="sh">cd /var/gits/_dg/preserv-<caminho_do_pacote_de_dados>
<syntaxhighlight lang="sh">cd /var/gits/_dg/preserv-<caminho_do_pacote_de_dados>
Linha 188: Linha 280:
Done (postgis major version: 3).
Done (postgis major version: 3).
Output shape: Polygon
Output shape: Polygon
Dumping: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [130936 rows].
Dumping: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
...
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [130936 rows].
   adding: a4a_br_rs_novohamburgo_building_7600006301101/ (stored 0%)
   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.shx (deflated 58%)
Linha 202: Linha 296:
End.</syntaxhighlight>
End.</syntaxhighlight>


== Pulbicar filtrados ==
=== Visualização ===
Após o processo de publicar as camadas de dados no provedor externo ver [[a4a:Conven%C3%A7%C3%B5es/Visualiza%C3%A7%C3%A3o_de_dados]].
 
Ver a seção [[dg:Workflow#Visualização_de_filtrados]].
 
== Gerar README ==
=== Como gerar ===
 
Para gerar README.md:
 
<syntaxhighlight lang="sh">cd /var/gits/_dg/preserv-BR/src
make all
cd /var/gits/_dg/preserv-BR/data/AC/RioBranco/_pk0042.01
make readme pg_db=ingest99
</syntaxhighlight>
 
=== Exemplos ===
 
* https://github.com/digital-guard/preserv-BR/tree/main/data/SP/SaoPaulo/_pk0033.01
* https://github.com/digital-guard/preserv-BR/tree/main/data/AC/RioBranco/_pk0042.01
* https://github.com/digital-guard/preserv-BR/tree/main/data/SP/Atibaia/_pk0021.01
* https://github.com/digital-guard/preserv-BR/tree/main/data/ES/CachoeiroItapemirim/_pk0091.01


== Atualizar Listas e site ==
== Atualizar Listas e site ==


=== Listagem dos downloads por jurisdição ===
=== Downloads por jurisdição ===
Ver [[dg:Listagem_dos_downloads_por_jurisdi%C3%A7%C3%A3o]].
 
==== MediaWiki ====
 
Para atualizar a página [[dg:Listagem_dos_downloads_por_jurisdi%C3%A7%C3%A3o]] gerar a lista em formato mediawiki com o comando
 
<syntaxhighlight lang="sh">psql postgres://postgres@localhost/dl05s_main -qtAX -c "SELECT optim.generate_list('/tmp/pg_io/list_jurisd_without_filtered_mediawiki.txt','/var/gits/_dg/preserv/src/list_jurisd_without_filtered_mediawiki.mustache');"</syntaxhighlight>
 
e copiar e colar o conteúdo do arquivo '''/tmp/pg_io/list_jurisd_without_filtered_mediawiki.txt''' na referida página.
 
Notar que '''não é exibido''' os arquivos filtrados na lista.
 
Caso seja necessário '''exibir''' os filtrados usar o comando
 
<syntaxhighlight lang="sh">psql postgres://postgres@localhost/dl05s_main -qtAX -c "SELECT optim.generate_list('/tmp/pg_io/list_jurisd_mediawiki.txt','/var/gits/_dg/preserv/src/list_jurisd_mediawiki.mustache');"</syntaxhighlight>
 
e então utilizar o conteúdo do arquivo '''/tmp/pg_io/list_jurisd_mediawiki.txt'''.
 
Consulte [https://github.com/AddressForAll/site-v2/blob/main/README.md README.md] para entender como gerar o site.
 
==== Markdown ====
 
Para atualizar a seção http://addressforall.org/en/downloads atualizar o arquivo https://github.com/AddressForAll/site-v2/blob/main/content/list_downloads.md com o conteúdo do arquivo gerado pelo comando a seguir no formato markdown
 
<syntaxhighlight lang="sh">psql postgres://postgres@localhost/dl05s_main -qtAX -c "SELECT optim.generate_list('/tmp/pg_io/list_jurisd_with_filtered_markdown.txt','/var/gits/_dg/preserv/src/list_jurisd.mustache');"</syntaxhighlight>
 
Notar que '''são exibidos''' os arquivos filtrados na lista.
 
Caso seja necessário '''não exibir''' os filtrados usar o comando
 
<syntaxhighlight lang="sh">psql postgres://postgres@localhost/dl05s_main -qtAX -c "SELECT optim.generate_list('/tmp/pg_io/list_jurisd_with_filtered_markdown.txt','/var/gits/_dg/preserv/src/list_jurisd_without_filtered.mustache');"</syntaxhighlight>


<syntaxhighlight lang="sh">psql postgres://postgres@localhost/dl05s_main -qtAX -c "SELECT optim.generate_list('/tmp/pg_io/list_jurisd_false.txt',false); # gera uma listagem sem mencionar arquivos filtrados"</syntaxhighlight>
=== Downloads por hash ===


=== Listagem dos downloads por hash ===
==== MediaWiki ====
Ver [[dg:Listagem_dos_downloads_por_hash]]
Para atualizar a página [[dg:Listagem_dos_downloads_por_hash]] gerar a lista em formato mediawiki com o comando
<syntaxhighlight lang="sh">psql postgres://postgres@localhost/dl05s_main -qtAX -c "SELECT optim.generate_list_hash('/tmp/pg_io/list_hash.txt'); # gera uma listagem sem mencionar arquivos filtrados"</syntaxhighlight>


=== Seção downloads do site ===
<syntaxhighlight lang="sh">psql postgres://postgres@localhost/dl05s_main -qtAX -c "SELECT optim.generate_list_hash('/tmp/pg_io/list_hash_mediawiki.txt','/var/gits/_dg/preserv/src/list_hash_wiki.mustache');"</syntaxhighlight>
Ver http://addressforall.org/en/downloads/ e https://github.com/AddressForAll/site-v2/blob/main/content/list_downloads.md
<syntaxhighlight lang="sh">psql postgres://postgres@localhost/dl05s_main -qtAX -c "SELECT optim.generate_list('/tmp/pg_io/list_jurisd_true.txt',true); # gera uma listagem com arquivos filtrados"</syntaxhighlight>


=== Gerar páginas ===
e copiar e colocar o conteúdo na referida página.


Ver:
==== Markdown ====
* http://addressforall.org/en/visualization/
* https://github.com/AddressForAll/site-v2/blob/main/content/list_visualization.md
* http://addressforall.org/teste2/


Comando para gerar targets de criação de páginas. Selecionar apenas o que precisar.
Se for necessário gerar a lista em formato Markdown, usar o comando
<syntaxhighlight lang="sh">psql postgres://postgres@localhost/dl05s_main -qtAX -c "SELECT optim.generate_list('/tmp/pg_io/list_jurisd_true.txt',true); # gera uma listagem com arquivos filtrados"</syntaxhighlight>


Após executar o target escolhido, por exemplo, ara gerar em ''/tmp/pg_io/genpages'' as páginas referentes ao ''isolabel'' e ao ''pk'' (exemplo: _pk0042.01), utilizando os dados presentes em <code>optim.donated_PackComponent</code> em ''pg_datalake''. Também é gerada uma ''index.html'' onde a lista não ordenada possui os hiperlinks para todos os ''isolabel'' em <code>optim.donated_PackComponent</code>:
<syntaxhighlight lang="sh">psql postgres://postgres@localhost/dl05s_main -qtAX -c "SELECT optim.generate_list_hash('/tmp/pg_io/list_hash_markdown.txt');"</syntaxhighlight>
 
=== Páginas viz ===
 
Para atualizar o conteúdo de http://addressforall.org/viz selecionar o comando referente ao pacote de dados desejado da lista de comandos gerada por
 
<syntaxhighlight lang="sh">psql postgres://postgres@localhost/dl05s_main -qtAX -c "SELECT 'make generate_pages pg_datalake=dl05s_main folder=/tmp/pg_io/genpages isolabel=' || isolabel_ext || ' pk=' || pack_number FROM optim.vw03publication ;"</syntaxhighlight>
 
Por exemplo, para gerar em ''/tmp/pg_io/genpages'' as páginas referentes ao ''pk=_pk0063.01'' do ''isolabel=BR-RS-NovoHamburgo'' utilizando os dados presentes em <code>optim.donated_PackComponent</code> do ''pg_datalake=dl05s_main'' executar:


<syntaxhighlight lang="sh">
<syntaxhighlight lang="sh">
Linha 236: Linha 379:
make generate_pages pg_datalake=dl05s_main folder=/tmp/pg_io/genpages isolabel=BR-RS-NovoHamburgo pk=_pk0063.01</syntaxhighlight>
make generate_pages pg_datalake=dl05s_main folder=/tmp/pg_io/genpages isolabel=BR-RS-NovoHamburgo pk=_pk0063.01</syntaxhighlight>


Depois mover as páginas para:
Notar que é gerado um ''index.html'' atualizado, contendo lista não ordenada com os hiperlinks para todos pacotes publicados.
<syntaxhighlight lang="sh">mv /tmp/pg_io/genpages/*.html /var/www/addressforall.org/teste2
 
Depois de gerar as páginas, movê-las para ''/var/www/addressforall.org/teste2'':
 
<syntaxhighlight lang="sh">mv /tmp/pg_io/genpages/*.html /var/www/addressforall.org/viz
rm -rf /tmp/pg_io/genpages</syntaxhighlight>
rm -rf /tmp/pg_io/genpages</syntaxhighlight>


Em seguida usar o arquivo index.html gerado para atualizar o site em https://github.com/AddressForAll/site-v2/blob/main/content/list_visualization.md.
Por fim, para atualizar a seção http://addressforall.org/en/visualization atualizar o arquivo https://github.com/AddressForAll/site-v2/blob/main/content/list_visualization.md com o conteúdo do arquivo ''/tmp/pg_io/index_teste2.md'' gerado pelo comando a seguir, já no formato markdown (conteúdo equivalente ao ''index.html'' gerado anteriormente)
 
<syntaxhighlight lang="sh">psql postgres://postgres@localhost/dl05s_main -qtAX -c "SELECT optim.publicating_index_pagemd('/tmp/pg_io/index_teste2.md','/var/gits/_dg/preservDataViz/src/preservCutGeo/index_page_markdown.mustache');"</syntaxhighlight>
 
Consulte [https://github.com/AddressForAll/site-v2/blob/main/README.md README.md] para entender como gerar o site.


== Clean sandbox ==
O processo de ingestão utiliza subpastas no caminho informado em <code>sandbox</code>, cujo valor default é informado no ''commomFirst.yaml''. Antes na execução da ingestão de cada layer, o target <code>makedirs</code> cria ou limpa a subpasta utilizada pelo layer. Após a execução, o target <code>clean-sandbox</code> remove a subpasta, evitando que arquivos não mais necessários permanecem no sistema de arquivos.
<syntaxhighlight lang="sh">cd /var/gits/_dg/preserv-<caminho_do_pacote_de_dados>
make clean_sandbox</syntaxhighlight>
== Visualização de filtrados ==
Os dados gerados em [[dg:Workflow#Filtrados]] são publicados em provedor externo para visualização.
=== Publicar layers ===
Descrever aqui o processo de publicação no provedor externo para visualização de camadas de dados.
==== Atualizar redirecionador ====
Após publicar no provedor externo, ver [[a4a:Conven%C3%A7%C3%B5es/Visualiza%C3%A7%C3%A3o_de_dados]] para atualizar o redirecionador.


== Diagrama ==
== Diagrama ==
Linha 249: Linha 414:
[[Arquivo:DigitalGuardWorkflow.png|thumb|420px|Workflow da DG.]]
[[Arquivo:DigitalGuardWorkflow.png|thumb|420px|Workflow da DG.]]


== ss ==  
== Outros ==  
=== Inserir size no make_conf ===
=== Inserir size no make_conf ===


Linha 284: Linha 449:
Exemplo utilizado em https://github.com/digital-guard/preserv-CO/blob/main/data/_pk0004.01/make_conf.yaml
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: <code>comments, comment, test_evidence, standardized_fields, other_fields, other_files e to-do</code>.
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''.
<syntaxhighlight lang="yaml">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.</syntaxhighlight>
==== Como gerar ====
Exemplo de geração de README.md:
<pre>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</pre>
==== Exemplos: ====
* https://github.com/digital-guard/preserv-BR/tree/main/data/SP/SaoPaulo/_pk0033.01
* https://github.com/digital-guard/preserv-BR/tree/main/data/AC/RioBranco/_pk0042.01
* https://github.com/digital-guard/preserv-BR/tree/main/data/SP/Atibaia/_pk0021.01
* https://github.com/digital-guard/preserv-BR/tree/main/data/ES/CachoeiroItapemirim/_pk0091.01


=== No rule to make target ===
=== No rule to make target ===
Linha 388: Linha 472:
Observação: atualmente, [https://github.com/digital-guard/preserv/blob/main/src/maketemplates/common002_layerHeader.mustache#L18 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 <code>nointeraction=y</code> não haverá interação com o usuário e o download será feito.
Observação: atualmente, [https://github.com/digital-guard/preserv/blob/main/src/maketemplates/common002_layerHeader.mustache#L18 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 <code>nointeraction=y</code> não haverá interação com o usuário e o download será feito.


=== Clean sandbox ===
=== make com nointeraction ===
 
O processo de ingestão utiliza subpastas no caminho informado em <code>sandbox</code>, cujo valor default é informado no ''commomFirst.yaml''. Antes na execução da ingestão de cada layer, o target <code>makedirs</code> cria ou limpa a subpasta utilizada pelo layer. Após a execução, o target <code>clean-sandbox</code> 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 <code>nointeraction=y</code>.
Para rodar um ''target'' sem serem solicitadas confirmações do usuário, utilizar <code>nointeraction=y</code>.
Linha 401: Linha 481:




=== Workflow da edição de planilhas ===
Os arquivos CSV do Github infelizmente não são amigavelmente editáveis. Algumas planilhas todavia são ainda dependentes da interface humana nas primeiras etapas do ''workflow'' do trabalho, ao dar entrada em um novo ''donor'' ou ''donatedPack''. Este é o passo-a-passo a ser seguido:
# [https://docs.google.com/spreadsheets/d/1-FQjjhHjJnAOxSWYEdFU_RePxAJDsJCnLviOyDo3QMM/edit#gid=815577163 Editar a planilha colaborativa amigável];
# Baixar e normalizar com <code>make getEdits</code> ou os comandos <code>curl</code> do ''target'' (ver exemplo)
# fazer <code>git diff -wb</code> para conferir.
# se tudo ok fazer <code>git pull</code>, <code>git add</code>, commit e push.
==== Exemplo ====
<syntaxhighlight lang="sh">cd preserv-BR/data/
curl "https://docs.google.com/spreadsheets/d/1-FQjjhHjJnAOxSWYEdFU_RePxAJDsJCnLviOyDo3QMM/gviz/tq?tqx=out:csv&gid=815577163" \
  | csvformat > donor.csv
git diff -wb donor.csv
curl "https://docs.google.com/spreadsheets/d/1-FQjjhHjJnAOxSWYEdFU_RePxAJDsJCnLviOyDo3QMM/gviz/tq?tqx=out:csv&gid=42455849" \
  | csvformat > donatedPack.csv
git diff -wb donatedPack.csv</syntaxhighlight>
A solução CSVkit requer instalar, <code>sudo pip install csvkit</code>, que instala também o comando <code>csvformat</code>.


PS1: conforme [https://superuser.com/a/1692737/276588 discutido] API do Gogle está baixando com um monte de aspas, diferente do download direto da interface. Uma solução seria baixar manualmente... O melhor é normalizar. No futuro o comando <code>frictionless</code> talvez incorpore a normalização. Sugiro incluir normalização UTF8 que usamos no PostgreSQL.


PS2: o google/spreadsheets também oferece opção de sql_query na API, o que permite descartar os campos de cache da planilha donatedPack... [https://developers.google.com/chart/interactive/docs/dev/implementing_data_source#request-format ver aqui].


== Referências ==
[[Categoria:Digital-guard]]
[[Categoria:Digital-guard]]
1 224

edições