Maxspeed, Fortsetzung

Schau mal links unten auf der Karte, wo die Position steht…das ist der Punkt dazu.

Ich bin für 1. Ist leichter zum Auswerten und wenn die Geschwindigkeit tatsächlich reduziert wird, dann lässt es sich recht leicht filtern: source:maxspee=:urban und maxspeed>40.

PS: Ich bin kein Grüner und würde trotzdem 80 überland bevorzugen, denn auch wenn die Autos deutlich stabiler werden, für 100 frontal sind sie nicht gebaut! (Und 30er-Zone abseits der Landesstraße befürworte ich auch). So und jetzt lyncht mich :stuck_out_tongue:

hab vor einigen Minuten per Zufall die Stelle gefunden, wo man ihn abstellen kann: im Layerswitcher. Der hat mich schon immer genervt :wink:

Lynchen ist verboten. Wie wär’s denn damit? - aber gaaaaaaaanz langsam: http://archief.flabber.nl/archief/020715.php

Puh, mich kräuselt sich noch alles. Toller Trick.

Naja. Und wie willst du das machen, wenn du maxspeed=50 setzen willst? Da musst du auch ein “virtuelles Ortseingangsschild” setzen.

Du musst einmal über jeden Weg. Das ist nicht teuer.

Tracks und Radwege würde ich bei der “Innerortssuche” nicht erlauben. Zu Phantom-Ortstafeln: siehe oben.

so, jetzt ist es bunt. Die Erklärung der Farben gibts rechts oben unter “Info”

Banause…ich sollte den wohl mal ausm Layerswitcher nehmem :wink:

Maxspeed Map für Mapserver&Postgres Besitzer
…oder ich bastel mir ein Overlay…


wget http://download.geofabrik.de/osm/europe.osm.pbf

osmosis --read-pbf europe.osm.pbf --tf accept-ways maxspeed=* maxspeed:forward=* maxspeed:backward=* --tf reject-relations --used-node --write-xml maxspeed.osm

sudo su postgres

createdb -E utf8 maxspeed
cat /usr/share/postgresql/9.0/contrib/postgis-1.5/postgis.sql | psql -d maxspeed
cat /usr/share/postgresql/9.0/contrib/postgis-1.5/spatial_ref_sys.sql | psql -d maxspeed

osm2pgsql -l -d maxspeed -p osm -s -S /usr/share/osm2pgsql/maxspeed.style -C 11000 maxspeed.osm 

/usr/share/osm2pgsql/maxspeed.style ist


# OsmType  Tag          DataType     Flags
way        highway      text         linear
way        maxspeed     text         linear
way        maxspeed:forward text     linear
way        maxspeed:backward text    linear
node,way   z_order      int4         linear # This is calculated during import
way        way_area     real                # This is calculated during import


sudo su postgres
psql -d maxspeed

update osm_line set maxspeed = "maxspeed:forward" where "maxspeed:forward" is not null and maxspeed is null;
update osm_line set maxspeed = "maxspeed:backward" where "maxspeed:backward" is not null and maxspeed is null;
ALTER TABLE osm_line DROP COLUMN "maxspeed:forward";
ALTER TABLE osm_line DROP COLUMN "maxspeed:backward";
grant SELECT on osm_line to "www-data";
create index osm_line_highway_idx on osm_line(highway);
ALTER TABLE osm_line ADD COLUMN "speedclasss"
UPDATE osm_line set speedclass = '1' where to_number(maxspeed,'9999D99')>0 and to_number(maxspeed,'9999D99')<31 and textregexeq(maxspeed,'^[[:digit:]]+(\.[[:digit:]]+)?$')
UPDATE osm_line set speedclass = '2' where to_number(maxspeed,'9999D99')>30 and to_number(maxspeed,'9999D99')<61 and textregexeq(maxspeed,'^[[:digit:]]+(\.[[:digit:]]+)?$')
UPDATE osm_line set speedclass = '3' where to_number(maxspeed,'9999D99')>60 and to_number(maxspeed,'9999D99')<91 and textregexeq(maxspeed,'^[[:digit:]]+(\.[[:digit:]]+)?$')
UPDATE osm_line set speedclass = '4' where to_number(maxspeed,'9999D99')>90 and to_number(maxspeed,'9999D99')<121 and textregexeq(maxspeed,'^[[:digit:]]+(\.[[:digit:]]+)?$')
UPDATE osm_line set speedclass = '5' where (to_number(maxspeed,'9999D99')>120 and textregexeq(maxspeed,'^[[:digit:]]+(\.[[:digit:]]+)?$')) OR NOT textregexeq(maxspeed,'^[[:digit:]]+(\.[[:digit:]]+)?$')

danach legen wir die Rendering Regeln an, am besten da, wo die normale Mapfile ist, also bspw eine Datei maxspeed.map


LAYER
    STATUS ON 
    GROUP "maxspeed" 
    PROJECTION 
	"init=epsg:4326" 
    END 
    CONNECTIONTYPE postgis 
    CONNECTION "host=localhost dbname=maxspeed user=www-data password=www-data port=5432"
    PROCESSING "CLOSE_CONNECTION=DEFER" 
    maxscaledenom 54180
    minscaledenom 0
    TYPE LINE
    NAME "maxspeedclosebunt"
    DATA "way from (select way, osm_id ,highway,speedclass from osm_line where (highway in ('motorway','motorway_link','trunk','trunk_link','primary','primary_link','secondary','secondary_link','tertiary','unclassified','residential') and maxspeed is not null) order by z_order) as foo using unique osm_id using srid=4326"
    CLASSITEM "speedclass"
    CLASS
        EXPRESSION "1"
        STYLE
            WIDTH 3
            COLOR 0 255 0
        END      
    END
    CLASS
        EXPRESSION "2"
        STYLE
            WIDTH 3
            COLOR 255 240 0
        END      
    END
    CLASS
        EXPRESSION "3"
        STYLE
            WIDTH 3
            COLOR 255 136 0
        END      
    END
    CLASS
        EXPRESSION "4"
        STYLE
            WIDTH 3
            COLOR 255 0 0
        END      
    END
    CLASS
        EXPRESSION "5"
        STYLE
            WIDTH 3
            COLOR 0 0 0
        END      
    END
END

LAYER
    STATUS ON 
    GROUP "maxspeed" 
    PROJECTION 
	"init=epsg:4326" 
    END 
    CONNECTIONTYPE postgis 
    CONNECTION "host=localhost dbname=maxspeed user=www-data password=www-data port=5432"
    PROCESSING "CLOSE_CONNECTION=DEFER" 
    maxscaledenom 1743443
    minscaledenom 54180
    TYPE LINE
    NAME "maxspeedfarbunt"
    DATA "way from (select way, osm_id ,highway,speedclass from osm_line where (highway in ('motorway','trunk','primary') and maxspeed is not null) order by z_order) as foo using unique osm_id using srid=4326"
    CLASSITEM "speedclass"
    CLASS
        EXPRESSION "1"
        STYLE
            WIDTH 3
            COLOR 0 255 0
        END      
    END
    CLASS
        EXPRESSION "2"
        STYLE
            WIDTH 3
            COLOR 255 255 0
        END      
    END
    CLASS
        EXPRESSION "3"
        STYLE
            WIDTH 3
            COLOR 255 136 0
        END      
    END
    CLASS
        EXPRESSION "4"
        STYLE
            WIDTH 3
            COLOR 255 0 0
        END      
    END
    CLASS
        EXPRESSION "5"
        STYLE
            WIDTH 3
            COLOR 0 0 0
        END      
    END
END

LAYER
    STATUS ON
    GROUP "maxspeed"
    PROJECTION
        "init=epsg:4326"
    END
    CONNECTIONTYPE postgis
    CONNECTION "host=localhost dbname=maxspeed user=www-data password=www-data port=5432"
    PROCESSING "CLOSE_CONNECTION=DEFER"
    minscaledenom 1743443
    maxscaledenom 13867550
    TYPE LINE
    NAME "maxspeedwmbunt"
    DATA "way from (select way, osm_id ,highway,speedclass from osm_line where highway='motorway' and maxspeed is not null order by z_order) as foo using unique osm_id using srid=4326"
    CLASSITEM "speedclass"
    CLASS
        EXPRESSION "1"
        STYLE
            WIDTH 3
            COLOR 0 255 0
        END      
    END
    CLASS
        EXPRESSION "2"
        STYLE
            WIDTH 3
            COLOR 255 255 0
        END      
    END
    CLASS
        EXPRESSION "3"
        STYLE
            WIDTH 3
            COLOR 255 136 0
        END      
    END
    CLASS
        EXPRESSION "4"
        STYLE
            WIDTH 3
            COLOR 255 0 0
        END      
    END
    CLASS
        EXPRESSION "5"
        STYLE
            WIDTH 3
            COLOR 0 0 0
        END      
    END
