En aquel Imperio, el Arte de la Cartografía logró tal Perfección que el Mapa de una sola Provincia ocupaba toda una Ciudad, y el Mapa del Imperio, toda una Provincia. Con el tiempo, estos Mapas Desmesurados no satisficieron y los Colegios de Cartógrafos levantaron un Mapa del Imperio, que tenía el Tamaño del Imperio y coincidía puntualmente con él. Menos Adictas al Estudio de la Cartografía, las Generaciones Siguientes entendieron que ese dilatado Mapa era Inútil y no sin Impiedad lo entregaron a las Inclemencias del Sol y los Inviernos. En los Desiertos del Oeste perduran despedazadas Ruinas del Mapa, habitadas por Animales y por Mendigos; en todo el País no hay otra reliquia de las Disciplinas Geográficas.
[Del rigor en la ciencia, Jorge Luis Borges]

2013-01-27

reStructured Text

Crónica (e cábula) de uma conversão ao reST

Escrever textos no formato reStructured Text é simples e rápido.
Não nos distrai com a formatação final do documento mas permite criar documentos com muito bom aspeto.
Os documentos são armazenados em ficheiros de texto (com a extensão .txt, .rst) e por isso podem ser produzido no editor de texto que se prefira.
Um documento reST pode ser convertido para html, pdf, latex (ou para odf, se se quiser terminar a edição num processador de texto tradicional).
O documento pode ser simples ou complexo - por exemplo, um relatório com vários capítulos, cada um dos quais num ficheiro de texto independente, e que são agregados e paginados quando convertidos para o formato final de publicação/impressão.

... reST em 5 minutos

Para comuns mortais, só com acesso à Internet e só com 5 minutos para testar, o melhor a fazer é experimentar o Online reStructuredText editor.
O editor permite brincar com a síntaxe na janela da esquerda, enquanto se vê o resultado já formatado em html na janela da direita.
A barra de ferramentas permite aceder ao markup para as opções de formatação mais comuns.
Como é óbvio, é possível fazer copy/paste do texto para (ou de) um documento de texto local.
O código-fonte está disponível no GitHub.

... reST em 15 minutos

Com 15 minutos para gastar e acesso à internet, o editor NoTeX tem uma interface simples e funcional, um conjunto de exemplos informativos e ilustrativos (tanto simples como avançados), e opções para exportar para html, pdf e LaTeX.
É possível usar o NoTeX online ou descarregar uma máquina virtual (o pagamento do download é feito com bitcoins - para o que para info-excluídos desconfiados como eu, não é uma opção com a qual me sinta confortável). Novamente, o código-fonte é aberto e está disponível.

... editores reST para Windows

Notepad++

Se o objectivo é apenas produzir o documento, então qualquer editor de texto serve.
Um favorito pessoal é o Notepad++ - que permite fazer o highlight da síntaxe de várias linguagens de programação ou de markup.
Por omissão, o reST não está incluido nas linguagens reconhecidas pelo Notepad++ - mas existe um plugin disponível aqui. (Curiosamente, feito por um hidrologista transformado em programador SIG).
O plugin não é completo (i.e. não faz o highlight de toda a síntaxe), mas é uma ajuda e uma solução rápida.
Contudo, utilizar o Notepad++ não permite:
  • validar a síntaxe enquanto se escreve (e.g. como no Online reStructuredText editor);
  • converter para outros formatos (html, pdf, ...);
  • espreitar de vez em quando como é que o documento vai sair impresso (o que manifestamente deixa nervosas as pessoas habituadas ao WYSIWYG...)

Para o comum dos mortais (não-programador)...

Alternativas a explorar (e a documentar asap ou seja antes que me esqueça):
Aparentemente, qualquer destas opções requer a instalação do Sphinx ou do docutils para exportar o texto. (Hoje já não vai dar tempo...)

... mais informação em 

2013-01-04

Conversão lossless para JPEG2000


Mais uma cábula... 


o objetivo é armazenar ortofotomapas num formato compacto, para arquivo de segurança: as conversões de formato devem ser  "lossless", i.e. sem alteração da qualidade ou resolução da imagem.

Input

Cada imagem tem 8000 x 10000 células, 4 bandas (RGBI) com um byte por banda.
Está armazenada em formato TIF (band interleaved by pixel).
A informação de referenciação está num "world file" (idêntico "filename" e extensão TFW).
As células quadradas têm dimensão 0.5m no terreno, o centro das células está registado à origem do sistema de eixos coordenados, a matriz de transformação não tem componente de rotação.
Não existe informação quanto ao SRS, seja no "header" do ficheiro de imagem, seja num qualquer ficheiro externo (.prj, .wkt). Os metadados indicam contudo o sistema de referência PT-TM06 (epsg:3763).

