Pietinių šlaitų proekcijos poligonų paieška

12 views
Skip to first unread message

Giedrius Vaivilavičius

unread,
Jan 31, 2023, 12:54:04 PM1/31/23
to qgi...@googlegroups.com
Sveiki,

Susiduriu su galvosūkiu. Atleiskite jei tai labai paprasta, bet googlas kažkaip skurdžiai apie tai kalba, arba aš nežinau ko ieškau :)

Užduotis surasti pietinius šlaitus atvirose vietovėse ir ant jų nubraižyti poligonus. Žinoma pakaktų ir linijų, kurias galėčiau apjungti įvairiais būdais.

Kol kas šauna viena mintis:

1. Pasidarau izolinijas iš SEŽP, kaip kad rašė Tomas savo nuostabiame poste https://qgis.lt/straipsniai/izoliniju_kurimas/
2. Gautas izolinijų kontūrus sujungiu į poligonus ir pakreipiu poligono kontūrą pagal laikrodžio rodyklę ST_IsPolygonCW(geom)
3. Paskui padarau taškus iš poligonų su clockwise atributika (ST_DumpPoints(geom)).geom
4. Taškus apjungiu į linijas su clockwise atributika ir suskirstau pagal paskiausią ST_MakeLine((geom), lead((geom),1)
OVER (PARTITION BY id ))
5. Gavęs linijas paskaičiuoju azimutą degrees(ST_Azimuth(ST_StartPoint(geom), ST_endPoint(geom)))
6. Gavęs linijų atkarpas su azimutu galiu suskirstyti linijas pagal projekciją ir iš čia padaręs atranką gaunu linijas kurios turi pietinės projekcijos azimutą:

CASE
WHEN ( "clockwise" = 'true' ) and ( "azimutas" >=0 and "azimutas" <=45) THEN 'V-ŠV'
WHEN ( "clockwise" = 'true' ) and ( "azimutas" >45 and "azimutas" <=90) THEN 'ŠV-Š'
WHEN ( "clockwise" = 'true' ) and ( "azimutas" >90 and "azimutas" <=135) THEN 'Š-ŠR'
WHEN ( "clockwise" = 'true' ) and ( "azimutas" >135 and "azimutas" <=180) THEN 'ŠR-R'
WHEN ( "clockwise" = 'true' ) and ( "azimutas" >180 and "azimutas" <=225) THEN 'R-PR'
WHEN ( "clockwise" = 'true' ) and ( "azimutas" >225 and "azimutas" <=270) THEN 'PR-P'
WHEN ( "clockwise" = 'true' ) and ( "azimutas" >270 and "azimutas" <=315) THEN 'P-PV'
WHEN ( "clockwise" = 'true' ) and ( "azimutas" >315 and "azimutas" <=360) THEN 'PV-V'

WHEN ( "clockwise" = 'false' ) and ( "azimutas" >=0 and "azimutas" <=45) THEN 'R-PR'
WHEN ( "clockwise" = 'false' ) and ( "azimutas" >45 and "azimutas" <=90) THEN 'PR-P'
WHEN ( "clockwise" = 'false' ) and ( "azimutas" >90 and "azimutas" <=135) THEN 'P-PV'
WHEN ( "clockwise" = 'false' ) and ( "azimutas" >135 and "azimutas" <=180) THEN 'PV-V'
WHEN ( "clockwise" = 'false' ) and ( "azimutas" >180 and "azimutas" <=225) THEN 'V-ŠV'
WHEN ( "clockwise" = 'false' ) and ( "azimutas" >225 and "azimutas" <=270) THEN 'ŠV-Š'
WHEN ( "clockwise" = 'false' ) and ( "azimutas" >270 and "azimutas" <=315) THEN 'Š-ŠR'
WHEN ( "clockwise" = 'false' ) and ( "azimutas" >315 and "azimutas" <=360) THEN 'ŠR-R'

ELSE 'kita'
END as projekcija

7. Kada turiu pietinių projekcijų linijas susiduriu su galvosūkiu, kaip jas teisingai sugrupuoti į klasterį, kad jos neužgriebtų kitų linijų jau nuo kito pietinio šlaito jeigu jis yra netoliese, nes izohipsės aukščio linijos neturi tarpusavio ryšio per ID, yra tik aukščio parametras (z), dėl to mintis kyla tą daryti arba su ST_ClusterDBSCAN pagal minimalų atstumą (maksimalus izohipsių intervalas) arba su ST_ShortestLine per ST_StartPoint ir ST_endPoint apribojant atstumą. Bet gal yra koks gudrus būdas isolinijas klasteriuoti kitaip nepaliečiant gretimų? Linijų klasterius jau galėčiau apjungti į poligoną (ST_ConvexHull) asba ST_Buffer (plius st_union minus) ir taip gaučiau pietinės projekcijos šlaitus.

Ką manote apie tokią mintį? O gal patartumėte kitą kelią projekcijoms ieškoti?



G.V.

--
Giedrius Vaivilavičius <gvaivil...@gmail.com>

Tomas Straupis

unread,
Jan 31, 2023, 1:19:55 PM1/31/23
to qgi...@googlegroups.com
Sveikas

O ką jei pietinius šlaitus rasti dar pradinėje - rastro stadijoje?
Va čia yra aprašyta, kaip rasti šiaurės pusę, tai pakeisk į pietus
ir turėsi pietų rastrą. Gal tas kelias bus paprastesnis?
https://qgis.lt/docs/training_manual/rasters/terrain_analysis.html

--
Tomas
Reply all
Reply to author
Forward
0 new messages