Złączenie przestrzenne w QGIS: po lokalizacji lub odległości
Opublikowano

Złączenie przestrzenne kopiuje pola z jednej warstwy do drugiej na podstawie położenia obiektów, a nie wspólnego identyfikatora. W QGIS otwórz Vector > Data Management Tools > Join Attributes by Location…, wskaż warstwę, która ma dostać nowe pola, warstwę, z której je weźmiesz, i regułę, np. „intersect”, a potem uruchom narzędzie. Gdy pytasz „który jest najbliżej”, użyj Join Attributes by Nearest albo opisz całe zadanie jednym zdaniem w AI Agent.
| Co chcesz zrobić | Narzędzie | Czas w naszym teście |
|---|---|---|
| Nadać każdemu punktowi nazwę obszaru, w którym leży | Join Attributes by Location | 0,21 s, 382 szkoły |
| To samo, opisane jednym zdaniem | AI Agent | 22 s, zliczanie i najbliższy obiekt naraz |
| Zliczyć lub zsumować punkty w obszarach | Join Attributes by Location (Summary) | 0,02 s, 9 obszarów |
| Znaleźć najbliższy obiekt i odległość do niego | Join Attributes by Nearest | 0,06 s, 382 szkoły |
Dane testowe
Każda liczba w tym poradniku pochodzi z jednego przebiegu na prawdziwych otwartych danych z Lyonu we Francji, wykonanego 15 października 2026 roku:
- 9 dzielnic (arrondissements) i 382 szkoły z OpenStreetMap.
- 106 przystanków tramwajowych z OpenStreetMap.
- 103 910 budynków z IGN BD TOPO, francuskiej krajowej bazy danych topograficznych.
Wszystkie warstwy są w układzie Lambert-93 (EPSG:2154), czyli w układzie rzutowanym w metrach. Czasy pochodzą z QGIS 3.44 na MacBooku Air M4.
Metoda 1: Join attributes by location
To klasyczne złączenie przestrzenne. Tutaj każda szkoła dostaje nazwę swojej dzielnicy.
Otwórz narzędzie
Vector > Data Management Tools > Join Attributes by Location…. Możesz też wpisać „join attributes” w Przyborniku Processing (Ctrl+Alt+T).
Wybierz dwie warstwy
Join to features in to warstwa, która dostaje nowe pola, tutaj schools. By comparing to to warstwa, z której je bierzesz, tutaj arrondissements.
Zaznacz predykat
intersect to bezpieczna wartość domyślna dla punktów w poligonach. Sekcja poniżej pokazuje, co znaczy każde pole.
Wybierz pola i typ złączenia
W Fields to add zostaw tylko to, czego potrzebujesz, tutaj name. Ustaw Join type na jeden do jednego i dodaj prefiks, np. arr_, żeby nowe pole łatwo było znaleźć.
Uruchom
Zostaw Joined layer jako warstwę tymczasową, żeby najpierw sprawdzić wynik, a potem zapisz ją jako GeoPackage.

Zaznacz Discard records which could not be joined tylko wtedy, gdy chcesz usunąć nieudane dopasowania. Na początku zostaw to pole puste: puste wiersze pokażą, co poszło nie tak.
Użyj, gdy: chcesz jedno lub kilka pól z obiektu, w którym leży albo który dotyka każdy z twoich obiektów.
Pomiń, gdy: obiekty nigdy się nie stykają, jak szkoła i przystanek tramwajowy. To Metoda 4.
Metoda 2: Zapytaj AI Agent jednym zdaniem
AI Agent to nasza wtyczka do QGIS, która wykonuje zadania z wpisanego polecenia. Czyta nazwy warstw i pól, wybiera narzędzia i uruchamia je w twoim projekcie.
Wpisaliśmy to (po angielsku, z tymi samymi warstwami Lyonu):
Count the schools in each arrondissement, then give every school the name of its nearest tram stop and the distance to it in metres.
Agent uruchomił dwa narzędzia przetwarzania QGIS, a potem krótki krok w Pythonie, który zapisał dwa nowe pola w warstwie szkół. Panel pokazał „Worked for 22 s”. Raz poprosił o zgodę, bo zamierzał edytować plik GeoPackage na dysku. Jego wyniki zgadzały się dokładnie z naszym przebiegiem ręcznym: 382 szkoły, od 27 w 2. i 4. dzielnicy do 56 w 5.