Passo 1

Transferir para o "header" do ficheiro de imagem toda a informação de referenciação (incluindo informação de definição do SRS - armazenada para tal num ficheiro "epsg3763.wkt" no formato OGC WKT).

O processamento em batch usa a versão 1.9.2 do GDAL. O comando tem a forma:
gdal_translate -of GTIFF -a_srs epsg3763.wkt input.tif output.tif
O utilitário gdal_translate reconhece a presença do ficheiro tfw associado a cada imagem tif.

Utilizando o gdalinfo sobre o ficheiro output.tif verifica-se que a 4ª banda está a ser tratada e marcada como um alpha channel (i.e. uma máscara de transparência) - o que não corresponde à verdade (é uma banda de infravermelho próximo).

Consultando a documentação em http://www.gdal.org/frmt_gtiff.html, verifica-se que para versões anteriores à 1.10, a primeira banda extra é sempre marcada como "ALPHA".

Conclusão: passou a utilizar-se a versão 1.10 do GDAL disponível em http://www.gisinternals.com/sdk/Download.aspx?file=release-1600-x64-gdal-mapserver.zip

O comando aplicável passa a ser:
gdal_translate -of GTIFF -a_srs epsg3763.wkt -co ALPHA=UNSPECIFIED input.tif output.tif

Passo 2

A conversão "lossless" para JP2000 sem perda pode ser realizada no GDAL_TRANSLATE com o "driver" JP2ECW. O comando tem a forma:
gdal_translate -of JP2ECW -co TARGET=0 input.tif output.jp2
As condições de licenciamento do ECW 3.3 SDK permitem a conversão de imagens inferiores a 500MB.

Alternativas não testadas

Utilizar GDAL_TRANSLATE compilado com o "driver" JPEG2000, baseado na biblioteca JasPer.

Tentativas sem sucesso (por enquanto)...

1) A conversão com o GDAL 1.10 usando o "driver" JP2OpenJPEG não é possível sobre imagens com 4 bandas. O comando teria a forma:
gdal_translate -of JP2OpenJPEG -co REVERSIBLE=TRUE input.tif output.jp2

2) Em situações anteriores, utilizou-se o software GeoJasper, baseado na biblioteca JasPer e disponível em http://www.dimin.net/software/geojasper/
O comando tem a forma:
"C:\Programs\geojasper_win32\geojasper" -f input.tif -F output.jp2 -T jp2
Na presente tentativa, o utilitário deu problemas e não completa as conversões (possivelmente devido a incompatibilidade com o SO de 64bit?).

3) Teoricamente, numa conversão "lossless" para JP2000 seria possível utilizar a biblioteca Kakadu.
Em Windows, o utilitário kdu_compress (entre outros) está disponível em http://www.kakadusoftware.com
O comando tem a forma:
"C:\Program Files (x86)\Kakadu\kdu_compress" -i input.tif -o output.jp2 Creversible=yes
A informação de referenciação é transferida do "header" do ficheiro tif para o "header" do ficheiro jp2.

Contudo, a imagem resultante TEM PERDAS E É VISUALMENTE DIFERENTE DO ORIGINAL.
Não foi possível encontrar uma solução para o problema.

4) Alternativamente, o pacote FWTools 2.10 para Windows suporta JP2000 através da bibliteca kakadu.
As versões superiores não incluem o "driver" JP2KAK.
A versão 2.10 está disponível em http://home.gdal.org/fwtools/ .

As opções suportadas encontram-se em http://www.gdal.org/frmt_jp2kak.html
O comando tem a forma:
gdal_translate -of JP2KAK -co QUALITY=100 input.tif output.jp2

Novamente, a opção QUALITY=100, que deveria realizar a conversão "lossless", origina perdas na imagem. O problema já não é perceptível (visualmente) com uma compressão de 99%...
gdal_translate -of JP2KAK -co QUALITY=99 input.tif output.jp2

Nota sobre a extensão jp2:

The standardized filename extension is .jp2 for ISO/IEC 15444-1 conforming files and .jpx for the extended part-2 specifications, published as ISO/IEC 15444-2.
The registered MIME types are defined in RFC 3745. For ISO/IEC 15444-1 it is image/jp2.

Links + úteis ...

Toda a sequência de posts em http://blog.viasig.com: