ค้นหาเสาที่เข้าไม่ถึงเมื่อเทียบกับหลาย ๆ จุดโดยไม่ต้องใช้ rasters


9

ฉันต้องการค้นหา 'จุดแห่งการเข้าไม่ถึง' จากชุดของคะแนนซึ่งเป็นตัวแทนของเมืองและหมู่บ้านในสกอตแลนด์ การใช้เครื่องมือ FOSS GIS (QGIS, SAGA, GRASS, Postgres / PostGIS ... )

นี่คือจุดที่ไกลที่สุดจากศูนย์กลางของประชากรใด ๆ นี่จะเป็นศูนย์กลางของวงกลมที่ใหญ่ที่สุดที่ไม่มีเมือง แต่มันจะมีเมืองที่อยู่ริม

มีวิธีการแรสเตอร์ซึ่งใช้งานได้ - ตัวกรองGDAL Proximity

มีวิธีตามVECTORในการทำเช่นนี้หรือไม่? อันที่ไม่ต้องมีการแรสเตอร์?

นี่คือความพยายามของฉันกับ rasters ...

  • เริ่มต้นด้วยเลเยอร์จุดในการฉายภาพที่เหมาะสมในหน่วยเมตร (ฉันใช้ OSGB, 27700)
  • เพิ่มเขตข้อมูลที่เรียกว่า "หนึ่ง" และตั้งค่าเป็นจำนวนเต็มด้วยค่าคงที่ 1
  • เวกเตอร์ถึงแรสเตอร์คำสั่งแก้ไขเพื่อใช้-a oneและใช้ GEO แทนพิกเซล ตรวจสอบให้แน่ใจว่าพิกเซลเป็นสี่เหลี่ยมจัตุรัส!
  • สร้างรูปทรงบนแรสเตอร์ความใกล้ชิด (ในกรณีนี้กว้าง 1 กม.)

นี่คือสิ่งที่ดูเหมือนว่า ฉันดึงคะแนนผู้สมัครด้วยมือ ;-)

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

ฉันคิดว่าการละลายบัฟเฟอร์ซ้ำ ๆ (โดยใช้ปลั๊กอินMulti ring buffer ) อาจใช้งานได้ แต่ฉันคิดว่าฉันไม่มีหน่วยความจำเพียงพอที่จะใช้งานได้

คำตอบ:


7

ฉันคิดว่ามันเป็นศูนย์กลางของรูปสามเหลี่ยมล้อมรอบด้วยรัศมีที่ใหญ่ที่สุดที่สัมผัสไม่เกิน 3 จุด ในภาพด้านล่างศูนย์แรก 11 ดังกล่าวแสดง พวกเขาถูกระบุด้วยหมายเลขการจัดอันดับของพวกเขา

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

มันเพียงพอที่จะกำจัดวัชพืชที่อยู่นอกรูปสามเหลี่ยมและกำหนดแชมป์นั่นคือ No3 ในภาพ

อัพเดทแรงบันดาลใจจากการค้นหาสตีเวน:

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

ผลลัพธ์ดังกล่าวไม่เหมือนโซลูชันแรกที่ได้รับใน ArcGIS โดยไม่ต้องใช้สคริปต์ (แต่มีสิทธิ์ใช้งานขั้นสูง) และใช้งานได้! อย่างไรก็ตามมันสามารถให้ผลลัพธ์ที่น่าสงสัยบนขอบของพื้นที่ศึกษาเช่นจุดที่ 1 คือจุดที่ห่างไกลที่สุดที่สองที่พบ ...


1
ว้าวขอบคุณมากที่แบ่งปันสิ่งนี้! ฉันพยายามติดตามเวิร์กโฟลว์ของคุณใน QGIS โดย (1) คะแนนไปยัง Delaunay ( Vector | Delaunay Triangulation), (2) เลือกรูปสามเหลี่ยมแชมป์ (คำนวณ$areaบนตารางคุณลักษณะของรูปหลายเหลี่ยม Delaunay) และบันทึกอันที่ใหญ่ที่สุดเป็นเลเยอร์ใหม่ (3) Find circumcenter ( Processing | GRASS | Vector | v.voronoi.skeletonบน สามเหลี่ยมแชมเปี้ยน) คุณคิดว่าวิธีนี้ถูกต้องหรือไม่?
Kazuhito

