<>" /> <>" />
Mais

Determine o ângulo da rua ao analisar um xml de saída Overpass-Turbo


No momento, estou baixando todos os cruzamentos de ruas de uma caixa delimitadora usando a consulta abaixo (veja no viaduto).

                   

A saída é um documento de 92 páginas (incluindo duplicatas) contendo nós (id do nó, latitude e longitude). Estou extraindo as latitudes e longitudes para compor um link de imagem do Google Street View porque quero baixar para cada ponto a imagem correspondente. Na composição do link também pretendo calcular o ângulo de proa da rua;

Eu sei que a fórmula matemática necessária, mas requer 2 lat e 2 longos (de 2 pontos na mesma rua) e meu problema é que os nós no arquivo de saída não têm uma ordem específica. Portanto, não posso calcular o ângulo entre dois nós consecutivos.

Eu estava pensando em classificar o lat ou long em ordem asc / desc, porque desta forma eu poderia encontrar os pontos na mesma rua. Este método é válido ou posso resolvê-lo de uma forma mais fácil? Existe alguma maneira mais eficiente de encontrar todos os cruzamentos de ruas?


Você precisa de uma parte da resposta para saber os caminhos. As formas no OSM são listas ordenadas de referências de nós.

Portanto, a parte da resposta de que você precisa deve ser:

          

Onderefere-se ao nó1827734835. E abaixo os detalhes para esse nó com coordenadas:


Reescrevi sua consulta com OverpassQL:

[saída: xml] [tempo limite: 25]; // filtrar caminhos caminho [rodovia] [rodovia! ~ "passeio | ciclovia | caminho | serviço | trilha"] ({{bbox}}) ->. hw; // foreach way foreach.hw ->. eachw (// obter maneiras, que compartilham os mesmos nós menos a forma atual // em .otherws node (w.eachw) ->. ns; way (bn.ns) [rodovia] [ Highway! ~ "footway | ciclovia | path | service | track"] ->. w2; (way.w2; - way.eachw;) ->. otherws; // obter nó de nós compartilhados (w.otherws) ->. n2; nó (w.eachw) ->. n3; (((nó.n2; nó.n3;) - (nó.n2; - nó.n3;);) - (nó.n3; - nó.n2; );) ->. shrdnodes; // caminhos que estão em forma de junção (bn.shrdnodes) ->. outways; // formas de união e nós (way.outways; node.shrdnodes;); out; // hack sujo / / (nó (100000); nó (w.outways); nó (100000);); saída;);

Neste ponto, você obterá pontos compartilhados e caminhos depois deles. Você pode enviar consultas separadas para obter geometrias de rodovias ou descomentar uma linha após// hack sujo.

O que esse hack faz e por que precisamos dele. Sem ele, você terá:

  • nós de junção
  • vias de junção, mas sem nós

não há opção para o viaduto obter uma lista de conjuntos aos quais o objeto pertence ou marcar seu conjunto de resultados de qualquer outra forma.

Então eu usonó (100000)(nó com id = 100000) como um suporte para minha saída para agrupar nós, que não são nós compartilhados, mas apenas nós para construir uma geometria completa de uma maneira. Se houver uma opção de incluir conjuntos de dados para responder como meta para objetos, eu poderia simplesmente adicionar todos os nós com conjuntos diferentes.

Então, o atendente viaduto parece

                             


Assista o vídeo: How to use overpass turbo interface for Open Street Map data (Outubro 2021).