ฉันจะหาจุดที่ไกลที่สุดจากชุดของจุดที่มีอยู่ได้อย่างไร


17

ฉันมีชุดของคะแนนเป็นรูปร่างไฟล์และฉันต้องการค้นหา (พิกัด) ของจุดใหม่ซึ่งจะมีระยะทางที่ยาวที่สุดเท่าที่จะเป็นไปได้จากแต่ละจุดที่มีอยู่ เป็นไปได้ไหม ถ้าใช่มีตัวอย่างรหัส VB ​​หรือไม่ ขอบคุณ Demetris


คุณหมายถึงคุณต้องการจุดใหม่สำหรับแต่ละจุดที่มีอยู่แล้วหรือจุดหนึ่งที่ "ไกลที่สุด" จากจุดเหล่านั้นทั้งหมดหรือไม่? และโดยที่ไกลที่สุดคุณหมายถึง "อีกด้านหนึ่งของโลก" ถ้าเป็นเช่นนั้นคุณสามารถคูณละติจูดด้วย -1 และเพิ่ม 180 ลงในลองจิจูด (ลบ 360 ถ้าค่าผลลัพธ์เป็น> 180) หากคุณมีพวกมันเป็นองศาทศนิยม
nmpeterson

ฉันคิดว่าคำถามที่น่าสนใจคือ: เนื่องจากมีจุดที่มีอยู่กระจัดกระจายไปทั่วโลกค้นหาจุดใหม่ที่สุดในโลกจากจุดที่มีอยู่ทั้งหมด
Kirk Kuykendall

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

1
โอ้โพสต์ของฉันสร้างการสนทนาและเนื้อหาที่ยอดเยี่ยม! NMpeterson: ประการแรกฉันต้องบอกว่าคะแนนของฉันอยู่ในพื้นที่ราบขนาดเล็ก ไม่จำเป็นต้องมีการคำนวณโลก ฉันกำลังมองหายกประเด็นที่สอง; จุด ieone ที่อย่างใด "ไกลที่สุด" จากจุดที่มีอยู่ทั้งหมด ดังนั้นโปรดมุ่งเน้นไปที่สิ่งนี้
Demetris

ฉันสงสัยว่ารหัส VB ​​ตัวอย่างใด ๆ พร้อมใช้งานตามที่ร้องขอในคำถามเดิม บางทีรหัสดังกล่าวอาจเห็นได้ชัดว่าได้รับคำตอบจากผู้เชี่ยวชาญ แต่ในฐานะผู้เริ่มต้นฉันหวังว่าจะเริ่มต้นด้วยการสร้างโซลูชันใหม่ที่ได้รับจาก whuber ล่วงหน้าฉันขอโทษสำหรับการโพสท่านี้เป็นคำตอบแทนความคิดเห็น

คำตอบ:


12

คำแนะนำของ Kirk Kuykendall ในการสร้างแผนภาพ Voronoi (Thiessen polygons) ทรงกลมเป็นสิ่งที่ดี แต่อาจมีเทคนิคบางอย่างที่จะทำให้สำเร็จ ในขณะเดียวกันเป็นทางเลือกหนึ่งที่สามารถใช้วิธีการแก้ปัญหาแรสเตอร์มาตรฐานตามที่อธิบายไว้ในหัวข้ออื่น ใช้ระยะทางทรงกลมแทนระยะทางแบบยุคลิด

นี่คือตัวอย่างที่ใช้ห้าคะแนนนี่คือ (lat, lon):

 82.7051   -145.256
 60.3321     81.2881
-17.076     105.125
-38.792    -122.686
  0.000     180.000

แผนที่ระยะทาง

แผนที่ระยะทางทรงกลมนี้ครอบคลุมโลกจาก -180 ถึง 180 องศาลองจิจูดตามแนวนอนและละติจูด -90 ถึง 90 องศาในแนวตั้ง คะแนนจะแสดงด้วยจุดสีแดงขนาดใหญ่ ระยะทางเพิ่มขึ้นด้วยความสว่าง สันเขาที่ชัดเจนจะต้องเป็นส่วนหนึ่งของวงกลมใหญ่ จุดสีดำเล็ก ๆ ใกล้ (-15.3268, -2.04352) ทำเครื่องหมายจุดที่ระยะทางสูงสุด 11,227 กม. (คำนวณระยะทางใน ITRF00 ellipsoidal datum)

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


