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.
Discussion
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.