Batch แปลง lat longs เป็น UTM หรือไม่


11

ฉันมีไฟล์. csv ที่มีรายการละติจูดและลองติจูด มีวิธีที่มีประสิทธิภาพในการแปลงรายการเป็นระบบพิกัด UTM ที่คาดการณ์ไว้หรือไม่?

คำตอบ:


8

บางทีวิธีที่ง่ายที่สุดคือการใช้บางสิ่งบางอย่างเช่นQGIS และปลั๊กอินข้อความแบบมีตัวคั่นเพื่อนำเข้าและส่งออกข้อมูล หากคุณกำลังมองหาบรรทัดคำสั่งและปรับขนาดได้แล้วแนวทาง VRT ที่ Sasa กล่าวถึงนั้นเป็นสิ่งที่ดี

คุณสามารถทำได้ด้วยอินพุตไฟล์และเอาท์พุตโดยใช้gdaltransform:

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

และหากคุณต้องการการเข้าถึงผลลัพธ์เพิ่มเติมโดยทางโปรแกรมตรวจสอบคำตอบของ geographika โดยใช้ pyrojสำหรับคำถามที่เกี่ยวข้อง


คุณจะเจาะจงมากขึ้นเกี่ยวกับวิธีที่ฉันควรส่งออกข้อมูลใน QGIS ได้หรือไม่? ฉันพยายามคลิกขวาที่เลเยอร์ที่นำเข้าพร้อมกับคะแนนคลิกบันทึกเป็น ... และระบุ UTM 16N เป็นระบบพิกัดที่คาดการณ์ไว้ แต่ไฟล์ผลลัพธ์ไม่เปลี่ยนแปลง!
hpy

ฉันสามารถหลังจากนั้นคุณโหลด CSV เพียงแค่ชี้ไปที่ไม้บรรทัดเลเยอร์แล้วทำการบันทึกเป็น> crs ที่เลือก> เลือกระบบที่จะเปลี่ยนเป็น> และบันทึก ถ้าคุณต้องการกลับไปใช้ CSV dfsfsd
yair suari

ปัญหาการแก้ไขบางอย่าง ถ้าต้องการกลับไปที่ csv ให้ใช้เครื่องคิดเลขคุณลักษณะและคำนวณค่า $ x และ $ y ในฟังก์ชั่นรูปทรงเรขาคณิตเพื่อให้ได้ตำแหน่งบน nes crs บันทึกอีกครั้งเป็น csv
yair suari

9

ด้วย arcmap
เพิ่ม csv และใช้ lat longs เพื่อสร้างตารางเหตุการณ์ (เลเยอร์คลิกขวา> "แสดงข้อมูล XY")

สิ่งนี้สร้างเลเยอร์เหตุการณ์ที่มีตารางและเลเยอร์จุด (ไม่ใช่เลเยอร์จุดจริงต้องส่งออกในภายหลัง)

แสดง xy

ตั้งค่าการฉายเอกสาร (คุณสมบัติเฟรมข้อมูล) เป็นผลลัพธ์ที่ต้องการของไฟล์ (คลิกขวาเลเยอร์ "ใน TOC"> Properties> แท็บประสานงานระบบ)

หมอประ

การฉายภาพที่ต้องการ

คลิกขวาที่เลเยอร์ใน TOC> ส่งออกข้อมูล

ส่งออก

ใช้ตัวเลือกเพื่อ "ใช้ระบบพิกัดเดียวกันกับ: data frame"

ส่งออก


7

ogr2ogr ควรสามารถจัดการกับสิ่งนี้ได้ (คุณสามารถดาวน์โหลดFWToolsสำหรับการติดตั้งอย่างรวดเร็ว)

หัวข้อนี้แสดงวิธีการปฏิเสธข้อมูล CSV ในการสรุปคุณจะต้องสร้างไฟล์ VRT ที่มีการอ้างอิงไปยังคอลัมน์ CSV:

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

จากนั้นเรียกใช้ ogr2ogr เพื่อคัดค้าน:

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

คุณจะต้องแทนที่ epsg: 31466 ด้วยรหัส EPSG ที่เหมาะสมสำหรับระบบพิกัด UTM ของคุณ


4

Corpsconซึ่งเป็นเครื่องมือฟรีจาก US Army Corps of Engineers จะช่วยให้คุณสามารถแปลงชุด lat / long เป็น / จาก UTM โปรดทราบว่าจะมีข้อ จำกัด ไปยังประเทศสหรัฐอเมริกาและอาจทำงานในประเทศแคนาดา


