Bawiłem się wtyczką Heatmap dla QGIS i zastanawiam się, czy można zrobić Heatmap za pomocą podobnej wtyczki / narzędzia, które używa wielokątów, a także punktów?
Chciałbym uzyskać reprezentację gęstości danych w taki sam sposób, jak wtyczka heatmap robi z punktami.
Poniższy obraz jest przybliżonym szkicem mojego pożądanego rezultatu:
Odpowiedzi:
Może możesz wygenerować zestaw losowych punktów w swoich wielokątach, istnieje na to narzędzie QGIS ? Jeśli masz zachodzące na siebie wielokąty, masz ich większą gęstość w tym obszarze. Następnie użyj punktów Heatmap dla punktów. Musisz znaleźć kilka rund, aby znaleźć optymalną liczbę punktów, ponieważ wynik zależy od tego.
Jeśli twoje dane pokazują rozmieszczenie niektórych siedlisk, które i tak jest rozmyte, może to być najbliższe rzeczywistej sytuacji, w której jeden punkt odzwierciedla w przybliżeniu jeden okaz.
źródło
Jeśli dobrze rozumiem twoje pytanie, zrobiłem wcześniej coś podobnego; musiałem tylko pamiętać, co zrobiłem.
Działa to, jeśli twoje polisy zachodzą na siebie ORAZ nie na tej samej warstwie. Jeśli znajdują się na tej samej warstwie i jest to możliwe, przenieś je na osobne warstwy, jeśli nie, warstwa docelowa odziedziczy jedną z wartości.
Kluczowym procesem do zastosowania jest połączenie atrybutów według lokalizacji w menu Wektor> Zarządzanie danymi . Tutaj określ pole heksagonalne jako warstwę docelową, a warstwę łączenia jako jeden z twoich wielokątów. Nazwij powstałą warstwę i zaznacz przycisk opcji Zachowaj wszystkie rekordy .
Powstała warstwa powinna być kopią twojej heksagonalnej warstwy ze wszystkimi komórkami, które przecięły twoją warstwę wielokąta. Teraz do interakcji użyj ostatniej wynikowej warstwy jako warstwy docelowej i dołącz do następnej warstwy wielokąta. Weź powstały lasyer i dołącz do następnej warstwy, aż dołączysz do wszystkich warstw.
Ostatnia warstwa powinna odziedziczyć wszystkie pola atrybutów poprzednich warstw, a znaczna część z nich może mieć wartość NULL.
Tutaj musimy zagrać w niektóre wnętrzności pliku kształtu, więc jeśli nie zapisałeś warstwy jako pliku kształtu, zrób to teraz. I usuń warstwę z obszaru roboczego w QGIS.
Otwórz pliki * .dbf pliku shapefile w OpenOffice Calc, NIE używaj programu Excel. Zniszczy plik i będzie bezużyteczny, nauczyłem się tego na własnej skórze. Nie zmieniaj kolejności danych, jest to również bardzo określone w kolejności wierszy w pliku. Sprawdź, czy NULL są teraz zerami, jeśli nie są, wymień je ostrożnie.
Teraz włóż plik kształtu do QGIS i otwórz tabelę atrybutów . Powinien teraz pokazywać zera zamiast NULL. Skorzystaj z Kalkulatora pola i zsumuj pola, które są dostosowane do pracy w nowej kolumnie.
Teraz masz pole sumowane, które powinno pokazywać z pewnym stopniem dokładności wartości wszystkich kolekcji obiektów pokrywających się z polem docelowym. Możesz użyć funkcji Symbology, aby pokolorować swoje wielokąty w oparciu o wartość zsumowanego pola dla ładnej mapy choropleth.
Jeśli chcesz pozbyć się wszystkich nieużywanych pól w pliku. Po prostu otwórz plik dbf ponownie w Calc i usuń niechciane kolumny do woli. Osobiście radziłbym, aby nauczyć się, jak w ten sposób wygodnie tworzyć plik kształtu, ponieważ często to robię.
źródło
Jest to ogólny przepływ pracy przy użyciu rastrów. Nie znam szczegółów, aby to osiągnąć w QGIS.
Wartości alfa / null i / lub przezroczystość warstwy pozwolą na nałożenie rastra na dowolną mapę bazową.
źródło
Wypróbuj to zamiast tego, jeśli pasuje do twoich wymagań, nie jest to rozwiązanie obliczeniowe dla zestawu danych, ale jeśli szukasz po prostu rozwiązania infograficznego, możesz spróbować zamiast tego.
Połącz atrybuty według lokalizacji, z heaksgonalnymi komórkami jako celem, a danymi punktów jako złączeniem. Wybierz, aby zachować wszystkie funkcje. Ustaw symbol na komórki z odziedziczoną wartością na pożądany kolor i ustaw przezroczystość na około 50%.
Następnie na warstwie z polami koła ustaw ich symbolikę na ten sam kolor i przezroczystość. Umieść kółko poli przed ogniwem poli. To da iluzję zwiększonego nasycenia wraz ze wzrostem wartości.
Jeśli chcesz, możesz również wyodrębnić linie wszystkich polis i nakładkę na górze, aby kontury podwarstwy nie były pokolorowane przez inne warstwy.
Będziesz musiał bawić się kolorami i przezroczystością, aby znaleźć najlepsze rozwiązanie. Uważam, że te same kolory wyglądają najlepiej, ale eksperymentują.
źródło
Sugeruję użycie wtyczki GRASS - QGIS ma dość ograniczoną funkcjonalność (i po co wymyślać koło w pythonie, skoro oprogramowanie takie jak GRASS już istnieje?):
[następne dwa wiersze mogą być konieczne, w zależności od tego, czy wielokąty mają już wartość]
w tym miejscu sumujemy nakładanie się wielokątów, a następnie tworzymy raster na podstawie tych kolumn
źródło
W zwykłym QGIS może to być trudne, możesz potrzebować niestandardowego skryptu lub użyć przestrzennej bazy danych, takiej jak PostGIS lub Spatialite. Chciałbym utworzyć regularną siatkę punktów za pomocą PostGIS lub wygenerować jako plik tekstowy CSV i zaimportować to. Następnie narysuj okrąg wokół każdego punktu za pomocą st_buffer lub prostokątów za pomocą ST_MakeEnvelope i policz wszystkie nakładające się obszary każdego bufora. Następnie prawdopodobnie chcesz usunąć wszystkie wartości 0, jeśli oznacza to „brak danych”. Na koniec możesz wykonać mapę cieplną dla siatki, używając licznika jako pola Ciężar.
Musisz eksperymentować z różnymi rozdzielczościami siatki, aby znaleźć optymalną. Zasadniczo jest bardzo podobny do podejścia rastrowego sugerowanego przez Kevina, po prostu pozostając w świecie wektorowym.
źródło