ฉันจะสร้างแผนที่ความร้อนหรือ Choropleth ที่ใช้รูปหลายเหลี่ยมใน QGis ได้อย่างไร


12

ฉันเล่นกับ heatmap plugin สำหรับ QGIS และฉันสงสัยว่าเป็นไปได้หรือไม่ที่จะสร้าง heatmap ด้วยการใช้ plugin / tool ที่คล้ายกันซึ่งใช้รูปหลายเหลี่ยมรวมถึงคะแนน?

ฉันต้องการแสดงความหนาแน่นของข้อมูลในแบบเดียวกับที่ heatmap plugin ใช้กับคะแนน

ภาพต่อไปนี้เป็นภาพร่างคร่าวๆของผลลัพธ์ที่ฉันต้องการ:

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


3
คุณเคยคิดที่จะสร้าง centroids สำหรับรูปหลายเหลี่ยมของคุณและสร้าง heatmap จากสิ่งเหล่านั้นหรือไม่?
andytilia

1
รายละเอียดเพิ่มเติมเกี่ยวกับข้อมูลของคุณจะช่วยคุณได้ รูปหลายเหลี่ยมแสดงถึงอะไรและมีการกระจายอย่างไร คุณสามารถโพสต์รูปตัวอย่างได้ไหม?
andytilia

@andytilia: Centroid ไม่ได้แสดงความครอบคลุมของรูปหลายเหลี่ยมได้อย่างถูกต้อง รูปหลายเหลี่ยมแสดงการใช้ทรัพยากรภายในพื้นที่ 1200m2 รูปหลายเหลี่ยมบางส่วนมีขนาดเล็กซึ่งแสดงถึงผลไม้เล็ก ๆ ที่ดีและบางชนิดก็มีขนาดใหญ่ครอบคลุมที่อยู่อาศัยของกวางคาริบูและกวางมูซ ฉันกำลังมองหาการทำตารางหกเหลี่ยมแล้วนับการทับซ้อน ... แต่ฉันเป็น noob มากดังนั้นฉันจึงไม่สามารถหาบทแนะนำที่ดีที่ฉันสามารถเข้าใจในเรื่องนั้นได้
NWT Adam

1
ดูปลั๊กอินความร้อน
rkm

ค่าตัวเลขมีความหมายใด ๆ กับคุณหรือคุณกำลังมองหาการสร้างภาพสวย / ใส?
underdark

คำตอบ:


5

บางทีคุณอาจสร้างจุดสุ่มเป็นรูปหลายเหลี่ยมของคุณมีเครื่องมือ QGIS สำหรับสิ่งนั้น ? หากคุณมีรูปหลายเหลี่ยมซ้อนกันแสดงว่าคุณมีความหนาแน่นสูงกว่าในพื้นที่นี้ จากนั้นใช้แผนที่ความร้อนสำหรับจุดต่างๆ คุณจะต้องวิ่งหลายรอบเพื่อหาจำนวนคะแนนที่เหมาะสมเนื่องจากผลลัพธ์ขึ้นอยู่กับว่า

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


1
+1 แนวคิดที่ยอดเยี่ยม สิ่งเดียวที่ฉันจะเพิ่มคือการเข้าร่วมที่ตำแหน่งด้วยข้อมูลจุดและโพลิหกเหลี่ยมกำจัดคุณลักษณะที่ไม่ตรงกันและสร้างจุดในจุดนั้นดังนั้นจุดเดียวของคุณจะไม่จมลงในจุดอื่น ๆ ทั้งหมด
RomaH

ดูเหมือนว่าจะให้ผลลัพธ์ที่ดูดีที่สุด ขอบคุณทุกคนที่เสนอวิธีแก้ไขปัญหา ฉันรู้สึกไม่ดีที่ให้รางวัลแก่คนเพียงคนเดียวเพราะดูเหมือนจะมีทางออกที่ดีมากมาย!
NWT Adam

6

หากฉันเข้าใจคำถามของคุณถูกต้องฉันได้ทำสิ่งที่คล้ายกันมาก่อน แค่ต้องจำสิ่งที่ฉันทำ

วิธีนี้จะได้ผลถ้า polys ของคุณทับซ้อนกันและไม่เป็นเลเยอร์เดียวกัน หากอยู่ในเลเยอร์เดียวกันและเป็นไปได้ให้ย้ายไปยังเลเยอร์แยกถ้าคุณไม่เลเยอร์เป้าหมายจะรับค่าใดค่าหนึ่ง

กระบวนการที่สำคัญในการใช้เป็นเข้าร่วมกับคุณลักษณะตามสถานที่ภายใต้เวกเตอร์> ข้อมูล Mangementเมนู ที่นี่ระบุฟิลด์หกเหลี่ยมของคุณเป็นเลเยอร์เป้าหมายและเลเยอร์เข้าร่วมเป็นหนึ่งในรูปหลายเหลี่ยมของคุณ ชื่อชั้นที่เกิดของคุณและติ๊กปุ่มสำหรับเก็บประวัติ

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

