Forum QGIS
Kilometraż - Wersja do druku

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



Kilometraż - acipak - 18-06-2017

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

(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


RE: Kilometraż - Binko - 19-06-2017

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

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

Dziękuję za informację.


RE: Kilometraż - acipak - 20-06-2017

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?