Closed crebollobr closed 1 year ago
Criado um ftype
chamado datagrid
que aceita apenas pontos no commit https://github.com/digital-guard/preserv/commit/ed06f4099196b36af7ac4026fa7d8ff47c81180b.
Com isso, ingestar o centro das células do grid. Para isso, usar ST_crentroid
, de maneira semelhante ao utilizado no sql_view
do layer geoaddress
de Porto Alegre/RS: https://github.com/digital-guard/preserv-BR/blob/main/data/RS/PortoAlegre/_pk0018.01/make_conf.yaml#L33.
Nota: nesse fytpe ainda não é possível utilizar o subtype: ext
e realizar um join com um layer de cadastro. Será implementado conforme demanda.
Não funcionou o makefile Diretório: /var/gits/_dg/preserv-CO/data/_pk0006.01 comandos
make me pg_db=ingest20
make datagrid pg_db=ingest20
Resultado
carlos@addressforall:/var/gits/_dg/preserv-CO/data/_pk0006.01$ make datagrid pg_db=ingest20
make: *** No rule to make target 'datagrid'. Stop.
Atualizei o template. Agora deve funcionar.
Deu certo o makefile
any_load
--------------------------------------------------------------------
From file_id=1 inserted type=datagrid_full. +
+
Statistics: +
. +
Before deduplication: +
+
Originals: 1147103 items. +
+
Not Intersecs: 11571 items. +
+
Invalid: 0 items. +
+
Not simple: 0 items. +
+
Empty: 0 items. +
+
Small: 0 items. +
+
Null: 0 items. +
+
Invalid geometry type: 0 items. +
+
Not closed: 0 items. +
+
Large: 0 items. +
+
Inserted in feature_asis: 1135532 items. +
+
Inserted in feature_asis_discarded: 11571 items. +
+
+
After deduplication: +
+
Removed duplicates from feature_asis: 0 items. +
+
Inserted in feature_asis_discarded (duplicates): 0 items. +
+
Inserted in feature_asis (aggregated duplicates): 0 items.+
+
Resulting in feature_asis: 1135532 +
(1 row)
Sobre os dados descartados, aparentemente os dados de fronteira e ilha foram descartados
Não foi possível publicar, não tem o target no makefile
Sobre os dados descartados, aparentemente os dados de fronteira e ilha foram descartados
Esse parece ser o caso onde cabe usar buffer_type: 2
no layer, para aplicar um buffer de 5km na geometria da jurisdição. Ver https://github.com/digital-guard/preserv/blob/main/docs/pt/man-diversos.md#buffer-em-geometrias-jurisdicionais.
Não foi possível publicar, não tem o target no makefile
Vou investigar.
O commit https://github.com/digital-guard/preserv/commit/914e36dbd08e3c490bf2c580443ba8c687a07a4c resolve a falta de datagrid
no case da função ingest.feature_asis_export
. Com isso, layers datagrid
podem ser publicados.
Porém, para o caso especifico de CO/_pk0006.01 a quantidade de espaço disponível (nesse momento 92GB) parece não ser suficiente para realizar a publicação.
Na última etapa da publicação, na função publicating_geojsons_p5
, quando são escritos os arquivos no disco, acontece o erro:
--- Gerando arquivos em ---
psql postgres://postgres@localhost/ingest20 -c "SELECT ingest.publicating_geojsons('datagrid','CO','testegrid','1',9,'3');"
ERROR: could not write to file "base/pgsql_tmp/pgsql_tmp587637.112": No space left on device
CONTEXT: SQL statement "WITH geohash_GeomsMosaic AS (
SELECT * FROM geohash_GeomsMosaic_jinfo(
(SELECT kx_profile->'ghs_distrib_mosaic' from ingest.donated_packcomponent WHERE id=$1),
'{"density_km2":"val","area_km2":"val","area":"val"} '::jsonb,
(SELECT ingest.buffer_geom(geom,1) FROM ingest.vw01full_jurisdiction_geom where isolabel_ext=$2)
)
)
INSERT INTO ingest.publicating_geojsons_p5distrib
SELECT t.ghs,
(u.info || jsonb_build_object(
'ghsval_unit','bytes',
'ghs_bytes', bytes,
'size', size,
'size_unit', size_unit,
'size_unitDensity', (size::float/(u.info->'area_km2')::float),
'ghs_itemsDensity', ((u.info->'ghs_items')::float/(u.info->'area_km2')::float),
'ghs_area', ((u.info->'area_km2')::float) )
) AS info,
u.geom
FROM
(
SELECT ghs,
SUM(length(St_asGeoJson(ST_Intersection( r.geom, s.geom )))) AS bytes,
(CASE (SELECT geomtype FROM ingest.vw03full_layer_file WHERE id=$1) WHEN 'line' THEN SUM(ST_Length(ST_Intersection( r.geom, s.geom ), true))/1000 WHEN 'poly' THEN SUM(ST_Area(ST_Intersection( r.geom, s.geom ),true))/1000000.0 END) AS size,
(SELECT lineage->'feature_asis_summary'->'size_unit' FROM ingest.vw03full_layer_file WHERE id=$1) AS size_unit
FROM ingest.publicating_geojsons_p3exprefix r
LEFT JOIN geohash_GeomsMosaic s
ON r.prefix = s.ghs
GROUP BY ghs
) t
LEFT JOIN geohash_GeomsMosaic u
ON t.ghs = u.ghs"
PL/pgSQL function ingest.publicating_geojsons_p5(bigint,text,text,integer,integer) line 37 at SQL statement
SQL function "publicating_geojsons" statement 4
SQL function "publicating_geojsons" statement 1
make: *** [makefile:110: publicating_geojsons_datagrid] Error 1
buffer_type: 2
Melhorou, mas tem alguns dados no feature_asis_discarted
Quantos giga estima de espaço para ingestão?
buffer_type: 2
Melhorou, mas tem alguns dados no feature_asis_discarted
Adicionei novas opções de valores para buffer_type no commit https://github.com/digital-guard/preserv/commit/1ad590eea3c0087fb589d436c68ea5a6623f873b:
buffer_type: 3
, aplica um buffer de aproximadamente 50 km. Para utilizá-lo, deve-se informá-lo no respectivo layer do _makeconf.yamlbuffer_type: 4
, aplica um buffer de aproximadamente 500 km. Para utilizá-lo, deve-se informá-lo no respectivo layer do _makeconf.yamlAplicar buffer_type: 3
deve capturar as geometrias que ficaram de fora.
Quantos giga estima de espaço para ingestão?
Bem, retestando, fazendo passo a passo e generalizando alguns case
, usando o tipo de geometria, funcionou a publicação. Provável que em algum desses case
, a opção errada estava sendo escolhida e o banco tentando fazer algo que serve para polígonos e que não pode ser feito em pontos.
Fato é que o processo todo (da ingestão à publicação) estão funcionando. Para testar e avaliar os arquivos publicaáveis, recriar a base ingest
. Não esquecer de aplicar um buffer maior, para nenhum ponto ficar de fora.
@crebollobr , sobre a questão de "estouro de memória", o ideal é fazer uma estivamtiva do quanto precisa. O @0e1 implementou uma gambiarra para fazer a publicação com cláusula SQL LIMIT de maneira que se publica algo e aí serve de amostra para estimar o quanto falta de memória em disco.
As grades, assim que otimizadas no OSM.CODES serão armazenadas com apenas ID bigint e atributo (ex. população na célula) para economizar espaço em disco, analogo a grid_ibge_censo2010_info... Mas até lá vamos levando com publicação comum.
@crebollobr , sobre a questão de "estouro de memória", o ideal é fazer uma estivamtiva do quanto precisa. O @0e1 implementou uma gambiarra para fazer a publicação com cláusula SQL LIMIT de maneira que se publica algo e aí serve de amostra para estimar o quanto falta de memória em disco.
As grades, assim que otimizadas no OSM.CODES serão armazenadas com apenas ID bigint e atributo (ex. população na célula) para economizar espaço em disco, analogo a grid_ibge_censo2010_info... Mas até lá vamos levando com publicação comum.
@ppKrauss A publicação ocorreu sem aplicar LIMIT. Comentei acima. Provavelmente, em um dos case a opção errado era escolhida e dava problema. Tornei os case dependentes apenas do tipo de geometria. Antes eles dependiam do ftclass_name.
Resumo, a publicação funcionou, sem gambiarra (para esse caso, claro).
@crebollobr podemos fechar? (obrigado @0e1 agora sem bugs!)
A publicação gerou arquivos grandes, vamos publicar assim?
carlos@addressforall:/var/gits/_dg/preservCutGeo-CO2021$ ls -lh /var/gits/_dg/preservCutGeo-CO2021/data/_pk0006.01/datagrid
total 149M
-rw-rw-r-- 1 carlos carlos 151K jul 18 15:07 geohashes.geojson
-rw-rw-r-- 1 carlos carlos 19M jul 18 14:54 pts_6.geojson
-rw-rw-r-- 1 carlos carlos 131M jul 18 14:54 pts_d.geojson
Não tenho permissão no git digital-guard/preservCutGeo-CO2021.git
carlos@addressforall:/var/gits/_dg/preservCutGeo-CO2021$ git push --set-upstream origin dane-20220718-01
Username for 'https://github.com': crebollo@gmail.com
Password for 'https://crebollo@gmail.com@github.com':
remote: Permission to digital-guard/preservCutGeo-CO2021.git denied to crebollobr.
fatal: unable to access 'https://github.com/digital-guard/preservCutGeo-CO2021.git/': The requested URL returned error: 403
O arquivo é muito grande para publicar do modo regular. comandos:
cd /var/gits/_dg/preservCutGeo-CO2021/data/_pk0006.01/datagrid
git pull origin HEAD
git checkout -b datagrid-20221029
git add *
git commit -m "publicação datagrid"
git push --set-upstream origin datagrid-20221029
carlos@addressforall:/var/gits/_dg/preservCutGeo-CO2021/data/_pk0006.01/datagrid$ git push --set-upstream origin datagrid-20221029
Username for 'https://github.com': crebollo@gmail.com
Password for 'https://crebollo@gmail.com@github.com':
Enumerating objects: 17, done.
Counting objects: 100% (17/17), done.
Delta compression using up to 4 threads
Compressing objects: 100% (13/13), done.
Writing objects: 100% (15/15), 10.29 MiB | 1.84 MiB/s, done.
Total 15 (delta 4), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (4/4), completed with 1 local object.
remote: error: Trace: 6892269b63bb642390266b44d4b3b1aea7e23a19e576570c4e5c19a7f9533c84
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File data/_pk0006.01/datagrid/pts_d.geojson is 130.42 MB; this exceeds GitHub's file size limit of 100.00 MB
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
To https://github.com/digital-guard/preservCutGeo-CO2021.git
! [remote rejected] datagrid-20221029 -> datagrid-20221029 (pre-receive hook declined)
error: failed to push some refs to 'https://github.com/digital-guard/preservCutGeo-CO2021.git'
Não seria melhor dividir esse arquivo em células menores?
Conforme comentado acima não é hora de publicar, precisamos ter a "grade oficial OSMcodes" do país antes, para converter e publicar os dados no formato oficial.
As grades, assim que otimizadas no OSM.CODES serão armazenadas com apenas ID bigint e atributo (ex. população na célula) para economizar espaço em disco, analogo a grid_ibge_censo2010_info... Mas até lá vamos levando com publicação comum.
Ainda estamos testando as implementações com ID de célula 64bits com visualização base16h. Em seguida precisaremos converter uma grade na outra, e esse algoritmo ainda não foi otimizado.
... E não cabe publicar a grade original: grades não-DGGS não se prestam à publicação em git.
Pré-requisito para esta issue: https://github.com/osm-codes/GGeohash/issues/16
Adicionei sobre o layer na wiki: https://wiki.addressforall.org/doc/dg:AsIs_feature_types#Com_geometria.
Para importar dados do tipo grid como
https://geoportal.dane.gov.co/descargas/CNPV2018/Shapefile/ShapefileGrid1km2_VihopeCNPV2018.rar
Tipo do dado datagrid.
Exemplo: make_conf.yaml ( não funciona, somente para exemplo )