Converti batch long long in UTM?


11

Ho un file .csv che contiene un lungo elenco di punti di latitudine e longitudine. Esiste un modo efficiente per convertire in batch l'elenco in un sistema di coordinate UTM proiettato?

Risposte:


8

Forse il modo più semplice è usare qualcosa come QGIS e il suo plugin di testo delimitato per importare e quindi esportare i dati. Se stai cercando qualcosa da linea di comando e scalabile, l'approccio VRT menzionato da Sasa è buono.

Puoi anche farlo con input e output di file usando gdaltransform:

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

E se hai bisogno di un accesso più programmatico ai risultati, controlla la risposta di geographika usando pyroj per una domanda correlata.


Puoi essere più specifico su come dovrei esportare i dati in QGIS? Ho provato a fare clic con il pulsante destro del mouse sul livello importato con i punti, fare clic su Salva con nome ... e ho specificato UTM 16N come sistema di coordinate proiettato. Ma il file risultante non è stato modificato!
hpy

Posso. Dopo aver caricato il CSV basta puntare sul righello del livello, quindi salvare come> cr selezionati> selezionare il sistema da trasformare in> e salvare. se vuoi tornare a CSV dfsfsd
yair suari

alcuni problemi di modifica. se vuoi tornare a csv usa il calcolatore degli attributi e calcola i valori $ xe $ y sulle funzioni geometriche per ottenere di nuovo la posizione su nes crs come csv
yair suari

9

Con arcmap,
aggiungi il CSV e usa i long long per creare una tabella degli eventi. (livello clic destro> "Visualizza dati XY")

Questo crea un livello evento con la tabella e un livello punto (non un livello punto reale, deve essere esportato in seguito)

visualizza xy

imposta la proiezione del documento (proprietà del frame di dati) sull'output desiderato del file. (fare clic con il tasto destro del mouse sui livelli "nel sommario"> proprietà> scheda sistema di coordinate).

Doc prop

proiezione desiderata

fare clic con il tasto destro del mouse sul livello in TOC> Esporta dati

esportare

Utilizzare l'opzione per "utilizzare lo stesso sistema di coordinate di: il frame di dati"

esportare


7

ogr2ogr dovrebbe essere in grado di gestirlo (puoi scaricare FWTools per una rapida installazione).

Questo thread illustra come riproiettare i dati CSV. Per riassumere, dovrai creare un file VRT che contenga riferimenti alle colonne CSV:

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

E quindi esegui ogr2ogr per la riproiezione:

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

Dovrai sostituire epsg: 31466 con il codice EPSG appropriato per il tuo sistema di coordinate UTM.


4

Corpscon , uno strumento gratuito di US Army Corps of Engineers ti consentirà di convertire in batch lat / long in / from UTM. Si noti che è limitato agli Stati Uniti e potrebbe funzionare in Canada .




3

A quanto ho capito, non vuoi semplicemente riproiettare un file, vuoi convertire le coordinate stesse e avere un nuovo file con le nuove coordinate. Se Google "converti lat / lon in utm" dovresti trovare fogli di calcolo Excel che eseguiranno questa conversione (ad es. All'Università del Wisconsin Green Bay o nella risposta di Whuber sopra). In alternativa, puoi acquistare software come AllTrans o Franson Coordtrans, che possono essere convertiti in batch da e verso diversi sistemi di coordinate.

O, meno semplice ma più educativo, è imparare la sintassi per gdal o FWTools.


3

Per una soluzione di scripting, è possibile utilizzare 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()

Grazie, collega programmatore! NB: funzionerà se il tuo file CSV ha 3+ colonne, con i tuoi dati xy come seconda e terza colonna. Ho dovuto solo regolare un po 'gli indici poiché il mio input x / y è nelle prime due colonne. Così chiaro, estensibile e riutilizzabile!
Ahmed Fasih,

2

Il nuovo sito seguente converte i file online. (Usa pyproj)

Genera anche KML e il file di input può spesso essere lasciato "così com'è" e non riformattato per adattarsi al programma di conversione.

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

Taglia e incolla il link per seguirlo.


Rimosso. Mi costa $ 120 all'anno + tempo di amministrazione con troppi pochi utenti. Scusate.
Ninga,

1

Non sceglierei la soluzione ARC; per queste conversioni comuni ci sono molti strumenti online come http : //www.hamsterttp : basta copiare e incollare un elenco di coordinate e le convertirai immediatamente.


Un miglior convertitore batch online per Lon / Lat in UTM è su < zonums.com/online/coords/cotrans.php?module=13 > Lo strumento hamstermap sembra cambiare le coordinate di input, mentre lo strumento zonums non confonde il input data, e anche le zonum che funzionano per i dati in tutto il mondo - solo in WGS84, ma consente di impostare la zona. Fai attenzione, seleziona l'opzione giusta da lat / lon o lon / lat. Lo strumento Zonums fornisce risultati corretti ed è certamente più facile da usare che scherzare con gli script o altro.
IanS,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.