¿Conversión por lotes de longitudes de lat a UTM?


11

Tengo un archivo .csv que contiene una larga lista de puntos de latitud y longitud. ¿Hay una manera eficiente de convertir por lotes la lista en un sistema de coordenadas UTM proyectado?

Respuestas:


8

Quizás la forma más simple es usar algo como QGIS y su complemento de texto delimitado para importar y luego exportar los datos. Si está buscando algo de línea de comandos y escalable, entonces el enfoque VRT que mencionó Sasa es bueno.

También puede hacerlo con entradas y salidas de archivos usando gdaltransform:

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

Y si necesita más acceso programático a los resultados, consulte la respuesta de geographika usando pyroj para una pregunta relacionada.


¿Puede ser más específico sobre cómo debo exportar los datos en QGIS? Intenté hacer clic derecho en la capa importada con los puntos, hacer clic en Guardar como ... y especifiqué UTM 16N como mi sistema de coordenadas proyectado. ¡Pero el archivo resultante no fue cambiado!
hpy

Puedo. Después de cargar el CSV, simplemente apunte en la regla de capa y luego guarde como> crs seleccionados> seleccione el sistema para transformar a> y guarde. si quieres volver a CSV dfsfsd
yair suari el

Algunos problemas de edición. si desea volver a csv, use la calculadora de atributos y calcule los valores $ x y $ y en las funciones de geometríad para obtener la ubicación en los ns crs y guarde nuevamente como csv
yair suari

9

Con arcmap,
agregue el csv y use los largos largos para crear una tabla de eventos. (capa de clic derecho> "Mostrar datos XY")

Esto crea una capa de eventos con la tabla y una capa de puntos (no es una capa de puntos real, debe exportarse más adelante)

mostrar xy

establezca la proyección del documento (propiedades del marco de datos) en la salida deseada del archivo. (haga clic con el botón derecho en capas "en la tabla de contenido"> propiedades> pestaña del sistema de coordenadas).

Doc prop

proyección deseada

haga clic derecho en la capa en TOC> Exportar datos

exportar

Use la opción para "usar el mismo sistema de coordenadas que: el marco de datos"

exportar


7

ogr2ogr debería poder manejar esto (puede descargar FWTools para una instalación rápida).

Este hilo ilustra cómo reproyectar datos CSV. Para resumir, deberá crear un archivo VRT que contenga referencias a las columnas CSV:

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

Y luego ejecuta ogr2ogr para reproyección:

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

Deberá reemplazar epsg: 31466 con el código EPSG apropiado para su sistema de coordenadas UTM.


4

Corpscon , una herramienta gratuita del Cuerpo de Ingenieros del Ejército de EE. UU. Te permitirá convertir por lotes lat / long a / desde UTM. Tenga en cuenta que está limitado a los Estados Unidos y puede funcionar en Canadá .




3

Según tengo entendido, no desea simplemente volver a proyectar un archivo, desea convertir las coordenadas y tener un nuevo archivo con las nuevas coordenadas. Si Google "convierte lat / lon a utm", debería encontrar hojas de cálculo de Excel que harán esta conversión (por ejemplo, en la Universidad de Wisconsin Green Bay o en la respuesta de whuber anterior). O bien, puede comprar software como AllTrans o Franson Coordtrans, que se convierten por lotes desde y hacia muchos sistemas de coordenadas diferentes.

O, menos simple pero más educativo, es aprender la sintaxis de gdal o FWTools.


3

Para una solución de secuencias de comandos, puede 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()

¡Gracias, compañero programador! NB: esto funcionará si su archivo CSV tiene más de 3 columnas, siendo sus datos xy la segunda y la tercera columna. Solo tuve que ajustar un poco los índices ya que mi entrada x / y está en las dos primeras columnas. ¡Tan claro, extensible y reutilizable!
Ahmed Fasih

2

El siguiente sitio nuevo convierte archivos en línea. (Utiliza pyproj)

También genera KML y el archivo de entrada a menudo puede dejarse "tal cual" y no formatearse para adaptarse al programa de conversión.

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

Corta y pega el enlace para seguirlo.


Quitado Me costó $ 120 por año + tiempo de administración con muy pocos usuarios. Lo siento.
Ninga

1

No elegiría la solución ARC; Para estas conversiones comunes hay muchas herramientas en línea como http://www.hamstermap.com : simplemente copie y pegue una lista de coordenadas y las convertirá instantáneamente.


Un mejor conversor de lotes en línea para Lon / Lat a UTM está en < zonums.com/online/coords/cotrans.php?module=13 > La herramienta de mapa de hámster parece cambiar las coordenadas de entrada, mientras que la herramienta de zonums no daña el datos de entrada, y también los zonums uno para datos mundiales, solo en WGS84, pero le permite configurar la zona. Solo tenga cuidado de seleccionar la opción correcta de lat / lon o lon / lat. La herramienta Zonums da resultados correctos, y ciertamente es más fácil de usar que jugar con scripts o lo que sea.
IanS
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.