นี่คือภาพประกอบของเวิร์กโฟลว์ที่ฉันกล่าวถึงในความคิดเห็นด้านบนและถึงแม้ว่าฉันไม่ทราบว่ารูทีน pre-canned ง่าย ๆ สำหรับการทำเช่นนี้ฉันได้แนบสเปรดชีต excel ที่สามารถนำเข้าชุดพิกัดต้นทางและปลายทางได้ แผ่นงานจะทำให้ชุดหรือพิกัดเส้นวงกลม (สเปรดชีตที่นี่ ) มีการตั้งค่าสูตรดังนั้นจึงค่อนข้างง่ายที่จะนำเข้าพิกัด OD ใหม่และขยายสูตรเพื่อเติมผลลัพธ์ แต่ฉันจะผ่านตรรกะของกระบวนการอย่างชัดเจนมากขึ้นแม้ว่าและคนอื่น ๆ สามารถให้คำแนะนำวิธีการเขียนสคริปต์ทั้งหมดภายใน ArcMap (หรืออะไรก็ตาม)
สั้น ๆ ฉันคิดว่านี่เป็นเหตุผลที่เหมาะสมสำหรับการแสดงภาพข้อมูล OD ส่วนใหญ่ด้วยเหตุผลเดียวกันกับเส้นวงกลมขนาดใหญ่ที่เป็นที่นิยมพวกเขาให้ภาพที่แตกต่างระหว่างเส้นภาพมากขึ้น วิธีที่ฉันแนะนำก็มีข้อดีอย่างหนึ่งคือเส้นวงกลมขนาดใหญ่ซึ่งทิศทางการไหลนั้นถูกเข้ารหัสในครึ่งวงกลม ในคำตอบอื่น ๆในเว็บไซต์นี้ฉันให้มุมมองที่กว้างกว่าทั่วไปเกี่ยวกับเทคนิคการสร้างภาพข้อมูลสำหรับการทำแผนที่การไหลและเทคนิคเหล่านี้สามารถนำไปใช้ในการสร้างส่วนโค้งแบบนี้ได้
ดังนั้นเพื่อให้รายละเอียดว่าใครวาดเส้นอย่างที่ฉันแนะนำฉันมีเพียง 3 ขั้นตอนสำหรับกระบวนการ 1) หาทิศทางของการไหล 2) หาจุดกึ่งกลางและระยะทางของการไหล 3) ปฏิบัติต่อ จุดกึ่งกลางเป็นศูนย์กลางของวงกลมแล้ววาดส่วนโค้ง (ครึ่งวงกลมจากจุดเริ่มต้นไปยังปลายทาง) ต้องมีความชัดเจนฉันกำลังเริ่มต้นด้วยคู่ชุดพิกัดแหล่งกำเนิดที่คาดการณ์และพิกัดปลายทาง(x1,y1)
(x2,y2)
ดังนั้น 1) หาทิศทางของการไหล แรกใช้สูตรATAN((y2 - y1)/(x2 - x1))
แล้วขึ้นอยู่กับทิศทางที่กำหนดทิศทางขึ้นอยู่กับว่าทิศทางเป็นไปทางทิศตะวันออกหรือทิศตะวันตก ตัวอย่าง pseudocode ด้านล่าง (ฉันกำหนดคะแนน OD ที่ทั้งคู่อยู่ในพิกัดเดียวกันซึ่งมีทิศทางเป็นศูนย์) ที่นี่ varaible or_rad
มีไว้เพื่อจดชวเลข "การวางแนวในเรเดียน" และpi
หมายถึงค่าของ pi
#tan_or = ATAN((y2 - y1)/(x2 - x1)).
Do If x2 = x1 and y1 <= y2.
compute or_rad = 0.
Else if x2 = x1 and y1 > y2.
compute or_rad = pi.
Else if x1 > x2.
compute or_rad = 270/180*pi - #tan_or.
Else if x1 < x2.
compute or_rad = 90/180*pi - #tan_or.
End If.
2) ค้นหาจุดกึ่งกลางและระยะทางของการไหล นี้เป็นเรื่องง่ายมากเพียงหนึ่งชุดของพิกัดจับคู่จุดกลางใน (x, y) (x1+x2/2,y1+y2/2)
พิกัดจะ ดังนั้นให้กำหนดmid_x = (x1 + x2)/2
และmid_y = (y1 + y2)/2
สำหรับส่วนต่อไป ระยะทางโดยใช้ theorum pythagoreum distance = SQRT((x1 - x2)^2 + (y1 - y2)^2)
เป็นเพียง
3) จากนั้นให้ข้อมูลวาดวงกลมที่ให้มาตามจำนวนที่กำหนดไว้ล่วงหน้าขององศาและรัศมี (ซึ่งเป็นครึ่งหนึ่งของระยะทางระหว่างจุดสองจุด) ยกตัวอย่างเช่นช่วยให้บอกว่าเราเริ่มต้นด้วยชุดของ OD (1,3):(3,2)
ประสานงานคู่ที่ การวางแนวในองศาจะเป็น ~ 116 (และเป็นเรเดียน ~ 2), x, y จุดกึ่งกลางจะเป็น(2,2.5)
และระยะห่างระหว่างจุดสองจุดประมาณ 2.2
สมมุติว่าเราต้องการวาดครึ่งวงกลมรอบ 180 องศา ในรหัส pseduo (ใช้ตัวแปรที่ฉันกำหนดไว้แล้ว) การวนซ้ำจะมีลักษณะดังนี้
for i in (0 to 180 degrees)
rad_i = i/180*pi. /*converts i from degrees to radians
step_or = pi - rad_i /*for clarity, this makes the circle go from origin to destination
radius = distance/2
Arc_X = mid_x + sin(or_rad - step_or)*radius.
Arc_Y = mid_y + cos(or_rad - step_or)*radius.
แทรกด้านล่างเป็นแผนภาพของพิกัดเดิมที่ฉันระบุไว้ด้านบน เริ่มต้นที่ศูนย์และสิ้นสุดที่ 180 ทำให้แน่ใจว่าจุดถูกและจุดสิ้นสุดอยู่ในตำแหน่งเดียวกัน การปรับลูปให้มีขั้นตอนมากขึ้น (อาร์คที่มีรายละเอียดมากขึ้น) หรือน้อยกว่า (อาร์คที่มีรายละเอียดน้อยกว่า) ควรจะชัดเจนพอสมควร
ที่จะต้องทราบหัวข้ออื่น ๆ ในเว็บไซต์หารือเกี่ยวกับการสร้างเส้นจากข้อมูลจุด (ดูเส้นการสร้างแท็ก) ฉันมีตัวอย่างในสเปรดชีต xls ที่แนบมาและฉันใช้เครื่องมือET Geo-wizards arcmap เพื่อแปลงพิกัดสเปรดชีตเป็นเส้นรูปร่าง ส่วนโค้งในข้อมูลตัวอย่างในสเปรดชีตที่แนบมาจะมีลักษณะเช่นนี้
การอัปเดตที่เรียบง่าย แต่มีประโยชน์ที่อาจเกิดขึ้นกับการตั้งค่าปัจจุบันนี้คือการอัปเดตสูตรเพื่อให้มีค่าความเยื้องศูนย์กลางในส่วนที่กำหนดล่วงหน้าไว้ล่วงหน้าแม้ว่าฉันจะยังไม่แน่ใจว่าจะทำเช่นนั้นได้อย่างไร ฉันหวังว่าจะได้รับคำแนะนำและข้อเสนอแนะจากชุมชนที่นี่ตามคำแนะนำของฉัน