Kami memberi tahu walikota ke mana harus pergi (menggunakan Open Street Map)

Tidakkah Anda berpikir bahwa pejabat kita agak bercerai dari kenyataan? Apa yang tidak cukup dengan melihat wilayah yang dikontrol secara eksklusif dari jendela kantor di pusat kota? Akan menyenangkan bagi walikota untuk berjalan-jalan di kota secara pribadi dari waktu ke waktu, berkomunikasi dengan orang-orang dan menjawab pertanyaan dalam mode langsung?


Nah, blogger terkenal Ilya Varlamov juga berpikir begitu, jadi dia meluncurkan proyek paling keren dengan nama menantang BDSM, dan secara khusus "Jalan Besar Bersama Walikota" ( tautan ke pengumuman):


Berhentilah berjalan sendirian di kota-kota Rusia - saatnya mengundang walikota, gubernur, pengelola kota.

Aturannya sederhana.

Komputer secara acak memilih dua alamat di kota Anda. Setelah itu kami berjalan-jalan dari satu alamat ke alamat lainnya. Satu syarat: Anda tidak bisa menggunakan mobil. Hanya kaki, sepeda, angkutan umum, skuter, tim anjing. Tanpa persiapan, tidak ada persetujuan rute. Kadang-kadang jalan akan panjang, melewati seluruh kota, kadang-kadang Anda harus pergi hanya beberapa blok di pusat. Ini adalah kondisi utama: tidak ada ganti jendela, tidak ada persiapan.

Selama berjalan, kami, bersama-sama dengan kepala kota, mempelajari infrastruktur, berkomunikasi dengan penduduk. Pejabat itu akan memiliki kesempatan unik untuk memberi tahu seluruh Rusia tentang kotanya, menjelaskan seluk-beluk tata pemerintahan kota, menjadi lebih dekat dengan orang-orang!


Bingkai dari video pertama proyek, dengan partisipasi layanan saya untuk memilih poin acak


Apa hubungan Habr dengan itu, Anda bertanya? Dan masalahnya adalah dalam frasa tentang secara acak memilih alamat awal dan akhir rute. Ini bukan tugas yang sederhana jika Anda tidak ingin berakhir di belantara beberapa zona industri atau tersesat di antara pagar tak berujung sektor swasta. Mengetuk kartu penutup mata tidak akan berfungsi di sini!


Tentang bagaimana saya memecahkan masalah ini dan apa yang disajikan oleh kota-kota seperti Ivanovo atau Kirov kepada saya - di bawah potongan.


Kebetulan saya sudah memiliki pengalaman yang diperlukan dengan peta dan navigasi berkat layanan saya untuk membangun rute wisata. Melalui artikel tentang dia di hub itulah mereka menemukan saya dan mengusulkan untuk mengembangkan sistem yang memilih titik awal dan akhir rute pada peta kota.


Ide


Menurut ide tim Varlamov, seharusnya terlihat seperti ini: penanda titik awal dan akhir melompat bolak-balik di peta kota, jelas menunjukkan keacakan proses. Walikota sendiri kapan saja menekan tombol dan menghentikan pencarian. Setelah itu mereka memilih rute (sayang sekali dengan tangan, maka layanan rute pejalan kaki saya bisa menawarkan sesuatu yang menarik) dan berjalan-jalan di sekitar kota.


Awalnya, persyaratan untuk poin adalah sebagai berikut:


  1. Jarak antara titik tidak kurang dari 3 kilometer
  2. Poin tidak di zona industri dan bukan di sektor swasta
  3. Poin harus ditempatkan di berbagai bagian kota, sehingga rute di antara mereka mengarah melalui pusat

Kemudian, selama pengembangan, persyaratan lain telah ditambahkan: layanan harus dapat berinteraksi dengan perangkat keras Tombol Merah Besar, seperti ini:



Tombol hanya mengirim sinyal klik ke komputer yang terhubung


Seluruh kesulitan adalah bagaimana menyusun rute ini sedemikian rupa untuk menghindari belantara di satu sisi, dan di sisi lain untuk menutupi dengan poin yang mungkin semua distrik kota, dan tidak hanya beberapa perempat "layak" di pusat. Pada saat yang sama, pada awalnya saya memiliki serangkaian stereotip tertentu di kepala saya yang merupakan konsekuensi dari kenyataan bahwa saya sendiri tinggal di St. Petersburg, selain itu, dari kurang lebih kota-kota Rusia yang besar, hanya ada beberapa juta lebih kota seperti Moskow dan Kazan. Tetapi proyek ini terutama terkonsentrasi di kota-kota dengan populasi 200-500 ribu orang (tampaknya walikota kota-kota besar terlalu sibuk untuk berjalan di jalanan). Secara umum, saya sekali lagi menerima konfirmasi dari tesis bahwa "Moskow bukan Rusia." Semua pertimbangan di bawah ini salah:


1) Bangunan bertingkat tinggi di pusat, dan zona industri dan rumah pribadi di pinggiran kota.
2) Setidaknya ada pembagian menjadi empat - dalam seperempat hanya ada bangunan tinggi, di lain - hanya rumah-rumah pribadi. Nah, siapa yang akan membangun Khrushchev di antara pondok-pondok kayu?
3) Wilayah kota adalah salah satu poligon sederhana di peta, di dalamnya semua bangunan
4) Oke, mungkin ada lubang di TPA, tapi setidaknya satu
5) Yah, bukan hanya satu tapi setidaknya tidak lebih dari dua bagian yang tidak terkait
6) Kota-kota dalam data OSM ditandai dengan tag penggunaan lahan yang sesuai dan memilih area perumahan akan mudah


Secara umum, saya harus berjalan menyapu.


Algoritma pemilihan titik


Pertama, saya harus memutuskan bagaimana tepatnya titik awal dan akhir akan dipilih. Saya menolak gagasan untuk melemparkan titik secara acak di koordinat sewenang-wenang dalam batas kota segera. Sebagian besar kota di peta adalah semua jenis wilayah yang tidak dapat dilewati: poligon rumah, sungai, wilayah yang tidak ditandai di mana tidak jelas apa yang berada. Titik acak yang jujur ​​akan sangat sering jatuh ke mereka, Anda harus menggesernya (yang akan sangat mempengaruhi keacakan sebagai hasilnya) atau mentransfer sampai Anda tiba di tempat yang sesuai (dan ini akan mempengaruhi kecepatan kerja).


Karena jalan itu tidak membutuhkan titik sembarang, tetapi yang bisa dicapai dengan berjalan kaki, saya memutuskan untuk mengambil titik hanya di sepanjang jalan. Alhasil, algoritme saya mengambil semua jalan OSM (Jalan dengan tag jalan raya dan nilai yang sesuai dengan jalan pejalan kaki dan trotoar), memecah tepi yang terlalu panjang dengan menambahkan titik-titik perantara (sehingga titik-titik tetangga di satu sisi tidak lebih dari seratus meter dari satu sama lain ), lalu menghilangkan titik yang terlalu dekat satu sama lain (lebih dekat dari 50 meter), misalnya, pada beberapa jalan paralel.



Poin yang ditandai untuk Yaroslavl, perempat rumah pribadi dan zona industri di sepanjang jalur kereta api terputus


Hasilnya adalah kotak yang kurang lebih seragam yang menutupi seluruh kota. Lebih lanjut, ketika meminta poin berikutnya, tidak perlu lagi melempar dan melakukan perhitungan geometrik yang berat berkali-kali, cukup pilih pasangan acak yang sesuai dari set poin yang telah dihitung sebelumnya.


Bagaimana cara memilihnya? Kami memiliki dua persyaratan untuk ini: tidak lebih dekat dari tiga kilometer dari satu sama lain dan di berbagai bagian kota, sehingga rute harus melewati pusat. Jika kondisi pertama mudah dipenuhi, maka untuk yang kedua saya perlu menentukan pusat yang sebenarnya. Anda tidak akan memeras informasi seperti itu dari peta (pusat geometris kota sama sekali bukan fakta bahwa itu adalah pusat sejarahnya).


