GRASS QGIS forum
Kilometraż - Wersja do druku

+- GRASS QGIS forum (http://forum.quantum-gis.pl)
+-- Dział: Desktop GIS (/forum-4.html)
+--- Dział: QGIS (/forum-5.html)
+--- Wątek: Kilometraż (/thread-1524.html)



Kilometraż - acipak - 18-06-2017 08:45 PM

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ć?


RE: Kilometraż - xmaziax - 19-06-2017 11:16 AM

(18-06-2017 08:45 PM)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


RE: Kilometraż - Binko - 19-06-2017 11:28 AM

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


RE: Kilometraż - xmaziax - 19-06-2017 11:47 AM

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)))



RE: Kilometraż - acipak - 19-06-2017 02:15 PM

Dziękuję za informację.


RE: Kilometraż - acipak - 20-06-2017 05:50 PM

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?