Nous indiquons au maire où aller (à l'aide de l'Open Street Map)

Ne pensez-vous pas que nos fonctionnaires sont quelque peu dissociés de la réalité? Qu'est-ce qui ne suffit pas pour regarder le territoire contrôlé exclusivement depuis la fenêtre du bureau du centre-ville? Ce serait bien que le maire de la ville se promène de temps en temps en ville, communique avec les gens et réponde aux questions en mode live?


Eh bien, le célèbre blogueur Ilya Varlamov l'a également pensé, alors il a lancé le projet le plus cool avec le nom provocateur BDSM, et plus précisément "Big Road With the Mayor" ( lien vers l'annonce):


Arrêtez de marcher seul dans les villes russes - il est temps d'inviter les maires, les gouverneurs, les chefs de ville.

Les règles sont simples.

L'ordinateur sélectionne au hasard deux adresses dans votre ville. Après cela, nous nous promenons d'une adresse à l'autre. Une condition: vous ne pouvez pas utiliser la voiture. Seuls les jambes, un vélo, les transports en commun, un scooter, une attelage de chiens. Pas de préparation, pas d'approbation d'itinéraire. Parfois les promenades seront longues, à travers toute la ville, parfois il ne faudra parcourir que quelques pâtés de maisons au centre. C'est la condition principale: pas d'habillage de fenêtre, pas de préparation.

Pendant la promenade, nous étudions avec le chef de la ville les infrastructures, communiquons avec les habitants. Le fonctionnaire aura une occasion unique de parler à toute la Russie de sa ville, d'expliquer les subtilités de la gouvernance urbaine, de se rapprocher du peuple!


Image de la première vidéo du projet, avec la participation de mon service pour choisir des points aléatoires


Qu'est-ce que Habr a à voir avec ça, demandez-vous? Et la chose est dans la phrase sur le choix aléatoire de l'adresse du début et de la fin de l'itinéraire. Ce n'est pas une tâche si simple si vous ne voulez pas vous retrouver dans la nature sauvage d'une zone industrielle ou vous perdre parmi les clôtures sans fin du secteur privé. Il suffit de taper sur la carte bandeau ne fonctionnera pas ici!


À propos de la façon dont j'ai résolu ce problème et quelles découvertes des villes comme Ivanovo ou Kirov m'ont présentées - sous la coupe.


Il se trouve que j'ai déjà eu l'expérience nécessaire avec les cartes et la navigation grâce à mon service pour la construction d'itinéraires touristiques. C'est à travers un article sur lui sur le hub qu'ils m'ont trouvé et ont proposé de développer un système qui sélectionne les points de départ et d'arrivée de l'itinéraire sur un plan de ville.


Idée


Selon l'idée de l'équipe Varlamov, cela aurait dû ressembler à ceci: les marqueurs des points de départ et d'arrivée sautent d'avant en arrière sur le plan de la ville, démontrant clairement le caractère aléatoire du processus. Le maire lui-même à tout moment appuie sur le bouton et arrête la recherche. Après quoi, ils choisissent un itinéraire (c'est dommage qu’à la main, mon service d’itinéraire pédestre puisse leur offrir quelque chose d’intéressant) et se promènent dans la ville.


Initialement, les exigences pour les points étaient les suivantes:


  1. La distance entre les points n'est pas inférieure à 3 kilomètres
  2. Les points ne sont pas dans la zone industrielle et pas dans le secteur privé
  3. Les points doivent être situés dans différentes parties de la ville, de sorte que l'itinéraire entre eux passe par le centre

Puis, pendant le développement, une autre exigence a été ajoutée: le service doit pouvoir interagir avec le matériel Big Red Button, comme ceci:



Le bouton envoie simplement un signal de clic à l'ordinateur connecté


Toute la difficulté était de savoir comment composer cet itinéraire de manière à éviter les déserts d'une part, et d'autre part à couvrir avec des points possibles tous les quartiers de la ville, et pas seulement quelques quartiers «décents» du centre. Dans le même temps, au départ, j'avais un certain ensemble de stéréotypes dans ma tête qui étaient la conséquence du fait que je vis moi-même à Saint-Pétersbourg, en plus, de plus ou moins grandes villes russes, il n'y avait que quelques millions de villes comme Moscou et Kazan. Mais le projet était principalement concentré sur les villes de 200 à 500 000 habitants (apparemment, les maires des grandes villes sont trop occupés pour marcher dans les rues). En général, j'ai une fois de plus reçu la confirmation de la thèse selon laquelle «Moscou n'est pas la Russie». Toutes les considérations ci-dessous sont incorrectes:


1) Immeubles de grande hauteur dans le centre, et zones industrielles et maisons privées à la périphérie.
2) Au moins, il y a une division en quartiers - dans un quart il n'y a que des immeubles de grande hauteur, dans l'autre - seulement des maisons privées. Eh bien, qui construira Khrouchtchev parmi les cabanes en bois?
3) Le territoire de la ville est un simple polygone sur la carte, à l'intérieur duquel se trouvent tous les bâtiments
4) D'accord, il peut y avoir des trous dans la décharge, mais au moins un
5) Eh bien, pas une mais au moins deux pièces non liées
6) Les villes dans les données OSM sont marquées avec les étiquettes d'utilisation des sols appropriées et le choix des zones résidentielles sera facile


En général, je devais marcher sur un râteau.


Algorithme de sélection de points


Tout d'abord, j'ai dû décider comment exactement les points de départ et d'arrivée seraient choisis. J'ai rejeté l'idée de lancer un point au hasard à des coordonnées arbitraires à l'intérieur des limites de la ville presque immédiatement. La plupart de la ville sur la carte est constituée de toutes sortes de territoires infranchissables: des polygones de maisons, des rivières, des territoires simplement non marqués sur lesquels on ne sait pas exactement ce qui se trouve. Un point honnêtement aléatoire tombera très souvent en eux, vous devrez soit le déplacer (ce qui affectera assez fortement le hasard), soit le transférer jusqu'à ce que vous atteigniez un endroit approprié (et cela affectera la vitesse de travail).


La marche n'ayant pas besoin d'un point arbitraire, mais accessible à pied, j'ai décidé de ne prendre des points que le long des routes. En conséquence, mon algorithme prend toutes les routes OSM (Chemin avec une étiquette de route et des valeurs correspondant aux routes piétonnes et aux trottoirs), casse les bords trop longs en ajoutant des points intermédiaires (de sorte que les points voisins sur un bord ne soient pas à plus de cent mètres les uns des autres) ), puis supprime les points trop proches les uns des autres (à moins de 50 mètres), par exemple, sur plusieurs routes parallèles.



Les points marqués pour Yaroslavl, les quartiers des maisons privées et la zone industrielle le long de la voie ferrée sont coupés


Le résultat est une grille plus ou moins uniforme couvrant toute la ville. De plus, lors de la demande du point suivant, il n'est plus nécessaire de basculer et d'effectuer de nombreux calculs géométriques lourds, il suffit de choisir une paire aléatoire appropriée dans un ensemble de points pré-calculé.


Comment les choisir? Pour cela, nous avons deux exigences: à moins de trois kilomètres les unes des autres et dans différentes parties de la ville, de sorte que l'itinéraire doit passer par le centre. Si la première condition est simple à remplir, alors pour la seconde, je devais déterminer le centre réel. Vous ne tirerez pas de telles informations des cartes (le centre géométrique de la ville n’est pas du tout un fait qu’il s’agit de son centre historique).


Pour ce faire, j'ai décidé de suivre la voie la plus simple, et de simplement marquer manuellement le centre de la ville. Ajout du chargement de polygones à GeoJSON, que j'ai édité en utilisant le site Web très pratique geojson.io (sérieusement, si vous devez travailler avec une géométrie 2D simple dans votre projet, alors geojson.io vous permet de tout faire très rapidement et de ne pas vous soucier de créer vos propres éditeurs ou avec utilisant toutes sortes d'applications SIG lourdes).



Kirov marqué, avec un centre marqué (jaune), des zones supprimées manuellement (rouge) et une tranche ajoutée (verte)


Ainsi, la première version de l'algorithme était prête en deux jours et le temps de test a commencé. Et ici les pièges ont grimpé.


Secteur privé


Selon les conditions de la tâche, l'itinéraire n'était pas censé débuter et se terminer dans le secteur privé. Par ma naïveté, un habitant d'une grande ville n'aurait jamais pu penser que des maisons en bois privées pouvaient se trouver dans une rue voisine de la place centrale de la ville. Et pas quelques monuments antiques comme le nôtre, mais naturellement des blocs entiers.


La lutte contre ces quartiers a pris la plupart du temps. Au début, j'ai essayé de m'en sortir avec des données OSM pures. Il y a une signification spéciale pour l'étiquette résidentielle = rurale pour les zones rurales et les affectations foncières = pour toutes sortes de jardinage.



Oui, même à Saint-Pétersbourg, il y a du jardinage intégré dans la ville


Cependant, il est rapidement devenu évident que ces étiquettes sont placées assez rarement et ne sont généralement satisfaites que de l'utilisation des terres la plus courante = résidentielle (zone résidentielle).


L'étape suivante consistait à éliminer manuellement ces quartiers. Au fichier geojson avec le centre-ville, j'ai ajouté la prise en charge de la suppression manuelle des zones. Malheureusement, il est rapidement devenu clair que beaucoup d'itérations du cycle "téléchargeaient la carte - la regardaient - trouvaient le secteur privé - la découpaient dans geojson.io - téléchargée à nouveau" prennent beaucoup de temps, en particulier dans les villes où les maisons privées sont mélangées à plusieurs étages et dispersées en petits groupes là-bas et ici. Par exemple, à Ivanovo



Les immeubles privés et les appartements sont densément mélangés les uns aux autres à quelques pâtés de maisons du centre


J'ai dû trouver un algorithme empirique. J'ai pris un quart (utilisation des terres = région résidentielle, bien qu'il n'y ait pas d'exigence directe pour son utilisation, généralement il n'est pas marqué par toute la ville ou la région, mais par des quartiers séparés), j'ai pris tous les bâtiments qui s'y trouvent (polygones avec l'étiquette de bâtiment) et calculé la superficie moyenne d'un tel polygone. S'il sortait moins de 400 m2 (le chiffre a été pris du plafond, à condition que les marquages ​​et les calculs soient impolis et que de longues maisons individuelles aient été trouvées dans de tels blocs), alors le bloc était considéré comme un secteur privé et a été exclu des calculs.


En conséquence, la combinaison de ces trois méthodes a permis de filtrer plus ou moins efficacement les zones indésirables, mais non sans la participation du travail manuel.


Mais bien sûr, des exceptions se sont produites par la suite. Par exemple Yevpatoriya, où en général tout le centre historique est essentiellement les rues étroites du secteur privé. Si vous jetez tout - il ne restera plus rien de la ville.



Paysage typique d'Evpatoria à quelques centaines de mètres de la mer


Surtout pour de tels cas, il était nécessaire d'ajouter non seulement des secteurs supprimés manuellement de la ville à GeoJSON, mais également ceux ajoutés manuellement. C'est-à-dire même si le trimestre ne relevait pas d'autres conditions, il figurait tout de même dans la liste des points disponibles à la recherche.


Zones industrielles et sites commerciaux


Avec les zones industrielles, tout est beaucoup plus simple qu'avec le secteur privé. En règle générale, ils sont déjà marqués avec le tag landuse = industrial et il n'y a aucun problème avec eux. Sauf s'il existe des exceptions lorsque tous les blocs ne sont pas délimités, mais des bâtiments séparés. Mais puisque j'ai utilisé le code prêt à l'emploi pour travailler avec des cartes de Sight Safari dans le projet, cela a déjà été pris en compte là-bas.


Landuse = le commerce de détail a dû bricoler manuellement les sites commerciaux. Étant donné que dans la moitié des cas, les grands marchés ou centres commerciaux sont marqués de cette manière, et dans la seconde moitié, les entrepôts de gros sont situés quelque part à la périphérie, ou dans les terminaux de fret en général où l'entrée est interdite aux étrangers. La normalisation, comme d'habitude, est boiteuse. Heureusement, il existe de nombreuses zones de ce type, cette balise n'est pas très populaire, il n'a donc pas été difficile de les traiter manuellement.


Dans le même temps, il a ajouté à sa liste de toponymes amusants que l'on trouve souvent dans les zones industrielles. Par exemple, à Yaroslavl, il y a Brake Street. Si j'y habitais, j'aurais certainement installé un bureau pour mon bureau informatique.


Surprises cartographiques


Bien que j'avais déjà une certaine expérience avec OSM, quelque chose de nouveau surgissait toujours.


Par exemple, Yaroslavl s'est avéré avoir un circuit externe ouvert. Visuellement, il semble fermé, mais fait référence aux nœuds et aux lignes manquants. Il peut y avoir un problème d'exportation.


Beaucoup de dépendance a été trouvée dans les limites des villes. Dans ma naïveté, je pensais que la frontière d'une ville est toujours une simple ligne brisée fermée. Mais non.


Il y a des villes avec des trous. Par exemple, Obninsk. Autrement dit, ici vraiment un morceau à l'intérieur de la ville ne lui appartient pas administrativement.



Obninsk avec un trou


Il existe des villes composées de plusieurs zones indépendantes, comme Kirov. De plus, si au milieu de Kirov il y a plusieurs quartiers, puis à gauche, le plus petit n'est généralement qu'un tronçon de la route menant à l'aéroport, et quatre maisons. Quel était le sel pour couper un tel morceau et le fixer à la ville?



Kirov se compose de trois zones indépendantes


Assurément, si le programme BDSM continue, et je continue d'y participer, je vais me familiariser avec des situations cartographiques non triviales que je ne peux pas immédiatement imaginer.


Problèmes de disposition de la carte


Quelques mots sur le balisage OSM.


Dans les dernières villes que j'ai traitées, j'étais confronté au fait que les gens ne mettent pas d'étiquettes sur l'utilisation des terres, ou les mettent d'une manière ou d'une autre. En fait, pour une personne qui est loin de l'informatique, la signification profonde de ces balises peut ne pas être très claire. Eh bien, pensez, ils changent la couleur de la carte (zones résidentielles grises, zones industrielles roses, etc.), cela semblerait sans principes. Et par conséquent, beaucoup s'y rapportent de manière plutôt désinvolte.


Cependant, à mon avis, la force d'OSM réside dans la capacité à usiner de gros volumes de données, comme ce que j'ai fait ici ou dans Sight Safari. Il y a tout simplement beaucoup de cartes sur Internet, mais je ne connais plus de cartes capables de dégonfler toutes les géométries et balises et de les utiliser librement dans mes algorithmes. Et juste à de telles fins, ces balises commencent à jouer un rôle important. Étant donné que les tâches ressemblent presque toujours à «trouver quelque chose dans des zones d'un certain type», et la balise landuse est le premier et le plus simple moyen d'identifier et de trouver les zones dont vous avez besoin.


La même chose, mais dans une moindre mesure, s'applique à un tas d'autres étiquettes, par exemple, spécifiant le type d'utilisation (eh bien, ce n'est pas seulement une zone résidentielle, mais un immeuble peu élevé). Ils ne sont souvent pas cuits à la vapeur, probablement parce qu'ils n'y voient pas beaucoup d'avantages. Et en fait, si vous utilisez uniquement des navigateurs et des cartes en ligne, ils n'y sont pas visibles. Mais c'est précisément pour le traitement machine des données cartographiques qu'ils peuvent fournir des indications précieuses et simplifier les algorithmes.


En général, mettez des étiquettes, messieurs! Eh bien, je vous en prie!


Et oui, sur la base des problèmes que j'ai rencontrés, j'ai moi-même parcouru les cartes et mis quelques étiquettes. Ainsi, l'avantage pour la communauté de ce projet a également été tiré.


Alors, où ai-je envoyé le maire?


Comme je n'ai pas participé au tournage lui-même et que la plupart de mon travail était terminé avant le tournage du premier épisode, j'ai été obligé de me contenter des mêmes informations fragmentaires de sources publiques que tout le monde.


En général, c'était un peu stupide si mon algorithme les conduisait complètement dans une nature sauvage. C'est devenu particulièrement stupide quand j'ai lu ceci dans un article sur Ivanovo:


Vladimir Sharypov, le maire de la ville, a laissé une bonne impression. Personne ouverte et franche. Je dirais trop franc pour un fonctionnaire. La conversation était intéressante. Nous sommes allés à Sort, où une rencontre avec certains électeurs a eu lieu spontanément.

image


Tout irait bien, mais à 14 heures, il n'y a pas de sobriété à Sort. Selon les termes du spectacle, le maire doit marcher sans sécurité. J'ai même pensé à un moment donné qu'il y aurait une bagarre, car certains citoyens étaient clairement dans un état inadéquat. Mais il ne s'est rien passé.

Et enfin, la première série de la chaîne est sortie, vous pouvez regarder.



Lorsque l'algorithme a choisi Commodity Lane sur la carte d'Evpatoriya, Ilya semblait également avoir des doutes, en tout cas, il a demandé si le maire avait peur. Le nom est tel qu'il évoque immédiatement des pensées d'usines sombres abandonnées, de routes sales et de gens sombres avec un regard dur (pardonnez-moi les habitants d'Eupatoria, si ce n'est pas le cas).


Conclusion


Le travail sur ce projet s'est avéré intéressant. Sans quitter la maison, j'ai fait un court voyage dans les villes de mon pays, je les ai escaladées avec une loupe dans toutes les cartes possibles et j'ai pris connaissance de la saveur cartographique locale. En cours de route, j'ai également finalisé le code Sight Safari.


Comme vous pouvez le voir, ce n'est pas une tâche si triviale de creuser dans les cartes et de choisir des points aléatoires. Et pour chaque algorithme évident, la vie est prête à vous offrir une douzaine de villes où cela ne fonctionne pas.


En tant que publicité: je fais actuellement tout cela à l' Institut de design et d'études urbaines de l'ITMO. Nous faisons beaucoup de choses intéressantes là-bas liées à l'informatique et aux données de la ville, si quelqu'un est intéressé par ce sujet - venez chez nous pour étudier à la magistrature ou travailler.


Pendant la préparation du projet, le code et l'expérience du projet Sight Safari , un navigateur pour rechercher des itinéraires touristiques, ont été activement utilisés.


Et enfin: pensez-vous que cette initiative est utile - de telles promenades avec les maires? Vont-ils changer quelque chose? Quelles questions poseriez-vous au maire de votre ville?

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


All Articles