3

มีสเปรดชีตที่ใช้งานได้และซอร์สโค้ดอื่น ๆ (Fortran, C ++ ฯลฯ ) ที่http://www.gpsy.com/gpsinfo/geotoutm/ แหล่งข้อมูลที่ยอดเยี่ยมสำหรับปี 1996 (และยังใช้งานได้)!


3

เรามีแอปพลิเคชั่นเดสก์ท็อปแบบสแตนด์อโลนในเชิงพาณิชย์ (แต่ราคาไม่แพง) ที่จะช่วยให้คุณสามารถแปลงชุดพิกัดของคุณ ข้อมูลเพิ่มเติมสามารถดูได้ที่: http://geomaticsolutions.com/products/geo-suite/geo-calc

คุณยังสามารถใช้บริการออนไลน์ฟรีของเราเพื่อทำการแปลงจุดเดียว http://georepository.com/home.html


3

ตามที่ฉันเข้าใจแล้วคุณไม่ต้องการปฏิเสธไฟล์เพียงอย่างเดียวคุณต้องการแปลงพิกัดเองและมีไฟล์ใหม่ด้วยพิกัดใหม่ หากคุณ Google "แปลง lat / lon เป็น utm" คุณควรพบสเปรดชีต excel ที่จะทำการแปลงนี้ (เช่นที่ University of Wisconsin Green Bayหรือในคำตอบของผู้ขายด้านบน) หรือคุณสามารถซื้อซอฟต์แวร์เช่น AllTrans หรือ Franson Coordtrans ซึ่งเป็นชุดที่แปลงเป็นและจากระบบพิกัดที่แตกต่างกัน

หรือน้อยกว่าที่เรียบง่าย แต่ให้ความรู้มากกว่าคือการเรียนรู้ไวยากรณ์สำหรับ gdal หรือ FWTools


3

สำหรับโซลูชันการเขียนสคริปต์คุณสามารถใช้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()

ขอบคุณโปรแกรมเมอร์เพื่อน! หมายเหตุ: สิ่งนี้จะทำงานหากไฟล์ CSV ของคุณมี 3+ คอลัมน์โดยที่ข้อมูล xy ของคุณเป็นคอลัมน์ที่สองและสาม ฉันต้องปรับดัชนีนิดหน่อยเนื่องจากอินพุต x / y ของฉันอยู่ในสองคอลัมน์แรก ชัดเจนขยายได้และนำกลับมาใช้ใหม่ได้!
Ahmed Fasih

2

ไซต์ใหม่ต่อไปนี้แปลงไฟล์ออนไลน์ (ใช้ pyproj)

นอกจากนี้ยังสร้าง KML และไฟล์อินพุตมักจะถูกปล่อยไว้ 'ตามสภาพ' และไม่ได้จัดรูปแบบใหม่เพื่อให้เหมาะกับโปรแกรมแปลง

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

โปรดตัดและวางลิงก์เพื่อติดตาม


ลบออก ค่าใช้จ่ายฉัน $ 120 ต่อปี + เวลาผู้ดูแลระบบมีผู้ใช้น้อยเกินไป ขอโทษ
Ninga

1

ฉันจะไม่ไปแก้ปัญหา ARC; สำหรับการแปลงทั่วไปเหล่านี้มีเครื่องมือออนไลน์มากมายเช่นhttp://www.hamstermap.com - เพียงแค่คัดลอกและวางรายการพิกัดแล้วคุณจะได้รับการแปลงทันที


ตัวแปลงแบตช์ออนไลน์ที่ดีกว่าสำหรับ Lon / Lat เป็น UTM อยู่ที่ < zonums.com/online/coords/cotrans.php?module=13 > เครื่องมือ hamstermap ดูเหมือนว่าจะเปลี่ยนพิกัดอินพุตในขณะที่เครื่องมือ zonums ไม่ได้สับสน ข้อมูลอินพุตและ zonums หนึ่งใช้ได้กับข้อมูลทั่วโลก - เฉพาะใน WGS84 แต่อนุญาตให้คุณตั้งค่าโซน เพียงระวังคุณเลือกตัวเลือกที่ถูกต้องจาก lat / lon หรือ lon / lat เครื่องมือ Zonums ให้ผลลัพธ์ที่ถูกต้องและง่ายต่อการใช้งานมากกว่ายุ่งกับสคริปต์หรืออะไรก็ตาม
IanS
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.