Para fazer conversão de dia juliano (dia do ano 0-365) para o formato gregoriano (dd-mm-aaaa) deve ser utilizada a seguinte linha de comando:
yyyymmdd=$(date -d "${yyyy}-01-01 + ${ddd} days -1 day" +%Y%m%d)
onde as variáveis yyyy representam o ano de interesse e ddd representa o dia sequencial como por exemplo 221
cdsr@dallas:~/scripts$ yyyymmdd=$(date -d "2012-01-01 + 221 days -1 day" +%Y%m%d)
cdsr@dallas:~/scripts$ echo $yyyymmdd
20120808
Por outro lado converter de dia juliano para dia-mes-ano é mais simples, bastando para isto utilizar o seguinte comando:
date -d 2012-08-08 +%j
quarta-feira, 8 de agosto de 2012
terça-feira, 29 de maio de 2012
converção de linha/coluna de uma imagem geotif para lat/long
Depois de pesquisar um pouco como fazer para extrair as coordenadas de um píxel utilizando Python e GDAL conseguí aproveitar as dicas publicadas em:
fonte: http://stackoverflow.com/questions/2922532/obtain-latitude-and-longitude-from-a-geotiff-file
e testei da seguinte maneira:
>>> from osgeo import gdal
>>> from osgeo.gdalconst import *
>>> import numpy, sys
>>> ds = gdal.Open('/home/fmorelli/testes/b250_EV_250_Aggr1km_RefSB_b0.tif', GA_ReadOnly)
>>> print ds.GetGeoTransform()
(-65.60666969799999, 0.01, 0.0, 11.845001666000002, 0.0, -0.01)
>>> gt = ds.GetGeoTransform()
>>> linha, coluna = 0,0
>>> gt[0]+coluna*gt[4]+linha*gt[5] # valor da longitude -65.606
>>> gt[3]+coluna*gt[4]+linha*gt[5] # valor da latitude 11.845
Agora falta fazer uma função pra ficar bonito ...
fonte: http://stackoverflow.com/questions/2922532/obtain-latitude-and-longitude-from-a-geotiff-file
e testei da seguinte maneira:
>>> from osgeo import gdal
>>> from osgeo.gdalconst import *
>>> import numpy, sys
>>> ds = gdal.Open('/home/fmorelli/testes/b250_EV_250_Aggr1km_RefSB_b0.tif', GA_ReadOnly)
>>> print ds.GetGeoTransform()
(-65.60666969799999, 0.01, 0.0, 11.845001666000002, 0.0, -0.01)
>>> gt = ds.GetGeoTransform()
>>> linha, coluna = 0,0
>>> gt[0]+coluna*gt[4]+linha*gt[5] # valor da longitude -65.606
>>> gt[3]+coluna*gt[4]+linha*gt[5] # valor da latitude 11.845
Agora falta fazer uma função pra ficar bonito ...
quinta-feira, 19 de abril de 2012
Procedimento para detectar e corrigir feições inválidas no PostgreSQL
-->
Para atender a expecificação do
padrão OGC Simple Feature um polígono deve ter sua topologia
verfiricada e validada. Para isto no Postgis é possível verificar
utilizando uma conjunto de comandos como por exemplo estes:
1) select st_isValid(the_geom), gid
from bioma_UF ;
Neste caso estamos apenas
apresentando
o resultado da validação e o número do gid de cada polígono.
Agora para facilitar vamos listar
apenas os gid dos polígonos não válidos.
2) select gid from bioma_UF where not
st_isValid(the_geom);
Sabendo que existe erro nestas
features, podemos testar uma opção para tentar corrigir o problema.
3) select
st_isValid(st_buffer(the_geom,0.0)), gid from bioma_UF where not
st_isValid(the_geom);
Assim podemos atualizar os dados com o
seguinte comando:
UPDATE bioma_UF set the_geom =
st_buffer(the_geom, 0.0) where not st_isValid(the_geom);
Outras boas dicas sobre este assunto
podem ser encontradas em:
Outra opção:
update table set geomcol = st_multi(st_collectionextract(st_makevalid(geomcol),3))
where st_isvalid(geomcol) = false;
update dados_brutos_2020.ucstodas set geom = st_multi(st_simplifypreservetopology(st_buffer(geom, 0.000001), 0.0001))
quarta-feira, 18 de abril de 2012
Como adicionar um sequencial em uma consulta postgresql.
Uma solução para ter um número sequencial, a fim de ser utilizado como identificador único, por exemplo, é aproveitar a função run_number(). No exemplo:
select row_number() over(order by lin) as id , lin, col from focos_noaa limit 10;
o resultado é:
id;lin;col
1;172;1103
2;173;1383
3;173;1137
4;176;89
5;179;442
6;185;1127
7;187;76
8;192;1417
9;192;778
10;196;932
Uma explicação detalhada e muito boa eu encontrei em 01/mai/2020 em https://www.postgresqltutorial.com/postgresql-row_number/
select row_number() over(order by lin) as id , lin, col from focos_noaa limit 10;
o resultado é:
id;lin;col
1;172;1103
2;173;1383
3;173;1137
4;176;89
5;179;442
6;185;1127
7;187;76
8;192;1417
9;192;778
10;196;932
Uma explicação detalhada e muito boa eu encontrei em 01/mai/2020 em https://www.postgresqltutorial.com/postgresql-row_number/
domingo, 12 de fevereiro de 2012
Como utilizar um array de valores do POSGRESQL
Encontrei o artigo "Faster array building with array_agg" que comenta como é possível ter um array de valores distintos juntamente com uma função de agregação no banco de dados. Um exemplo disto é quando contamos todos os pontos que estão contidos em um polígono e queremos ter como resposta o identificador do pontos que foram selecionados ou utilizados.
Neste caso temos:
select count(*), array_agg(gid) as todos_ids from focos;
Outros exemplos podem ser vistos em:
http://www.postgisonline.org/
Neste caso temos:
select count(*), array_agg(gid) as todos_ids from focos;
Outros exemplos podem ser vistos em:
http://www.postgisonline.org/
terça-feira, 5 de julho de 2011
Rampa de Cores
Para encontrar um bom exemplo de variação de cores e utilizar em seu mapa existem duas ferramentas que podem ajudar. A primeira é http://colorbrewer2.org/ que permite ver a paleta de cores aplicada sobre um conjunto de polígonos como na figura abaixo.
Outra opção é oferecida por uma aplicação provida pela Adobe, chamada de Kuler, que apresenta diferenças da primeira opção, porém não é específica para mapas.
Uma metodologia para definição das legendas pode ser encontrada em https://www.andrewnoske.com/wiki/Code_-_heatmaps_and_color_gradients
Outra ferramenta para criar um range de cores muito interessante pode ser encontrada em
https://cssgradient.io/
Uma metodologia para definição das legendas pode ser encontrada em https://www.andrewnoske.com/wiki/Code_-_heatmaps_and_color_gradients
Outra ferramenta para criar um range de cores muito interessante pode ser encontrada em
https://cssgradient.io/
sexta-feira, 11 de março de 2011
Reprojeção de imagens utilizando o GDAL
Depois de ler o post “Usando código EPSG com GDAL” escrito por Leonardo Santana, Fiz um teste em 23/10/2009 utilizando uma versão diferente do gdal_translate que exige apenas um parâmetro de especificação do srs.
Agora o comando é -a_srs e o que aconteceu foi apenas uma substituição dos parâmetros de projeção no arquivo de saída, infelizmente sem que ele fosse reprojetado.
Para reprojetar uma imagem o comando correto é:
gdalwarp -s_srs EPSG:32723 -t_srs EPSG:4291 -of GTiff "/fmorelli/nome_entrada.tif" "/fmorelli/nome_saida.tif"
Onde -s_srs = SRID de entrada; -t_srs = SRID de saída.
Assinar:
Postagens (Atom)
