[Talk-de] Qualitaetssicherung - Kreisverkehr anyone?

Florian Lohoff flo at rfc822.org
Fr Mär 13 13:20:07 UTC 2009


On Fri, Mar 13, 2009 at 10:47:59AM +0100, Florian Lohoff wrote:
> On Fri, Mar 13, 2009 at 10:34:14AM +0100, marcus.wolschon at googlemail.com wrote:
> > Das musst du wohl selber machen.
> > Zunächst brauchst du dafür aber Polygone der Länger in denen
> > Linksverkehr
> > herscht.
> > 
> > Die Orientierung des Geschlossenen Polygons "Kreisverkehr" kriegst du über
> > das Kreuzprodukt raus. Schau mal auf der Routing-Liste, da hatte ich einen
> > Thread dazu.
> > In dem Thread hatte ich mich am Ende dann doch entschieden auch in
> > Traveling Salesman die Orientierung von Kreisverkehren nicht zu
> > hinterfragen und als korrekt für das jeweilige Land anzunehmen.
> 
> Ich bin mittlerweile so unterwegs:

So - jetzt aber richtig - problem ist das Postgis ST_BuildArea
anscheinend forciert ST_forceRHR anwendet - was natuerlich dann
vereitelt das man 2 areas vergleich ... Also einmal hin und wieder
zurueckkonvertieren und dann den ascii vergleichen - vielleicht
geht hier dann auch gleich ST_Equals ... aber irgendwas ist ja immer:

select wid,
        'http://www.openstreetmap.org?zoom=16&lon=' || ST_X(center) || '&lat=' || ST_Y(center) as url,
        simple, closed, ring, ccw
from  (
        select  wid,
                ST_Centroid(geom) as center,
                ST_IsSimple(geom) as simple,
                ST_IsClosed(geom) as closed,
                ST_IsRing(geom) as ring,
                ST_AsText(ST_ExteriorRing(ST_forceRHR(ST_BuildArea(geom)))) <> ST_AsText(geom) as ccw
        from    (
                        select  wid, count(geom) as num, ST_MakeLine(geom) as geom
                        from    (
                                select  wn.way_id as wid, n.geom as geom
                                from    nodes n, way_nodes wn
                                where   wn.node_id = n.id
                                and     wn.way_id in
                                        (
                                        select  wt.way_id
                                        from    way_tags wt
                                        where   wt.k = 'junction'
                                        and     wt.v = 'roundabout'
                                        )
                                order by wn.sequence_id
                                ) wnodes
                        group by wid
                ) rblines
        where num > 1
        ) rdb
where ( not ccw or not simple or not closed or not ring )
and ST_Within(center, ( select geom from borders where name = 'Deutschland' ))


Output hier:

http://silicon-verl.de/home/flo/tmp/roundabout-deutschland-20090313

Natuerlich sind da auch einige rohrkrepierer drin - z.b. wenn jemand die
roundabout ways gesplittet hat - aus was fuer gruenden auch immer. D.h.
im moment versuche ich nicht zerlegte roundabouts wieder zusammenzufuehren.

Dieser hier ist so ein fall:

http://www.openstreetmap.org?zoom=16&lon=10.706703532331&lat=47.5805489219297

Warum das 3 teile sein muessen weiss ich nicht - sieht aber insgesamt 
reichlich zerstoert aus ... Siehe auch B16 nach Sueden ...

Auch nicht mit im output ist ob die roundabouts ein oneway haben ...

Flo
-- 
Florian Lohoff                  flo at rfc822.org             +49-171-2280134
	Those who would give up a little freedom to get a little 
          security shall soon have neither - Benjamin Franklin
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 189 bytes
Beschreibung: Digital signature
URL         : <http://lists.openstreetmap.org/pipermail/talk-de/attachments/20090313/e404db0b/attachment.sig>


Mehr Informationen über die Mailingliste Talk-de