Daugiau

QGIS apskaičiuoja pagrindinį daugiakampio dirvožemio tipą iš kito daugiakampio sluoksnio


Kurį laiką dirbau su qgis, bet kažkaip niekada to nepagalvojau, todėl pamaniau, kad laikas paklausti.

Turiu 2 formos failus.

  1. daugiakampio sluoksnis iš netoliese esančių laukų (SHAPE1 (raudoni kontūrai))
  2. daugiakampio sluoksnis, kurio daugiakampiai skiriasi nuo SHAPE1, turintis dirvožemio tipus (smėlis, molis ir kt.) (SOIL (funky disko spalvos, kiekviena spalva reiškia skirtingą dirvožemio tipą)

Aš noriu sužinoti, koks yra kiekvieno SHAPE1 daugiakampio pagrindinis dirvožemio tipas. (geriausia į SHAPE1 pridėjus lauką su atributu iš SOIL)

ar tai įmanoma?


Su SQL:

  • importuokite „SHAPE1“ ir „Soil layer“ į „spatiaLite“ (papildinys: QspatiaLite), tada vykdykite užklausą ir įkelkite kaip lentelę į QGIS.

SQL:

PASIRINKITE SHAPE1.plgnID kaip ID, Soils.soiltype Kaip dirvožemio tipą, MAX (PLOTAS (INTERSECTION (SHAPE1.geometry, Soils.geometry))) NUO SHAPE1, Dirvožemiai GRUPĖ PAGAL ID

... darant prielaidą, kad turime lauką su daugiakampio IDplgnIDsluoksnyje SHAPE1 ir laukądirvožemio tipassluoksniuotame dirvožemyje!

  • patikrinti rezultatą

  • prisijungti prie stalo SHAPE1

ps: Žinoma, jūs galėtumėte atlikti sankirtą, sujungti ir prisijungti vienu ypu su SQL - bet tokiems SQL beraštiams kaip aš aukščiau pateiktas požiūris yra daug skaidresnis;)


Turite sukurti erdvinį sujungimą. MMQGIS papildinys tai daro gana lengvai - MMQGIS -> Combine -> Spatial Join. Pamoka yra čia.