Converter em lote lats longos em UTM?

11

Eu tenho um arquivo .csv que contém uma longa lista de pontos de latitude e longitude. Existe uma maneira eficiente de converter em lote a lista em um sistema de coordenadas UTM projetado?

hpy
fonte

Respostas:

8

Talvez a maneira mais simples seja usar algo como o QGIS e seu plug - in de texto delimitado para importar e depois exportar os dados. Se você estiver procurando por algo em linha de comando e escalável, a abordagem VRT mencionada por Sasa é boa.

Você também pode fazer isso com entradas e saídas de arquivo usando gdaltransform:

gdaltransform -s_srs epsg:4326 -t_srs epsg:25832 < space-delimited-coordinates.txt

E se você precisar de mais acesso programático aos resultados, consulte a resposta da geographika usando pyroj para obter uma pergunta relacionada.

scw
fonte
Você pode ser mais específico sobre como devo exportar os dados no QGIS? Tentei clicar com o botão direito do mouse na camada importada com os pontos, clicar em Salvar como ... e especificar o UTM 16N como meu sistema de coordenadas projetado. Mas o arquivo resultante não foi alterado!
HPY
Depois que você carrega o CSV, aponte para a régua da camada e salve como> crs selecionados> selecione o sistema para o qual transformar> e salve. Se você, então quero voltar para CSV dfsfsd
yair Suari
alguns problemas de edição. se querem voltar para CSV usar a calculadora atributos e calcular X e $ valores y $ na functionsd geometria para obter a localização no NES crs a salvar novamente como CSV
yair Suari
9

Com o arcmap,
adicione o csv e use os lat longs para criar uma tabela de eventos. (clique com o botão direito do mouse na camada> "Exibir dados XY")

Isso cria uma camada de eventos com a tabela e uma camada de pontos (não uma camada de pontos real, ela precisa ser exportada posteriormente)

exibição xy

defina a projeção do documento (propriedades do quadro de dados) para a saída desejada do arquivo. (clique com o botão direito em camadas "no sumário"> propriedades> guia sistema de coordenadas).

Doc prop

projeção desejada

clique com o botão direito do mouse na camada em sumário> Exportar dados

exportação

Use a opção para "usar o mesmo sistema de coordenadas que: o quadro de dados"

exportação

Brad Nesom
fonte
7

ogr2ogr deve ser capaz de lidar com isso (você pode baixar o FWTools para uma instalação rápida).

Este tópico ilustra como reprojetar dados CSV. Para resumir, você precisará criar um arquivo VRT que contenha referências às colunas CSV:

<OGRVRTDataSource>
    <OGRVRTLayer name="test">
        <SrcDataSource>test.csv</SrcDataSource>
        <GeometryType>wkbPoint</GeometryType>
        <GeometryField encoding="PointFromColumns" x="RW" y="HW"/>
    </OGRVRTLayer>
</OGRVRTDataSource>

E, em seguida, execute ogr2ogr para reprojeção:

ogr2ogr -s_srs "epsg:31466" -t_srs "epsg:25832" -f "CSV" -lco GEOMETRY=AS_XY -sql "SELECT PNR FROM test" temp_dir test.vrt

Você precisará substituir epsg: 31466 pelo código EPSG apropriado para o seu sistema de coordenadas UTM.

Sasa Ivetic
fonte
4

Corpscon , uma ferramenta gratuita do Corpo de Engenheiros do Exército dos EUA permitirá converter em lote lat / long para / de UTM. Observe que é limitado aos Estados Unidos e pode funcionar no Canadá .


fonte
3

Pelo que entendi, você não deseja simplesmente reprojetar um arquivo, deseja converter as próprias coordenadas e ter um novo arquivo com as novas coordenadas. Se você Google "converter lat / lon em utm", deverá encontrar planilhas do Excel que farão essa conversão (por exemplo, na Universidade de Wisconsin Green Bay ou na resposta da whuber acima). Ou você pode adquirir softwares como AllTrans ou Franson Coordtrans, que convertem em lote para e de diversos sistemas de coordenadas.

Ou, menos simples, mas mais educacional, é aprender a sintaxe para gdal ou FWTools.

Rudi
fonte
3

Para uma solução de script, você pode usar pyproj :

import sys
import csv
import pyproj

# example invocation
# ./reproj.py ./file.csv 32619 4326

if (len(sys.argv) != 4):
    print '%s <csvfile> <epsg_code_in> <epsg_code_out>' % sys.argv[0]
    sys.exit(1)
else:
    p1 = pyproj.Proj(init='epsg:%s' % sys.argv[2])
    p2 = pyproj.Proj(init='epsg:%s' % sys.argv[3])

    f = open(sys.argv[1], 'r')
    table = csv.reader(f)
    for row in table:
        print '%s %s' % (row[1], row[2])
        newxy = pyproj.transform(p1, p2, row[1], row[2])
        print '%s %s' % (row[0], newxy[0], newxy[1])
    f.close()
tomkralidis
fonte
Obrigado, colega programador! NB: isso funcionará se o seu arquivo CSV tiver mais de 3 colunas, com os dados xy na segunda e na terceira colunas. Eu apenas tive que ajustar os índices um pouco, pois minha entrada x / y está nas duas primeiras colunas. Tão claro, extensível e reutilizável!
Ahmed Fasih
2

O novo site a seguir converte arquivos online. (Ele usa pyproj)

Ele também gera KML e o arquivo de entrada geralmente pode ser deixado 'como está' e não reformatado para acomodar o programa de conversão.

Sorry i cant post a numeric domain so have to wrap it in a code block!
http://54.251.49.75/XYZ_tools

Por favor, recorte e cole o link para segui-lo.

Ninga
fonte
Removido. Custando-me US $ 120 por ano + tempo de administração com poucos usuários. Desculpe.
Ninga
1

Eu não iria para a solução ARC; para essas conversões comuns, existem muitas ferramentas on-line, como http://www.hamstermap.com - basta copiar e colar uma lista de coordenadas e você as converterá instantaneamente.

Petra Hauerlandova
fonte
Um melhor conversor de lotes online para Lon / Lat para UTM está em < zonums.com/online/coords/cotrans.php?module=13 > A ferramenta hamstermap parece alterar as coordenadas de entrada, enquanto a ferramenta zonums não atrapalha a dados de entrada e também os zonums que se trabalham para dados em todo o mundo - apenas no WGS84, mas permitem definir a zona. Apenas observe que você seleciona a opção certa de lat / lon ou lon / lat. A ferramenta Zonums fornece resultados corretos e é certamente mais fácil de usar do que mexer com scripts ou qualquer outra coisa.
13136 IanS