การคำนวณพื้นที่ QGIS นั้นแตกต่างกันเมื่อเปิดใช้งานการแปลงแบบ CRS fly


10

เมื่อฉันเปิด QGIS เพิ่มเลเยอร์และคำนวณพื้นที่ของ shapefile ผ่านเครื่องคิดเลขภาคสนามฉันได้พื้นที่ที่แตกต่างจากเมื่อฉันเปิด QGIS และตรวจสอบ "เปิดใช้งานการแปลง CRS ทันที" และคำนวณพื้นที่ นี่คือการทำให้แน่ใจว่าโครงการและเลเยอร์มีระบบพิกัดเดียวกัน (หมายเลข EPSG เดียวกัน) ผมทำอะไรผิดหรือเปล่า?

ฉันมีรูปร่างไฟล์ที่มีการคำนวณพื้นที่ที่ทำกับ ArcGIS (ไม่ใช่ฉันข้อมูลถูกส่งมาให้ฉันและฉันไม่มีเงื่อนงำที่ CRS พื้นที่คำนวณด้วย ArcGIS) เลเยอร์ไฟล์ CRS คือ EPSG: 21781 (สวิตเซอร์แลนด์) ใน QGIS ถ้าฉันไม่เปลี่ยนการตั้งค่า OTF และปล่อยให้ CRS โครงการเป็น EPSG: 4326 (WGS84) ฉันได้รับค่าเดียวกันกับค่าพื้นที่ ArcGIS อย่างไรก็ตามถ้าฉันเปลี่ยน OTF ก่อนเพิ่มเลเยอร์เป็น EPSG: 21781 ฉันจะได้รับค่าพื้นที่ที่แตกต่างกัน ดังที่ฉันเข้าใจสิ่งนี้แนะนำว่า ArcGIS Area คำนวณด้วย CRS EPSG: 4326

เวิร์กโฟลว์แรก:

  1. เปิด QGIS
  2. โครงการ CRS: EPSG 4326
  3. เพิ่มเลเยอร์
  4. โปรเจ็กต์ CRS จะปรับโดยอัตโนมัติและตอนนี้คือ EPSG 21781
  5. คำนวณ $ area พร้อมเครื่องคำนวณภาคสนาม

เวิร์กโฟลว์ที่สอง:

  1. เปิด QGIS
  2. โครงการ CRS: EPSG 4326
  3. เปิด OTF ตั้งค่าโครงการ CRS เป็น EPSG 21781
  4. เพิ่มเลเยอร์
  5. คำนวณ $ area พร้อมเครื่องคำนวณภาคสนาม

ขั้นตอนที่ 5 ของลำดับแรกและลำดับที่สองไม่ได้สร้างพื้นที่เดียวกัน


คุณสามารถยกตัวอย่างของเวิร์กโฟลว์และเครื่องมือที่คุณใช้ ฉันลองใช้ด้วยการใช้งานแบบทันทีและปิดการใช้งานใน WGS84 และให้พื้นที่เดียวกัน ที่ใช้$areaในเครื่องคิดเลขที่ยื่น กล่าวโดยย่อคือ on-the-fly ส่งผลกระทบต่อวิธีการแสดงเรขาคณิตโดยไม่ต้องเปลี่ยนแปลงข้อมูลแบบพฤตินัย ดังนั้นจึงเป็นไปได้มากกว่าที่ข้อผิดพลาดเกิดจากเวิร์กโฟลว์
dof1985

$ area คำนวณพื้นที่ตามชั้นหรือระบบประสานงานโครงการหรือไม่
kalakaru

ฉันตรวจสอบแล้วและดูเหมือนว่าจะให้พื้นที่ในหน่วย OTF แต่ฉันค่อนข้างแน่ใจว่ามันใช้รูปทรงเรขาคณิตของชั้นเอง
dof1985