END

Sodele, und zuletzt gehen wir in unsere “normale” Mapfile und binden die neue Datei ein. Bei mir sieht das so aus…ganz unten vorm letzten END
INCLUDE ‘/osm/mapserver/maxspeed.map’

Fertig. Jetzt kann man in OL das WMS Layer einbinden. Man kann sowohl die ganze Gruppe (maxspeed hier), also aich die einzelnen Layer einbinden. Bspw so


        wms maxspeed = new OpenLayers.Layer.WMS("Maxspeed Layer","http://mein.server.de/wms?", {
                          layers: 'maxspeed', transparent: true,
                          projection:new OpenLayers.Projection("EPSG:900913"),
                          format: 'aggpng24'
                          },
                          {isBaseLayer: false}
        );

der hat mich eigentlich mehr verwirrt als gestört. was macht dieser komische Punkt da? ist da was besonders? und wenn ja, was?
bis ich geschnallt hatte, dass das der Mittelpunkt (Punkt!) sein soll, hat’s etwas gedauert.
nun denn, Gefahr erkannt, …
Gruss
walter

Super, danke dafür!

Einen Änderungswunsch habe ich aber:
Tempo 120 hat die gleiche Farbe wie Tempo 100, aber ich würde gerne auf der Karte sehen können, ob ich z.B. auf einer Bundesstraße 100 oder 120 km/h fahren darf. Vielleicht magst du den Farbbereich anpassen oder einen weiteren einfügen?

Hallo Thomas,
sieht sehr gut aus! Kannst du none und 130 noch unterscheiden?

so?
0-30 Green
31-50 Yellow
51-100 Orange
101-130 Red

131 and “none” Blue
non-numeric Black

Ich hab auch noch einen Wunsch:

Deine Liste im Bereich 51-100 abgeändert auf 51-80 und 81-100 - hier in A gibt es viele Bundesstraßen auf denen abschnittsweise nur 80 zulässig sind (100=max). (Nur frag mich nicht nach der Farbe - denn dein Schema ist eigentlich schon großartig, bis es wer durcheinander wirbelt - so wie ich…)

Und hier in Hessen gibt es sehr viel 70 … also wäre 51-70 71-100 gut :wink:

Oder wie wäre es mit einem kontinuierlichen Farbverlauf in Abhängigkeit der Geschwindigkeit?

Sprich, 80 nicht zusammen mit 100, 100 nicht zusammen mit 120, und 130 nicht zusammen mit none, dann 51-70 und 71-100 :sunglasses:

Ich fürchte, jeder mag andere Geschwindigkeiten abgegrenzt haben. Mehr als 6 Geschwindigkeitsklassen möchte ich ungern darstellen. Ich habe jetzt schon Probleme, denn jede Farbe sollte halbwegs auf jeder Straße, vom blauen motorway bis gelben tertiary sichtbar sein.

Ich denke mal drüber nach und bin für Vorschläge offen, am besten die gesamten 6 Kategorieren (bzw 5 wenn man non-numeric, ggf zusammen mit none als gesetzt ansieht)

@Thomas… vielleicht wäre es vielleicht gar nicht schlecht, wenn Du die Farben wie bei der ITO Map darstellen würdest.

Keine Ahnung, wie aufwändig das ist:

Wie wäre es mit einer Anzahl Reglern etc. wo man die Grenzen selber festlegen kann. Wenn du ohnehin instant renderst, müsste das doch möglich sein, oder?

Oder man macht zwei Schematas:
Eines für den niedrigen Geschwindigkeitsbereich und eines für den hohen… nur so als Idee…

Dann kann man beide mit weniger Farben plaktiver darstellen und hat aber doch alles erfasst.

Ich möchte der allgemeinen Euphorie hier etwas widersprechen :slight_smile:

Ich finde die Karte toll und habe sie am Wochenende auch schon ein bisschen zum mappen genutzt.
Da waren aber alle getaggten Wege noch rot, so dass ich auf Anhieb fehlende Teilstücke identifizieren konnte.
Mit den Farben muss man schon genauer hinschauen, trotz des Bemühens von Thomas, kann ich gelb und orange nur schwer von tertiary und secondary highways unterscheiden.

Mir hat rot gereicht, ich plädiere dafür :wink:

Wieso nicht für unterschiedliche Geschwindigkeiten gleich die ITO Map nutzen, ist die so veraltet?

Grüße,
Daniel