ทำแผนที่ไหลเรเดียลแสดงเส้นโค้งในระยะทางสั้น ๆ (20 กม.) โดยใช้ ArcGIS for Desktop หรือไม่


10

Esri ได้ให้คำแนะนำเกี่ยวกับวิธีสร้างแผนที่การไหลในแนวรัศมี แต่ฉันคิดว่าเส้นโค้งจะถูกสร้างขึ้นในระยะทางไกลเช่นครึ่งโลก

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

หรือมีเครื่องมืออื่นใน ArcGIS Desktop 10.0 เพื่อใช้สำหรับทำเส้นโค้งหรือไม่? ฉันมี 90 คะแนนที่ฉันจำเป็นต้องเชื่อมต่อถึง 54 คะแนนจะเป็นการดีที่จะทำให้มันเป็นแบบอัตโนมัติแทนที่จะต้องวาดเส้นด้วยตนเอง


2
คำถามของคุณถูกถามที่gis.stackexchange.com/questions/5204/…ในบริบทที่ไม่ใช่ ArcGIS คุณอาจพบคำตอบที่น่าสนใจ
whuber

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

@AndyW ข้อเสนอแนะของคุณฟังดูมีประโยชน์กับฉันมากขึ้น (แม้ว่าจะไม่มีความผิดใด ๆ ต่อผู้ที่ทำข้อเสนอแนะที่ดีสำหรับผู้ใช้ที่มีความสามารถมากขึ้น) ฉันไม่สามารถเข้าใจหรือใช้งานข้อเสนอแนะของ whuber ได้ ฉันอยู่หลังโซลูชัน 'ออกนอกกรอบ' ที่ง่ายกว่าควรมีส่วนขยาย ArcGIS ฉันดูที่แผนภาพอาร์คมีตัวอย่างที่น่าทึ่งอยู่ที่นั่น ฉันไม่เห็นวิธีแก้ปัญหาที่นั่นสำหรับแผนที่แบบคงที่ที่เรียบง่ายซึ่งแสดงความสัมพันธ์ระหว่าง (ในกรณีของฉัน) ไซต์การขับไล่และไซต์การย้ายถิ่นฐาน
ndthl

คำตอบ:


5

นี่คือภาพประกอบของเวิร์กโฟลว์ที่ฉันกล่าวถึงในความคิดเห็นด้านบนและถึงแม้ว่าฉันไม่ทราบว่ารูทีน 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 เพื่อแปลงพิกัดสเปรดชีตเป็นเส้นรูปร่าง ส่วนโค้งในข้อมูลตัวอย่างในสเปรดชีตที่แนบมาจะมีลักษณะเช่นนี้

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

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


1
นี่คือการตอบสนองที่ยอดเยี่ยมจริงๆ! แม้ว่าฉันจะไม่เข้าใจวิธีการใช้โค้ด แต่ฉันคิดว่าฉันมีบางอย่างที่ดีที่ฉันสามารถพูดคุยกับเพื่อนได้ ฉันทราบเครื่องมือ et geowizards เพื่อรวมสองจุดเข้ากับเส้นตรง - ฉันสนใจเฉพาะเส้นโค้งเพื่อจุดประสงค์ในการทำแผนที่
ndthl
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.