นั่นอาจเป็นสาเหตุของปัญหาของฉัน ฉันมีรูปร่างไฟล์ที่มีการคำนวณพื้นที่ที่ทำกับ ArcGis (ไม่ใช่ฉันข้อมูลถูกส่งมาให้ฉันและฉันไม่มีเงื่อนงำที่ CRS พื้นที่คำนวณด้วย ArcGIS) เลเยอร์ CRS รูปร่างของชั้นคือ EPSG: 21781 (สวิตเซอร์แลนด์) ถ้าฉันไม่เปลี่ยนการตั้งค่า OTF และปล่อยให้ CRS โครงการเป็น EPSG: 4326 (WGS84) ฉันได้รับค่าเดียวกันกับค่า ArcGis Area อย่างไรก็ตามถ้าฉันเปลี่ยน OTF ก่อนเพิ่มเลเยอร์เป็น EPSG: 21781 ฉันจะได้รับค่าพื้นที่ที่แตกต่างกัน ตามที่ฉันเข้าใจสิ่งนี้ชี้ให้เห็นว่า ArcGIS Area คำนวณด้วย CRS EPSG: 4326
kalakaru

เท่าที่ฉันทราบ Arcgis สามารถคำนวณรูปทรงเรขาคณิตในหลาย ๆ การใช้การแสดงออกของหลามเครื่องคิดเลขในสนาม!shape.area!ควรให้พื้นที่ตามเลเยอร์ crs; กว่าเรขาคณิตคำนวณอาจทำงานแตกต่างกัน ดังนั้นจึงเป็นการยากที่จะบอกว่าสิ่งที่ทำใน arcgis แต่ถ้าคุณได้รับผลลัพธ์เดียวกันเช่นองศาและไม่ใช่เมตรก็หมายความว่าการคำนวณพื้นที่นั้นขึ้นอยู่กับ ESPG: 4326
dof1985

คำตอบ:


6

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

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

จุดประสงค์ของการแปลง / การฉายแบบทันทีทันใดคือการจัดเรียงข้อมูลจากแหล่งต่าง ๆ และกับ CRS ที่แตกต่างกัน นั่นคือเพื่อการแสดงผลเป็นหลัก EG arcmap ทำการฉายแบบทันทีทันใดในกรณีใด ๆ เลเยอร์ CRS ไม่ตรงกับเฟรมข้อมูล CRS

Arcmap ยังให้ความเป็นไปได้ในการแก้ไขข้อมูลในขณะที่ฉายบนเครื่อง แต่ยังตั้งข้อสังเกตอีกว่า: ( แหล่งที่มา )

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

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

กล่าวคือในการแปลงสภาพทันทีนั้น acurate น้อยกว่าเพียงแค่ฉายข้อมูลไปยัง CRS อื่น (ซึ่งยังแนะนำปัญหาของตัวเองด้วย)

ต้องบอกว่าไม่น่าแปลกใจที่การคำนวณแบบผิดปกติกำลังคำนวณพื้นที่ผิด แต่ก็น่าแปลกใจที่ความจริงที่ว่าการเปิดใช้งาน on-the-fly นั้นส่งผลต่อการคำนวณทางเรขาคณิตไม่ว่าในลักษณะใด จะขึ้นอยู่กับข้อมูล ดังนั้นมันไม่สำคัญว่าการแปลงแบบทันทีจะขึ้นอยู่กับ CRS เดียวกันหรือ CRS ที่แตกต่างกันการคำนวณพื้นที่ควรเหมือนกันทุกครั้ง

เพื่อให้ใช้งานได้จริงมากขึ้นหากเป้าหมายของคุณคือการคำนวณพื้นที่ที่ไม่ได้ใช้งานทันที หากคุณมี CRS ผิดให้ฉายข้อมูลของคุณ


