<>" /> <>" />
Lebih

Tentukan Sudut Jalan dengan Mengurai keluaran Overpass-Turbo xml


Saat ini saya mengunduh semua persimpangan jalan dari kotak pembatas menggunakan kueri di bawah ini (lihat di jalan layang).

                   

Outputnya adalah dokumen 92 halaman (termasuk duplikat) yang berisi node (node ​​id, lat dan long). Saya mengekstrak garis lintang dan garis bujur untuk membuat tautan Gambar Google Street View karena saya ingin mengunduh gambar yang sesuai untuk setiap titik. Dalam komposisi link saya juga ingin menghitung heading-angle jalan;

Saya tahu rumus matematika yang dibutuhkan tetapi membutuhkan 2 lat dan 2 panjang (dari 2 titik di jalan yang sama) dan masalah saya adalah bahwa node dalam file output tidak memiliki urutan tertentu. Oleh karena itu, saya tidak dapat menghitung sudut antara dua simpul yang berurutan.

Saya berpikir untuk mengurutkan lat atau long dalam urutan asc/desc karena dengan cara ini saya mungkin menemukan titik di jalan yang sama. Apakah metode ini valid atau saya dapat menyelesaikannya dengan cara yang lebih mudah? Apakah ada cara yang lebih efisien untuk menemukan semua persimpangan jalan?


Anda membutuhkan bagian dari jawaban untuk cara. Cara-cara dalam OSM adalah urutan daftar referensi node.

Jadi bagian dari jawaban yang Anda butuhkan akan terlihat seperti:

          

Dimanamengacu pada simpul1827734835. Dan di bawah detail untuk simpul itu dengan koordinat:


Saya telah menulis ulang kueri Anda dengan OverpassQL:

[keluar:xml][waktu habis:25]; // memfilter cara way[highway][highway!~"footway|cycleway|path|service|track"]({{bbox}})->.hw; // foreach way foreach.hw->.eachw( // dapatkan cara, yang berbagi node yang sama dikurangi cara saat ini // ke .otherws node(w.eachw)->.ns; way(bn.ns)[highway][ jalan raya!~"jalan kaki|jalur sepeda|jalur|layanan|jalur"]->.w2; (jalan.w2; - jalan.setiapw;)->.lain-lain; // dapatkan simpul bersama simpul(w.lainnya)->. n2; node(w.eachw)->.n3; (((node.n2; node.n3;) -(node.n2; - node.n3;);) -(node.n3; - node.n2; );)->.shrdnodes; // cara yang berada di junction way(bn.shrdnodes)->.outways; // cara union dan node (way.outways; node.shrdnodes;); out; // hack kotor / /(simpul(100000); simpul(w.keluar); simpul(100000);); keluar; );

Pada titik ini, Anda akan mendapatkan poin bersama, dan cara setelahnya. Anda dapat mengirim kueri terpisah untuk mendapatkan geometri jalan raya, atau membatalkan komentar satu baris setelahnya//retas kotor.

Apa yang dilakukan peretasan itu dan mengapa kami membutuhkannya. Tanpa itu, Anda akan mendapatkan:

  • simpul persimpangan
  • cara persimpangan, tetapi tanpa node

tidak ada opsi untuk jalan layang untuk mendapatkan daftar set objek mana yang dimiliki, atau menandai set hasil Anda dengan cara lain.

Jadi saya menggunakansimpul (100000)(simpul dengan id=100000) sebagai braket untuk output saya ke node grup, yang bukan node bersama, tetapi hanya node untuk membangun geometri penuh. Jika ada opsi untuk memasukkan kumpulan data untuk menjawab sebagai meta untuk objek, saya bisa menambahkan semua node dengan set yang berbeda.

Jadi jawaban overpass terlihat seperti

                             


Tonton videonya: Overpass turbo - пример выгрузки университетов из OSM по всей территории РФ (Oktober 2021).