Użyj, gdy: znasz pytanie, ale nie wiesz, które z czterech narzędzi złączenia na nie odpowiada, albo łączysz kilka kroków.
Pomiń, gdy: to samo złączenie robisz co tydzień. Zapisz je raz jako model albo skrypt w Pythonie.
Cena: darmowy plan, bez karty. Pro kosztuje 49 € miesięcznie netto, bez VAT.
Metoda 3: Zliczanie i podsumowania w złączeniu przestrzennym
Metoda 1 daje każdej szkole jej dzielnicę. Odwrotne pytanie, ile szkół jest w każdej dzielnicy, wymaga wersji z podsumowaniem.
Wyszukaj Join attributes by location (summary) w Przyborniku Processing. Wstaw poligony do Join to features in, punkty do By comparing to i wybierz statystyki w Summaries to calculate: liczba, suma, średnia, mediana, minimum, maksimum i inne. QGIS dodaje jedno pole na statystykę, nazwane np. osm_id_count.

Narzędzie sumuje też liczby. Na budynkach IGN jeden przebieg dał każdej dzielnicy liczbę budynków i zapisanych w nich mieszkań: 9 474 budynki i 51 743 mieszkania w 3. dzielnicy, największej pod obydwoma względami.
Do zwykłego zliczania Vector > Analysis Tools > Count Points in Polygon… robi to samo, z mniejszą liczbą ustawień.
Użyj, gdy: odpowiedzią jest liczba na obszar: ilość, suma, średnia.
Pomiń, gdy: potrzebujesz samej listy dopasowań. Użyj Metody 1 z typem jeden do wielu.
Metoda 4: Join attributes by nearest
Gdy obiekty nigdy się nie stykają, połącz je według odległości. Wyszukaj Join attributes by nearest w Przyborniku Processing.
Ustaw Input layer na schools, Input layer 2 na tram_stops, a Maximum nearest neighbors na 1. QGIS dodaje pola przystanku oraz pole distance i współrzędne obu końców.

Wynik zmieniają dwa ustawienia:
- Maximum distance. Przy 300 m tylko 86 szkół dostało przystanek. Pozostałe 296 zostało w wyniku z pustymi polami, chyba że zaznaczysz Discard records which could not be joined.
- Maximum nearest neighbors. Przy 3 z 382 szkół zrobiło się 1 146 wierszy, po jednym na szkołę i przystanek. Dokładny remis też dodaje wiersz: na 103 910 budynkach IGN dostaliśmy 103 911 wierszy.
Odległość jest liczona w linii prostej, a nie jako droga pieszo ulicami.
Użyj, gdy: pytasz „który jest najbliżej” i „jak daleko”.
Pomiń, gdy: potrzebujesz odległości dojazdu. Użyj narzędzi Network analysis z Przybornika Processing.
Który predykat zaznaczyć
Predykat to reguła przestrzenna, która decyduje o dopasowaniu. QGIS czyta ją jako „warstwa A [predykat] warstwa B”, gdzie A to warstwa, która dostaje pola.

Trzy reguły wystarczają do większości prac:
- intersect dla punktów w poligonach i dla wszystkiego, co musi tylko się stykać. Łapie też obiekty na granicy.
- are within, gdy obiekt musi leżeć w całości wewnątrz. Spośród naszych budynków przecinających Lyon 112 nie leżało w całości w jednej dzielnicy: 108 przekracza granicę miasta, a 4 granicę wewnętrzną.
- contain dla kierunku odwrotnego, czyli poligonów, które zawierają punkty.
Możesz zaznaczyć kilka pól. Obiekt pasuje wtedy, jeśli spełniony jest którykolwiek z warunków.
Jeden do jednego, jeden do wielu albo największe pokrycie
Budynek na granicy dotyka dwóch dzielnic. O jego losie decyduje Join type. Na 46 250 budynkach IGN, które przecinają Lyon:
| Typ złączenia | Wierszy w wyniku | Czas |
|---|---|---|
| Jeden do wielu (obiekt na każde dopasowanie) | 46 254 | 1,13 s |
| Tylko pierwszy pasujący obiekt (jeden do jednego) | 46 250 | 0,99 s |
| Tylko największe pokrycie (jeden do jednego) | 46 250 | 9,62 s |
Typ jeden do wielu zdublował 4 budynki leżące na granicy wewnętrznej. To dobre dla listy dopasowań i złe dla każdej sumy: te budynki zostałyby policzone dwa razy.
„Pierwszy pasujący” zachowuje to dopasowanie, które QGIS napotka jako pierwsze, więc budynek na granicy może trafić do którejkolwiek dzielnicy. „Największe pokrycie” wybiera dzielnicę, w której leży większa część budynku, i to jest uczciwa odpowiedź, ale tutaj trwało dziesięć razy dłużej.
Pułapki CRS
Zły układ współrzędnych (CRS) rzadko zatrzymuje złączenie. Po cichu zmienia wynik.
- Mieszane CRS działają przy złączeniach według położenia. Zostawiliśmy szkoły w WGS 84 (EPSG:4326), a dzielnice w Lambert-93. QGIS przeliczył układy w locie i wszystkie 382 się dopasowały.
- Odległości zależą od jednostek warstwy wejściowej. Uruchom Join by nearest na plikach w WGS 84, a mediana „distance” wyjdzie 0,0071. To są stopnie, nie metry. Najpierw przeprojektuj obie warstwy do układu rzutowanego w metrach, przez
Vector > Data Management Tools > Reproject Layer…. - Maximum distance używa tych samych jednostek. Wartość 300 w stopniach obejmuje całą planetę.
Nasz poradnik o tym, czym jest układ współrzędnych (CRS), wyjaśnia stopnie i metry oraz to, jak naprawić warstwę, która leży w złym miejscu.
Szybkość na dużych warstwach
QGIS wykonuje złączenia w skali miasta w kilka sekund. Na 103 910 budynkach IGN:
- Złączenie jeden do jednego z 9 dzielnicami: 0,97 s z GeoPackage.
- Ta sama warstwa jako Shapefile: 1,69 s. Po
Vector > Data Management Tools > Create Spatial Index…1,04 s. - Najbliższy przystanek tramwajowy dla każdego budynku: 3,5 s.
- Największe pokrycie: 9,62 s, najwolniejsza opcja.
Cztery nawyki utrzymują szybkość dużych złączeń:
- Pracuj na GeoPackage. Ma indeks przestrzenny. Shapefile potrzebuje pliku
.qix, który zapisuje Create Spatial Index. - Proś o mniej pól. Wypełnij Fields to add zamiast kopiować wszystko.
- Unikaj największego pokrycia, chyba że obiekty na granicy naprawdę mają znaczenie.
- Najpierw napraw geometrie. Niepoprawny poligon zatrzymuje przebieg z komunikatem „has invalid geometry”. Narzędzie Fix geometries w Przyborniku Processing go naprawia. Możesz też zmienić Invalid feature filtering pod ikoną klucza obok warstwy wejściowej.
Sprawdź też, gdzie leżą twoje punkty. Tylko 211 z 382 punktów szkół wpadło do budynku IGN. Reszta oznacza boiska i dziedzińce, więc warunek „szkoła wewnątrz budynku” pominąłby 171 szkół.
Co zapamiętać
Użyj Join Attributes by Location z intersect, żeby nadać punktom nazwę ich obszaru.
Użyj wersji Summary, żeby zliczać lub sumować w obszarach, a Join Attributes by Nearest, żeby znaleźć najbliższy obiekt i odległość do niego.
Wybierz jeden do jednego dla sum, a jeden do wielu, gdy potrzebujesz każdego dopasowania.
Przed każdą odległością przeprojektuj dane do CRS w metrach.
Jeśli nie wiesz, które narzędzie pasuje, opisz wynik, którego chcesz, w AI Agent i sprawdź, co zbudował.
Najczęstsze pytania
Czym jest złączenie przestrzenne w QGIS?
Złączenie przestrzenne dodaje pola jednej warstwy do drugiej na podstawie położenia: wewnątrz, stykanie się albo najbliższy obiekt. W QGIS główne narzędzia to Join Attributes by Location, jego wersja Summary do zliczania i statystyk oraz Join Attributes by Nearest do odległości.
Jak dołączyć atrybuty według położenia w QGIS?
Otwórz Vector > Data Management Tools > Join Attributes by Location…. Ustaw warstwę, która dostaje pola, w Join to features in, a warstwę źródłową w By comparing to, zaznacz intersect, wybierz pola i typ złączenia jeden do jednego, a potem uruchom narzędzie.
Czym różni się złączenie według położenia od złączenia najbliższego sąsiada?
Złączenie według położenia wymaga, żeby obiekty się stykały lub nakładały, zgodnie z zaznaczonym predykatem. Złączenie najbliższego sąsiada nie wymaga kontaktu: znajduje najbliższy obiekt i dodaje pole odległości, w jednostkach CRS warstwy wejściowej.
Dlaczego moje złączenie przestrzenne zwraca puste pola?
Zwykle obiekty nie spełniają predykatu: punkty leżą tuż poza poligonami, predykat jest zbyt ostry, np. „are within”, albo geometrie są niepoprawne. Sprawdź obie warstwy na mapie, spróbuj „intersect” i uruchom Fix Geometries. Brak CRS w jednej z warstw też przesuwa ją w złe miejsce.
Czy AI może zrobić złączenie przestrzenne w QGIS?
Tak. AI Agent uruchamia narzędzia QGIS na podstawie wpisanego polecenia. W naszym teście z Lyonem wykonał zliczanie na dzielnicę i złączenie z najbliższym obiektem z jednego zdania w 22 sekundy, z takimi samymi wynikami jak przebieg ręczny.
otwórz 

