Forum QGIS

Pełna wersja: Kilometraż
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam
Chciałbym zrobić kilometraż odcinka drogi tak żeby wyświetlało informację co 100 metrów w formacie 1+100, 1+200 itd.
Znalazłem wtyczkę QChainage ale ona nie daje możliwości ustawienia jaki kilometr jest na początku odcinka który chcemy opisać np. 36+350.
Czy macie jakieś inne sposoby żeby to zrobić?
(18-06-2017, 20:45)acipak napisał(a): [ -> ]Witam
Chciałbym zrobić kilometraż odcinka drogi tak żeby wyświetlało informację co 100 metrów w formacie 1+100, 1+200 itd.
Znalazłem wtyczkę QChainage ale ona nie daje możliwości ustawienia jaki kilometr jest na początku odcinka który chcemy opisać np. 36+350.
Czy macie jakieś inne sposoby żeby to zrobić?

Żeby ustawić początek linii na 36+350 musisz w kolumnie c_Meters warstwy punktowej do wszystkich wartości dodać tą wartość początkową.
Możesz to zrobić za pomocą kalkulatora pól.
Dodatkowo możesz zmodyfikować wyrażenie używane do wyświetlania opisów, żeby uzyskać efekt 'km+'
np. na taki:
Kod:
left( c_Meters, ((length(c_Meters)) -3))||'+'||right( c_Meters,3)
To powyższe wyrażenie jest do poprawy, bo dla zerowego km wyświetla tylko dla 0+0, ale ogólnie idee powinieneś zrozumieć.
U mnie wygląda to jak na załączniku.
Pozdrawiam
Ja też korzystam z tej wtyczki, a po utworzeniu tej warstwy z kilometrażem dodaję nowe pole tekstowe (nazwijmy je "km") i wpisuję w kalkulatorze formułę:
Kod:
if(
"c_Meters"=0,'0+000',
if(length( "c_Meters") < 4,
    '0+' || "c_Meters",
    if(length("c_Meters") = 4,
        left("c_Meters", 1) || '+' || right("c_Meters", 3),
        if(length("c_Meters") = 5,
            left("c_Meters", 2) || '+' || right("c_Meters", 3),
            if(length("c_Meters") = 6,
                left("c_Meters", 3) || '+' || right("c_Meters", 3),
                'X'
            )
            )
        )
        )
)

Tutaj akurat jest opcja do km 999+900. Jeśli masz jakieś dłuższe drogi, to odpowiednio musisz sobie rozbudować powyższy warunek Wink
Lekko zmodyfikowałem swoją formułkę wg powyższego przykładu i już powinna działać dla pełnego zakresu danych.
Kod:
if ("c_Meters"=0,'0+000', if(length( "c_Meters") < 4,    '0+' || "c_Meters",  left( c_Meters, ((length(c_Meters)) -3))||'+'||right( c_Meters,3)))
Dziękuję za informację.
Jeszcze jedno pytanie.
Jak zrobić etykiety drogi kilometrów żeby jedne nachodziły na drugie (oczywiście różne kolory wielkości itp)
Jak się da przybliżenie to nazwa drogi mieści się pomiędzy kilometrażem ale jak się oddali to nazwa drogi już się nie mieści (załącznik). Da rade dodać jedno i drugie?