dg:Workflow: mudanças entre as edições
Sem resumo de edição |
Sem resumo de edição |
||
Linha 128: | Linha 128: | ||
== Inserir size no make_conf.yaml == | |||
Procedimento para inserir <code>size</code> em <code>files</code> de um make_conf: | |||
<pre>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</pre> | |||
<references /> | |||
== Licenças == | == Licenças == | ||
Linha 215: | Linha 229: | ||
to-do: | to-do: | ||
- Tarefa 1.</syntaxhighlight> | - Tarefa 1.</syntaxhighlight> | ||
=== Como gerar === | === Como gerar === | ||
Linha 285: | Linha 300: | ||
# excecutar https://github.com/digital-guard/preserv/blob/main/docs/pt/man-diversos.md#atualizar-tabelas-de-optim-atualmente-em-dl05s_main | # excecutar https://github.com/digital-guard/preserv/blob/main/docs/pt/man-diversos.md#atualizar-tabelas-de-optim-atualmente-em-dl05s_main | ||
== Diagrama == | == Diagrama == |
Edição das 16h15min de 9 de junho de 2023
Ingestão
- Devido à hardcoding, qualquer base
ingest
depende dadl05s_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, para aguardar aprovação.
Copiar informações para DL05s_main
A execução dos targets de ingestão e publicação geram dados na tabela ingest.donated_packcomponent
da base de dados ingest
que foi utilizada no processo. A base ingest
é transitória. Findo os passos anteriores, os dados gerados devem ser movidos para a base de dados permanente DL05s_main
.
Para copiar o conteúdo da tabela ingest.donated_packcomponent
para optim.donated_PackComponent_not_approved
em DL05s_main
:
pushd /var/gits/_dg/preserv/src
make to_donated_packcomponent pg_db=ingestXX 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.
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:
- 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
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:
- incrementar
pkversion
; - insrir nova entrada no arquivo donatePack.csv;
- excecutar https://github.com/digital-guard/preserv/blob/main/docs/pt/man-diversos.md#atualizar-tabelas-de-optim-atualmente-em-dl05s_main
Diagrama
- ↑ Layer com
method
que utiliza o ogr2ogr via docker, ou targetme
, podem solicitar a senha do usuário.