Daugiau

Kaip nustatyti etiketės padėtį aplink qgis tašką pagal lauką

Kaip nustatyti etiketės padėtį aplink qgis tašką pagal lauką


Aš dirbu aformos failasįqgis(2.8.4 „Wien“, skirta „Mac“). Šiame faile turiu kelis taškus su maždaug dešimties laukų. Mane domina naudoti du iš šių laukų etiketės padėčiai ir taško simbolio pasukimui nustatyti: vienas laukas yra id taško, kitas yra sukimasis.

Aš vaizduoju taško simbolį kaip trikampį su maža linija ir pasuku pagal sukimasis laukas (neturiu jokių problemų). Pagrindinė problema yra ID etiketės išdėstymas aplink tašką tam tikroje vietoje, pagal sukimasis, bet nesukant jo.

Akivaizdu, kad sukimosi lauke yra reikšmės nuo 0 iki 359.

Žemiau esančioje nuotraukoje yra pavyzdys, ką noriu gauti:

Manau, kad galima naudoti poslinkio funkciją su sinusu ir kosinusu, tačiau atitinkami mygtukai „qgis“ sąsajoje yra išjungti.

Ar yra būdas tai padaryti? Deja, tai yra mano darbo reikalavimas.


Etiketės paskirties režimą galite nustatyti kaip „Nuokrypis nuo taško“, tada lauke „Poslinkis X, Y“ nustatyti duomenų apibrėžimą. Tam reikėtų tokios išraiškos:

to_string ("atstumas" * cos ("kampo_radianai")) || ',' || to_string ("atstumas" * sin ("kampo_radianai"))

Kur „atstumas“ yra jūsų atstumas nuo taško lauko, o „kampas_radianai“ - laukas, kuriame yra kampas nuo taško radianais.

Atminkite, kad senesnėms QGIS versijoms vietoj „to_string“ reikia naudoti „tostring“.


Be susieto komentaro @MaryBeth atsakymo, QGIS 2.12.1 (lyon) dabar yra duomenų apibrėžimo taisyklė „kvadrantui“ arba etiketės padėčiai.

Žymėjimo dialogo lange pasirinkite skirtuką „Paskirties vieta“ ir patikrinkite radijo ženklelį „Around point“.

Tada yra galimybė nustatyti „kvadrato“ išraišką.

Jei patikrinate aprašymą, jis nurodo, ko jis tikisi kaip įvesties.

Šiuo atveju jis tikisi int (sveiko skaičiaus).

Apibrėžtų duomenų nepaisymas Aktyvus: ne (ctrl | dešiniuoju pelės mygtuku spustelėkite perjungimus) Numatoma įvestis: int [0 = viršuje kairėje | 1 = viršuje | 2 = viršuje dešinėje | 3 = kairė | 4 = daugiau | 5 = dešinė | 6 = apačioje kairėje | 7 = žemiau | 8 = apačioje dešinėje] Tinkami įvesties tipai: eilutė, int, dviguba Dabartinė apibrėžtis: neapibrėžta

Galite pamatyti, kur kiekvienas skaičius žymi vietą kvadrante.

Taigi jums tereikia čia nustatyti CASE ELSE tipo išraišką, kurioje atsižvelgiama į sukimosi vertes jūsų sukimosi lauke.

pvz.,

ATVYKIS, kai "sukimasis" = 45 THEN 2 WHEN "sukimas" = 90 THEN 6 KITAS 0 PABAIGA

TavoKADAteiginys taip pat gali naudoti diapazonus,

KADA „sukimasis“> = 0 IR „sukimasis“ <= 50 THEN…

Kaip aprašė „SaultDon“, kvadrantui galite naudoti išraišką:

atvejis, kai apvalus (sukimasis / 360 * 8 + 1) % 8 = 0, tada 1, kai apvalus (sukimasis / 360 * 8 + 1) % 8 = 1, tada 2, kai apvalus (sukimasis / 360 * 8 + 1) % 8 = 2 tada 5, kai apvalus (sukimasis / 360 * 8 + 1) % 8 = 3, tada 8, kai apvalus (sukimasis / 360 * 8 + 1) % 8 = 4, tada 7, kai apvalus (sukimasis / 360 * 8 + 1) % 8 = 5, tada 6, kai apvalus (sukimasis / 360 * 8 + 1) % 8 = 6, tada 3, kai apvalus (sukimas / 360 * 8 + 1) % 8 = 7, tada 0 pabaiga

Redaguoti: pridėta+1poslinkis, nes atrodo, kad norite, kad etiketė būtų kitame kvadrante pagal laikrodžio rodyklę.


Žiūrėti video įrašą: PRINTEX ET2 3 linijų etikečių keitimas