September 7

GEOINT #99. Французские столбики

Наша команда подключилась к решению таска лишь немного погодя после того, как автор дал подсказку - список из 10 наиболее безопасных городов во Франции. С его слов, в одном из них и сделали данную панораму: Toulouse, Saint-Gaudens, Nice, Rennes, Bordeaux, Avignon, Tours, Cannes, Dijon, Reims.

Видим панораму, вероятно стритвью - велодорожка, дом с забором, фонарный столб с табличкой. Первым делом взялись за отсмотр городов на схожесть в деталях (подобные столбы, таблички, дома). Один участник нашей команды составил замечательный список:

  • Терракотовые крыши: Toulouse, Bordeaux, Dijon, Reims, Saint-Gaudens, Nice, Avignon, Cannes.
  • Мини-скат на крыше: Dijon.
  • Голубые указатели: Tours (объемные буквы), Dijon, Avignon.
  • Тёмно-синие указатели: Reims, Avignon.
  • Тёмно-зеленые указатели: Rennes.
  • Белые указатели: Toulouse, Bordeaux, Nice, Cannes, Saint-Gaudens.

Как итог - больше всего нам бы подошел Dijon, или быть может Avignon. Начали с первого.

Случайная панорама в Дижоне, с черной и голубой табличкой одновременно - как на нашем фото

Сразу было понятно, что на голубом указателе первое слово RUE, а на чёрном вероятно BOULEVARD (оно довольно длинное для остальных типов улиц). Также после изучения множества указателей были сделаны некоторые предположения (не все оказались верными):

  • В названии rue два слова.
  • Название rue написано капсом, значит это не Имя Фамилия, так как имя в названии улицы не пишется капсом. Таких улиц значительно меньше.
  • Длина названия 13-15 символов, включая пробел, так как оно достаточно длинное, чтобы занимать всю ширину указателя, но при этом второе слово не перенесено на новую строку.
  • Длина названия boulevard тоже 13-15 по той же причине.

Проверяли в overpass все эти предположения. Искали пересечения бульваров с велодорожкой и улиц. Искали по длине названия и количеству слов. Было много разных запросов, все их приводить тут не имеет смысла, приведём только один из них: пересечение rue с названием из двух слов с бульваром с длиной названия от 12 символов.

area[name=Dijon][admin_level=8]->.a;
way[highway][name~"^boulevard .{12,}$",i](area.a)->.ways;
foreach.ways->.this_way{
  rel(bw.this_way)->.this_rel;
  node(w.this_way)->.this_way_nodes;
  
  way[highway][name~"^rue \\S+ \\S+$",i](bn.this_way_nodes)->.linked_ways;
  (
    way.linked_ways;
    -
    (
      way(r.this_rel);
      way.this_way;
    );
  )->.linked_ways_only;
  
  node(w.linked_ways_only)->.linked_ways_only_nodes;
  node.linked_ways_only_nodes.this_way_nodes;
  out;
}

Написали скрипт, который массово мог выгружать точки osm по opql запросу в виде панорам со спутниковым снимком.

На самом деле при достаточной усидчивости можно было найти точку даже в этом запросе. Но точек было много и проверять тщательно каждую не было возможности.

Мы использовали различные способы и комбинации. Долго пытались разобрать и предположить, что же могло быть помимо rue на данном указателе. К успеху данные попытки не привели.

Но, просмотрев кучу панорам и уже окончательно убедившись в том что это Дижон, мы решили выгружать списки улиц с помощью того же оверпасса по регэкспу. Расширили зону поиска до всего муниципалитета. Предположили, что первое слово в названии улицы короче второго и написали для этого несложный запрос:

[out:csv(name, ::id)];
area[name=Dijon][admin_level=7]->.a;
way[name~"^rue \\S{5,7} \\S{6,8}$",i](area.a);
out geom;

Выгрузили список улиц, их оказалось 294. Отбросили названия вида Имя Фамилия, осталось не так много:

Rue Colonel Ballet
Rue Colonel Driant
Rue Colonel Marcaire
Rue Colonel Picard
Rue Colonel Quantin
Rue Colonel Redoutey
Rue Devant L'église
Rue Docteur Calmette
Rue Docteur Chauveau
Rue Docteur Durande
Rue Docteur Lavalle
Rue Docteur Maillard
Rue Docteur Parizot
Rue Docteur Quignard
Rue Docteur Renardet
Rue Docteur Tarnier
Rue Géneral Bouchu
Rue Général Cambel
Rue Général Giraud
Rue Général Joubert
Rue Longe L'église
Rue Maison Blanche
Rue Minot Museux
Rue Neuve Bergère
Rue Neuve Dauphine

Просмотрели эти улицы. Ничего.

