2 391
edições
mSem resumo de edição |
(report.v004_osmc_coverage_distrib) |
||
(6 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 8: | Linha 8: | ||
As funções API trabalham apenas com JSON. A função equivalente porém retornando dados SQL seria <code>osmc.decode_scientific_absolute_geoms('8b,8e,9','CM',16)</code>, que discutimos neste artigo Wiki. <br/>A geração de céulas menores, da ordem de metros ou poucos quilômetros, dispensa a inclusão de pontos, <code>osmc.decode_scientific_absolute_geoms('8b,8e,9','CM',16,true)</code>. | As funções API trabalham apenas com JSON. A função equivalente porém retornando dados SQL seria <code>osmc.decode_scientific_absolute_geoms('8b,8e,9','CM',16)</code>, que discutimos neste artigo Wiki. <br/>A geração de céulas menores, da ordem de metros ou poucos quilômetros, dispensa a inclusão de pontos, <code>osmc.decode_scientific_absolute_geoms('8b,8e,9','CM',16,true)</code>. | ||
==Grade L0== | == Grades Científicas == | ||
O sistema de ''grades científicas'' é pré-requisito para definir o sistema de grades logísticas: geometricamente são as mesmas células, resultando nas logísticas como subconjunto. | |||
Na sua definição técnica, a cobertura municipal é uma lista de geocódigos científicos, e, como todas são de células com lado superior a 4km, podemos deixar prontas as grades L0 a L5 de camarões. Abaixo disso oferecemos apenas grades logísticas. Nos níveis de cobertura municipal, como L5, incluímos na coluna ''info'' a lista de apelidos oficiais da célula — e sendo uma célula de borda, pode acontecer da mesma célula ser cobertura para dois municípios. | |||
===Grade L0=== | |||
[[Arquivo:Grid-CM-L0.png|miniaturadaimagem|280px|Grade scientífica nível ''L0''.]] | [[Arquivo:Grid-CM-L0.png|miniaturadaimagem|280px|Grade scientífica nível ''L0''.]] | ||
A grade ''L0'' de células inteiras e respectivos rótulos, ilustrada ao lado, foi gerada por: | A grade ''L0'' de células inteiras e respectivos rótulos, ilustrada ao lado, foi gerada por: | ||
Linha 34: | Linha 39: | ||
Column | Type | Description | Column | Type | Description | ||
----------------+----------+------------------- | ----------------+----------+------------------- | ||
gid_vbit | varbit | PK. The complete geocode | gid_vbit | varbit | PK. The complete hierarchical geocode, with country prefix. | ||
code_b16h | text | Geocode, withoutout the country prefix. | code_b16h | text | Geocode, withoutout the country prefix. | ||
is_border | text | flag indicating cell intersecting the country border. | is_border | text | flag indicating cell intersecting the country border. | ||
geom | geometry | Original geometri, in the native SRID projection. | geom | geometry | Original geometri, in the native SRID projection. | ||
geom4326 | geometry | The geometry with no projection, | geom4326 | geometry | The geometry with no projection, by ST_Transform_resilient(). | ||
</pre> | </pre> | ||
Os recortes podem ser obtidos pela função de recortes por jurisdição, ''osmc.grid_jurisdiction_cutcells''(), que faz simplesmente o ST_Intersect da geometria da jurisdição com as células. A redundância na geometria, com coluna geom4326, só é necessária nas células muito grandes. Faz uso da função ST_Transform_resilient() para resolver o | Os recortes podem ser obtidos pela função de recortes por jurisdição, ''osmc.grid_jurisdiction_cutcells''(), que faz simplesmente o ST_Intersect da geometria da jurisdição com as células. A redundância na geometria, com coluna geom4326, só é necessária nas células muito grandes. Faz uso da função ST_Transform_resilient() para resolver o https://gis.stackexchange.com/q/444441/7505 | ||
==Grade L1== | ===Grade L1=== | ||
[[Arquivo:Grid-CM-L0.png|miniaturadaimagem|280px|Grade scientífica nível ''L1''.]] | [[Arquivo:Grid-CM-L0.png|miniaturadaimagem|280px|Grade scientífica nível ''L1''.]] | ||
rascunho A grade ''L1'' de células inteiras e respectivos rótulos, ilustrada ao lado, foi gerada por: | rascunho A grade ''L1'' de células inteiras e respectivos rótulos, ilustrada ao lado, foi gerada por: | ||
Linha 70: | Linha 75: | ||
; | ; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Grades logísticas == | |||
Todos os municípios tiveram suas respectivas coberturas geradas pelo procedimento descrito em ?? (Claiton), que faz a inclusão dos seus resultados na mesma tabela onde foram inclusas as coberturas nacionais, ''osmc.cover''. As coberturas municipais oficiais são listadas em https://git.afa.codes/CM/blob/main/data/coverage.csv | |||
Caso seja necessário gerar nova versão a partir do gerenciado pela base, basta exportar para CVS esta ''query'': | |||
<syntaxhighlight lang="sql"> | |||
DROP VIEW IF EXISTS report.v003_osmc_coverage_export CASCADE | |||
; | |||
CREATE VIEW report.v003_osmc_coverage_export AS | |||
SELECT isolevel, isolabel_ext, status, | |||
array_agg(DISTINCT b16 ORDER BY b16) FILTER(WHERE not(is_overlay)) as cover, | |||
array_agg(DISTINCT b16 ORDER BY b16) FILTER(WHERE is_overlay) as overlay, | |||
max(round(length(suffix)/2.0 - 2, 1)) FILTER(WHERE not(is_overlay)) as cover_cells_level, | |||
max(round(length(suffix)/2.0 - 2, 1)) FILTER(WHERE is_overlay) as overlay_cells_level | |||
FROM ( | |||
SELECT *, natcod.vbit_to_baseh(substring(cbits,11),16) as b16, | |||
substring(cbits,11) suffix, | |||
cardinality(string_to_array(isolabel_ext,'-')) isolevel | |||
FROM osmc.coverage | |||
) t -- WHERE status=1? | |||
GROUP BY 1,2,3 | |||
ORDER BY 1,2,3 | |||
; | |||
DROP VIEW IF EXISTS report.v004_osmc_coverage_distrib CASCADE | |||
; | |||
CREATE VIEW report.v004_osmc_coverage_distrib AS | |||
SELECT substring(isolabel_ext,1,2) as country, isolevel, cover_cells_level, | |||
count(*) n_municipalities, | |||
round(avg(cardinality(cover))) avg_n_cells | |||
FROM report.v003_osmc_coverage_export | |||
GROUP BY 1,2,3 | |||
ORDER BY 1,2,3 | |||
; | |||
-- select isolabel_ext, cover_cells_level,overlay_cells_level from report.v003_osmc_coverage_export WHERE isolabel_ext LIKE 'CM-%-%' order by 2, 1; | |||
-- select cover_cells_level, n_municipalities, avg_n_cells from report.v004_osmc_coverage_distrib where country='CM' and isolevel=3; | |||
-- COPY (SELECT isolabel_ext, status, cover, overlay FROM report.v003_osmc_coverage_export WHERE isolabel_ext LIKE 'CM-%-%') TO 'out.csv' CSV HEADER; | |||
</syntaxhighlight> | |||
A seguir apenas dois exemplos, [https://afa.codes/CM-CE-Yoko CM-CE-Yoko] (com ''overlay'' no centro urbano) e [https://afa.codes/CM-NO-Dembo Dembo no Norte] (ex. "46B4" cai na área de ''overlay''). |
edições