สวยกว่าเวกเตอร์มาก ไม่แน่ใจว่าทำไมฉันคิดว่าแรสเตอร์จำเป็นต้องใช้แบบจำลองดินราบ
Kirk Kuykendall

สวยใช่ แต่ไม่มีประสิทธิภาพ มันจะเป็นการดีถ้าได้เห็น Voronoi เป็นทรงกลมที่ใช้เวกเตอร์
whuber

@Wuber: คุณจะรับพิกัดจุดดำโดยอัตโนมัติได้อย่างไร "
Demetris

@Detetris วิธีหนึ่งคือการคำนวณค่าสูงสุดบนกริดเลือกเซลล์ทั้งหมดเท่ากับค่านั้นและใช้พิกัดของศูนย์กลางของเซลล์นั้น
whuber

@Wuber: ขอบคุณมาก นี่เป็นความคิดที่ดี อย่างไรก็ตามฉันต้องคลิปเอาท์พุทแรสเตอร์ตามคลาสคุณลักษณะ (รูปหลายเหลี่ยมที่ไม่ซ้ำกัน) ฉันจะทำสิ่งนี้ได้ไหม
Demetris

8

ป้อนคำอธิบายรูปภาพที่นี่

ฉันไม่เคยลองมาก่อน แต่ดูเหมือนว่ามันจะใช้ได้:

สร้างไดอะแกรม voronoi 3Dของทรงกลม รูปหลายเหลี่ยมที่ได้นี้จะอยู่กึ่งกลางของจุดเดิม (เมล็ด) ที่มีอยู่

วนรอบแต่ละจุดสุดยอดที่เกิดขึ้นเพื่อหาจุดที่ไกลที่สุดจากจุดที่อยู่ใกล้ที่สุด จุดนี้ควรเป็นจุดที่ห่างไกลที่สุดในโลก


นี่เป็นความคิดที่ดี (+1) แต่แผนภาพ Voronoi ทรงกลมมีลักษณะอย่างไรเมื่อทุกจุดอยู่ในซีกโลกสามัญ รหัสที่คุณอ้างถึงรับมาพร้อมกับตัวถังนูน แต่ดูเหมือนว่าจะไม่ทำงาน
whuber

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

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

1

คุณสามารถใช้ฟังก์ชันระยะทางแบบถ่วงน้ำหนักเพื่อระบุว่าแต่ละเซลล์ในแรสเตอร์ของคุณอยู่ห่างจากจุดอื่น ๆ แค่ไหน


คุณจะใช้ค่าใช้จ่ายเท่าไหร่?
whuber

หากคุณตั้งค่าเป็นหนึ่งหน่วย คุณสามารถระบุได้ว่าจุดที่ไกลที่สุดจะขึ้นอยู่กับระยะทางอย่างไร
djq

@whuber แม้ว่าอาจจะไม่แตกต่างจากการคำนวณระยะทางแบบยุคลิดที่กล่าวถึงแล้ว
djq

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

ฉันไม่แน่ใจว่าค่าใช้จ่ายระยะทาง fucntion จะช่วยได้เพราะฉันต้องการพิกัดเพียงจุดเดียวและฉันมีชุดจุดเวกเตอร์ที่น่าตื่นเต้น แต่ฉันจะลอง ขอบคุณ
Demetris

1

เท่าที่ฉันรู้การวิเคราะห์ "การเข้าไม่ถึง " นี้ต้องทำซ้ำ

วิธีแรสเตอร์แบบวนซ้ำจะเหมาะสมตราบใดที่คุณกำลังมองหาพื้นที่ขนาดเล็กที่มีการบิดเบือนน้อยที่สุดจากการฉายภาพ สำหรับแต่ละเซลล์คำนวณระยะทางไปยังทุกจุดจากนั้นใช้ระยะทางขั้นต่ำ เซลล์ที่มีค่าสูงสุดคือเสา คุณสามารถใช้Euclidean Distanceใน Spatial Analyst เพื่อทำสิ่งนี้ให้สำเร็จ

