Làm cách nào để tạo bản đồ nhiệt hoặc Choropleth sử dụng đa giác trong QGis?


12

Tôi đã chơi xung quanh với plugin Heatmap cho QGIS và tôi tự hỏi liệu có thể tạo ra bản đồ nhiệt bằng cách sử dụng một plugin / công cụ tương tự sử dụng đa giác cũng như các điểm không?

Tôi muốn có được một đại diện về mật độ của dữ liệu theo cách tương tự như các plugin Heatmap làm với các điểm.

Hình ảnh sau đây là một bản phác thảo sơ bộ về kết quả mong muốn của tôi:

nhập mô tả hình ảnh ở đây


3
Bạn đã nghĩ đến việc tạo ra các khối u cho đa giác của mình và xây dựng sơ đồ nhiệt từ những đa giác đó chưa?
andytilia

1
Một số chi tiết về dữ liệu của bạn sẽ giúp. Đa giác thể hiện điều gì và chúng được phân phối như thế nào? Bạn có thể gửi một pic mẫu?
andytilia

@andytilia: Centroids không thể hiện chính xác mức độ bao phủ của đa giác. Các đa giác thể hiện việc sử dụng tài nguyên trong một khu vực 1200m2. Một số đa giác nhỏ xíu đại diện cho một miếng berry tốt và những cái khác thì to lớn bao phủ môi trường sống của caribou và nai. Tôi đã xem xét việc tạo lưới hình lục giác và sau đó đếm chồng chéo ... nhưng tôi gần như là một người không biết nên tôi không thể tìm thấy một hướng dẫn tốt mà tôi có thể hiểu về chủ đề đó.
NWT Adam

1
xem plugin bản đồ nhiệt của QGIS qgis.spatial Dùts.com / 2012/07 / từ
rkm

Các giá trị số có mang bất kỳ ý nghĩa nào cho bạn hay bạn chỉ đang tìm kiếm một hình ảnh đẹp / rõ ràng?
underdark

Câu trả lời:


5

Có lẽ bạn có thể tạo một tập hợp các điểm ngẫu nhiên vào đa giác của mình, có công cụ QGIS nào không? Nếu bạn có các đa giác chồng chéo, thì bạn có mật độ cao hơn trong khu vực này. Sau đó sử dụng bản đồ nhiệt cho các điểm. Bạn sẽ cần phải chạy vài vòng để tìm số điểm tối ưu, vì kết quả phụ thuộc vào điều đó.

Nếu dữ liệu của bạn cho thấy sự phân phối của một số môi trường sống, dù sao thì mờ, thì đây có thể là gần nhất với tình huống trong thế giới thực, nơi một điểm phản ánh xấp xỉ một mẫu vật.


1
+1 Ý tưởng tuyệt vời. Điều duy nhất tôi muốn thêm là Tham gia tại Vị trí với dữ liệu điểm và các hình lục giác, loại bỏ mọi tính năng không khớp và sau đó tạo điểm trong đó, vì vậy các điểm duy nhất của bạn sẽ không bị chìm trong số tất cả các điểm khác.
RomaH

Điều này dường như để cho kết quả tìm kiếm tốt nhất. Cảm ơn tất cả những người đã đưa ra giải pháp. Tôi cảm thấy tồi tệ khi đưa tiền thưởng cho chỉ một người vì dường như có một số giải pháp tốt!
NWT Adam

6

Nếu tôi hiểu chính xác câu hỏi của bạn, tôi đã làm một cái gì đó tương tự trước đây; chỉ cần nhớ những gì tôi đã làm.

Điều này sẽ hoạt động nếu polys của bạn chồng chéo VÀ không cùng lớp. Nếu chúng ở trên cùng một lớp và có thể, hãy di chuyển chúng sang các lớp riêng biệt, nếu bạn không lớp đích sẽ chỉ kế thừa một trong các giá trị.

Quá trình chính để sử dụng là các thuộc tính Tham gia theo vị trí trong menu Vector> Quản lý dữ liệu . Ở đây chỉ định trường lục giác của bạn là lớp đích và lớp tham gia là một trong các đa giác của bạn. Đặt tên cho lớp kết quả của bạn và đánh dấu vào nút radio cho Keep All Records .

Lớp kết quả phải là một bản sao của lớp lục giác của bạn với tất cả các ô giao nhau với lớp đa giác của bạn. Bây giờ, để sử dụng lớp kết quả cuối cùng của bạn làm lớp đích và tham gia lớp đa giác tiếp theo. Lấy lasyer kết quả và tham gia lớp tiếp theo của bạn cho đến khi bạn tham gia tất cả các lớp của bạn.

Lớp cuối cùng của bạn nên đã kế thừa tất cả các trường thuộc tính của các lớp trước đó và phần lớn có thể nói là NULL.