Untuk melakukan ini, saya memutuskan untuk pergi dengan cara sederhana, dan cukup tandai pusat kota secara manual. Menambahkan pemuatan poligon ke GeoJSON, yang saya edit menggunakan situs geojson.io yang sangat nyaman (serius, jika Anda perlu bekerja dengan geometri 2D sederhana di proyek Anda, maka geojson.io memungkinkan Anda melakukan semuanya dengan sangat cepat dan tidak perlu khawatir membuat editor sendiri atau dengan menggunakan segala macam aplikasi SIG kelas berat).



Ditandai Kirov, dengan pusat bertanda (kuning), area yang dihapus secara manual (merah) dan irisan ditambahkan (hijau)


Dengan demikian, versi pertama dari algoritma siap dalam dua hari dan waktu pengujian dimulai. Dan di sini jebakan naik.


Sektor swasta


Menurut kondisi tugas, rute tidak seharusnya dimulai dan berakhir di sektor swasta. Demi kenaifan saya, seorang penduduk kota besar tidak akan pernah mengira bahwa rumah kayu pribadi bisa berada di jalan tetangga dari alun-alun kota. Dan bukan beberapa monumen kuno seperti milik kita, tetapi secara alami seluruh blok.


Pertarungan melawan lingkungan ini menghabiskan sebagian besar waktu. Awalnya saya mencoba bertahan dengan data OSM murni. Ada arti khusus untuk tanda penduduk = pedesaan untuk daerah pedesaan dan penggunaan lahan = peruntukan untuk semua jenis berkebun.



Ya, bahkan di St. Petersburg ada berkebun di kota


Namun, dengan cepat menjadi jelas bahwa tag ini diletakkan sangat jarang, dan biasanya puas hanya dengan penggunaan lahan = residental (area perumahan) yang paling umum.


Langkah selanjutnya adalah upaya untuk menyingkirkan lingkungan seperti itu secara manual. Untuk file geojson dengan pusat kota, saya menambahkan dukungan untuk menghapus area secara manual. Sayangnya, dengan cepat menjadi jelas bahwa banyak perulangan siklus "mengunduh peta - melihatnya - menemukan sektor swasta - memotongnya di geojson.io - mengunduh lagi" membutuhkan banyak waktu, terutama di kota-kota di mana rumah-rumah pribadi dicampur dengan banyak lantai dan tersebar dalam kelompok-kelompok kecil di sana dan disini Misalnya, di Ivanovo



Bangunan-bangunan pribadi dan apartemen saling berpadu satu sama lain hanya beberapa blok dari pusat


Saya harus datang dengan algoritma empiris. Saya mengambil seperempat (landuse = wilayah penduduk, meskipun tidak ada persyaratan langsung untuk penggunaannya, biasanya itu ditandai bukan oleh seluruh kota atau wilayah, tetapi dengan tempat terpisah), saya mengambil semua bangunan di dalamnya (poligon dengan tag bangunan) dan menghitung luas rata-rata poligon tersebut. Jika keluar kurang dari 400m2 (angka tersebut diambil dari langit-langit, dengan kondisi marka dan perhitungan kasar dan rumah-rumah panjang individual ditemukan di blok-blok tersebut), maka blok tersebut dianggap sebagai sektor swasta dan dikeluarkan dari perhitungan.


Akibatnya, kombinasi ketiga metode ini memungkinkan untuk menyaring area yang tidak diinginkan secara lebih atau kurang efisien, meskipun tidak tanpa partisipasi dari tenaga kerja manual.


Namun tentu saja, pengecualian kemudian bertemu. Misalnya Yevpatoriya, di mana secara umum seluruh pusat sejarah pada dasarnya adalah jalan-jalan sempit di sektor swasta. Jika Anda membuang semuanya - tidak akan ada yang tersisa dari kota.



Pemandangan khas Evpatoria beberapa ratus meter dari laut


Khusus untuk kasus-kasus seperti itu, perlu untuk menambahkan tidak hanya sektor kota yang dihapus secara manual ke GeoJSON, tetapi juga yang ditambahkan secara manual. Yaitu bahkan jika kuartal tidak jatuh dalam kondisi lain, itu masih termasuk dalam daftar poin yang tersedia untuk pencarian.


