Projektujesz atrybut z jednej warstwy wielokąta na drugą w QGIS?

16

Mam 2 warstwy wielokątów, które można znaleźć tutaj . Dwie warstwy nachodzą na siebie. Pierwszy zawiera mapę powiatów niemieckich w 1928 r., A drugi powiaty w 2014 r.

Warstwa 2014 zawiera informacje o populacji (zwane Bev w zbiorze danych). Czy można rzutować atrybut populacji z jednej warstwy wielokąta na drugą?

Aby być bardziej szczegółowym:

Rozważmy sytuację, w której mam 2 powiaty w warstwie z atrybutem populacji, ale w tym samym obszarze na drugiej warstwie jest tylko 1 powiat. Czy QGIS może agregować populację dwóch powiatów i zapisywać te informacje w drugiej warstwie?

Jeśli to zadziała, czy istnieje sposób, aby to zrobić, gdy warstwa z informacją ma w danym obszarze tylko 1 powiat, ale w drugiej warstwie są 2 hrabstwa? W tym przypadku chciałbym podzielić populację proporcjonalnie do wielkości powiatu.

Alex
źródło
Ta odpowiedź powinna zacząć od ogólnego przepływu pracy: gis.stackexchange.com/a/136820/10919
Tom
myślę, że powyższy link jest dobrym punktem wyjścia - ale (!) oznacza, że ​​populacja jest równomiernie rozmieszczona w obrębie dotkniętych wielokątów. co nie jest faktem
Robert Tuw
2
... przepraszam, przekroczyłem limit 5 minut. do kontynuacji: a jeśli porównasz oba pliki kształtów, istnieje znacząca różnica w poziomie szczegółowości - co powoduje, że mnóstwo wielokątów taśmy ... spójrz na [link] ( dropbox.com/sh/7w97kjey33k7jdi/ AAARDwyyMryOBwjtY6IrFsh9a? Dl = 0 ). gdybyś miał jakieś informacje o osiedlonym terenie w tym czasie, wyniki mogłyby zostać znacznie poprawione
Robert Tuw
... np. bezpłatne dane dotyczące lądowych roślin morskich mogą pomóc w identyfikacji obecnie ustalonego obszaru, a tym samym poprawić wyniki przydziału populacji na podstawie powierzchni.
Robert Tuw

Odpowiedzi:

8

Zrzeczenie się:

  1. Uważam, że w tym konkretnym przypadku znacznie dokładniejsze byłoby wykorzystanie danych o ludności z 2014 r. Jako warstwy punktowej z możliwie największą liczbą szczegółów (centroid przedmieść, miast, wsi ...)

  2. Jeśli BEV_ jest naprawdę populacją, istnieją naprawdę dziwne wartości, takie jak GEN = Uelzen, BEV_ = 92553, gdzie ten wielokąt jest porównywany z obszarem satelitarnym Google wielkości błota o wielkości maksymalnie kilku boisk piłkarskich.

Jeśli naprawdę chcesz uzyskać wartości liczbowe na podstawie stosunku powierzchni wieloboku pokrywającego się między warstwami (L1 = hrabstwa_2014, L2 = imperium niemieckie 1928):

  1. Przed wszelkimi obliczeniami sugeruję stosowanie rzutowanych układów współrzędnych w jednostkach metrowych, odpowiednio jednostkach kwadratowych dla powierzchni. W tym przypadku użyłem EPSG: 3857
  2. W L1 użyj Kalkulatora pola , utwórz kolumnę „ Obszar ” i wypełnij $ area
  3. Przecinaj warstwy - Wektor / Narzędzia geoprzetwarzania / Przecinaj ... - Wejście = L1, Przecięcie = L2
  4. W Warstwie przecinającej użyj Kalkulatora pola , utwórz kolumnę dla populacji skorygowaną o nowy obszar „ PopArea ” i wypełnij pole „Populacja” * $ area / „Area”
  5. Rozpuść przecinającą się warstwę za pomocą Przybornika przetwarzania - znajdź Rozpuszczone wielokąty
    • wybierz unikalną kolumnę wartości wielokąta, taką jak „Nazwa” z L2
    • zaznacz Oblicz Comp / min / max / sum ... i oblicz to na „ PopArea
    • ostatnia warstwa będzie miała kolumnę sum_diss, której szukasz (w tym konkretnym przypadku skorygowana populacja dla 1928 hrabstw od 2014 r.)

Jeśli dobrze sobie poradzisz, powinieneś zdobyć około 77 milionów ludzi w oparciu o obszar powiatów L2 z 81 milionów w L1.

wprowadź opis zdjęcia tutaj

Miro
źródło
Dziękuję za odpowiedź. Jeśli chodzi o pierwsze dwa punkty: starałem się również osiągnąć to, czego chcę za pomocą centroidów. Działa całkiem dobrze, ale zwłaszcza w przypadku mniejszych wielokątów dopasowanie nie działa zbyt dobrze. Myślę, że dane dotyczące populacji w jakiś sposób się pomieszały. Ale to tylko niewielki problem, który sam mogę rozwiązać.
Alex
@Alex Uważam, że użycie punktów lub centroidów w tym przypadku jest z mojego punktu widzenia zbyt dalekie od rozwiązania, które nazwałbym wystarczającym z powodu bardzo przypadkowego nakładania się. W ten sposób stracisz zbyt dużo danych.
Miro
9

Jeśli dobrze rozumiem twoje pytanie, może to rozwiązać twoje pierwsze pytanie. Zrobiłem szybki test i wydaje się, że następująca metoda działa, ale warto przyjrzeć się bliżej, aby sprawdzić, czy jest poprawna.

  1. tworzyć losowe punkty na warstwie 1928 (centroidy mogą działać lepiej. Będziesz musiał sprawdzić);
  2. przecinają warstwę punktów z warstwą 2014 (warstwa punktów powinna być warstwą wejściową);
  3. Połącz atrybuty według lokalizacji. Warstwa docelowa to warstwa 2014, a warstwa punktów to warstwa łączenia. Użyj zawiera jako predykat geometryczny. Pozostaw podsumowanie atrybutów jako domyślne (pierwsza zlokalizowana funkcja). Zachowaj wszystkie rekordy w polu rozwijanym Dołącz do tabeli.

Sprawdź, czy warstwa wyjściowa jest poprawna.

Jeśli to możliwe, uruchom go za pomocą przybornika przetwarzania w qgis (nie musisz zapisywać każdej warstwy, ale zamiast tego zapisać ją jako warstwę tymczasową).

Nie jestem pewien, co pociąga za sobą twoje drugie pytanie. czy mógłbyś opracować?

PyMapr
źródło