quarta-feira, 28 de abril de 2010

JSON no browser (Firefox)


Para quem queira visualizar documentos em JSON o ideal é utilizar a extensão JSONView do Firefox. O documento será visualizado de forma semelhante a um documento XML, formatado, com os campos em destaque e podendo ser expandido. Sempre é melhor do que ter que fazer o download do documento JSON e visualizá-lo num editor de texto, numa única linha.

Para adicionar a última versão JSONView 0.4 clicar aqui.



terça-feira, 27 de abril de 2010

Marcadores como resposta de um serviço por bounding box

Quando temos uma aplicação em Google Maps (ou OpenLayers, ou outra) e fazemos uma chamada a um serviço dando como parâmetros uma bounding box, geralmente utilizamos o resultado para adicionar marcadores ao mapa (com ou sem informação associada) em que as coordenadas dos marcadores a adicionar fazem parte da resposta do serviço.

Se fizermos chamadas sucessivas a esse serviço, por exemplo na sequência de um evento "moveend" registado, teremos que garantir que não vamos adicionar ao mapa marcadores já existentes.

Assim, de forma a que não existam marcadores duplicados é necessário percorrer a resposta do serviço (ou uma cópia desta) e testar se já existe algum marcador sobre o mapa com as mesmas coordenadas. Isso pode ser feito recorrendo a uma função a qual recebe como parâmetro as coordenadas a testar:


function isOnTheMap(latlng) {
for (var i=0; i < markers.length ; ++i) {
if ( markers[i].getLatLng().equals(latlng)) {
return true;
}
}
return false;
}


Outra questão consiste em garantir que os marcadores que já estavam sobre o mapa e que não façam parte da bounding box, sejam removidos do mapa. Ou seja, garantir que não existem marcadores adicionados ao mapa fora da vieweport. Mais uma vez podemos recorrer a uma função:


function removeMarkers() {
var tmpMarkers = markers;
for (var i = 0; i < tmpMarkers.length; ++i) {
var marker = tmpMarkers[i];
if (bounds.containsLatLng(marker.getLatLng())) {
continue;
}
map.removeOverlay(marker);
markers.splice(i,1);
}
}

Neste caso poderá também ser necessário garantir a remoção de eventuais eventos registados.

Para que ambos exemplos resultem é ainda necessário que aquando da criação de cada marcador seja este adicionado a um array que vá guardando os nossos marcadores:


markers.push(marker);




terça-feira, 20 de abril de 2010

O sermão do topógrafo

Where 2.0 2010: Paul Ramsey, "Why your data sucks"

segunda-feira, 19 de abril de 2010

Clip raster with polygon (GDAL)


#!/bin/bash

SHPFILE=$1
BASE=`basename $SHPFILE .shp`
EXTENT=`ogrinfo -so $SHPFILE $BASE | grep Extent \
| sed 's/Extent: //g' | sed 's/(//g' | sed 's/)//g' \
| sed 's/ - /, /g'`
EXTENT=`echo $EXTENT | awk -F ',' '{print $1 " " $4 " " $3 " " $2}'`
echo "Clipping to $EXTENT"
RASTERFILE=$2
gdal_translate -projwin $EXTENT -of GTiff $RASTERFILE /tmp/`basename $RASTERFILE .sid`_bbclip.tif
gdalwarp -co COMPRESS=DEFLATE -co TILED=YES -of GTiff \
-r lanczos -cutline $SHPFILE \
/tmp/`basename $RASTERFILE .sid`_bbclip.tif /tmp/`basename $RASTERFILE .sid`_shpclip.tif


Fonte

domingo, 18 de abril de 2010

Geoservicios


O ICC (Institut Cartogràfico de Catalunya), numa atitude bastante pragmática, utiliza LizardTech Express Server e...pronto. Sem entrar em considerações de ordem financeira, só posso dizer que estes Geoservicios são estremamente rápidos, veja-se por exemplo: Ortofoto de Cataluña 1:5.000 ou Base Topográfica 1:5.000. Também interessante é a quantidade de serviços wms disponíveis. Ver em Servicios disponibles. Na página da LizardTech encontra-se mais informação sobre este case study.


terça-feira, 13 de abril de 2010

Cartographer.js




Cartographer.js é uma pequena lib em javascript a qual permite adicionar Pie-Charts, Choropleth Maps e Clusters ao Google Maps. É portanto uma biblioteca para cartografia temática.

Esta lib vem já com a divisão estadual dos EUA, hardcoded. Podemos sempre fazer o mesmo para os distritos de Portugal. Os concelhos poderão ser excessivamente pesados para representar do lado do cliente. E as freguesias ainda mais.

Pessoalmente, acho que faz mais sentido apresentar Pie-Charts e Choropleths (coropletos em Português) sobre mapas estáticos. Quem quer ver dados estatísticos geralmente não está interessado em ver o telhado das casinhas ou o nome das ruas. É uma questão de escala.

Relativamente aos Clusters prefiro utilizar o ClusterMarker.

De qualquer forma fica a referência a este curioso projecto.

O repositório encontra-se aqui.





sexta-feira, 9 de abril de 2010

Ilhas mais próximas do Continente

Após fazer o download da shapefile referente aos códigos postais de 4 dígitos, no site dos Correios, reparei que os Arquipélagos da Madeira e dos Açores estavam representados exageradamente próximos do Continente.

O problema deve-se à arbitrariedade de tentar representar no sistema Hayford-Gauss Militar (Continente), dados provenientes de data geodésicos regionais.

Como só estava interessado nos dados do Continente purguei a informação restante. No entanto, convinha que os Correios corrigissem este erro.