Area industri dan situs komersial


Dengan zona industri, semuanya jauh lebih sederhana daripada dengan sektor swasta. Sebagai aturan, mereka sudah ditandai dengan tag landuse = industri dan tidak ada masalah dengan mereka. Kecuali ada beberapa pengecualian ketika tidak semua blok ditandai, tetapi bangunan terpisah. Tapi karena saya menggunakan kode yang sudah jadi untuk bekerja dengan peta dari Sight Safari di proyek, ini sudah diperhitungkan di sana.


Landuse = ritel harus mengotak-atik situs komersial secara manual. Karena dalam setengah dari kasus pasar besar atau pusat perbelanjaan ditandai dengan cara ini, dan di babak kedua, gudang grosir terletak di suatu tempat di pinggiran, atau di terminal kargo umum di mana masuknya dilarang untuk orang luar. Standardisasi, seperti biasa, timpang. Untungnya, ada beberapa zona seperti itu, tag ini tidak terlalu populer, jadi tidak sulit untuk menghadapinya secara manual.


Pada saat yang sama ia menambahkan ke daftar toponim lucu yang sering ditemukan di zona industri. Misalnya, di Yaroslavl ada Jalan Rem. Jika saya tinggal di sana, saya pasti akan mendirikan kantor di sana untuk kantor TI saya.


Kejutan kartografi


Meskipun saya sudah memiliki pengalaman dengan OSM, sesuatu yang baru selalu muncul.


Misalnya, Yaroslavl ternyata memiliki sirkuit eksternal terbuka. Secara visual, itu terlihat tertutup, tetapi mengacu pada node dan garis yang hilang. Mungkin ada masalah ekspor.


Banyak kecanduan ditemukan di dalam batas kota. Dalam kenaifan saya, saya berpikir bahwa perbatasan sebuah kota selalu merupakan garis terputus yang sederhana. Tapi tidak.


Ada banyak kota berlubang. Misalnya, Obninsk. Artinya, di sini benar-benar sepotong di dalam kota bukan miliknya secara administratif.



Obninsk berlubang


Ada kota yang terdiri dari beberapa daerah yang tidak terkait, seperti Kirov. Apalagi, jika di bagian tengah Kirov ada beberapa perempat, maka di sebelah kiri, yang terkecil umumnya hanya sepotong jalan menuju bandara, dan empat rumah. Apa garam untuk memotong potongan seperti itu dan menempelkannya ke kota?



Kirov terdiri dari tiga bidang yang tidak terkait


Tentunya jika program BDSM berlanjut, dan saya terus berpartisipasi di dalamnya, saya akan berkenalan dengan beberapa situasi kartografi non-sepele yang tidak dapat saya langsung bayangkan.


Masalah Tata Letak Peta


Beberapa kata tentang markup OSM.


Di kota-kota terakhir yang saya proses, saya dihadapkan pada kenyataan bahwa orang tidak memasang tag penggunaan lahan, atau entah bagaimana menempatkannya. Bahkan, bagi orang yang jauh dari IT, makna yang dalam dari tag ini mungkin tidak terlalu jelas. Nah, pikirkan, mereka mengubah warna peta (area perumahan abu-abu, area industri merah muda, dll), akan tampak tidak berprinsip. Dan karena itu, banyak yang berhubungan dengan mereka dengan santai.


Namun, menurut saya, kekuatan OSM terletak pada kemampuan untuk mengolah data dalam volume besar, seperti apa yang saya lakukan di sini atau di Sight Safari. Ada banyak kartu di Internet, tetapi saya tidak tahu lagi kartu dengan kemampuan untuk mengempiskan semua geometri dan tag dan menggunakannya secara bebas di algoritme saya. Dan hanya untuk tujuan seperti itu, tag ini mulai memainkan peran penting. Karena tugas hampir selalu terlihat seperti "menemukan sesuatu di sana di area dengan tipe tertentu," dan tag penggunaan lahan adalah cara pertama dan termudah untuk mengidentifikasi dan menemukan area yang Anda butuhkan.


