Biểu trưng OpenStreetMap OpenStreetMap

Nhật ký của Jorge Gustavo Rocha

Mục nhật ký gần đây

Rede de postos da MOBI.E

Do Jorge Gustavo Rocha đăng vào 30 tháng 04 năm 2021 bằng Portuguese (Português).

A rede de postos de carregamento do OpenStreetMap está bastante completa, pelo que me tenho apercebido.

Hoje quis ver que postos havia em Esposende e no OpenStreetMap não estava nenhum registado. Nem um :-(

Por isso, fui sacar os postos da rede MOBI.E para comparar e ver o que poderia estar em falta.

Sacar Postos da rede MOBI.E

Abrir o site da rede MOBI.E.

Abrir as ferramentas de desenvolvimento e selecionar o separador Rede. Eventualmente por um filtro para só apanhar os pedidos que tenham ‘location’. Fazer um refresh da página para apanhar os pedidos feitos ao servidor. O pedido que é apanhado está no seguinte print screen.

Pode-se fazer copy e paste do JSON retornado e guardar num ficheiro. Ou, como se faz no passo seguinte, fazer o mesmo pedido na linha de comando.

Guardar o resultado num arquivo JSON

Xem mục đầy đủ

Vị trí: Costa Nova, Gafanha da Encarnação, Ílhavo, Aveiro, Portugal

Converti as moradas da Madeira e dos Açores para *.shp, *.osm e *.json. São dados importados do INE e referem-se a alojamentos. Não incluem o comércio e indústria.

Para editar transformações de coordenadas, criei já tudo em EPSG:4326 (WGS84).

Estão disponíveis na nextcloud em:

Estão por lá também as scripts de importação.

Pontos de entrega do continente

Do Jorge Gustavo Rocha đăng vào 29 tháng 03 năm 2021 bằng Portuguese (Português).

Se preferirem trabalhar só com os pontos de entrega do correio, em vez de terem o mesmo ponto repetido para cada endereço, como acontece nos prédios, criei uma tabela entregas.

A tabela entregas mantém toda a informação, pois estou a agregar a informação das diferentes moradas num único ponto.

Criei uma pasta Pontos de Entrega Continente onde têm uma exportação por concelho.

Para quem usar o QGIS, criei nessa pasta um geopackage continente.gpkg que tem as duas tabelas: moradase entregas.

Também fiz um dump do Postgresql, que está nessa pasta em enderecos-202103291045.backup.

Atenção: as shapefiles têm limitações no comprimento dos atributos. Algumas agregações estão truncadas (pelo limite de 255 carateres do formato shapefile.

Criação de uma tabela só com os pontos de entrega

Xem mục đầy đủ

Importar as moradas do continente

Do Jorge Gustavo Rocha đăng vào 28 tháng 03 năm 2021 bằng Portuguese (Português).

Para sistematizar a importação do continente, podem-se usar as seguintes scripts:

Sacar índices, gerar uma script para sacar os zips e sacar os zips:

#!/bin/bash

wget https://inspire.ine.pt/AD/atom/CDG_AD_BNM_pc_Norte_Atom.xml
wget https://inspire.ine.pt/AD/atom/CDG_AD_BNM_pc_Centro_Atom.xml
wget https://inspire.ine.pt/AD/atom/CDG_AD_BNM_pc_AML_Atom.xml
wget https://inspire.ine.pt/AD/atom/CDG_AD_BNM_pc_Alentejo_Atom.xml
wget https://inspire.ine.pt/AD/atom/CDG_AD_BNM_pc_Algarve_Atom.xml

awk '/Addresses_[0-9]+_EPSG3763.zip/ {print $3}' *.xml | sed 's/href=/wget /' > saca.sh

mkdir zips; cd zips; bash ../saca.sh

A script cria uma pasta zips com 278 zips (um para cada concelho do continente).

Para o restante processamento, usa-se o GDAL e uma base de dados PostgreSQL, onde é criada uma tabela moradas.

Nessa pasta, corre-se a seguinte script que processa concelho a concelho. Para cada concelho, são acrescentados os respetivos endereços à tabela moradas.

Script processa.sh:

#!/bin/bash

for filename in *.zip
do
    base="${filename%.*}"
    unzip $filename
    echo "${filename%.*}"
    GML_ATTRIBUTES_TO_OGR_FIELDS=YES GML_SKIP_RESOLVE_ELEMS=NONE ogr2ogr -f PostgreSQL PG:'service=osm' GMLAS:$base.gml -nlt CONVERT_TO_LINEAR
    psql service=osm -f insere.sql
    rm $base.gml    
done

A script processa.sh recorre a uma script SQL insere.sql, que é a seguinte:

Xem mục đầy đủ

Importar moradas do INE

Do Jorge Gustavo Rocha đăng vào 28 tháng 03 năm 2021 bằng Portuguese (Português).

Na importação das moradas do INE, estava a perder o “nome do edifício”, que é importante. Nalguns casos, os endereços não têm número, mas têm “nome do edifício”, como é ilustrado na imagem seguinte (em Beja).

Assim sendo, a query para passar das múltiplas tabelas criadas a partir do GML para uma única tabela passa a ser:

Xem mục đầy đủ

Importar moradas no INE

Do Jorge Gustavo Rocha đăng vào 07 tháng 03 năm 2021 bằng Portuguese (Português). Cập nhật lần cuối cùng vào 08 tháng 03 năm 2021.

O INE disponibiliza um conjunto de moradas relativas a alojamentos, no formato ATOM

O serviço é apenas um índice. O serviço em si divide-se em partes:

Dentro de cada índice, há dois links para cada município com a mesma informação: um no sistema de coordenadas Portuguesas EPSG:3763 e outro em Europeias ETRS:4258.

Por exemplo, para o meu município, Ílhavo, terei que usar o índice da zona centro e descarregar:

wget http://inspire.ine.pt/AD/atom/gml/Addresses_0110_EPSG3763.zip

Não é fácil ler e transformar o GML em algo usável num editor de OSM. Mas como é um processo automatizável, aqui fica a descrição do processo. O que aqui fiz para Ílhavo, pode ser feito para qualquer outro concelho. Pode ser feito na linha de comandos. Vou usar o QGIS só para visualizar os dados.

Estou a utilizar o GDAL e uma base de dados PostgreSQL com Postgis.

Descompactar.

unzip Addresses_0110_EPSG3763.zip Inserir o GML em base de dados (num schema ilhavo)

GML_ATTRIBUTES_TO_OGR_FIELDS=YES GML_SKIP_RESOLVE_ELEMS=NONE ogr2ogr -f PostgreSQL PG:'service=osm schemas=ilhavo' GMLAS:Addresses_0110_EPSG3763.gml -nlt CONVERT_TO_LINEAR

Na base de dados, transformar as inúmeros tabelas numa única com as moradas e respetivos atributos.

Xem mục đầy đủ

Vị trí: Costa Nova, Gafanha da Encarnação, Ílhavo, Aveiro, Portugal

HOT Task Manager 2

Temos uma instalação do HOT Task Manager 2 para a comunidade portuguesa, em língua portuguesa (obrigado aos tradutores do HOT).

Já há pelo menos 3 mapeadores com permissões de “administrator” que podem dar permissão de “project manager” a quem precisar. Quem quiser criar um projeto, passe um email na nossa lista Talk-PT que um dos administradores faz isso.

Esta ferramenta é muito interessante para apoiar mapping parties.

Bom trabalho!

Vị trí: Cidreiro, Vila de Rei, Castelo Branco, 6110-202, Portugal

Gestão de versões dos objectos

Do Jorge Gustavo Rocha đăng vào 04 tháng 10 năm 2012 bằng Portuguese (Português).

Durante a party de Águeda, na Mourisca, editei a linha uqe delimitava a zona industrial, e quiz reverter essa linha para a versão original uns dias depois.

Para isso, saquei a versão 2 (boa) da linha, com o browser: http://api.openstreetmap.org/api/0.6/way/164427582/2

Depois alterei o XML, acrescentando action=”modify” na tab way, ficando:

Abri no JOSM, e tentei o upload. Deu conflitos. Resolvi os conflitos indicando que esta versão deveria sobrepor as anteriores. Fiz de novo upload. Acho que consegui. Depois descarreguei a nova versão (v5), com o URL: http://api.openstreetmap.org/api/0.6/way/164427582/2 Há uns nodos (2) de diferença. Vou pensar melhor no assunto, pois pensei que estes passos eram os suficientes para restaurar uma versão anterior de uma linha. Penso que estes nodos, como entretanto foram removidos ou alterados, já não podem fazer parte da linha.

Apagar nodos "perdidos"

Do Jorge Gustavo Rocha đăng vào 20 tháng 04 năm 2011 bằng Portuguese (Português).

Boa gente,

Na prossecução da minha missão de limpar a CAOP existente, tive que remover milhares de pontos que restaram de uma remoção dos ways, mas não dos nodes. Ou seja, haviam montes de nodes sem tags nenhumas que já foram as linhas da CAOP.

Por os seleccionar muito rapidamente, usei a seguinte expressão no JOSM:
type:node untagged -child
no diálogo do "Search..."

Ou seja, encontra nodos que não sejam filhos de nada (ways ou relactions) e que não tenham tags.

Funciona às mil maravilhas...

Acertar a hora das fotografias

Do Jorge Gustavo Rocha đăng vào 01 tháng 04 năm 2011 bằng Portuguese (Português).

Sacar a hora de mofificação que ficou no cartão de memória do telemóvel

ls -al --time-style='+%Y:%m:%d %H:%M:%S' -l > /tmp/x.sh

Editar o ficheiro gerado para ficar algo do género:

#!/bin/bash

exiv2 -M"set Exif.Photo.DateTimeOriginal 2011:04:01 11:02:48" Img015.jpg
exiv2 -M"set Exif.Photo.DateTimeOriginal 2011:04:01 11:03:14" Img016.jpg
exiv2 -M"set Exif.Photo.DateTimeOriginal 2011:04:01 11:03:46" Img017.jpg
exiv2 -M"set Exif.Photo.DateTimeOriginal 2011:04:01 11:04:22" Img018.jpg
exiv2 -M"set Exif.Photo.DateTimeOriginal 2011:04:01 11:04:44" Img019.jpg
exiv2 -M"set Exif.Photo.DateTimeOriginal 2011:04:01 11:04:52" Img020.jpg
exiv2 -M"set Exif.Photo.DateTimeOriginal 2011:04:01 11:07:08" Img021.jpg
exiv2 -M"set Exif.Photo.DateTimeOriginal 2011:04:01 11:09:00" Img022.jpg
exiv2 -M"set Exif.Photo.DateTimeOriginal 2011:04:01 11:09:52" Img023.jpg
exiv2 -M"set Exif.Photo.DateTimeOriginal 2011:04:01 11:10:06" Img024.jpg
exiv2 -M"set Exif.Photo.DateTimeOriginal 2011:04:01 11:10:50" Img025.jpg
exiv2 -M"set Exif.Photo.DateTimeOriginal 2011:04:01 11:11:02" Img026.jpg
exiv2 -M"set Exif.Photo.DateTimeOriginal 2011:04:01 11:11:54" Img027.jpg
exiv2 -M"set Exif.Photo.DateTimeOriginal 2011:04:01 11:14:06" Img028.jpg
exiv2 -M"set Exif.Photo.DateTimeOriginal 2011:04:01 11:14:32" Img029.jpg
exiv2 -M"set Exif.Photo.DateTimeOriginal 2011:04:01 11:14:42" Img030.jpg
exiv2 -M"set Exif.Photo.DateTimeOriginal 2011:04:01 11:15:08" Img031.jpg
exiv2 -M"set Exif.Photo.DateTimeOriginal 2011:04:01 11:15:16" Img032.jpg
exiv2 -M"set Exif.Photo.DateTimeOriginal 2011:04:01 11:15:36" Img033.jpg
exiv2 -M"set Exif.Photo.DateTimeOriginal 2011:04:01 11:15:50" Img034.jpg
exiv2 -M"set Exif.Photo.DateTimeOriginal 2011:04:01 11:16:20" Img035.jpg
exiv2 -M"set Exif.Photo.DateTimeOriginal 2011:04:01 11:16:36" Img036.jpg
exiv2 -M"set Exif.Photo.DateTimeOriginal 2011:04:01 11:17:22" Img037.jpg
exiv2 -M"set Exif.Photo.DateTimeOriginal 2011:04:01 11:22:44" Img038.jpg

Bingo!

O JOSM é bom rapaz, mas só consegue transformar em data layer um GPX que contenha tracks. Se o GPX só contiver pontos, não dá.

1) Usei um programa muito básico que se chama gpsbabel.
gpsbabel -i gpx -o osm lugaresnew.gpx lugares.osm

2) Abri o JOSM e carreguei lugares.osm

Neste caso...

3) Seleccionei tudo e:

3.1) acrescentei a mesma tag a todos os elementos ao
mesmo tempo (place=hamlet e source=CM Vale de Cambra)
3.2) Removi a tag created_by=GPSBabel

4) Fiz o upload e pronto.

Isolar as farmácias...

Do Jorge Gustavo Rocha đăng vào 31 tháng 03 năm 2011 bằng Portuguese (Português).

1) Usando a XAPI, a coisa demora um pouco a responder.

curl -g "http://jxapi.openstreetmap.org/xapi/api/0.6/*[amenity=pharmacy][bbox=-9.2,39.68,-6.2,42.19]" -o farmacias.osm

2) Isolar as farmácias a partir de um dump no formato osm

Para "isolar" as farmácias já registadas, sem despejar o dump portugal.osm no Postgresql, pode-se usar o osmosis.

sudo apt-get install osmosis

osmosis --read-xml portugal.osm --tf accept-nodes amenity=pharmacy --tf reject-ways --tf reject-relations --write-xml farmacias.osm

ou ainda

osmosis --read-xml portugal.osm --tf accept-nodes amenity=pharmacy --tf accept-ways amenity=pharmacy --tf reject-relations --write-xml farmacias.osm