วิธีการทำซ้ำแบบเวกเตอร์นั้นซับซ้อนกว่ามาก Garcia-Castellanos et al 2007อธิบายวิธีการวนซ้ำตามโลกทรงกลม ปรากฏว่าพวกเขาได้ทำรหัส C ของพวกเขาพร้อมใช้งานออนไลน์ ฉันสามารถจินตนาการวิธีการทำสิ่งนี้ในอาร์คด้วยบัฟเฟอร์ แต่มันจะทำซ้ำและช้า


0

คุณสามารถใช้ Point Distance (การวิเคราะห์) เครื่องมือสร้างตารางที่มีระยะทางระหว่างจุดสองชุด หากใช้รัศมีการค้นหาเริ่มต้นระบบจะคำนวณระยะทางจากจุดอินพุตทั้งหมดไปยังจุดที่อยู่ใกล้ทั้งหมด ตารางผลลัพธ์อาจมีขนาดค่อนข้างใหญ่ ตัวอย่างเช่นถ้าทั้งคุณสมบัติอินพุตและคุณสมบัติใกล้เคียงมี 1,000 คะแนนในแต่ละตารางผลลัพธ์จะมีหนึ่งล้านเรคคอร์ด


จะนำไปใช้ในการค้นหาพิกัดของจุดใหม่ที่ไม่ปรากฏในอินพุตได้อย่างไร บางทีคุณอาจเข้าใจผิดคำถาม?
whuber

0

จุดที่ไกลที่สุดไปยังชุดคะแนนของคุณจะเป็นจุดกลับไปด้านในสุดในเซตของคุณ ตัวอย่างเช่นหากจุดภายในของคุณมากที่สุดในชุดของคุณมีพิกัด 49 องศาเหนือและ -144 องศาตะวันออกจากนั้นจุดกลับกันและจุดที่ไกลที่สุดจะมีพิกัด 49 องศาใต้และ 36 องศาตะวันตก สิ่งนี้ไม่เป็นความจริงอย่างแน่นอนเพราะโลกไม่ได้เป็นทรงกลมอย่างสมบูรณ์ แต่ค่อนข้างเป็นโลก ดังนั้นความถูกต้องของจุดผลลัพธ์ของคุณจึงขึ้นอยู่กับระบบการฉายภาพและระบบภูมิศาสตร์ (Orthographic, Orthorectified ... ) ที่คุณใช้ มันอาจเป็นประโยชน์ในการค้นหาส่วนกลับสำหรับทั้งชุด (ถ่ายโอนแอนติบอดีสำหรับชุด) จากนั้นเรียกใช้การวิเคราะห์พื้นผิวภายในภูมิประเทศที่ครอบคลุมโดยชุดของจุดตรงกันข้ามเนื่องจากภูมิประเทศอาจมีความสำคัญมาก ฉันคิดว่าคำถามของคุณไม่เกี่ยวกับจุดใด ๆ ในวัตถุนอกโลกเช่นดาวเคราะห์ดวงอื่นหรือดวงจันทร์ ขออภัย ฉันไม่มีรหัส VB ​​สำหรับคุณ 🙄


จุดที่ไกลที่สุดจากจุดอื่น ๆ ทั้งหมดในเซตนั้นจะเป็นจุดที่อยู่ภายในมากที่สุด (อันที่ไกลที่สุดจากจุดนอกสุดตามแนวขอบ) มันจะยังคงใกล้เคียงที่สุดกับทุกจุดที่อยู่ถัดจากสิ่งที่ระบุ นี่คือการวิเคราะห์กลุ่มไม่ใช่เรื่องสนุก มันน่าจะดีกว่าถ้ามองไปที่อะตอมที่มีประจุเหมือนกันในฟิสิกส์😐
Yuriy Shevchuk
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.