Đây là nơi chúng ta phải chơi trong một số can đảm của một shapefile, vì vậy nếu bạn không lưu lớp đó như một shapefile thì hãy làm ngay bây giờ. Và loại bỏ lớp khỏi không gian làm việc của bạn trong QGIS.

Mở các tệp * .dbf của shapefile trong OpenOffice Calc, KHÔNG sử dụng Excel. Nó sẽ đọc các tập tin và nó vô dụng, học được điều đó một cách khó khăn. Và không sắp xếp lại dữ liệu, nó cũng rất cụ thể theo thứ tự các hàng trong tệp. Kiểm tra để đảm bảo các NULL bây giờ là Zeros nếu không, thay thế chúng cẩn thận.

Bây giờ chèn shapefile vào QGIS và mở Bảng thuộc tính . Bây giờ nó sẽ hiển thị số không thay vì NULL. Sử dụng Máy tính trườngtính tổng các trường được thực hiện cho công việc của bạn trong một cột mới.

Bây giờ bạn có một trường tổng hợp sẽ hiển thị với mức độ chính xác các giá trị của tất cả các bộ sưu tập tính năng chồng lên trường mục tiêu. Bạn có thể sử dụng chức năng Symbology để tô màu cho đa giác của mình dựa trên giá trị của trường tổng của bạn để có bản đồ hợp xướng đẹp.

Nếu bạn muốn loại bỏ tất cả các trường không sử dụng trong tệp. Chỉ cần mở lại tệp dbf trong Calc và xóa các cột không mong muốn theo ý muốn. Cá nhân, tôi khuyên bạn nên học cách thoải mái đi vào một shapefile theo cách này như tôi thường làm.


Thật không may, tôi đã có hàng trăm đa giác chồng lên nhau trong cùng một lớp. Bạn có thể thấy một cách để giải quyết vấn đề này mà không tách chúng ra thành vài trăm lớp không?
NWT Adam

