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-05-15

Safe Harbor for Forward-Looking Statements


Encontrado hoje e adaptado às minhas necessidades pessoais...

This [blog / site / page / document / message] contains forward-looking statements, including, but not limited to, statements regarding the value and effectiveness of [my opinions,] products, the introduction of product enhancements, functionality and capabilities or of additional products [...], that involve risks, uncertainties, assumptions and other factors which, if they do not materialize or prove correct, could cause [...] results to differ materially from those expressed or implied by such forward-looking statements.
All statements, other than statements of historical fact, are statements that could be deemed forward-looking statements, including statements containing the words “predicts,” “plan,” “expects,” “anticipates,” “believes,” “goal,” “target,” “estimate,” “potential,” “may”, “will,” “might,” “momentum,” “could,” “seek,” and similar words.
[ I intend ] all such forward-looking statements to be covered by the safe harbor provisions for forward-looking statements contained in Section 21E of the Exchange Act and the Private Securities Litigation Reform Act of 1995.
The forward-looking statements included in this [blog / site / page / document / message] represent [my] views as of [yesterday]. 
[ I anticipate] that subsequent events and developments will cause [my] views to change.
[ I undertake ] no intention or obligation to update or revise any forward-looking statements, whether as a result of new information, future events or otherwise. These forward-looking statements should not be relied upon as representing [my] views as of any date subsequent to [yesterday].

Tenho dito.

2013-04-03

Mapnik 2.0 em Windows (arghhh...)

agora que parece estar a funcionar...

Mais uma cábula onde não se perca...

1) O sistema operativo é Windows 7 64b. 
... mas a versão de Python 2.7 tem de ser de 32b.

2) A instalação do Mapnik 0.7.0-1 através do Advanced Install do OSGEO4W não funcionou. 
Não vou perder mais tempo a tentar perceber porquê...

3) Usando o Mapnik 2.0 RC0 funciona sem problemas.

Instalar para %OSGEO4W_ROOT%\apps\mapnik-2.0.1rc0. 

Alterar / acrescentar o  %OSGEO4W_ROOT%\etc\ini\python.bat 
PATH %OSGEO4W_ROOT%\apps\mapnik-2.0.1rc0\lib;%PATH% 
SET PYTHONPATH=%PYTHONPATH%;%OSGEO4W_ROOT%\apps\mapnik-2.0.1rc0\python\2.7\site-packages

4) Alterar a mapniklibpath no ficheiro \mapnik-2.0.1rc0\python\2.7\site-packages\mapnik\paths.py

[Fim de cábula] ...espero eu.

Fontes: OpenStreetMap; Mapnik.

2013-04-02

CRS_PT - Ficheiro de configuração para o PROJ.4

Em tempos necessitei de fazer um apanhado dos códigos EPSG dos sistemas de coordenadas usados em Portugal, bem como dos métodos e valores de parâmetros de transformação registados na base de dados EPSG.
Acabei por juntar tudo num ficheiro de configuração para usar no Proj.4 - baseado em grande parte no trabalho do Prof. José Alberto Gonçalves.

A notação está diferente, e não é tão amigável, mas pode ser que seja útil a alguém.
Cá fica.

(Pelo menos, eu vou deixar de andar à procura da última versão do ficheiro de cada vez que o quiser colocar noutro PC).

2013-02-27

LUCAS 2009

Land Use / Cover Area Frame Survey


A pedido: apontadores rápidos para a informação relevante sobre o projeto LUCAS (dados de campo de 2009)
Outra documentação anexa aos metadados...
Annex 1 - Nomenclature
Annex 2 - LUCAS 2009 Quality Assurance
Annex 3 - LUCAS Peer Review Final report
Annex 4 - LUCAS 2009 non sampling errors
Annex 5 - LUCAS 2009 Field Form
Annex 6 - LUCAS 2009 Instructions for surveyors
Annex 7 - LUCAS 2009 Quality Control
Annex 8 - LUCAS 2009 Landscape indicators



2013-02-22

Ubuntu para Pais

Cábula para os pais da família... 

... que decidiram instalar o Ubuntu naquele portátil velho lá de casa.

Passo 1 - Ativar o controle de acesso PAM 

Numa janela de terminal, editar o ficheiro lightdm:

  sudo gedit /etc/pam.d/lightdm

E acrescentar no fim a seguinte linha:

account required pam_time.so

(Se o ficheiro lightdm não existir ou estiver vazio, procurar o ficheiro gdm e fazer a mesma coisa)

(PAM = Pluggable Authentication Modules)

Passo 2 - Definir o horário de entrada...


