มากกว่า

กำลังคำนวณ Centroid ของแผ่นดินทั้งหมดโดยใช้ SQL Server Spatial หรือไม่

กำลังคำนวณ Centroid ของแผ่นดินทั้งหมดโดยใช้ SQL Server Spatial หรือไม่


ฉันต้องการหาจุดศูนย์กลางของดินแดนทั้งหมดของโลก

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

ฉันจะคำนวณ .ได้อย่างไร Centroid ของแผ่นดินทั้งหมดโดยใช้ SQL Server?


นี่อาจทำได้ง่ายที่สุดด้วยการคำนวณแรสเตอร์ เพราะหาจุดศูนย์กลางของผิวดิน (ตามนิยาม) โดยหาค่าเฉลี่ย geocentric พิกัด (X, Y, Z) ให้น้ำหนักตามพื้นที่ การหาค่าเฉลี่ยทำได้โดยใช้สถิติโซน

เพื่อให้ได้พิกัดเหล่านี้และตัวคูณมาตราส่วนพื้นที่ ให้คำนวณกริดต่อไปนี้ ในพิกัดทางภูมิศาสตร์ ครอบคลุมพื้นที่ทั้งหมดตามความละเอียดที่ต้องการ (ฉันใช้เซลล์ 0.1 องศาซึ่งสร้างตาราง 3600 x 1800 ครอบคลุมทั้งโลก):

  • [ลองจิจูด] คือพิกัดแรก

  • [ละติจูด] คือพิกัดที่สอง

  • [X] คือ Cos([ลองจิจูด]) * Cos([ละติจูด])

  • [Y] คือ Sin([Longitude]) * Cos([Latitude])

  • [Z] คือ Sin([Latitude])

  • [F] คือ Cos([Latitude]) นี่คือตัวคูณขนาดพื้นที่

(โปรดทราบว่าไม่จำเป็นต้องคูณ [X], [Y] หรือ [Z] ใดๆ ด้วยรัศมีของโลก อันที่จริง เรากำลังคำนวณเซนทรอยด์ของแบบจำลองทรงกลมที่มีสเกลสมบูรณ์แบบของโลก ตำแหน่งของเซนทรอยด์นั้นบน โมเดลจะเป็นตำแหน่งสเกลของเซนทรอยด์ที่ต้องการ)

คำนวณค่าเฉลี่ยโซนของ [X] * [F], [Y] * [F] และ [Z] * [F] เมื่อฉันทำสิ่งนี้ด้วยไฟล์รูปร่างที่แสดงพื้นที่แผ่นดินหลักทั้งหมด (รวมถึงแอนตาร์กติกา) ด้วยลองจิจูดตั้งแต่ 0 ถึง 360 องศา ค่าเฉลี่ยของเขตคือ -0.1204, -0.0661 และ 0.1356 ตามลำดับ

(อีกวิธีหนึ่ง คุณสามารถฉายภาพ [X], [Y] และ [Z] ใหม่เป็นการฉายภาพที่มีพื้นที่เท่ากันและคำนวณวิธีการแบ่งโซนได้โดยตรงโดยไม่ต้องอาศัยการถ่วงน้ำหนักพื้นที่โดย [F] ทำสิ่งที่ง่ายกว่าใน GIS ของคุณ)

ดังที่เราควรคาดไว้ เซนทรอยด์นี้อยู่ใกล้กับศูนย์กลางโลกมากขึ้นที่ (0, 0, 0) มากกว่าที่มันจะอยู่บนพื้นผิวของมัน หากเราต้องการทำแผนที่ เราสามารถคำนวณละติจูดและลองจิจูดของมันโดยไม่สนใจความลึกของมัน ลองจิจูดของจุด (X, Y, Z) ถูกกำหนดโดย (X, Y) เพียงอย่างเดียวและมักจะคำนวณเป็นอาร์กแทนเจนต์ ละติจูดถูกกำหนดโดย Sqrt(X^2+Y^2) และ Z และมักจะคำนวณเป็นอาร์กแทนเจนต์ ฉันได้รับตำแหน่ง (208.77, 44.63) (ซึ่งคือลองจิจูด 28.77 องศาตะวันออก ละติจูด 44.63 องศาเหนือ) ซึ่งตั้งอยู่ใกล้ชายฝั่งตะวันออกของโรมาเนีย

แผนที่นี้อยู่ในพิกัดทางภูมิศาสตร์: พิกัดแนวนอนคือลองจิจูด และพิกัดแนวตั้งคือละติจูด พื้นหลังแสดงให้เห็นตารางพิกัด X เซนทรอยด์อยู่ใต้เครื่องหมายสีแดงตรงกลางด้านขวา

หากคุณดูไม่เหมือนศูนย์กลางของมวลดิน ให้ตรวจสอบจากตำแหน่งอื่น เช่น เหนือศีรษะตรง:

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


ข้อได้เปรียบของโซลูชันแบบกริดนั้นชัดเจนในภาพรวมของคำถามนี้ ตัวอย่างเช่น โดยการแทนที่ [F] (ตาราง "จำนวนที่ดิน") ด้วยตารางที่แสดงจำนวนอย่างอื่นต่อเซลล์ คุณสามารถคำนวณเซนทรอยด์ที่ถ่วงน้ำหนักได้ หากคุณมีตารางความหนาแน่นของประชากร [P] ดังนั้น [F] * [P] จะเป็นสัดส่วนกับจำนวนประชากรทั้งหมด การใช้ [F] * [P] แทน [F] ในการคำนวณเหล่านี้จะทำให้เซนทรอยด์ของประชากรโลก


ดูวิดีโอ: SQL Server Spatial Tools Introduction