เลเยอร์สุดท้ายของคุณควรสืบทอดฟิลด์แอ็ตทริบิวต์ทั้งหมดของเลเยอร์ก่อนหน้าและส่วนใหญ่อาจบอกว่าเป็นโมฆะ

นี่คือที่เราต้องเล่นในบางส่วนของความกล้าของรูปร่างไฟล์ดังนั้นถ้าคุณไม่ได้บันทึกเลเยอร์เป็นรูปร่างไฟล์ทำตอนนี้ และลบเลเยอร์ออกจากพื้นที่ทำงานของคุณใน QGIS

เปิดไฟล์ * .dbf ของ shapefile ใน OpenOffice Calc อย่าใช้ Excel มันจะทำให้ไฟล์ยุ่งเหยิงและไม่มีประโยชน์เรียนรู้ว่าวิธีที่ยาก และไม่ต้องเรียงลำดับข้อมูลใหม่มันมีความเฉพาะเจาะจงมากกับลำดับของแถวในไฟล์เช่นกัน ตรวจสอบเพื่อให้แน่ใจว่า NULL ตอนนี้เป็นศูนย์หากไม่เป็นจริงให้แทนที่ด้วยความระมัดระวัง

ตอนนี้ใส่เข้าไปใน shapefile QGIS และเปิดตารางแอตทริบิวต์ ตอนนี้มันควรจะแสดงค่าเป็นศูนย์แทนค่า NULL ใช้เครื่องคำนวณภาคสนามและรวมเขตข้อมูลที่ได้รับจากงานของคุณในคอลัมน์ใหม่

ตอนนี้คุณมีฟิลด์ผลรวมที่ควรแสดงด้วยระดับความแม่นยำค่าของคอลเลกชันคุณลักษณะทั้งหมดที่ซ้อนทับฟิลด์เป้าหมาย คุณสามารถใช้ฟังก์ชัน Symbology เพื่อระบายสีรูปหลายเหลี่ยมของคุณตามค่าของเขตข้อมูลผลรวมของคุณสำหรับแผนที่ choropleth ที่ดี

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


น่าเสียดายที่ฉันมีรูปหลายเหลี่ยมหลายรูปซ้อนทับกันในชั้นเดียวกัน คุณเห็นวิธีแก้ไขสิ่งนี้โดยไม่แยกสิ่งเหล่านี้ออกเป็นสองสามร้อยชั้นหรือไม่?
NWT Adam

1
คุณสามารถสร้างภาพซ้อนทับโพลิกอนด้วย PostGIS (ถ้าคุณใช้) ซึ่งแบ่งโพลที่ทับซ้อนกันของคุณ gis.stackexchange.com/questions/83/… บางทีคนที่ดีกว่า SQL-fu สามารถช่วยเราได้ที่นี่และวิธีรับ polys ที่เป็นผลลัพธ์ในการสืบทอดค่าของพวกเขาฉันไม่เก่งเกินไป
RomaH

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

1
ขอบคุณสำหรับคำแนะนำของ PostGIS ฉันจะดูมัน แต่ฉันเพิ่งรู้วิธีใช้ PostGIS สำหรับการประเมินคำถามอีกครั้ง ... ฉันเห็นสิ่งที่คุณหมายถึง แต่ฉันไม่แน่ใจว่าฉันจะเห็นภาพสิ่งที่เรากำลังพยายามที่จะแสดง ข้อมูลของเราแสดงถึงพื้นที่ทั้งหมดที่ผู้สูงอายุชุมชนและผู้ใช้ทรัพยากรทำแผนที่ว่ามีประสิทธิผลหรือสำคัญจากมุมมองทางวัฒนธรรม เราเข้าใจว่าแผนที่ค่าไม่เหมือนกันทั่วทั้งรูปหลายเหลี่ยม แต่มันใกล้พอสำหรับจุดที่เราต้องการแสดงด้วยแผนที่
NWT Adam

1
ยกนิ้วให้กับคู่มืออะไรก็ได้ใน qgis - โดยเฉพาะอย่างยิ่งเมื่อคุณเริ่มรับมือกับ // ตัน // ของรูปร่างที่คุณสามารถจบลงด้วยความหงุดหงิดจริงๆ คุณจะไม่เสียใจกับการใช้ SQL-fu ของคุณไม่ว่าจะเป็นด้วยปลั๊กอิน postGIS หรือปลั๊กอิน GRASS (ดูคำตอบของฉันด้านล่าง: gis.stackexchange.com/a/42188/7689 )
egbutter

4

นี่เป็นเวิร์กโฟลว์ทั่วไปที่ใช้ rasters ฉันไม่ทราบรายละเอียดเฉพาะที่จะทำให้สำเร็จใน QGIS

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

ค่าอัลฟา / โมฆะและ / หรือความโปร่งใสของเลเยอร์จะช่วยให้คุณวางซ้อนแรสเตอร์บนแผนที่ฐานใด ๆ


หลังจากผ่านขั้นตอนการทำงานนี้ฉันก็เหลือบล็อกสีเทาขนาดใหญ่ที่ครอบคลุมขอบเขตของแรสเตอร์ใหม่ ฉันจะทำให้แผนที่ดูเหมือนเป็นแผนที่ความร้อนได้อย่างไร
NWT Adam

1
มีการกำหนดค่าต่าง ๆ ให้กับพิกเซลในแรสเตอร์สุดท้ายหรือไม่? ความคิดเล็กน้อย: คุณอาจต้องระบุความละเอียดปลีกย่อย (พิกเซลเพิ่มเติม) เมื่อสร้าง rasters; rasters ควรมีขนาดและความละเอียดเท่ากัน คุณอาจต้องยืดหรือแก้ไข colormap ของแรสเตอร์ที่เป็นผลลัพธ์เพื่อแสดงสีที่สว่างขึ้นสำหรับค่าที่มากขึ้น

โอเคฉันได้รับการตั้งค่าแผนที่สี แต่ฉันจะได้รับสองสีฟ้า (ค่า 0) และค่าสีแดง (2) ค่าสีแดงครอบคลุมพื้นที่ของชั้นต้นฉบับเวกเตอร์ของฉันและชั้นซ้อนทับของฉัน ฉันเดาว่าแต่ละชั้นจะให้ค่าเป็น 1 แทนที่จะเป็นรูปหลายเหลี่ยมแต่ละรูปเมื่อพวกเขา rasterised จากนั้นเมื่อ rasters ถูกเพิ่มมูลค่ารวมเท่ากับ 2 จะได้รับค่าที่จะรักษา / เพิ่มในระดับรูปหลายเหลี่ยมมากกว่าระดับชั้นได้อย่างไร
NWT Adam

ความละเอียด raster ที่ละเอียดยิ่งขึ้นน่าจะช่วยได้

ฉันจะทำ raster resolution ที่ละเอียดกว่าได้อย่างไร?
NWT Adam

4

ลองใช้วิธีนี้แทนหากตรงกับความต้องการของคุณไม่ใช่โซลูชันการคำนวณสำหรับชุดข้อมูล แต่หากคุณกำลังมองหาวิธีแก้ปัญหาแบบอินโฟกราฟิกที่คุณสามารถลองทำได้แทน

เข้าร่วมคุณสมบัติตามสถานที่ที่มีเซลล์ heaxgonal ของคุณเช่นเดียวกับเป้าหมายและข้อมูลจุดของคุณเป็นการเข้าร่วม เลือกเพื่อเก็บคุณสมบัติทั้งหมด ตั้งค่าสัญลักษณ์ให้กับเซลล์ด้วยค่าที่สืบทอดมาเป็นสีที่ต้องการและตั้งค่าความโปร่งใสเป็น 50%

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

หากคุณต้องการคุณยังสามารถแยกบรรทัดของ polys และการซ้อนทับด้านบนทั้งหมดเพื่อให้โครงร่างของเลเยอร์ย่อยไม่ปรากฏเป็นสีโดยเลเยอร์อื่น

คุณจะต้องเล่นกับสีและความโปร่งใสเพื่อหาทางออกที่ดีที่สุด ฉันพบว่าสีเดียวกันนั้นดูดีที่สุด แต่ก็เป็นประสบการณ์


4

ฉันขอแนะนำให้คุณใช้ปลั๊กอิน GRASS - QGIS มีฟังก์ชั่นค่อนข้าง จำกัด (และทำไมต้องบูรณาการวงล้อในไพ ธ อนเมื่อซอฟต์แวร์อย่าง GRASS มีอยู่แล้ว):

v.in.ogr.qgis

[อาจจำเป็นต้องใช้สองบรรทัดถัดไปทั้งนี้ขึ้นอยู่กับว่ารูปหลายเหลี่ยมของคุณมีค่าอยู่แล้ว]

v.db.addcol 
v.db.update_const 

นี่คือที่เราเพิ่มการทับซ้อนในรูปหลายเหลี่ยมจากนั้นสร้างแรสเตอร์ตามคอลัมน์เหล่านั้น

v.to.db ... qcolumns=sum(col_with_polygon_value)
v.to.rast.attr

v.out.ogr [r.out.ogr]

3

ด้วย QGIS ธรรมดาอาจเป็นเรื่องยากคุณอาจต้องใช้สคริปต์ที่กำหนดเองหรือใช้ฐานข้อมูลเชิงพื้นที่เช่น PostGIS หรือ Spatialite ฉันจะสร้างกริดจุดปกติด้วย PostGISหรือสร้างเป็นไฟล์ข้อความ CSV และนำเข้าสิ่งนี้ จากนั้นวาดวงกลมรอบจุดแต่ละจุดด้วย st_buffer หรือ rectangules ด้วย ST_MakeEnvelope และนับพื้นที่ที่ทับซ้อนกันทั้งหมดของบัฟเฟอร์แต่ละอัน จากนั้นคุณอาจต้องการลบค่า 0 ทั้งหมดถ้ามันหมายถึง "ไม่มีข้อมูล" ในที่สุดคุณสามารถทำแผนที่ความร้อนสำหรับตารางโดยใช้เขตข้อมูลตัวนับเป็นน้ำหนัก

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

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