<>" /> <>" />
Meer

Bepaal de hoek van de straat door een viaduct-turbo-uitgang te ontleden xml

Bepaal de hoek van de straat door een viaduct-turbo-uitgang te ontleden xml


Ik download momenteel alle straatkruisingen uit een selectiekader met behulp van de onderstaande query (zie het op viaduct).

                   

De uitvoer is een document van 92 pagina's (inclusief duplicaten) met knooppunten (knooppunt-ID, lat en lang). Ik extraheer de breedte- en lengtegraden om een ​​Google Street View Image-link samen te stellen, omdat ik voor elk punt de bijbehorende afbeelding wil downloaden. In de samenstelling van de link wil ik ook de koershoek van de straat berekenen;

Ik ken de wiskundige formule die nodig is, maar deze vereist 2 lat en 2 lang (vanaf 2 punten in dezelfde straat) en mijn probleem is dat de knooppunten in het uitvoerbestand geen specifieke volgorde hebben. Daarom kan ik de hoek tussen twee opeenvolgende knopen niet berekenen.

Ik dacht eraan om de lat of long in asc/desc-volgorde te sorteren, omdat ik op deze manier de punten in dezelfde straat zou kunnen vinden. Is deze methode geldig of kan ik het op een eenvoudigere manier oplossen? Is er een efficiëntere manier om alle kruispunten van straten te vinden?


Je hebt een deel van het antwoord nodig voor manieren. Wegen in OSM zijn geordende lijsten met knooppuntreferenties.

Dus het deel van het antwoord dat je nodig hebt, ziet er als volgt uit:

          

Waarverwijst naar knooppunt1827734835. En hieronder details voor dat knooppunt met coördinaten:


Ik heb je vraag herschreven met OverpassQL:

[uit:xml][time-out:25]; // filter wegen way[highway][highway!~"footway|cycleway|path|service|track"]({{bbox}})->.hw; // foreach manier foreach.hw->.eachw( // krijg wegen, die dezelfde knooppunten delen minus de huidige manier // in .otherws node(w.eachw)->.ns; way(bn.ns)[highway][ snelweg!~"footway|cycleway|path|service|track"]->.w2; (way.w2; - way.eachw;)->.otherws; // get shared nodes node(w.otherws)->. n2; node(w.eachw)->.n3; (((node.n2; node.n3;) -(node.n2; - node.n3;);) -(node.n3; - node.n2; );)->.shrdnodes; // wegen die in junction way(bn.shrdnodes)->.outways zijn; // unionways en knooppunten (way.outways; node.shrdnodes;); out; // dirty hack / /(node(100000); node(w.outways); node(100000);); uit;);

Op dit punt krijg je gedeelde punten en manieren daarna. U kunt afzonderlijke query's verzenden om geometrieën van snelwegen te krijgen, of u kunt een rij daarna verwijderen//vuile hack.

Wat die hack doet en waarom we het nodig hebben. Zonder dat krijg je:

  • knooppunten
  • knooppunten, maar zonder knooppunten

de re is geen optie voor viaduct om een ​​lijst te krijgen van de set waartoe het object behoort, of om uw resultatenset op een andere manier te markeren.

Dus ik gebruikknoop(100000)(knooppunt met id = 100000) als een beugel voor mijn uitvoer naar groepsknooppunten, die geen gedeelde knooppunten zijn, maar slechts knooppunten om de volledige geometrie van een weg te bouwen. Als er een optie is om datasets op te nemen als een meta voor objecten, zou ik gewoon alle knooppunten met verschillende sets kunnen toevoegen.

Dus het viaduct antwoord ziet eruit als:

                             

Bekijk de video: Oefeningen op gelijkvormigheid oef 4 figuur 1 + oef 6 p. 7