Numa janela de terminal, editar o ficheiro:

  sudo gedit /etc/security/time.conf

E acrescentar no fim do fcheiro as linhas com as permissões pretendidas.
Por exemplo:

*;*;primogenito;Al1500-2200
*;*;junior;Al1500-2100
*;*;benjamim;Al1700-1900

O próprio ficheiro time.conf tem exemplos para outras opções (e.g. só durante o fim-de-semana, só em alguns dias da semana, etc.)

Passo 3 - Definir o horário de saída...

Utiliza-se o utilitário cron para calendarizar tarefas repetitivas (e.g. ser pai).
Neste caso, para obrigar o utilizador a sair, matam-se-lhe todos processos...

Para editar o ficheiro de configuração utiza-se o comando:
  sudo crontab -e

O ficheiro vai abrir num editor de texto muito simples (para sair fazer CTRL+X e gravar as alterações).

00 22 * * * pkill -u primogenito
00 21 * * * pkill -u junior
00 19 * * * pkill -u benjamim


Esta é a abordagem "nem mais 5 minutos" e mata mesmo tudo...
Ah, e não esquecer de carregar no Enter no fim da última linha.

Se quiserem ser simpáticos, é possível avisar antes (depois coloco aqui, mas por agora já deve resolver).

E já agora...

... para impedir alguns utilizadores de calendarizar tarefas periódicas:

Editar o ficheiro cron.deny
   sudo gedit /etc/cron.d/cron.deny
e acrescentar o nome de cada utilizador (um por linha) que não pode usar o cron.

... para impedir utilizadores de calendarizar uma tarefa pontual:
   sudo gedit /etc/cron.d/at.deny
e acrescentar o nome de cada utilizador (um por linha).

(sim é uma guerra, mas vai obrigando ambas as partes a aprender coisas novas)

Fontes:
http://askubuntu.com/questions/68918/how-do-i-restrict-my-kids-computing-time 
http://www.devin.com.br/crontab/
http://linuxconfig.org/Bash_scripting_Tutorial

2013-02-18

Hobbes


"By this it appears that reason is not, as sense and memory, born with us; nor gotten by experience only, as prudence is; but attained by industry: first in apt imposing of names; and secondly by getting a good and orderly method in proceeding from the elements, which are names, to assertions made by connexion of one of them to another; and so to syllogisms, which are the connexions of one assertion to another, till we come to a knowledge of all the consequences of names appertaining to the subject in hand; and that is it, men call science."
[in Leviathan, 1651] 

2013-02-07

GeoServer 2.2.4 - Workaround para o erro com o ImageWorker

O problema (e a solução) estão descritos online... mas para referência futura aqui fica a cábula.

Numa recentente instalação da versão 2.2.4 do GeoServer - numa plataforma Windows 7 de 32-bit com Java 7 JRE - surge o seguinte erro:

java.lang.NoClassDefFoundError: Could not initialize class org.geotools.image.ImageWorker

Could not initialize class org.geotools.image.ImageWorker

O problema deve-se à ausência do ficheiro PYCC.pf na versão Java 7 JRE de 32-bit.
O que já acontece desde uma versão anterior do Java JRE (ver aqui).

O ficheiro está disponível na versão JDK, de onde pode ser copiado:

The limited set of files from the Java SE Development Kit (JDK)
listed below may be included in vendor redistributions of the Java SE
Runtime Environment.  All paths are relative to the top-level
directory of the JDK. The corresponding man pages should be included for
any included executables (with paths listed below beginning with bin/ ,
for the Solaris(TM) Operating System and Linux).
    jre/lib/cmm/PYCC.pf
        Color profile.  This file is required only if one wishes to
        convert between the PYCC color space and another color space.
E pronto. Basta um restart ao GeoServer.

2013-02-01

National Parcel Database

 The Feasibility of Developing a National Parcel Database

Não, não se trata do cadastro em Portugal mas sim nos EUA:
"In 2010, the U.S. Department of Housing and Urban Development (HUD) charted new territory in an effort to develop a national database of standardized parcel-level (property) data collected directly from the most authoritative sources: local counties.
HUD contracted [...] an exploratory project for assembling local assessor data, including key attributes such as property address, assessed value, land use, sales price, and sales history, for 127 targeted counties. The primary tasks of the project included identifying the appropriate data sources in each community, assembling the data and metadata, and standardizing the data in a common format to be accessible for HUD research efforts and for possibly aggregating data to higher levels of geography for public dissemination."
O estudo foi publicado agora e está disponível aqui e tem matéria para reflexão também neste lado do Atlântico.

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: