การคำนวณพิกัดรูปหลายเหลี่ยมใหม่ วิธีแปลงพิกัดทางภูมิศาสตร์เป็นพิกัดสี่เหลี่ยม

ซอฟต์แวร์และยูทิลิตี้เพิ่มเติมสำหรับการทำงานกับข้อมูลการทำแผนที่: เครื่องคำนวณทางภูมิศาสตร์, การคำนวณพิกัดของแผนที่และแผ่นแผนที่ใหม่, ตัวแปลงรูปแบบ ฯลฯ...

วันที่: 19-01-2013

ซอฟต์แวร์และยูทิลิตี้เพิ่มเติมสำหรับการทำงานกับข้อมูลการทำแผนที่: เครื่องคำนวณทางภูมิศาสตร์, การคำนวณพิกัดแผนที่และแผ่นแผนที่ใหม่, ตัวแปลงรูปแบบ, ตัวแปลงรูปแบบ GIS, ตัวแปลงสำหรับเครื่องนำทาง, ซอฟต์แวร์นำทาง ฯลฯ....

กูเกิล เอิร์ธ
กูเกิล เอิร์ธ
- โปรแกรมจาก Google Corporation ซึ่งเป็นแบบจำลองสามมิติของโลกที่เกิดจากภาพถ่ายดาวเทียม นอกจากนี้ โปรแกรมยังมีฟังก์ชัน "Google Street View" ซึ่งคุณสามารถดูถนนในเมืองต่างๆ ของโลก รวมถึงอนุสรณ์สถานทางวัฒนธรรมและสถาปัตยกรรม
คุณสมบัติGooglePlanetEarthPro https://www.google.ru/intl/ru/earth/download/gep/agree.html
ความสามารถในการนำเข้าข้อมูล GIS ขั้นสูง
การวัดพื้นที่ ความยาว และปริมณฑลของที่ดิน
พิมพ์ภาพหน้าจอด้วยความละเอียดสูง
สร้างภาพยนตร์ออฟไลน์ที่น่าทึ่ง
เราสนใจเป็นพิเศษในเวอร์ชัน Google Earth Pro และโมดูลต่างๆ ฉันใช้ GIS ขนาดเล็กนี้เพื่อส่งข้อมูลของฉันไปยังผู้ที่ไม่มีโอกาสซื้อซอฟต์แวร์ราคาแพง คุณสามารถเขียนลงไปและเข้าใจทุกอย่าง
การทำงานร่วมกับ KML
KML เป็นรูปแบบไฟล์ที่ใช้แสดงข้อมูลทางภูมิศาสตร์ใน Google Earth
ดังนั้นด้วยความช่วยเหลือของสคริปต์ คุณสามารถเห็นภาพได้เกือบทุกภาพ คุณสามารถยืดแรสเตอร์ แสดงวัตถุสามมิติ โดยใช้
SketchUp Pro - https://www.sketchup.com/
ปัจจุบันโปรแกรมนี้ถือเป็นหนึ่งในโปรแกรมที่ทันสมัยที่สุดสำหรับการสร้างแบบจำลอง 3 มิติเนื่องจากคลังแสงมีความสามารถที่หลากหลายสำหรับการทำงานที่สะดวกสบายกับโมเดล 3 มิติ
มีเหตุผลที่ SketchUp มีความหมายเหมือนกันกับซอฟต์แวร์การสร้างแบบจำลอง 3 มิติที่เป็นมิตรและให้อภัย: เราไม่เสียสละความสามารถในการใช้งานเพื่อประโยชน์ของฟังก์ชันการทำงาน เริ่มต้นด้วยการวาดเส้นและรูปร่าง ดันและดึงพื้นผิวเพื่อเปลี่ยนให้เป็นรูปแบบ 3 มิติ ยืด คัดลอก หมุน และระบายสีเพื่อสร้างสิ่งที่คุณต้องการ
หรือในพีทาโกรัสโดยใช้โมดูล Google 3D Rendering Macro
......ผลลัพธ์ที่ได้ค่อนข้างเป็นโครงการที่ใช้การได้ สะดวกมากโดยเฉพาะสำหรับผู้ที่ต้องการถ่ายโอนข้อมูลจำนวนมากผ่านเครือข่าย ช่างฝีมือประดิษฐ์โมดูลสำหรับโปรแกรม คุณสามารถใช้ GoogleMV ซึ่งดูและลากแผนที่จาก Google ไปยังพีซีของคุณ gms ซึ่งมีฟังก์ชั่นเดียวกันโดยประมาณ MapBuilder - โปรแกรมสำหรับสร้างภาพถ่ายพื้นผิวโลกตามเว็บไซต์ Google Maps ช่วยให้คุณสามารถดาวน์โหลดภาพจาก Google Maps และรวมเป็นไฟล์ขนาดใหญ่ไฟล์เดียว โลกสามารถทำสิ่งอื่นๆ ได้มากมายที่คุณไม่รู้ด้วยซ้ำ... จริงๆ แล้ว ซอฟต์แวร์ทั้งหมดที่คุณสามารถเขียนมาโครได้...

GPSMapแก้ไข
GPSMapEdit โดย Geopaintin
ก- http://geopainting.com/
โปรแกรมนี้ออกแบบมาสำหรับการแก้ไขแผนที่ GPS ในรูปแบบการทำแผนที่ต่างๆ
โปรแกรมสามารถดาวน์โหลดและแปลงเส้นทาง GPS, เวย์พอยท์ และเส้นทางในรูปแบบต่างๆ

หน้า GPS ของ OLEXA RIZNYK
โปรแกรมจาก OLEXA RIZNYK "S GPS PAGES
- http://www.olexa.com.ua/gps/index.html
ยูทิลิตี้นี้ดำเนินการ "ตัดรูปหลายเหลี่ยม" ซึ่งเนื่องจากข้อจำกัด
ไม่สามารถแสดงใน Garmin GPS
PGPSMAP- ตัวประมวลผลข้อมูลล่วงหน้า cGPSmapper
XYZ2PMF -Global Mapper ASCII เป็น cGPSmapper "รูปแบบแผนที่โปแลนด์ ตัวแปลงข้อมูลระดับความสูง
PMF2MI =cGPSmapper Garmin MapSource แมปรูปแบบเป็นตัวแปลง MapInfo GIS

cGPSmapper
cGPSmapper
- http://cgpsmapper.com/
จริงๆ แล้วนี่คือโปรแกรมที่แปลงไฟล์ข้อความให้เป็นไฟล์แผนที่ IMG สำหรับ GPS
cGPSmapper - เป็นคอมไพเลอร์ที่แปลงคุณสมบัติทางภูมิศาสตร์ในรูปแบบข้อความ mp (Mapa Polska) เป็นรูปแบบ .img ที่จำเป็นสำหรับหน่วย Garmin GPS cgpsmapper เป็นหนึ่งในเครื่องมือแรกๆ ในการสร้างแผนที่ Garmin ของคุณเอง หากไม่ใช่เครื่องมือแรก เนื่องจากเครื่องมือฟรีอื่นๆ บางตัวจำเป็นต้องใช้เพื่อฟังก์ชันการทำงานเต็มรูปแบบ จึงเป็นโปรแกรมที่ผู้สร้างแผนที่ Garmin ต้องมี

วิธีแปลงพิกัดจากรูปแบบตัวเลขหนึ่งไปเป็นอีกรูปแบบหนึ่ง

พิกัดทางภูมิศาสตร์ของจุดเดียวกันสามารถแสดงในรูปแบบที่แตกต่างกันได้ ขึ้นอยู่กับว่านาทีและวินาทีจะแสดงเป็นค่าตั้งแต่ 0 ถึง 60 หรือตั้งแต่ 0 ถึง 100 (ทศนิยม)

โดยทั่วไปรูปแบบพิกัดจะเขียนดังนี้: DD - องศา, MM - นาที, SS - วินาที; หากแสดงนาทีและวินาทีเป็นทศนิยมให้เขียน DD.DDDD ตัวอย่างเช่น:

DD MM SS: 50° 40" 45"" E, 40 50" 30"" N - องศา นาที วินาที

DD มม.มม.: 50° 40.75" E, 40 50.5" N - องศา นาทีทศนิยม

DDDDDD: 50.67916 E, 40.841666 N - องศาทศนิยม

หลายโปรแกรมไม่เข้าใจพิกัดที่แสดงในรูปแบบที่อนุญาตให้มีช่องว่าง เช่น DD MM SS หรือ DD MM.MM สำหรับการใช้งานปกติแนะนำให้จัดเก็บพิกัดในรูปแบบ DD.DDDDD

มีหลายวิธีในการดำเนินการแปลงนี้ ลองพิจารณา 3 วิธีหลัก (ตามลำดับประสิทธิผล)

ตั้งค่า GPS ให้ถูกต้อง

เพื่อหลีกเลี่ยงปัญหาการแปลพิกัดวิธีที่ง่ายที่สุดคือกำหนดค่า GPS ทันทีเพื่อให้แสดงค่าพิกัดในรูปแบบ DD.DDDDDD- อย่างไรก็ตาม สิ่งนี้อาจไม่สะดวกสำหรับผู้ที่นำทางในสนามโดยใช้แผนที่ภูมิประเทศที่มีตารางพิกัด โดยที่พิกัดจะถูกเซ็นชื่อในรูปแบบตัวเลขที่แตกต่างกัน ในทางกลับกัน ในกรณีนี้ ขอแนะนำให้เซ็นชื่อตารางพิกัดในรูปแบบนี้

ใช้สคริปต์พิเศษ

หากคุณทำงานใน Arcview GIS คุณสามารถใช้สคริปต์พิเศษที่จะทำการคำนวณใหม่ให้กับคุณได้

ในการเริ่มทำงานใน Arcview ต้องสร้างหรือโหลดตารางในรูปแบบ DBF (คุณสามารถสร้างตารางดังกล่าวใน Excel) ตารางที่บันทึกค่าเริ่มต้น ต้องเปิดให้บันทึกได้ ตาราง\เริ่มการแก้ไข.

ตารางนี้จะต้องมี 2 คอลัมน์ (จำนวนรวมอาจมีมากกว่านั้น) โดยต้องเขียนค่าพิกัดให้อยู่ในรูปแบบ DDMMSSนั่นคือไม่ควรมีการเว้นวรรคระหว่างตัวเลข เช่น 505050.3214

ในระหว่างการดำเนินการ สคริปต์จะขอให้คุณระบุชื่อของคอลัมน์ที่บันทึกค่าละติจูดและคอลัมน์ที่บันทึกค่าลองจิจูด จากนั้นระบบจะขอให้คุณป้อนชื่อสำหรับคอลัมน์ผลลัพธ์ หลังจากนี้สคริปต์จะทำการแปลงและเขียนค่าพิกัดในรูปแบบในคอลัมน์ใหม่พร้อมชื่อที่คุณป้อน DD.DDDDDD.

คำนวณค่าพิกัดใหม่ด้วยตัวเองใน Excel

สูตรการแปลงจาก dd mm ss เป็น dd.ddddd:

สูตรการแปลงจาก dd mm.mmmm เป็น dd.ddddd:

สูตรการแปลงจาก dd.ddddd เป็น dd mm ss:

ดีดี = คุณเอ็น(ดีดีดี)

= คุณเอ็น((ดีดีดีดีดี) * 60)

= ((ดีดีดีดีดี) * 60 − ) * 60

โดยที่ DDD - พิกัดในรูปแบบ DD.DDDD, DD - องศา, MM (MM.MMMM) - นาที, SS - วินาที

หากคุณขี้เกียจเกินไปที่จะป้อนสูตรและสร้างตาราง คุณสามารถดาวน์โหลดสูตรสำเร็จรูปได้ จากนั้น คุณเพียงแค่ต้องป้อนพิกัดของคุณและคัดลอกคอลัมน์ที่มีผลลัพธ์แล้ววางลงในตารางหรือไฟล์ข้อความใหม่ ซึ่งจากนั้นก็สามารถนำเข้าสู่ GIS ได้

เมื่อต้องการทำให้การคำนวณพิกัดใหม่ใน Excel ง่ายยิ่งขึ้น คุณสามารถใช้ Add-in ที่เชื่อมต่อกับ Excel ได้ หลังจากเชื่อมต่อแล้วจะมีการเพิ่มสูตรหลายสูตรลงใน Excel ซึ่งช่วยให้คุณสามารถแปลงค่าจาก DDMMSS (ในรูปแบบที่แตกต่างกันเป็นองศาทศนิยม) ดาวน์โหลดส่วนเสริม คำอธิบายของการเชื่อมต่อและการใช้ส่วนเสริมภายในไฟล์เก็บถาวร

  • GRD__YY_MMSS - การแปลงองศาที่ป้อนลงใน 1 เซลล์ในรูปแบบ GG,MMSS
  • GRD__YYMM_SS - การแปลงองศาที่ป้อนลงใน 1 เซลล์ในรูปแบบ YYMM,SS
  • GRD__YY_MM_SS - การแปลงองศาที่ป้อนเป็น 3 เซลล์ในรูปแบบ GG MM SS

ตัวแปลงระบบพิกัด

ตัวแปลงพิกัด MSK, SK-42/63, PZ-90, WGS-84

-- เลือกระบบพิกัด --
0.00 X ↔ Y 0.00 X ↔ Y

คุณต้องการแปลงพิกัดจากระบบพิกัดหนึ่งไปอีกระบบหนึ่งหรือไม่?

ที่นี่คุณสามารถแปลงพิกัดของจุดจากระบบพิกัดท้องถิ่น (SC) ที่ใช้ในรัสเซียเป็นระบบพิกัดโลกหรือในทางกลับกัน รวมถึงจาก CS ท้องถิ่นหนึ่งไปยังอีกระบบท้องถิ่นหนึ่ง คุณสามารถคำนวณใหม่ได้ครั้งละหนึ่งจุดหรือทั้งหมด

ความจำเป็นในการคำนวณใหม่เกิดขึ้นเมื่อกำหนดตำแหน่งของจุดบนแผนที่ที่ดินสาธารณะซึ่งทำงานในระบบพิกัดโลก WGS-84 (การฉายภาพ Mercator) ก็ใช้ WGS-84 (ลองจิจูดและละติจูด) : Google.Maps, Yandex.Maps , OpenStreet ฯลฯ

คำแนะนำ:

เลือกระบบพิกัดต้นทางจากรายการแบบเลื่อนลงทางด้านซ้าย และระบบพิกัดเป้าหมายทางด้านขวา ป้อนพิกัดในช่องข้อความด้านซ้าย ป้อนหนึ่งจุด (รายการ) ในบรรทัดเดียว แยกพิกัดออกจากกันในบรรทัด: แท็บ อัฒภาค ช่องว่าง หรือลูกน้ำ ส่วนจำนวนเต็มของส่วนที่เป็นเศษส่วนคือจุดหรือลูกน้ำ (หากไม่ได้ใช้เป็นตัวคั่น) เมื่อป้อนลองจิจูดและละติจูด ให้ป้อนค่าเป็นองศาและทศนิยมขององศา โดยแยกส่วนทั้งหมดออกจากช่วงเศษส่วน คลิกที่ปุ่ม แปลง- คุณสามารถเปลี่ยนทิศทางการแปลงได้โดยใช้ปุ่ม หากต้องการล้างช่องข้อความ ให้คลิกปุ่ม ชัดเจน.

คำแนะนำ:คุณสามารถเปิดโปรแกรมซีรีส์และเลือกทั้งตารางพร้อมพิกัดได้โดยคลิกที่ปุ่ม สำเนาในโปรแกรมแล้ววางข้อมูลนี้ลงในช่องด้านซ้ายของตัวแปลงให้กดปุ่ม แปลง.

ความสนใจ:ตัวแปลง "ภายใน" ทำงานในระบบพิกัดทางคณิตศาสตร์ ดังนั้นหากคุณแปลงจากระบบพิกัดทางภูมิศาสตร์ (ระบบพิกัดท้องถิ่น) ให้ทำเครื่องหมายที่ช่อง X ↔ Y ทางด้านซ้าย หากคุณกำลังแปลงจากระบบสากล เช่น WGS 84 คุณไม่จำเป็นต้องทำเครื่องหมายในช่องนี้ เนื่องจากระบบนี้เป็นระบบทางคณิตศาสตร์ หากต้องการรับพิกัดเอาต์พุตในลำดับที่ต้องการ ให้ใช้ช่องทำเครื่องหมาย X ↔ Y ทางด้านขวา คุณสามารถปัดเศษพิกัดให้เป็นทศนิยมที่ใกล้ที่สุด: ทั้งก่อนการแปลง - ขีดซ้ายคือ 0.00 และหลัง - ขีดขวาคือ 0.00

ความสนใจ:หากมีคะแนนจำนวนมาก การคำนวณใหม่อาจใช้เวลาสักครู่ หากการดำเนินการใช้เวลานานเกินไป ให้รีเฟรชหน้าโดยใช้ปุ่ม F5 แปลงข้อมูลน้อยลงในคราวเดียว

บริการนี้ฟรี ไม่จำกัดจำนวนคะแนนที่แปลงแล้ว


บริการนี้ฟรี แต่คุณสามารถขอบคุณเราได้:
  • แชร์ลิงก์บนโซเชียลเน็ตเวิร์ก
  • เขียนในฟอรัมเกี่ยวกับบริการนี้
  • บอกเพื่อนร่วมงานของคุณเกี่ยวกับการมีอยู่ของบริการนี้
  • เขียนรีวิวเกี่ยวกับ

ไม่ใช่ทุกคนที่เข้าใจว่าเหตุใดและที่สำคัญที่สุดคือเหตุใดการแปลงพิกัดทางภูมิศาสตร์ที่คุ้นเคยให้เป็นพิกัดสี่เหลี่ยมจึงเสร็จสิ้น สาเหตุนี้เกิดจากปัญหาที่ต้องถ่ายโอนพื้นผิวทรงกลมของโลกของเราไปยังระนาบแผนที่ ดังนั้นการบิดเบือนจึงเป็นสิ่งที่หลีกเลี่ยงไม่ได้

จะสะดวกกว่ามากในการค้นหาตำแหน่งของจุดเมื่อใช้ระบบพิกัดสี่เหลี่ยม (เส้นตรง) สำหรับภาพแบน แคลคูลัสประเภทนี้เรียกอีกอย่างหนึ่งว่าการฉายภาพเกาส์-ครูเกอร์ เนื่องจากเป็นนักวิทยาศาสตร์ชาวเยอรมันสองคนที่พัฒนาให้แสดงพื้นผิวโลกโค้งบนแผนที่ได้อย่างถูกต้อง ในประเทศของเรา ยังคงใช้ได้กับการทำแผนที่ทางทหาร ภูมิมาตรศาสตร์ และการออกแบบทางวิศวกรรมมากที่สุด การใช้ระบบพิกัด UTM ที่คล้ายกันเป็นที่นิยมในหมู่ประเทศตะวันตก

อัลกอริทึมสำหรับการแปลงพิกัดทางภูมิศาสตร์เป็นพิกัดสี่เหลี่ยม

หากต้องการแปลงพิกัดทางภูมิศาสตร์เป็นพิกัดเส้นตรงอย่างรวดเร็วและในทางกลับกันจะใช้อัลกอริธึมพิเศษซึ่งกลายเป็นพื้นฐานของโปรแกรมอัตโนมัติสำหรับบริการดังกล่าว ตัวแปลงออนไลน์ยังได้รับการพัฒนาที่คำนวณทั้งพิกัด Gauss-Kruger และ UTM ใหม่ เมื่อระดับตำแหน่งของวัตถุแม้แต่นาทีและวินาทีถูกแปลงเป็นเมตรที่แน่นอน - และในทางกลับกันเมื่อเมตรถูกแปลงเป็นองศา

พารามิเตอร์ละติจูดและลองจิจูดที่วัตถุของเราตั้งอยู่ถูกป้อนลงในโปรแกรมหรือตัวแปลงและเอาต์พุตมีค่าต่อไปนี้: x(พารามิเตอร์แนวนอน) และ (พารามิเตอร์แนวตั้ง) การแปลแบบย้อนกลับทำได้ในลักษณะเดียวกัน

สูตรการแปลง (คีย์) คำนึงถึง:

  • การกำหนดหมายเลขโซนตาม Gauss-Kruger (จากที่มีอยู่ 60)
  • ตัวประกอบขนาด (สำหรับ Gauss-Kruger เป็นหนึ่งสำหรับ UTM คือ 0.9996)
  • ฟังก์ชันตรีโกณมิติ
  • ขนานเริ่มต้น
  • เส้นลมปราณตามแนวแกน
  • กึ่งแกนหลักและรอง
  • การกระจัดแบบมีเงื่อนไขมีอยู่ในเส้นขนานเริ่มต้นในภาคเหนือ เช่นเดียวกับเส้นลมปราณกลางทางทิศตะวันออก
  • ปริมาณความเรียบ
  • ความเยื้องศูนย์

ระบบนำทางด้วยดาวเทียม GLONASS และ GPS ให้การติดตามพิกัดในรูปแบบที่กำหนดอย่างต่อเนื่อง คุณสามารถตั้งค่าให้แสดงละติจูดและลองจิจูด และแสดงเมตรหรือกิโลเมตรพร้อมกันได้

อนึ่ง!เป็นเวลานานที่สหภาพโซเวียตจัดประเภทคีย์การแปล - พวกเขาออกโดยกองทัพเพื่อการตรวจวัดทางภูมิศาสตร์ตามคำขอพิเศษ

พิกัดสี่เหลี่ยมคืออะไร

พื้นฐานสำหรับการฉายวงรีบนระนาบ - ตามเกาส์-ครูเกอร์หรือตามระบบ UTM - เป็นหลักการของแคลคูลัสเส้นตรงของเดส์การตส์

  • เกินแกนนอน เอ็กซ์ Abscissa (ขนาน) ที่ไปทางทิศตะวันออกถือเป็นแนวตั้ง - กำหนด (เส้นเมอริเดียน) ไปทางเหนือ เลยจุดกำเนิด โอ- ทางแยกของพวกเขา
  • จุดที่ทำเครื่องหมายไว้บนระนาบแผนที่จะวัดจากระยะทางแนวตั้งถึงเส้นแกน เอ็กซ์(นี่จะเป็นค่า ), บวกแนวนอนกับเส้นแกน (นี่จะเป็นค่า x).
  • เครื่องบินถูกแบ่งตามแกนออกเป็น 4 ส่วน - สิ่งที่เรียกว่าจตุภาคที่มีหมายเลขทวนเข็มนาฬิกา (I, II, III, IV): I จตุภาคขวาบน (ตะวันออกเฉียงเหนือ), II บนซ้าย (ตะวันตกเฉียงเหนือ), III ซ้ายล่าง (ตะวันตกเฉียงใต้ ) ตะวันตก), IV ล่างขวา (ตะวันออกเฉียงใต้)

ค่ามีทั้งค่าบวกและลบซึ่งขึ้นอยู่กับตำแหน่งที่สัมพันธ์กับควอแดรนท์:

  • Quadrant I มีทั้งค่าบวก ( x, ญ);
  • Quadrant II ระบุค่าผสม (- x, ญ);
  • Quadrant III มีทั้งค่าลบ (- x,-ญ);
  • Quadrant IV ยังมีค่าผสม ( x,-ย)

นอกจากนี้ระบบยังมีความแตกต่างอย่างมีนัยสำคัญ

สำหรับการฉายภาพเกาส์-ครูเกอร์ พื้นที่ที่แสดงบนแผนที่จะแบ่งออกเป็น 60 โซน โดยที่ระยะห่างระหว่างเส้นเมอริเดียนเท่ากับ 6 องศา การนับถอยหลังเริ่มจากกรีนิชไปทางทิศตะวันออกและเส้นศูนย์สูตรไปทางทิศเหนือ หน่วยจะถูกนำมาเป็นตัวประกอบขนาด จุดเริ่มต้นคือจุดตัดของเส้นลมปราณที่เลือกกับเส้นศูนย์สูตร

ระบบ UTM ที่ชาวอเมริกันพัฒนาขึ้นนั้นมีลักษณะการแบ่งเขตที่คล้ายกันออกเป็น 60 โซน แต่เส้นลมปราณที่คำนวณได้นั้นแตกต่างออกไป โซนแรกตามตัวเลขเริ่มต้นจากเส้นลมปราณที่ 177 องศาลองจิจูดตะวันตก ความแตกต่างยังเกี่ยวข้องกับตัวประกอบขนาดด้วย - เท่ากับ 0.9996 ไม่มีค่าลบในระบบ UTM - ด้วยเหตุนี้ 500 กิโลเมตรจะถูกเพิ่มไปยัง Abscissa ตะวันตกและ 10,000 กิโลเมตรไปยังทิศใต้

ระบบสี่เหลี่ยมใช้ที่ไหน?

ระบบสี่เหลี่ยมมีความเกี่ยวข้องกับแผนที่ขนาดเล็ก สำหรับการประสานงานระหว่างหน่วยกู้ภัยและกองทัพ สำหรับสาขาการทำแผนที่ทางทหารและภูมิศาสตร์ ในการออกแบบวัตถุในอาณาเขต งานวิศวกรรม และการวาดภาพการออกแบบแผนผัง

แต่การใช้งานหลักคือมาตรวิทยา กองทัพบก และกองทัพเรือ กองทัพของรัฐส่วนใหญ่เปลี่ยนมาใช้พิกัดสี่เหลี่ยมเพื่อกำหนดเป้าหมายทางทหาร

บทช่วยสอนเกี่ยวกับการแปลงระหว่างระบบพิกัดต่างๆ

บริการระบุตำแหน่ง รวมถึงไซต์การนำทางและแผนที่ที่ใช้ GPS เช่น Google Maps และ Yahoo! แผนที่กำลังได้รับความนิยมในหมู่ผู้ใช้ องค์กรหลายแห่งใช้บริการตามตำแหน่งที่ตั้งอยู่แล้ว และอีกหลายแห่งจะปฏิบัติตามเส้นทางนี้เมื่อพวกเขาตระหนักถึงประโยชน์และศักยภาพของแอปพลิเคชันดังกล่าว ในปี 2549 บริษัทวิเคราะห์ Gartner ตั้งข้อสังเกตว่า "แอปพลิเคชันที่เกี่ยวข้องกับการกำหนดตำแหน่งจะกลายเป็นกระแสหลักในอีกสองถึงห้าปีข้างหน้า" และ "องค์กรจำนวนมากได้ปรับใช้แอปพลิเคชันทางธุรกิจบนมือถือที่ใช้ประโยชน์จากการกำหนดตำแหน่งแล้ว" (ส่วนนี้มีลิงก์ไปยังรายงานนี้)

เมื่อองค์กรตัดสินใจที่จะใช้งานแอปพลิเคชันที่ใช้ระบบพิกัดทางภูมิศาสตร์ การเขียนแอปพลิเคชันมักจะกลายเป็นงานของนักพัฒนา การสร้างแอปพลิเคชันที่ใช้พิกัดทางภูมิศาสตร์เกี่ยวข้องกับงานหลายอย่าง ทั้งเล็กและใหญ่ และหนึ่งในงานที่ค่อนข้างง่ายเหล่านั้นคือการแปลงพิกัดจากระบบหนึ่งไปยังอีกระบบหนึ่ง บทความนี้ให้รหัสที่ทำการแปลงนี้และสามารถช่วยคุณประหยัดเวลาในการทำงานได้มาก

สองระบบพิกัดที่แตกต่างกัน

ก่อนที่จะเจาะลึกโค้ดที่นำเสนอในบทความนี้ จำเป็นต้องหารือเกี่ยวกับระบบพิกัดที่โค้ดนี้ออกแบบมาเพื่อรองรับ: ระบบละติจูดและลองจิจูดที่รู้จัก และ Universal Transverse Mercator (UTM) คุณต้องสัมผัสกับ Military Grid Reference System (MGRS) ซึ่งใช้ UTM

ละติจูดและลองจิจูด

ระบบละติจูดและลองจิจูดอาจเป็นวิธีที่รู้จักกันดีที่สุดในการกำหนดพิกัดทางภูมิศาสตร์ ในนั้นตำแหน่งจะแสดงด้วยตัวเลขสองตัว ละติจูด- นี่คือมุมจากจุดศูนย์กลางโลกถึงมุมที่ขนานกับพื้นผิวโลก ลองจิจูด- นี่คือมุมจากจุดศูนย์กลางของโลกถึงเส้นลมปราณที่แน่นอนบนพื้นผิวโลก ละติจูดและลองจิจูดสามารถแสดงเป็นองศาทศนิยม (DD) หรือองศา นาที และวินาที (DMS) ในกรณีหลัง จะได้ตัวเลขในรูปแบบนี้ - 49°30"00" S 12°30"00" E โดยปกติรูปแบบนี้จะใช้ในระบบนำทาง GPS

โลกถูกแบ่งด้วยเส้นศูนย์สูตร (ละติจูด 0°) ออกเป็นซีกโลกเหนือและซีกโลกใต้ และเส้นเมอริเดียนสำคัญ (ลองจิจูด 0°) ซึ่งเป็นเส้นจินตนาการจากเหนือลงขั้วโลกใต้ที่ตัดผ่านเมืองกรีนิชในสหราชอาณาจักร และแบ่ง ดาวเคราะห์ไปในซีกโลกตะวันออกและตะวันตก ช่วงละติจูดในซีกโลกเหนืออยู่ระหว่าง 0 ถึง 90 องศาและในซีกโลกใต้ - ตั้งแต่ 0 ถึง -90 องศา ช่วงของซีกโลกตะวันออกอยู่ระหว่าง 0 ถึง 180 องศา และซีกโลกตะวันตกอยู่ระหว่าง 0 ถึง -180 องศา

ตัวอย่างเช่น จุดที่มีพิกัด 61.44, 25.40 (ในรูปแบบ DD) หรือ 61°26"24""N, 25°23"60""E (ในรูปแบบ DMS) ตั้งอยู่ทางตอนใต้ของฟินแลนด์ และจุดพิกัด -47.04, -73.48 (DD) หรือ 47°02"24""S, 73°28"48""W (DMS) ตั้งอยู่ทางตอนใต้ของชิลี รูปที่ 1 แสดงภาพของโลกที่มีเส้นขนานและเส้นเมอริเดียนซ้อนทับกัน:


ข้อมูลเพิ่มเติมสามารถพบได้ในส่วน

เส้นโครงเมอร์เคเตอร์ตามขวาง

ระบบพิกัด UTM เป็นวิธีการที่ใช้ตารางเพื่อกำหนดพิกัด ระบบ UTM แบ่งโลกออกเป็น 60 โซน โดยแต่ละโซนใช้การฉายภาพแบบ Transverse Mercator การฉายภาพแผนที่ในการทำแผนที่เป็นวิธีหนึ่งในการนำเสนอพื้นผิวที่ไม่เรียบแบบสองมิติบนระนาบ เช่นเดียวกับแผนที่ทั่วไป เส้นโครง Mercator ตามขวางแสดงไว้:


โซนลองจิจูดใน UTM มีหมายเลขตั้งแต่ 1 ถึง 60 ทุกโซนยกเว้นสองโซน ซึ่งจะกล่าวถึงในภายหลัง มีความกว้าง 6° จากตะวันออกไปตะวันตก โซนลองจิจูดครอบคลุมพื้นผิวโลกอย่างสมบูรณ์ระหว่างละติจูด 80°S ถึง 84°N

นอกจากนี้ยังมีละติจูด 20 โซน แต่ละโซนสูง 8°; โซนเหล่านี้มีหมายเลข C ถึง X โดยละเว้นตัวอักษร I และ O โซน A, B, Y และ Z อยู่นอกระบบนี้และครอบคลุมอาร์กติกและแอนตาร์กติก โซน UTM สำหรับยุโรปจะแสดงขึ้น รูปนี้แสดงโซนลองจิจูดที่ไม่ได้มาตรฐานสองโซน ได้แก่ โซน 32V ถูกขยายให้ครอบคลุมทางตอนใต้ของนอร์เวย์ทั้งหมด และโซน 31V ถูกย่อให้สั้นลงเพื่อให้ครอบคลุมเฉพาะน้ำเท่านั้น

พิกัดใน UTM แสดงในรูปแบบ โซนลองจิจูด โซนละติจูด ตะวันออก เอียงเหนือ, ที่ไหน การเสื่อมถอยทางทิศตะวันออกคือระยะทางที่คาดการณ์จากเส้นลมปราณกลางของเขตลองจิจูด การลดลงทางตอนเหนือคือระยะฉายภาพจากเส้นศูนย์สูตร ค่าของการเอียงทางทิศตะวันออกและทิศเหนือระบุเป็นเมตร ตัวอย่างเช่น พิกัดละติจูด/ลองจิจูด 61.44, 25.40 ใน UTM จะแสดงเป็น 35 V 414668 6812844; พิกัดละติจูด/ลองจิจูด -47.04, -73.48 สอดคล้องกับพิกัด 18 G 615471 4789269 ใน UTM

คลาสการแปลงพิกัด

CoordinateConversion คือคลาสหลักที่มีออบเจ็กต์ถูกสร้างขึ้นเมื่อจำเป็นต้องดำเนินการแปลงพิกัด รายการ 1 แสดงวิธีการสาธารณะที่จำเป็นพร้อมกับคลาสส่วนตัวภายในที่ประกอบเป็นคลาส CoordinateConversion:

รายการ 1. การแปลงพิกัด
คลาสสาธารณะ CoordinateConversion ( Public CoordinateConversion() ( ) public double utm2LatLon(String UTM) ( UTM2LatLon c = new UTM2LatLon(); return c.convertUTMToLatLong(UTM); ) public String latLon2UTM(double latitude, double longitude) ( LatLon2UTM c = new LatLon2UTM(); return c.convertLatLonToUTM(ละติจูด, ลองจิจูด); //.. การดำเนินการข้ามคลาสส่วนตัว LatLon2UTM ( สตริงสาธารณะ ConvertLatLonToUTM (ละติจูดคู่, ลองจิจูดคู่) ( //.. การดำเนินการข้ามไป) //.. การดำเนินการข้ามไป) คลาสส่วนตัว LatLon2MGRUTM ขยาย LatLon2UTM (สตริงสาธารณะแปลงLatLonToMGRUTM (ละติจูดคู่, ลองจิจูดคู่) ( //.. การดำเนินการข้ามไป) //.. การดำเนินการข้ามไป) คลาสส่วนตัว MGRUTM2LatLon ขยาย UTM2LatLon ( สาธารณะคู่แปลง MGRUTMToLatLong (สตริง mgrutm) ( //.. การดำเนินการ ข้าม ) //.. การดำเนินการข้าม ) คลาสส่วนตัว UTM2LatLon ( public double ConvertUTMToLatLong (String UTM) ( //.. การดำเนินการข้าม ) // .. การดำเนินการข้าม ) Digraphs คลาสส่วนตัว ( // ใช้เพื่อรับรหัสตัวอักษรสองตัว // เมื่อแปลงจากลองจิจูด/ละติจูดเป็น MGRS //..ละติจูดการใช้งาน) LatZones คลาสส่วนตัว ( //รวมวิธีการสำหรับการกำหนดโซนละติจูด //..ละติจูดการใช้งาน)

ส่วนถัดไปครอบคลุมถึงการแปลงระหว่างลองจิจูด/ละติจูดและ UTM โดยละเอียด

แปลงจากละติจูด/ลองจิจูดเป็น UTM

พิกัดจะถูกแปลงจากละติจูด/ลองจิจูดเป็น UTM โดยใช้วิธี String latLon2UTM (ละติจูดคู่, ลองจิจูดคู่) การใช้เมธอดนี้จะสร้างอินสแตนซ์ของคลาสภายใน LatLon2UTM c = new LatLon2UTM(); และส่งกลับพิกัด UTM เป็นสตริง 15 อักขระที่มีความแม่นยำ 1 เมตร การใช้งานเมธอดคลาส LatLon2UTM จะแสดงในรายการ 2:

รายการ 2. สตริงสาธารณะแปลงLatLonToUTM (ละติจูดคู่, ลองจิจูดคู่)
สตริงสาธารณะแปลงLatLonToUTM(ละติจูดคู่, ลองจิจูดคู่) ( ตรวจสอบ (ละติจูด, ลองจิจูด); String UTM = ""; setVariables (ละติจูด, ลองจิจูด); String longZone = getLongZone (ลองจิจูด); LatZones latZones = new LatZones (); String latZone = latZones.getLatZone(ละติจูด); double _easting = getEasting(); double _northing = getNorthing(ละติจูด); UTM = longZone + " " + latZone + " " + ((int) _easting) + " "+ ((int) _northing) ; กลับ UTM ;

วิธีการนี้จะทำการแปลงโดยการเรียกวิธีการต่างๆ เพื่อให้ได้โซนละติจูดและลองจิจูด คำนวณการเบี่ยงเบนไปทางทิศตะวันออกและทิศเหนือ เป็นต้น อินพุตจะถูกตรวจสอบในเมธอด validate() ถ้านิพจน์ (latitude< -90.0 || latitude >90.0 || ลองจิจูด< -180.0 || longitude >= 180.0) ประเมินเป็นจริง จากนั้นข้อยกเว้น IllegalArgumentException จะถูกส่งออกไป

เมธอด setVariables() ในรายการ 3 จะตั้งค่าตัวแปรต่างๆ ที่จำเป็นในการคำนวณการแปลง (สำหรับข้อมูลเพิ่มเติม โปรดดูบทความ "The Universal Grids" ซึ่งมีลิงก์ในส่วนนี้:

รายการ 3. setVariables โมฆะที่ได้รับการป้องกัน (ละติจูดคู่, ลองจิจูดคู่)
โมฆะที่ได้รับการป้องกัน setVariables (ละติจูดคู่, ลองจิจูดคู่) ( ละติจูด = องศาToRadian (ละติจูด); rho = เส้นศูนย์สูตรRadius * (1 - e * e) / POW (1 - POW (e * SIN (ละติจูด), 2), 3 / 2.0) ; nu = เส้นศูนย์สูตรรัศมี / POW(1 - POW(e * SIN(ละติจูด), 2), (1 / 2.0));< 0.0) { var1 = ((int) ((180 + longitude) / 6.0)) + 1; } else { var1 = ((int) (longitude / 6)) + 31; } double var2 = (6 * var1) - 183; double var3 = longitude - var2; p = var3 * 3600 / 10000; S = A0 * latitude - B0 * SIN(2 * latitude) + C0 * SIN(4 * latitude) - D0 * SIN(6 * latitude) + E0 * SIN(8 * latitude); K1 = S * k0; K2 = nu * SIN(latitude) * COS(latitude) * POW(sin1, 2) * k0 * (100000000) / 2; K3 = ((POW(sin1, 4) * nu * SIN(latitude) * Math.pow(COS(latitude), 3)) / 24) * (5 - POW(TAN(latitude), 2) + 9 * e1sq * POW(COS(latitude), 2) + 4 * POW(e1sq, 2) * POW(COS(latitude), 4)) * k0 * (10000000000000000L); K4 = nu * COS(latitude) * sin1 * k0 * 10000; K5 = POW(sin1 * COS(latitude), 3) * (nu / 6) * (1 - POW(TAN(latitude), 2) + e1sq * POW(COS(latitude), 2)) * k0 * 1000000000000L; A6 = (POW(p * sin1, 6) * nu * SIN(latitude) * POW(COS(latitude), 5) / 720) * (61 - 58 * POW(TAN(latitude), 2) + POW(TAN(latitude), 4) + 270 * e1sq * POW(COS(latitude), 2) - 330 * e1sq * POW(SIN(latitude), 2)) * k0 * (1E+24); }

เมธอด getLongZone() ใน Listing 4 และคลาส LatZones ที่มีอยู่ในนั้นใช้เพื่อค้นหาโซนลองจิจูดและโซนละติจูด โซนลองจิจูดคำนวณจากพารามิเตอร์ลองจิจูด และโซนละติจูดมักจะแสดงเป็นค่าคงที่ โดยใช้อาร์เรย์ในคลาส LatZones

รายการ 4. สตริงที่ได้รับการป้องกัน getLongZone (ลองจิจูดคู่)
สตริงที่ได้รับการป้องกัน getLongZone (ลองจิจูดคู่) ( double longZone = 0; if (longitude< 0.0) { longZone = ((180.0 + longitude) / 6) + 1; } else { longZone = (longitude / 6) + 31; } String val = String.valueOf((int) longZone); if (val.length() == 1) { val = "0" + val; } return val; }

เมธอด getNorthing() ในรายการที่ 5 และเมธอด getEasting() ในรายการ 6 จะคำนวณค่าการปฏิเสธทางทิศเหนือและทิศตะวันออก ทั้งสองวิธีใช้ตัวแปรที่ตั้งค่าไว้ในเมธอด setVariables() จาก

รายการ 5. ป้องกัน double getNorthing (ละติจูดคู่)
ป้องกัน getNorthing คู่ (ละติจูดคู่) ( double northing = K1 + K2 * p * p + K3 * POW (p, 4); if (ละติจูด< 0.0) { northing = 10000000 + northing; } return northing; }
รายการ 6. ป้องกันคู่ getEasting()
ได้รับการป้องกัน double getEasting() ( ส่งคืน 500000 + (K4 * p + K5 * POW(p, 3)); )

รายการ 7 แสดงตัวอย่างผลลัพธ์ของโปรแกรมหลายตัวอย่าง รวมถึงพิกัดละติจูด/ลองจิจูด และพิกัด UTM ที่สอดคล้องกัน:

รายการ 7. ทดสอบการแปลงจากละติจูด/ลองจิจูดเป็นค่า UTM
(0.0000 0.0000) "31 N 166021 0" (0.1300 -0.2324) "30 N 808084 14385" (-45.6456 23.3545) "34 G 683473 4942631" (-12.7650 -33.8765) "25 ลิตร 404859 8588690" (-80.5434 -170.6540) "02 C 506346 1057742" (90.0000 177.0000) "60 Z 500000 9997964" (-90.0000 -177.0000) "01 A 500000 2035" (90.0000 3.0000) "31 Z 500000 9 997964" (23.4578 -135.4545) "08 คิว 453580 2594272" ( 77.3450 156.9876) "57 X 450793 8586116" (-89.3454 -48.9306) "22 502639 75072"

แปลงจาก UTM เป็นละติจูด/ลองจิจูด

การแปลงจากพิกัด UTM เป็นละติจูด/ลองจิจูดนั้นค่อนข้างง่ายกว่ากระบวนการย้อนกลับ บทความ "The Universal Grids" ในส่วน ) ให้สูตรการแปลง รายการ 8 แสดงรหัสสำหรับวิธีการ ConvertUTMToLatLong() เมธอดนี้ส่งคืนอาร์เรย์ที่มีค่าสองเท่า โดยที่องค์ประกอบแรก (ที่มีดัชนีอาร์เรย์ ) คือละติจูด และองค์ประกอบที่สอง (ที่มีดัชนีอาร์เรย์ ) คือลองจิจูด เนื่องจากพารามิเตอร์สตริงมีพิกัด UTM ที่มีความแม่นยำ 1 เมตร พิกัดละติจูด/ลองจิจูดจึงมีความแม่นยำเท่ากัน

รายการ 8. public double ConvertUTMToLatLong(String UTM)
public double ConvertUTMToLatLong(String UTM) ( double latlon = ( 0.0, 0.0 ); String utm = UTM.split(" "); Zone = Integer.parseInt(utm); String latZone = utm; easting = Double.parseDouble(utm) ; northing = Double.parseDouble(utm); String hemisphere = getHemisphere(latZone); ละติจูดคู่ = 0.0; (phi1 - fact1 * (fact2 + fact3 + fact4)) / Math.PI; if (โซน > 0) (zoneCM = 6 * โซน - 183.0; ) อื่น ๆ (zoneCM = 3.0; ) ลองจิจูด = ZoneCM - _a3; .equals("S")) ( latitude = -latitude; ) latlon = ละติจูด;

วิธีการแปลง UTMToLatLong() แยกพิกัด UTM ในพารามิเตอร์สตริงอินพุตซึ่งมีรูปแบบ 34 ก 683473 4942631และใช้เมธอด getHemisphere() เพื่อกำหนดซีกโลกซึ่งเป็นที่ตั้งของตำแหน่งที่มีพิกัดที่ระบุ การกำหนดซีกโลกเป็นเรื่องง่าย: โซนละติจูด A, C, D, E, F, G, H, J, K, L และ M อยู่ในซีกโลกใต้ และโซนที่เหลืออยู่ในซีกโลกเหนือ

เมธอด setVariables() ที่แสดงในรายการ 9 จะตั้งค่าของตัวแปรที่จำเป็นสำหรับการคำนวณ จากนั้นจึงคำนวณละติจูดทันที ลองจิจูดคำนวณโดยใช้โซนลองจิจูด

รายการ 9. setVariables เป็นโมฆะที่ได้รับการป้องกัน ()
โมฆะที่ได้รับการป้องกัน setVariables() ( arc = northing / k0; mu = arc / (a ​​* (1 - POW(e, 2) / 4.0 - 3 * POW(e, 4) / 64.0 - 5 * POW(e, 6) / 256.0)); ei = (1 - เชลยศึก((1 - อี * อี), (1 / 2.0))) / (1 + เชลยศึก((1 - อี * อี), (1 / 2.0))) ; = 3 * ei / 2 - 27 * POW(ei, 3) / 32.0; cb = 21 * POW(อี, 2) / 16 - 55 * POW(อี, 4) / 32; 1,097 * POW(ei, 4) / 512; phi1 = mu + ca * SIN(2 * mu) + cb * SIN(4 * mu) + ซีซี * SIN(6 * mu) + cd * SIN(8 * mu) ; n0 = a / POW((1 - POW((e * SIN(phi1)), 2)), (1 / 2.0)); / POW((1 - POW((e * SIN(phi1)), 2 )), (3 / 2.0)); fact1 = n0 * TAN(phi1) / r0; _a1 = 500000 - ตะวันออก; n0 * k0); fact2 = dd0 * dd0 / 2; ); Q0 = e1sq * POW(COS(phi1), 2); Q0 - 4 * Q0 * Q0 - 9 * e1sq) * POW(dd0, 4) / 24; fact4 = (61 + 90 * t0 + 298 * Q0 + 45 * t0 * t0 - 252 * e1sq - 3 * Q0 * Q0 ) * POW(dd0, 6) / 720; lof1 = _a1 / (n0 * k0); (dd0, 3) / 6.0;

lof3 = (5 - 2 * Q0 + 28 * t0 - 3 * POW(Q0, 2) + 8 * e1sq + 24 * POW(t0, 2)) * POW(dd0, 5) / 120;

_a2 = (lof1 - lof2 + lof3) / COS(phi1);

_a3 = _a2 * 180 / Math.PI; -

เมธอด setVariables() ใช้ค่าทิศตะวันออกและทิศเหนือเพื่อตั้งค่าตัวแปรที่ต้องการ ตัวแปรเหล่านี้เป็นของทั้งสองคลาสและตั้งค่าไว้ในเมธอด ConvertUTMToLatLong(String UTM) จาก .

บทความนี้นำเสนอทฤษฎีบางอย่างเกี่ยวกับระบบพิกัดโลกพร้อมกับคลาส Java สำหรับการแปลงพิกัดจากระบบหนึ่งไปอีกระบบหนึ่ง แม้ว่าจะไม่ได้กล่าวถึงรายละเอียดทุกสูตรสำหรับการแปลงพิกัดในที่นี้ แต่ก็มีอยู่ในส่วนนี้ โดยปกติแล้วความรู้ทางทฤษฎีไม่จำเป็นในกระบวนการพัฒนารายวัน ยกเว้นในบางกรณีซึ่งพบไม่บ่อยนักเมื่อไม่มีทางอื่น ตามที่ฉันเพิ่งค้นพบเมื่อฉันต้องดำเนินการแปลงพิกัด

ฉันจำเป็นต้องทำการแปลงระหว่างละติจูดและลองจิจูด UTM และ MGRS ดังนั้นฉันจึงทำการวิจัยขั้นพื้นฐานและนำการแปลงเหล่านี้ไปใช้ในคลาส Java ฉันใช้เวลาสองสามชั่วโมงในการพัฒนา และหวังว่าคนอื่นๆ จะสามารถประหยัดเวลาสองสามชั่วโมงสำหรับงานอื่นๆ และพบว่าการใช้คลาส CoordinateConversion ในงานของตนเองมีประโยชน์