Решили еще раз внимательно изучить фото.

Обратили внимание на то что на фонарном столбе присутствовал второй фонарь.

Немного погуляв по Дижону, встречаем такой же:

Это еще раз подтверждало, что велодорожка проходит по бульвару. Камера вероятно находится на разделительной полосе, а фонарь освещает пешеходный переход. Хотя это предположение оказалось ошибочным, оно побудило нс отсмотреть все бульвары, чтобы найти похожий.

Пример таблички с бульваром

Делаем запрос для получения списка бульваров, чтобы осмотреть их уже вручную.

[out:csv(name, ::id)];
area[name=Dijon][admin_level=7]->.a;
way[name~"^boulevard",i](area.a);
out geom;

Получаем целых 82 бульвара в муниципалитете Дижон:

Boulevard Albert Einstein
Boulevard Alexandre 1er de Yougoslavie
Boulevard Bernard Palissy
Boulevard Carnot
Boulevard Chanoine Kir
Boulevard Charles de Gaulle
Boulevard Docteur Jean Veillet
Boulevard Docteur Petitjean
Boulevard Edmé Nicolas Machureau
Boulevard Eiffel
Boulevard Eugène Fyot
Boulevard Eugène Spuller
Boulevard François Pompon
Boulevard Gabriel
Boulevard Gaston Bachelard
Boulevard Georges Clemenceau
Boulevard Henri Bazin
Boulevard Henri Camp
Boulevard Jean Jaurès
Boulevard Jean Moulin
Boulevard Jeanne d'Arc
Boulevard John Fitzgerald Kennedy
Boulevard John Kennedy
Boulevard Maillard
Boulevard Mansart
Boulevard Marmont
Boulevard Maréchal Gallieni
Boulevard Maréchal Joffre
Boulevard Maréchal Juin
Boulevard Maréchal Leclerc
Boulevard Maréchal de Lattre de Tassigny
Boulevard Montaigne
Boulevard Olivier de Serres
Boulevard Pascal
Boulevard Pasteur
Boulevard Paul Doumer
Boulevard Rembrandt
Boulevard Robert Schuman
Boulevard Sévigné
Boulevard Thiers
Boulevard Trimolet
Boulevard Voltaire
Boulevard Winston Churchill
Boulevard de Beauregard
Boulevard de Bellevue
Boulevard de Brosses
Boulevard de Champagne
Boulevard de Chicago
Boulevard de Chèvre Morte
Boulevard de Strasbourg
Boulevard de Sévigné
Boulevard de Troyes
Boulevard de Verdun
Boulevard de l'Europe
Boulevard de l'Ouest
Boulevard de l'Université
Boulevard de la Croix Saint-Martin
Boulevard de la Défense
Boulevard de la Fontaine des Suisses
Boulevard de la Marne
Boulevard de la Motte
Boulevard de la Trémouille
Boulevard des Aiguillottes
Boulevard des Allobroges
Boulevard des Bourroches
Boulevard des Clomiers
Boulevard des Diables Bleus
Boulevard des Gorgets
Boulevard des Herbues
Boulevard des Hortensias
Boulevard des Industries
Boulevard des Martyrs de la Résistance
Boulevard des Peyvets
Boulevard des Valendons
Boulevard du 1er R.A.D.
Boulevard du Castel
Boulevard du Champ aux Métiers
Boulevard du Colonel Charles Flamand
Boulevard du Grand Marché
Boulevard du Maréchal Leclerc
Boulevard du Maréchal de Lattre de Tassigny
Boulevard Édouard Branly

Эврика! На 12-ом бульваре оказалась наша точка. Ответ: 47.328898, 5.030570.

Оказывается, на заднем плане была многоэтажка!

Напоследок приведём пример идеального opql запроса для этого таска, который возможно было сделать на основе озученных выше предположений, если отбросить ошибочные. Запрос возвращает только 5 точек и все они находятся на нашем бульваре.

area[name=Dijon][admin_level=8]->.dijon;
way[highway][name~"^boulevard .{13,}",i](area.dijon)->.bouls;
(
  way.bouls["cycleway:both"=lane];
  way.bouls[cycleway=lane];
)->.cycles;

foreach.cycles->.this_way{
  rel(bw.this_way)->.this_rel;
  node(w.this_way)->.this_way_nodes;
  way[highway][name~"^rue .{13,}$",i](bn.this_way_nodes)->.linked_ways;
  
  (
    way.linked_ways;
    -
    (
      way(r.this_rel);
      way.this_way;
    );
  )->.linked_ways_only;
  
  node(w.linked_ways_only)->.linked_ways_only_nodes;
  node.linked_ways_only_nodes.this_way_nodes;
  out;
}

Telegram @bolivia_team