<>" /> <>" />
Viac

Určte uhol ulice analýzou výstupného XML súboru Overpass-Turbo

Určte uhol ulice analýzou výstupného XML súboru Overpass-Turbo


Momentálne sťahujem všetky križovatky ulíc z ohraničujúceho poľa pomocou nižšie uvedeného dotazu (pozri to na nadjazde).

                   

Výstupom je 92 stránkový dokument (vrátane duplikátov) obsahujúci uzly (id uzla, lat a long). Extrahujem zemepisné šírky a dĺžky, aby som vytvoril odkaz na obrázok Google Street View, pretože chcem pre každý bod stiahnuť zodpovedajúci obrázok. V zostave odkazu tiež chcem vypočítať smerový uhol ulice;

Viem, že je potrebný matematický vzorec, ale vyžaduje to 2 lat a 2 dlhé (z 2 bodov na tej istej ulici) a môj problém je, že uzly vo výstupnom súbore nemajú konkrétne poradie. Preto nemôžem vypočítať uhol medzi dvoma po sebe nasledujúcimi uzlami.

Myslel som na triedenie lat alebo long v asc / desc poradí, pretože týmto spôsobom by som mohol nájsť body na tej istej ulici. Je táto metóda platná alebo ju môžem vyriešiť jednoduchšie? Existuje nejaký účinnejší spôsob, ako nájsť všetky križovatky ulíc?


Potrebujete časť odpovede na spôsoby. Cesty v OSM sú zoradené zoznamy odkazov na uzly.

Časť odpovede, čo potrebujete, by mala vyzerať takto:

          

Kdeoznačuje uzol1827734835. A nižšie podrobnosti o tomto uzle so súradnicami:


Váš dopyt som prepísal pomocou OverpassQL:

[out: xml] [timeout: 25]; // filtrovať spôsoby cesta [diaľnica] [diaľnica! ~ "chodník | cyklostezka | cesta | služba | dráha"] ({{bbox}}) ->. hw; // foreach way foreach.hw ->. eachw (// získať spôsoby, ktoré zdieľajú rovnaké uzly mínus aktuálny spôsob // do uzla .otherws (w.eachw) ->. ns; way (bn.ns) [highway] [ highway! ~ "chodník | cyklotrasa | cesta | služba | trať"] ->. w2; (way.w2; - way.eachw;) ->. otherws; // získať uzol zdieľaných uzlov (w.otherws) ->. n2; uzol (w.eachw) ->. n3; (((uzol.n2; uzol.n3;) - (uzol.n2; - uzol.n3;);) - (uzol.n3; - uzol.n2; );) ->. shrdnodes; // spôsoby, ktoré sú križovatkami (bn.shrdnodes) ->. outways; // spojovacie cesty a uzly (way.outways; node.shrdnodes;); out; // špinavý hack / / (uzol (100000); uzol (mimo); uzol (100000);); von;);

V tomto okamihu získate zdieľané body a spôsoby, ako po nich. Môžete poslať samostatné dopyty, aby ste získali geometriu diaľnic, alebo odkomentujte riadok po ňom// špinavý hack.

Čo robí tento hack a prečo to potrebujeme. Bez toho získate:

  • spojovacie uzly
  • križovatkové cesty, ale bez uzlov

re nie je možnosť pre nadjazd získať zoznam množín, ku ktorým objekt patrí, alebo inak označiť výslednú množinu.

Takže používamuzol (100 000)(uzol s id = 100000) ako zátvorka pre môj výstup do skupinových uzlov, ktoré nie sú zdieľanými uzlami, ale iba uzlami na vytvorenie úplnej geometrie cesty. Ak existuje možnosť zahrnúť súbory údajov, ktoré sa majú zodpovedať ako meta pre objekty, mohol by som pridať všetky uzly s rôznymi množinami.

Takže odpoveď nadjazdu vyzerá

                             

Pozri si video: Ulice: Emotivní rozhovor Světlany a Millera po Světlanině potratu