Jestem nowicjuszem, przepraszam, jeśli to oczywiste / został już zapytany i odpowiedział, ale nic nie mogłem znaleźć.
Mam dwa kształty: 1. administracyjna warstwa graniczna dla hrabstwa w Wielkiej Brytanii znana jako granica LSOA, która ma 500 małych stref 2. strefa powodziowa.
Idealnie chcę dowiedzieć się, które z małych stref LSOA znajdują się w ≥50% w strefie powodziowej i kończą na tak / nie lub 1/0 dla każdej z 500 stref LSOA.
Ale nie wiem jak to zrobić. Pomyślałem, że mogę dołączyć do dwóch plików kształtów, ale nie ma między nimi wspólnej cechy. Potem pomyślałem, że mogę użyć funkcji Dołącz atrybut według lokalizacji, która działała i pokazuje mi, które LSOA znajdują się w strefie powodzi, ale to prawie wszystkie z nich (patrz zdjęcie 2).
Myślę, że to jest problem SQL, ale nie wiem. Jestem nowy w QGIS i nigdy nie korzystałem z PostgreSQL.
Każda pomoc byłaby bardzo mile widziana. Mogę podać wszelkie informacje, których potrzebujesz, aby mi pomóc.
źródło
Vector > Research Tools > Vector Grid... Output grid as polygons
), a następnie przecinaj siatkę z warstwą powodziową. Następnie użyj danych wyjściowych zamiast warstwy powodziowej w kroku 3. Zgaduję, że przyczyną pustej warstwy jest to, że się zawiesiła.Możesz użyć funkcji spatialite i niektórych przestrzennych funkcji SQL.
źródło
Wydaje się, że można to zrobić o wiele łatwiej niż odpowiedzi. Osobiście użyłbym prostego skryptu python:
ocenia to tylko wielokąty zalewowe, które przecinają się z obwiednią każdej warstwy granicznej, więc uruchomienie powinno być dość szybkie, a następnie aktualizuje tylko jedno pole w istniejącej warstwie (zamiast złożonej operacji tworzenia całej nowej warstwy i kopiowania starych wartości następnie usuwanie)
źródło
Miałem ten sam problem, co KJ, postępując zgodnie z instrukcjami Snorfalorpagusa przy użyciu metody „Przecięcie” w kroku 3. Obliczenie zajęło trochę czasu, a to, co mi pozostało, było puste.
Próbowałem wykonać te same kroki, z wyjątkiem użycia metody „Klip” w QGIS zamiast przecinania - tak więc w twoim przykładzie pozostałyby części obszarów, które NIE są objęte strefą powodzi. Wydawało się, że to działa z jakiegoś powodu i mogłem skorzystać z obliczenia pola „Obszar” z poprzedniego kroku, a także nowego obliczenia „Obszar” dla pozostałych części każdego wielokąta, aby obliczyć% każdego obszaru, który NIE był pokryty drugą warstwą wielokąta.
Technicznie jest to odwrotność tego, o co prosiłeś. Ale stamtąd to tylko kwestia odjęcie każdą wartość od 1 do dostać to, co jest objęte strefą przeciwpowodziowej.
źródło