ขั้นตอนแรกถูกต้อง ฉันคำนวณศูนย์ exradius สำหรับรูปสามเหลี่ยมทั้งหมด เพื่อหาจุดศูนย์กลางที่ฉันสร้างขึ้นตั้งฉากภายในสำหรับจุดกึ่งกลางของทั้ง 3 ด้านและหาจุดตัด (รวมกัน 3,2)
FelixIP

วงกลมที่ถูกล้อมรอบของรูปสามเหลี่ยมไม่ใช่วงกลมออกมา
FelixIP

ขอบคุณมาก! (และขอขอบคุณสำหรับภาพสวย ๆ ด้วยยิ่งฉันเอนกายพื้นหลังเกี่ยวกับมันมากเท่าไหร่มันก็ยิ่งมีเสน่ห์มากขึ้น)
Kazuhito

1
สังเกตที่ดี! ฉันจะทดสอบและอัปเดตคำตอบ ซึ่งแตกต่างจากวิธีแก้ปัญหาแรกมันไม่จำเป็นต้องมีสคริปต์อย่างน้อยใน Arcgis
FelixIP

5

นี่คือการติดตาม ขอบคุณ @FelixIP ที่ชี้ให้ฉันไปในทิศทางที่ถูกต้อง!

ด้วยการใช้ข้อมูล OSM จากออสเตรเลียฉันสามารถหา "จุดเข้าไม่ถึง" ในออสเตรเลียแผ่นดินใหญ่ - ฉันทำระยะทางประมาณ 260 กม. จาก Akarnenehe, Bedourie และ Mount Dare ที่ POINT (137.234888 -24.966466)

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

ฉันพบเวิร์กโฟลว์ที่ค่อนข้างง่ายใน QGIS ซึ่งใช้การผสมผสานระหว่างแรสเตอร์และเวกเตอร์ ฉันแน่ใจว่าวิธีการที่คล้ายกันนี้จะใช้ได้กับ GIS อื่น ๆ

ช่วงเวลา 'a-ha' มาจากการสังเกตสิ่งนี้

จุดสูงสุดทั้งหมดตกลงบนจุดสามจุดบนตาข่ายโวโรโนอิ

วิธีการดังต่อไปนี้: -

  • ทำงานในการฉายตามเมตร ฉันใช้ 3857 ไม่เหมาะ แต่ข้อมูล OSM ของฉันอยู่ในรูปแบบนั้น :)
  • รับเลเยอร์ที่แสดงถึงจุดสนใจใน ('เมือง', 'หมู่บ้าน', 'เมือง', 'หมู่บ้านเล็ก')
  • สร้างตาข่าย voronoiจากชั้นนี้
  • ใช้แตกโหนดเพื่อรับ tripoints
  • สร้างแรสเตอร์ความใกล้ชิด (ดังที่แสดงในคำถาม)
  • คลิปแรสเตอร์ไปที่โครงร่างของแนวนอนดังนั้นพิกเซลของทะเลจะถูกตั้งค่าเป็น 0
  • ใช้เครื่องมือ Point Samplingบนโหนดที่แยกออกมาพร้อมกับแรสเตอร์

จากนั้นใช้Db ManagerและVirtual Layersเพื่อค้นหาโหนดที่มีค่าระยะทางมากที่สุดบนแรสเตอร์

select 
    rowid,
    name,
    proximity2,
    st_astext(st_transform(geometry,4326)) as pt, 
    st_buffer(geometry, proximity2) as geometry
from 
    "samples" 
order by 
    proximity2 desc 
limit 1;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.