OpenStreetMap

utak durva hibáinak kimutatása

Posted by Kolesár on 12 September 2014 in Hungarian (Magyar)

Eredetileg szögletes (nem szép ívekkel megrajzolt) vasútvonalakat kerestem, helyette durva hibákba botlottam. Készítettem egy postgresql függvényt, ami megmutatja, mi a legnagyobb törésszög a vonalban (GPL):

    CREATE OR REPLACE FUNCTION largestangle (
        geom geometry
    )
    RETURNS float
    AS
    $$
    DECLARE
        num integer;
        azimuth float;
        previous float;
        max float;
        angle float;

    BEGIN
        num := ST_NumPoints(geom)-1;
        max = 0;
        previous = null;
        FOR i IN 1..num LOOP
            azimuth = ST_Azimuth(ST_PointN(geom, i), ST_PointN(geom, i+1))*180/PI();
            IF previous IS NOT NULL THEN
                angle = azimuth-previous;
                if (angle<0) THEN angle = angle + 360; END IF;
                if (angle>180) THEN angle = angle - 360; END IF;
                angle = ABS(angle);
                if (angle>max) THEN max = angle; END IF;
            END IF;
            previous = azimuth;
        END LOOP;
        RETURN max;
    END;
    $$
    LANGUAGE 'plpgsql';

Kikerestem Magyarország vasútvonalai közül azokat, amelyekben két egymást követő pont között 100 foknál nagyobb törés van:

    SELECT osm_id, railway, largestangle(way)
    FROM planet_osm_line
    WHERE railway IS NOT NULL
    AND largestangle(way)>100
    ORDER BY largestangle(way) DESC

Az eredmény lesújtó:

    67238470;"light_rail";180
    121097646;"tram";180
    123907293;"platform";179.955851775949
    211273169;"rail";179.292086339494
    40764520;"rail";179.192081204579
    221864293;"rail";179.017371190472
    87763263;"rail";178.891823334706
    87975409;"rail";178.328305034132
    294593714;"rail";177.532887205442
    249158915;"rail";176.432827720348
    261528683;"rail";176.093856853854
    266535726;"rail";175.735610193293
    228949256;"rail";175.069038113852
    231714208;"rail";174.456231436573
    254601660;"rail";174.429655532425
    151982042;"rail";174.073601056486
    83250577;"abandoned";173.916391809453
    58680396;"tram";172.847818564358
    231156588;"rail";172.232675767268
    230505264;"rail";172.010225172665
    264239018;"disused";171.013974128316
    96583460;"rail";170.95014069881
    169139414;"rail";170.646584743656
    178696845;"tram";169.978759451508
    151987089;"rail";169.850101980453
    169139416;"rail";169.252730579368
    154513149;"platform";168.644987907461
    169139418;"rail";166.855496170685
    300210242;"rail";166.492269214075
    231714246;"rail";165.88889681817
    25717783;"rail";164.191851861276
    242217332;"rail";161.720967385473
    169015068;"tram";157.185985623234
    96621059;"rail";156.689293148707
    165028710;"rail";154.941354138393
    121097675;"construction";151.529941313625
    156546547;"rail";151.08146686337
    48655425;"platform";130.166176320385
    229989396;"rail";117.725075097282
    48655422;"platform";115.538929552111
    54308577;"abandoned";111.828437618505
    103336934;"disused";106.292185094081
    25720396;"tram";103.772617080563
    235480246;"platform";101.745332022293
    216724982;"platform";100.876472649506
    48655420;"platform";100.638820505008
    230507188;"platform";100.13953405001

A 180 fokosak azonos töréspontba tértek vissza, a többi pedig általában lapos Z alakban kétszer visszafordult. A 178 feletti első nyolcat gyorsan javítottam, a többit meghagyom a lelkes közösségnek.

Az első oszlopban szereplő azonosítót könnyen be lehet másolni JOSM-be a Fájl / Objektumok letöltése (Ctrl+Shift+O) paranccsal, az objektum típusát elég az első alkalommal beállítani vonalra, megjegyzi. A vonalak kijelölve megjelennek az irány-nyilak, ezen lehet meglátni, hogy hol törik meg hegyes szögben.

Ha nekiállsz, dobj egy üzenetet, hogy ne ütközzünk össze.

Comment from grin on 12 September 2014 at 13:09

(listáról ide is bemásolom) Kitaláltad gondolom hogy ezt mi okozza: amikor valaki egy nagyobb területen offsetet javít akkor végig kell menni a határvonalon és minden kilógó szakaszt egyenként átnézni, nehogy Zorro legyen benne. Láthatóan még maradt bőven. Sajnos míg nem sikerül kiirtani a Bing00 részeket addig ilyenek lesznek.

Nagyon hasznos ez a keresés egyébként bármilyen útra vonatkoztatva is.

Hide this comment

Leave a comment

Parsed with Markdown

  • Headings

    # Heading
    ## Subheading

  • Unordered list

    * First item
    * Second item

  • Ordered list

    1. First item
    2. Second item

  • Link

    [Text](URL)
  • Image

    ![Alt text](URL)

Login to leave a comment