digital-guard / preserv

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

Copiar base de jurisdições para a primeira versão de stableGeo-BR #93

Open ppKrauss opened 2 years ago

ppKrauss commented 2 years ago

Cada jurisdição da base de dados (SQL-schema optim) deve ter seu mapa rastreável e copiado como GeoJSON
em http://git.digital-guard.org/stableGeo-BR

A referência ao package-version vem dentro do próprio GeoJSON, como link de atributo origin_url apontando para o package e seu commit (exemplo), e atributo layer com o item de layers de make_conf.yaml que lhe deu origem. O nome de arquivo segue o nome de layer, exceto pela jurisdição, por exemplo:

0e1 commented 2 years ago

A referência ao package-version vem dentro do próprio GeoJSON, como link de atributo origin_url apontando para o package e seu commit (exemplo), e atributo layer com o item de layers de make_conf.yaml que lhe deu origem.

Não ficou claro pra mim esse trecho e o motivo de jurisdiction.geojson referenciar pacote de dados no preserv-BR (ou seria o make_conf.yaml referenciando o jurisdiction.geojson?). Um exemplo de jurisdiction.geojson (sem a chave geometry) ajudaria o entendimento.


Apenas lembrete para consolidar consolidar as issues relacionadas: https://github.com/digital-guard/preserv/issues/93 https://github.com/digital-guard/preserv-BR/issues/123 https://github.com/digital-guard/preserv/issues/118 https://github.com/digital-guard/preserv/issues/113 https://github.com/digital-guard/preserv/issues/73 https://github.com/digital-guard/preserv/issues/36 https://github.com/digital-guard/preserv-CO/issues/12

0e1 commented 1 year ago

@ppKrauss forneça as permissões. Não consegui commitar os geojson das jurisdições de https://github.com/digital-guard/preserv-BR/tree/main/data/_pk0004.01#2018-10-02.

Enter passphrase for key '/home/claiton/.ssh/id_ed25519': 
ERROR: Permission to digital-guard/StableGeo-BR.git denied to 0e1.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
0e1 commented 1 year ago

Código usado para importar https://github.com/digital-guard/preserv-BR/tree/main/data/_pk0004.01#2018-10-02

wget http://dl.digital-guard.org/477b9c42709f3fd7f5e44dcb38752c1d4f4ef132b2cf39fa1015a742934b42db.pbf && chmod o+rw  477b9c42709f3fd7f5e44dcb38752c1d4f4ef132b2cf39fa1015a742934b42db.pbf
osm2pgsql -E 4326 -c -d ingest_osm2018 -U postgres -H localhost --slim --hstore --extra-attributes --hstore-add-index --multi-geometry --number-processes 4 --style /usr/share/osm2pgsql/empty.style /tmp/477b9c42709f3fd7f5e44dcb38752c1d4f4ef132b2cf39fa1015a742934b42db.pbf
psql postgres://postgres@localhost/ingest_osm2018 -c "SELECT ingest.jplanet_inserts_and_drops(76::smallint,true);"

Código para gerar geojson com geometrias de 2018 e propriedades de optim_jurisdictions:

DROP MATERIALIZED VIEW ingest.vw01full_jurisdiction_geom2;
CREATE MATERIALIZED VIEW ingest.vw01full_jurisdiction_geom2 AS
    SELECT j.osm_id,j.jurisd_base_id,j.jurisd_local_id,j.parent_id,j.admin_level,j.name,j.parent_abbrev,j.abbrev,j.wikidata_id,j.lexlabel,j.isolabel_ext,j.ddd,j.housenumber_system_type,j.lex_urn,j.info,j.name_en,j.isolevel, g.way AS geom
    FROM ingest.vw01full_jurisdiction_geom j
    LEFT JOIN jplanet_osm_polygon g
    ON j.osm_id::bigint = (-1*g.osm_id)::bigint
    -- WHERE way IS NOT null LIMIT 1
;
COMMENT ON MATERIALIZED VIEW ingest.vw01full_jurisdiction_geom2
  IS 'Add geom to optim.jurisdiction.'
;

CREATE or replace FUNCTION ingest.jurisdiction_to_geojson(
    p_isolabel_ext text, -- e.g. 'BR-MG-BeloHorizonte'
    p_fileref      text, -- e.g.
    p_pretty_opt   int DEFAULT 3
) RETURNS text  AS $f$
BEGIN
    PERFORM write_geojsonb_features(
      format('SELECT * FROM ingest.vw01full_jurisdiction_geom2 WHERE isolabel_ext = ''%s''',p_isolabel_ext),
      format('%s/%s_jurisd.geojson',p_fileref,lower(replace(p_isolabel_ext,'-','_'))),
      't1.geom',
      'osm_id,jurisd_base_id,jurisd_local_id,parent_id,admin_level,name,abbrev,wikidata_id,lexlabel,isolabel_ext,ddd,name_en,isolevel',
      NULL,NULL,$3,5);

    RETURN (SELECT 'Publicado em ' || p_fileref::text)
  ;
END
$f$ language PLpgSQL;

SELECT ingest.jurisdiction_to_geojson(isolabel_ext,'/var/gits/_dg/StableGeo-BR/data' || (CASE WHEN isolevel::int > 1 THEN '/' || split_part(isolabel_ext,'-',2) ELSE '' END))
FROM ingest.vw01full_jurisdiction_geom2
WHERE jurisd_base_id = 76
;
DROP MATERIALIZED VIEW ingest.vw01full_jurisdiction_geom2;

Resultado da publicação em https://github.com/digital-guard/stableGeo-BR/tree/main/data.

0e1 commented 1 year ago

De https://github.com/digital-guard/preserv-CO/issues/12#issue-1353313053:

Para a carga de isolevel=3, tal como foi feito no Brasil, por ex. AM/jurisdictionLevel8.csv.

Requer geração e recuperação PostgreSQL automáticas por makefile, pois todos encontram-se distribuidos.

Requer makefile standalone para a gestão ser realizada pelos responsáveis locais. Pendente mostrar também que DIVIPOLA, Wikidata e OSM são fontes com respectivos make_confs realizando a contribuição... Depois usar um algoritmo de validação cruzada e consolidação. Os INSERTs e UPDATEs da consolidação também precisam constar: qualquer pessoa com essas fontes deveria ser capaz de reproduzir o processo em comandos make. Documentar em WS como (metodologia) essa reconstrução pode ser feita.