Hal yang sama, tetapi pada tingkat lebih rendah, berlaku untuk sekelompok tag lain, misalnya, menentukan jenis penggunaan (well, ini bukan hanya zona perumahan, tetapi bangunan bertingkat rendah). Mereka sering tidak dikukus, mungkin karena mereka tidak melihat banyak manfaat di dalamnya. Dan pada kenyataannya, jika Anda hanya menggunakan navigator dan peta online, maka mereka tidak terlihat di sana. Tetapi justru untuk pemrosesan data kartografi mesin mereka dapat memberikan petunjuk berharga dan menyederhanakan algoritma.


Secara umum, beri tag, tuan-tuan! Baiklah, kumohon!


Dan ya, berdasarkan masalah yang saya temukan, saya memeriksa kartu itu sendiri dan menaruh beberapa tag. Jadi manfaat bagi masyarakat dari proyek ini juga menarik.


Jadi ke mana saya mengirim walikota?


Karena saya tidak ikut serta dalam pembuatan film itu sendiri, dan sebagian besar pekerjaan saya selesai sebelum syuting episode pertama, saya dipaksa untuk puas dengan informasi yang terpisah-pisah dari sumber-sumber publik seperti orang lain.


Secara umum, agak bodoh jika algoritme saya akan menuntun mereka sepenuhnya ke hutan belantara. Menjadi sangat bodoh ketika saya membaca ini di sebuah posting tentang Ivanovo:


Vladimir Sharypov, walikota kota itu, meninggalkan kesan yang baik. Buka dan jujur ​​orang. Saya akan mengatakan terlalu jujur ​​untuk seorang pejabat. Pembicaraan itu menarik. Kami pergi ke Sort, tempat pertemuan dengan beberapa pemilih dilakukan secara spontan.

gambar


Semuanya akan baik-baik saja, tetapi pada pukul 14:00 tidak ada yang sadar di Sort. Di bawah ketentuan pertunjukan, walikota harus berjalan tanpa keamanan. Saya bahkan pada beberapa titik berpikir bahwa akan ada perkelahian, karena beberapa warga jelas dalam kondisi yang tidak memadai. Tetapi tidak ada yang terjadi.

Dan akhirnya, seri pertama di saluran dirilis, Anda bisa menonton.



Ketika algoritme memilih Commodity Lane pada peta Yevpatoriya, Ilya juga tampaknya memiliki keraguan merayap masuk, dalam hal apa pun, ia bertanya apakah walikota takut. Namanya sedemikian rupa sehingga segera membangkitkan pikiran tentang beberapa pabrik yang ditinggalkan suram, jalan-jalan kotor dan orang-orang gelap dengan tatapan keras (maafkan saya penduduk Yevpatoria, jika tidak demikian).


Kesimpulan


Pekerjaan pada proyek ini ternyata menarik. Tanpa meninggalkan rumah, saya melakukan perjalanan singkat ke kota-kota di negara saya, memanjat mereka dengan kaca pembesar di semua peta yang mungkin dan berkenalan dengan rasa kartografi lokal. Sepanjang jalan, saya juga menyelesaikan kode Sight Safari.


Seperti yang Anda lihat, bukan tugas sepele untuk menggali peta dan memilih titik-titik acak. Dan untuk setiap algoritme yang jelas, hidup siap memberi Anda selusin kota di mana ia tidak bekerja.


Sebagai iklan: Saat ini saya melakukan semua ini di Institute of Design and Urban Studies di ITMO. Kami melakukan banyak hal menarik di sana terkait dengan data IT dan kota, jika seseorang tertarik dengan topik ini - datanglah kepada kami untuk belajar di magistrasi atau pekerjaan.


Selama persiapan proyek, kode dan pengalaman proyek Sight Safari , seorang navigator untuk mencari rute wisata, secara aktif digunakan.


Dan akhirnya: menurut Anda inisiatif ini berguna - jalan-jalan seperti itu dengan walikota? Apakah mereka akan mengubah apa pun? Pertanyaan apa yang akan Anda ajukan kepada walikota kota Anda?

Source: https://habr.com/ru/post/id416899/


All Articles