ฉันไม่แน่ใจเกี่ยวกับ QGIS แต่ในทางตรงข้ามกับสิ่งที่คุณพูดถึงที่นี่ ArcGIS สามารถทำการคำนวณทางเรขาคณิตของมันโดยใช้การฉายแบบ OTF หรือการฉายภาพที่แตกต่างกันโดยสิ้นเชิงขึ้นอยู่กับวิธีการ (เช่นคอลัมน์แอตทริบิวต์คลิกขวาและเลือกคำนวณเรขาคณิตเทียบกับ -code / field call call ของ shape.area) บางครั้งมีตัวเลือกให้ใช้ CRS ของ 1) data / layer, 2) dataframe ปัจจุบัน 3) CRS ที่ระบุไม่เกี่ยวข้องกับ 1 หรือ 2 โดยทั่วไป (อีกครั้ง ArcGIS) หากตัวเลือกไม่ปรากฏขึ้นจะทำใน CRS ดาต้าเฟรมปัจจุบันโดยไม่คำนึงว่าข้อมูลคืออะไร (ดังนั้น OTF)
Chris W

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

@ChrisW ถ้าฉันเข้าใจถูกต้อง เครื่องมือประมวลผลทางภูมิศาสตร์บางตัวยอมรับ OTF CRS เนื่องจากเป็นชั้นของ CRS การรับพื้นที่ตาม OTF CRS ไม่จำเป็นต้องเป็นข้อบกพร่อง ถูกต้องหรือไม่ เกี่ยวกับ Arcgis ให้เราถือว่า WGS84 เป็น OTF สิ่งที่เกี่ยวกับการโทรเช่น:!shape.area@meters!
dof1985

ถูกต้อง. dataframe และ layer แรกของคุณอาจเป็น WGS84 และคุณสามารถเพิ่ม layer ที่สองนั่นคือ NAD83 เลเยอร์ที่สองคือ OTF ที่ฉายและคุณสามารถเรียกใช้เครื่องมือปกติเช่น Intersect หรือ Union บนมันและการดำเนินการจะเกิดขึ้นใน WGS84 การหาพื้นที่แน่นอนไม่ใช่ข้อผิดพลาด ฉันมีลูกค้าที่ต้องการข้อมูลใน NAD83 แต่ข้อมูลต้องการหน่วยในไร่และฉันทำงานใน CRS ที่คาดการณ์ไว้เพื่อป้อนข้อมูล ฉันมักจะเปลี่ยนการฉายดาต้าเฟรมพื้นที่การคำนวณแล้วเปลี่ยนกลับ ไม่แน่ใจว่าจะจัดการการโทรนั้นอย่างไรเนื่องจากฉันคิดว่าการแปลงหน่วยแยกจากการคำนวณ
Chris W

6

ฉันสามารถยืนยันได้ว่าเป็นข้อผิดพลาด

สร้างไฟล์ csv ที่มีเนื้อหาดังต่อไปนี้:

E N
600000 200000
700000 200000
700000 300000
600000 300000

นำเข้าเป็นข้อความที่มีตัวคั่นด้วย EPSG: 21781 เปิดใช้งานการจัดวางและวาดรูปร่างไฟล์รูปหลายเหลี่ยมในสี่จุด

หากไม่มี OTF ผลที่ได้$area/1000000.0คือ 10,000 ตารางเมตร (ซึ่งถูกต้องชัดเจน)

เปิด OTF บนและเลือก EPSG เดียวกัน: 21781 คุณจะได้รับ 9988.2338 ตารางเมตร

การเลือก CRS ที่แตกต่างกันเช่น EPSG: 4326 ให้ 9990.5339 ตารางเมตรเนื่องจากการคำนวณจะทำในรูปวงรีที่แตกต่างกัน (WGS84 แทนที่จะเป็น Bessel)

Vector --> Geometry Tools --> Export/Add Geometry Columns ดูเหมือนว่าจะส่งมอบคุณค่าที่ถูกต้อง

ข้อบกพร่องมีตั๋วบางส่วนแล้ว: https://issues.qgis.org/issues/10966และhttps://issues.qgis.org/issues/12473

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