To świetne pytanie, musiałem ostatnio zrobić coś podobnego, ale ze znacznie mniejszym zestawem danych, więc mogłem użyć prostego skrzyżowania z dodatkowym sprawdzeniem jakości wizualnej i było dobrze.
Ale oto pomysł na to, chociaż nie mam kodu, i jest to dość duży proces. Zdecydowanie najpierw przetestuj próbkę z pełnego zestawu danych. Prawdopodobnie możesz tu znaleźć jakiś użyteczny kod. (Wcięcie stało się trochę dziwne poniżej.):
weź dobry zestaw geometrii (gdzie chcesz, aby atrybuty się skończyły) i utwórz jego bufor *
iteruj przez każdą z funkcji bufora:
2a. obliczyć ogólną orientację funkcji (max_y - min_y / max_x - min_x lub coś takiego)
2b. wybierz zapytanie według lokalizacji na drugiej warstwie przy użyciu tej pojedynczej funkcji
będziesz mieć więcej niż jedną funkcję, która odpowiada wybranemu zapytaniu o lokalizację, więc iteruj te wybrane funkcje i oblicz orientację każdej z nich
pobierz atrybuty z dowolnej funkcji, która ma orientację najbliższą funkcji bufora.
* Zaczynam od bardzo małej odległości (jedna jednostka mapy lub coś takiego), a następnie uruchamiam ten proces ze zwiększającymi się odległościami, uważając, aby nie zastąpić żadnych atrybutów, które już przesłałeś.
** Prawdopodobnie mógłbyś zrezygnować z tworzenia funkcji bufora i po prostu wykonać zapytanie wyboru według lokalizacji z odległością bufora. Nie znam się dobrze na QGIS, ale jestem pewien, że będziesz w stanie to zrobić.
Nie ma sposobu, aby działało to idealnie dla wszystkich twoich funkcji, ale to dopiero początek, a następnie sprowadza się do opracowania dobrej strategii kontroli jakości / kontroli jakości w celu sprawdzenia i zakończenia transferu.
EDYTUJ Rozmyślając o tym więcej, oto podstawowy przykład, który całkowicie zepsułby system, jeśli zaczynasz od bardzo małej odległości bufora i wybrałeś funkcję o najlepszej dopasowanej orientacji, tak jak zalecałem:
Zostaną pobrane atrybuty z niewłaściwej czerwonej linii. Aby tego uniknąć, możesz stworzyć pewien rodzaj tolerancji i brać atrybuty elementu tylko wtedy, gdy jego orientacja (w porównaniu z orientacją oryginalnego niebieskiego elementu) mieści się w tej tolerancji.
EDYCJA 2 Ups, czy to te wielokąty? Chyba właśnie założyłem, że były to linie na szarym tle. Jeśli są to wielokąty, tak naprawdę nie wiem, czy ta koncepcja orientacji jest dobra. Możesz jednak wybrać wszystkie przecinające się obiekty i dowiedzieć się, które najbardziej się pokrywają (uruchom narzędzie typu Unia, a następnie użyj wielokąta o największym obszarze ...).