Eu sei, minha pergunta é semelhante a algumas antigas deste site.
Eu tenho muitos arquivos CSV (coordenadas geográficas) para importar para o qgis (e depois convertê-los), e a maneira usual não é a melhor maneira de fazê-lo (muito tempo).
Eu tenho quase 500 arquivos CSV (coordenadas wgs84) e é isso que eu quero fazer:
- Importe todos os arquivos CSV de uma vez para o QGIS
- Projete-os
- Exporte-os para arquivos CSV (novamente), mas com coordenadas diferentes (conversão para UTM33N)
Estou tentando entender como usar o console python, mas não estou seguindo em frente :(
Alguém pode me explicar como alcançá-lo passo a passo?
Respostas:
Se você deseja reprojetar arquivos csv do Python Console no QGIS, use o seguinte script. Tudo que você precisa mudar são os três caminhos mencionados nos comentários.
Essencialmente, o script importa seus arquivos csv no QGIS como shapefiles (assumindo que seus campos geométricos sejam nomeados
X
eY
). Em seguida, ele usa os algoritmosqgis:reprojectlayer
eqgis:fieldcalculator
da Caixa de Ferramentas de Processamento para reprojetar e atualizar os camposX
eY
com as novas coordenadas. Em seguida, os salva em uma pasta e os converte em arquivos csv no caminho especificado. Portanto, no final, você atualizou os arquivos shapefiles e os arquivos csv em pastas separadas.Espero que isto ajude!
fonte
Uma solução rápida para transformar um arquivo separado por espaço que contém "long lat" em WGS84 em UTM33N, mas você não obtém outros dados:
Isso funciona e preserva a ordem dos dados, então talvez outro loop usando, por exemplo, awk para combinar os dados descritivos com as coordenadas?
Editar. Devido aos comentários confusos que fiz abaixo, editarei a resposta aqui.
O script a seguir deve fazer o trabalho de ler vários arquivos csv, adicionando novas colunas de coordenadas a cada arquivo.
No OSX, você precisará instalar a versão mais recente do sed (2009) e usar a primeira linha não comentada do loop. Para o Linux, comente o primeiro e use o segundo. Ajuste de
-F " "
acordo com o formato do separador nos arquivos csv, por exemplo,-F ","
para separar vírgulas. Observe também que a transformação de elevação é no elipsóide, não no geóide, portanto, certifique-se de transformar as alturas de acordo.fonte
paste -d',' ${i} <(awk -v OFS="," -F " " 'NR>1 {print $1 " " $2}' ${i} | gdaltransform -s_srs EPSG:4326 -t_srs EPSG:32633 | awk '{gsub(" ",",",$0); print $0}' | /usr/local/bin/sed "1i\X,Y,Z") > utm${i}
Substitua / usr / local / sed por just sed se você não estiver no OSX. Isso não é ideal se os arquivos csv estiverem separados por espaço, como supõe a linha acima, mas funciona. Se você tiver separados por vírgula, mude-F " "
para-F ","
Usar qgis ou mesmo OGR é um exagero para isso.
Use
pyproj
( https://pypi.python.org/pypi/pyproj ) combinado com o gravador python csv e alguns truques padrão da biblioteca. Você não precisa instalar nada alémpyproj
disso!fonte
pyproj
precisa ser instalado separadamente para o pôster ou se já está lá.Você não precisa de python. Basta usar a linha de comando e ogr2ogr. No seu caso, o mais importante é o parâmetro -t_srs srs_def.
Isso já está explicado nesta resposta para Como converter um arquivo do Excel com colunas x, y em um shapefile?
ATUALIZAÇÃO Não tenho tempo para escrever seu código completo. Mas o problema será que ele precisa de um pouco mais de código em python do que você imagina.
Seu principal problema será que trabalhar com arquivos csv não é tão confortável quanto usar shapefiles. Assim, você primeiro precisará converter o csv para a forma que precisa do arquivo VRT. Isso é explicado no primeiro link. Aqui, você precisará escrever um script python em loop pelos arquivos, que gera automaticamente os arquivos vrt.
Este é um script que eu me usei. Você tem que testar se funciona para você. Eu já incluí a conversão de WGS 84 para UTM 33N
Você precisa ajustar os parâmetros para Nome do campo , src , x e y de acordo com o seu arquivo csv.
UPDATE2
Depois de pensar um pouco, pergunto-me por que você deseja usar o QGIS? Você pode usar um script python como este para converter diretamente suas coordenadas de WGS em UTM. Nesse caso, é um csv aberto simples, lê coordenadas, transforma coordenadas e salva-as em um novo arquivo.
fonte