Batch convert lat long ke UTM?

11

Saya punya file .csv yang berisi daftar panjang titik lintang dan bujur. Apakah ada cara efisien untuk mengubah daftar menjadi sistem koordinat UTM yang diproyeksikan?

hpy
sumber

Jawaban:

8

Mungkin cara paling sederhana adalah menggunakan sesuatu seperti QGIS dan plugin teks terbatas untuk mengimpor dan kemudian mengekspor data. Jika Anda mencari sesuatu commandline dan scalable, maka pendekatan VRT yang disebutkan Sasa adalah yang baik.

Anda juga dapat melakukannya dengan input dan output file menggunakan gdaltransform:

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

Dan jika Anda membutuhkan lebih banyak akses program untuk hasil, periksa jawaban geografi menggunakan pyroj untuk pertanyaan terkait.

scw
sumber
Bisakah Anda lebih spesifik tentang bagaimana saya harus mengekspor data dalam QGIS? Saya mencoba klik kanan pada layer yang diimpor dengan poin, klik Save As ..., dan tentukan UTM 16N sebagai sistem koordinat yang saya proyeksikan. Tetapi file yang dihasilkan tidak berubah!
hpy
Saya bisa. Setelah Anda memuat titik CSV hanya pada penggaris layer kemudian lakukan save as> crs yang dipilih> pilih sistem untuk diubah menjadi> dan simpan. jika Anda ingin kembali ke CSV dfsfsd
yair suari
beberapa masalah pengeditan. jika ingin kembali ke csv gunakan kalkulator atribut dan hitung nilai $ x dan $ y pada fungsi geometrid untuk mendapatkan lokasi di nes crs save lagi sebagai csv
yair suari
9

Dengan arcmap,
tambahkan csv dan gunakan lat long untuk membuat tabel acara. (klik kanan layer> "Tampilkan Data XY")

Ini menciptakan lapisan peristiwa dengan tabel dan lapisan titik (bukan lapisan titik nyata, perlu diekspor nanti)

tampilan xy

atur proyeksi dokumen (properti bingkai data) ke output file yang diinginkan. (klik kanan layer "di TOC"> properties> koordinat sistem tab).

Dok prop

proyeksi yang diinginkan

klik kanan layer di TOC> Ekspor Data

ekspor

Gunakan opsi untuk "menggunakan sistem koordinat yang sama dengan: bingkai data"

ekspor

Brad Nesom
sumber
7

ogr2ogr seharusnya dapat menangani ini (Anda dapat mengunduh FWTools untuk pemasangan cepat).

Utas ini menggambarkan cara memproyeksi ulang data CSV. Untuk meringkas, Anda harus membuat file VRT yang berisi referensi ke kolom CSV:

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

Dan kemudian jalankan ogr2ogr untuk proyeksi ulang:

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

Anda harus mengganti epsg: 31466 dengan kode EPSG yang sesuai untuk sistem koordinat UTM Anda.

Sasa Ivetic
sumber
4

Corpscon , alat gratis dari US Army Corps of Engineers akan memungkinkan Anda untuk mengonversi lat / long ke / dari UTM. Perhatikan bahwa ini terbatas untuk Amerika Serikat, dan dapat berfungsi di Kanada .


sumber
3

Seperti yang saya pahami, Anda tidak ingin hanya memproyeksi ulang suatu file, Anda ingin mengonversi koordinatnya sendiri dan memiliki file baru dengan koordinat baru. Jika Anda Google "mengkonversi lat / lon ke utm" Anda harus menemukan spreadsheet excel yang akan melakukan konversi ini (misalnya di University of Wisconsin Green Bay atau dalam jawaban whuber di atas). Atau, Anda dapat membeli perangkat lunak seperti AllTrans atau Franson Coordtrans, yang dikonversi ke dan dari banyak sistem koordinat yang berbeda.

Atau, yang lebih sederhana tetapi lebih mendidik, adalah mempelajari sintaks untuk gdal atau FWTools.

Rudi
sumber
3

Untuk solusi scripting, Anda bisa menggunakan 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
sumber
Terima kasih, sesama programmer! NB: ini akan berfungsi jika file CSV Anda memiliki 3+ kolom, dengan data xy Anda menjadi kolom kedua & ketiga. Saya hanya harus menyesuaikan indeks sedikit karena input x / y saya ada di dua kolom pertama. Sangat jelas, dapat diperluas, dan dapat digunakan kembali!
Ahmed Fasih
2

Situs baru berikut ini mengkonversi file secara online. (Menggunakan pyproj)

Itu juga menghasilkan KML dan file input sering dapat dibiarkan 'apa adanya' dan tidak diformat ulang untuk menyesuaikan program konversi.

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

Harap potong dan tempel tautan untuk mengikutinya.

Ninga
sumber
Dihapus itu. Biaya saya $ 120 per tahun + waktu admin dengan terlalu sedikit pengguna. Maaf.
Ninga
1

Saya tidak akan mencari solusi ARC; untuk konversi umum ini ada banyak alat daring seperti http://www.hamstermap.com - cukup salin dan tempel daftar koordinat dan Anda akan langsung mengubahnya.

Petra Hauerlandova
sumber
Konverter batch online yang lebih baik untuk Lon / Lat ke UTM ada di < zonums.com/online/coords/cotrans.php?module=13 > Alat hamstermap tampaknya mengubah koordinat input, sedangkan alat zonums tidak mengacaukan input data, dan juga zonum yang berfungsi untuk data di seluruh dunia - hanya di WGS84, tetapi memungkinkan Anda untuk mengatur zona. Hanya hati-hati Anda memilih opsi yang tepat dari lat / lon atau lon / lat. Alat Zonums memberikan hasil yang benar, dan tentu saja lebih mudah digunakan daripada bermain-main dengan skrip atau apa pun.
IanS