1
Bạn có thể tạo lớp phủ đa giác bằng PostGIS (nếu bạn sử dụng nó) để phá vỡ các polys chồng chéo của bạn. gis.stackexchange.com/questions/83/ (Một người nào đó có SQL-fu tốt hơn có thể giúp chúng tôi ở đây và làm thế nào để các polys kết quả kế thừa giá trị của chúng, tôi không giỏi lắm.
RomaH

1
Một lựa chọn khác, tôi cũng đề nghị mạnh mẽ, có lẽ đã đến lúc phải suy nghĩ lại cách tiếp cận chính xác của bạn đối với vấn đề của bạn. Dữ liệu nào bạn đang cố gắng lập bản đồ? Có một lý do để cho rằng giá trị sẽ là đồng nhất trong các đa giác? Đa giác chồng chéo có thực sự có hiệu ứng tích lũy? Trừ khi bạn có bằng chứng tốt để đề xuất những điều này, việc sử dụng bản đồ này cho bất kỳ loại mô hình dự đoán nào có thể nằm trên mặt đất rung chuyển. Chỉ cần suy nghĩ kỹ, bạn có thể có giải pháp chính xác nhưng bạn có thể khám phá ra một cách tốt hơn để mô hình hóa hoặc lập bản đồ.
RomaH

1
Cảm ơn đề xuất của PostGIS. Tôi sẽ xem xét nhưng tôi mới biết cách sử dụng PostGIS. Đối với việc đánh giá lại câu hỏi ... Tôi hiểu ý của bạn nhưng tôi không chắc làm thế nào khác tôi có thể hình dung những gì chúng ta đang cố gắng thể hiện. Dữ liệu của chúng tôi đại diện cho tất cả các lĩnh vực mà người cao tuổi trong cộng đồng và người sử dụng tài nguyên ánh xạ là hiệu quả hoặc quan trọng từ góc độ văn hóa. Chúng tôi hiểu rằng bản đồ giá trị không đồng nhất trong toàn bộ đa giác nhưng nó đủ gần với điểm mà chúng tôi muốn thể hiện với bản đồ.
NWT Adam

1
Đồng ý với bất kỳ hướng dẫn sử dụng nào trong qgis - đặc biệt là khi bạn bắt đầu giao dịch với // tấn // của shapefiles, bạn có thể sẽ ở một vị trí thực sự bực bội. Bạn sẽ không hối tiếc khi sử dụng SQL-fu của mình, có thể là với plugin postGIS hoặc plugin GRASS (xem câu trả lời của tôi dưới đây: gis.stackexchange.com/a/42188/7689 ).
egbutter

4

Đây là một quy trình làm việc chung sử dụng raster. Tôi không biết chi tiết cụ thể để hoàn thành nó trong QGIS.

  1. Sử dụng công cụ giao nhau để tạo một lớp vectơ mới của các khu vực chồng chéo đa giác
  2. Chuyển đổi các lớp vectơ của bạn, bao gồm cả lớp chồng lên nhau, thành các trình quét
  3. Sử dụng số học raster (có thể là bổ sung) để kết hợp các raster
  4. Kết quả phải là một raster trông giống như một bản đồ nhiệt

Giá trị Alpha / null và / hoặc độ trong suốt của lớp sẽ cho phép bạn phủ lớp raster trên bất kỳ sơ đồ cơ sở nào.


Sau khi đi qua dòng công việc này, tôi bị bỏ lại với một khối màu xám lớn bao phủ phạm vi của raster mới. Làm thế nào để tôi có được cái này trông giống như một bản đồ nhiệt?
NWT Adam

1
Có các giá trị khác nhau được gán cho các pixel trong raster cuối cùng không? Một vài suy nghĩ: Bạn có thể phải chỉ định độ phân giải tốt hơn (nhiều pixel hơn) khi tạo các trình quét; các raster nên có cùng kích thước và độ phân giải; bạn có thể cần phải kéo dài hoặc sửa đổi bản đồ màu của raster kết quả để hiển thị màu sáng hơn cho các giá trị lớn hơn.

Được rồi, tôi đã thiết lập bản đồ màu nhưng tôi chỉ nhận được hai màu xanh lam (giá trị 0) và giá trị đỏ (2) giá trị màu đỏ bao phủ khu vực của các lớp gốc vector và lớp chồng chéo của tôi. Tôi đoán rằng mỗi lớp được cho giá trị 1 thay vì mỗi đa giác khi chúng được raster. Sau đó, khi các raster được thêm vào, tổng giá trị bằng 2. Làm thế nào để có được các giá trị được duy trì / thêm ở cấp đa giác thay vì cấp lớp?
NWT Adam

raster độ phân giải tốt hơn sẽ giúp

Làm thế nào để tôi thực hiện một raster độ phân giải tốt hơn?
NWT Adam

4

Thay vào đó, hãy thử điều này, nếu nó phù hợp với yêu cầu của bạn, nó không phải là giải pháp tính toán cho tập dữ liệu nhưng nếu bạn đang tìm kiếm một giải pháp đồ họa thông thường, bạn có thể thử thay thế.

Tham gia các thuộc tính theo vị trí, với các ô theo chiều ngang của bạn làm mục tiêu và dữ liệu điểm của bạn làm liên kết. Chọn giữ tất cả các tính năng. Đặt ký hiệu cho các ô có giá trị được kế thừa thành màu mong muốn và đặt độ trong suốt ở mức 50%.

Sau đó, trên lớp của bạn với các polys hình tròn đặt biểu tượng của chúng thành cùng màu và trong suốt. Đặt poly hình tròn trước ô poly. Điều này sẽ tạo ảo giác về độ bão hòa tăng khi giá trị tăng.

Nếu bạn muốn, bạn cũng có thể trích xuất các dòng của tất cả các polys và lớp phủ trên đầu để các đường viền của lớp con không xuất hiện để được tô màu bởi các lớp khác.

Bạn sẽ phải chơi với màu sắc và độ trong suốt để tìm ra giải pháp tốt nhất. Tôi tìm thấy những màu sắc giống nhau trông tốt nhất nhưng thử nghiệm.


4

Tôi khuyên bạn nên sử dụng plugin GRASS - QGIS có chức năng khá hạn chế (và tại sao lại phát minh lại bánh xe trong python khi phần mềm như GRASS đã tồn tại?):

v.in.ogr.qgis

[hai dòng tiếp theo có thể cần thiết, tùy thuộc vào việc đa giác của bạn đã có giá trị chưa]

v.db.addcol 
v.db.update_const 

đây là nơi chúng ta cộng các phần trùng lặp trong đa giác sau đó tạo raster dựa trên các cột đó

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

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

3

Với QGIS đơn giản, nó có thể khó, bạn có thể cần tập lệnh tùy chỉnh hoặc sử dụng cơ sở dữ liệu không gian như PostGIS hoặc Spatialite. Tôi sẽ tạo lưới điểm thông thường với PostGIS hoặc tạo dưới dạng tệp văn bản CSV và nhập tệp này. Sau đó vẽ vòng tròn xung quanh mỗi điểm bằng st_buffer hoặc hình chữ nhật với ST_MakeEn phong bì và đếm tất cả các khu vực chồng lấp của mỗi bộ đệm. Sau đó, bạn có thể muốn xóa tất cả 0 giá trị, nếu nó có nghĩa là "không có dữ liệu". Cuối cùng, bạn có thể thực hiện bản đồ nhiệt cho lưới, sử dụng bộ đếm làm trường Trọng lượng.

Bạn cần thử nghiệm với các độ phân giải lưới khác nhau để tìm ra độ phân giải tối ưu. Về bản chất, nó rất giống với phương pháp raster do Kevin đề xuất, chỉ ở trong thế giới vectơ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.