我们告诉市长去哪里(使用开放式街道地图)

您不认为我们的官员与现实有些脱节吗? 仅从市中心的办公室窗口看受管制的领土还不够吗? 市长不时亲自环游城市,与人沟通并以现场方式回答问题会很好吗?


好吧,著名的博客作者Ilya Varlamov也这么认为,因此他以挑衅的名字BDSM发起了最酷的项目,特别是“市长的大路”( 链接到公告):


停止在俄罗斯城市中独自行走-现在该邀请市长,州长,城市管理人员了。

规则很简单。

计算机将在您的城市中随机选择两个地址。 之后,我们从一个地址走到另一个地址。 条件之一:你不能使用汽车。 只有腿,自行车,公共交通工具,踏板车和狗队。 没有准备,没有路线批准。 有时,步行穿过整个城市的路程会很长,有时您只需要在市中心走几个街区即可。 这是主要条件:没有窗户装饰,没有准备。

在步行过程中,我们与市长一起研究基础设施,并与居民进行沟通。 该官员将有一个难得的机会向整个俄罗斯介绍他的城市,解释城市治理的复杂性,与人民更加亲密!


该项目的第一个视频的帧,在我参与选择随机点的服务的参与下


你问哈勃与它有什么关系? 关键是要随机选择路线起点和终点的地址。 如果您不想陷入某个工业区的荒野或迷失在私营部门的无边无际的篱笆中,这并不是一件容易的事。 仅仅点击眼罩卡在这里是行不通的!


关于我如何解决此问题以及如何发现诸如伊凡诺沃或基洛夫之类的城市的经历。


碰巧的是,由于我为旅游路线的建设提供的服务,我已经具有必要的地图和导航经验。 正是通过一篇关于他在枢纽上的文章 ,他们找到了我,并提议开发一个系统,在城市地图上选择路线的起点和终点。


主意


根据Varlamov团队的想法,它应该看起来像这样:起点和终点的标记在城市地图上来回跳跃,清楚地表明了过程的随机性。 市长本人随时按下按钮并停止搜索。 之后,他们选择一条路线(可惜的是,我的人行路线服务可以为他们提供一些有趣的东西)然后在城市中散散步。


最初,积分要求如下:


  1. 点之间的距离不少于3公里
  2. 积分不在工业区中,也不在私营部门中
  3. 点必须位于城市的不同区域,以便它们之间的路线穿过中心

然后,在开发过程中,添加了另一个要求:服务应该能够与硬件Big Red Button交互,如下所示:



该按钮仅向连接的计算机发送点击信号


整个难题是如何以这种方式构成这条路线,一方面要避免荒野,另一方面要尽可能覆盖整个城市的所有区域,而不仅仅是中心的几个“像样”的街区。 同时,起初我心中有一些定型观念,这是由于我自己住在圣彼得堡这一事实的结果。此外,我来自或多或少的俄罗斯大城市,只有几百万个城市,如莫斯科和喀山。 但是该项目主要集中在人口200-500,000的城市(显然,大城市的市长太忙了,无法走上街道)。 总的来说,我再次得到关于“莫斯科不是俄罗斯”的论点的证实。 以下所有注意事项均不正确:


1)中心的高层建筑,郊区的工业区和私人住宅。
2)至少分为几部分-一个季度只有高层建筑,而另一个则只有私人房屋。 那么,谁将在木制小屋中建造赫鲁晓夫呢?
3)城市的领土是地图上的一个简单多边形,里面是所有建筑物
4)好吧,垃圾填埋场可能有洞,但至少有一个
5)好吧,不是一个,但至少不超过两个无关的部分
6)OSM数据中的城市标有适当的土地利用标签,并且选择居住区将很容易


总的来说,我不得不走路耙。


点选择算法


首先,我必须决定如何精确选择起点和终点。 我拒绝了几乎立即在城市边界内任意坐标处随意扔一个点的想法。 地图上的城市大部分地区都是各种无法通行的地区:房屋,河流,多边形,只是未标记的地区(不清楚所处位置)的多边形。 老实说,随机点经常会落入它们中,您要么必须移动它(这会极大地影响随机性),要么转移它直到到达合适的位置(这会影响工作速度)。


由于步行不需要一个任意点,而是可以步行到达的一个点,所以我决定只沿道路取一点。 结果,我的算法采用了所有OSM道路(带有高速公路标记的道路以及与人行道和人行道相对应的值),折断了太长的边线并添加了中间点(以使一条边线上的相邻点彼此之间的距离不超过一百米) ),然后删除彼此之间距离太近(例如小于50米)的点,例如在多条平行道路上。



削减了雅罗斯拉夫尔,铁路私人住宅区和工业区的标记点


结果是覆盖整个城市的网格大致相同。 此外,当请求下一个点时,不再需要重复进行大量的几何计算,而从预先计算的点集中选择合适的随机对就足够了。


如何选择它们? 为此,我们有两个要求:彼此之间以及城市的不同地区之间的距离不得超过三公里,因此路线必须经过中心。 如果第一个条件很容易满足,那么第二个条件是我需要确定实际的中心。 您不会从地图上挤出此类信息(城市的几何中心根本不是它的历史中心)。


为此,我决定采用简单的方法,只需手动标记城市中心即可。 我在非常方便的geojson.io网站上进行了编辑,将多边形加载添加到了GeoJSON中(实际上,如果您需要在项目中使用简单的2D几何图形,则geojson.io允许您非常快速地完成所有操作,而不必担心创建自己的编辑器或使用使用各种重量级的GIS应用程序)。



标记基洛夫,带有标记的中心(黄色),手动删除的区域(红色)和添加的切片(绿色)


因此,该算法的第一个版本已在两天内准备就绪,测试时间开始了。 而且这里的陷阱越来越多。


私营部门


根据任务的条件,该路线不应在私营部门开始和结束。 凭我的天真,一个大城市的居民永远都不会想到,私人木屋可能位于城市中心广场附近的一条街道上。 不是像我们这样的几个古老古迹,而是自然而然的整个街区。


与这些社区的斗争大部分时间都在进行。 最初,我尝试使用纯OSM数据。 居民=农村地区的农村标签和土地用途=各种园艺的分配地域有特殊含义。



是的,即使在圣彼得堡,城市也有内置园艺


但是,很快就很清楚,这些标签很少放置,并且通常仅在最常见的土地使用=居住区(居住区)时才满意。


下一步是尝试手动清除此类社区。 在具有市中心的geojson文件中,我添加了对手动删除区域的支持。 不幸的是,很快就清楚地知道,“下载地图-查看地图-发现私营部门-在geojson.io中将其切掉-再次下载”这一周期的许多迭代都花费了很多时间,尤其是在私人住宅与高层建筑混杂且散落在其中的城市中在这里。 例如,在伊凡诺沃



私人建筑和公寓建筑彼此密集,距离市中心仅几个街区


我不得不提出一个经验算法。 我取了一个四分之一(土地使用=居住区域,虽然没有直接使用的要求,通常不是整个城市或地区,而是分开的一个季度),但我取了其中的所有建筑物(带有建筑物标记的多边形),并计算了该多边形的平均面积。 如果出来的面积不足400平方米(该数字是从天花板上拿出来的,条件是标记和计算不礼貌,并且在此类区块中发现了单独的长屋),则该区块被视为私有部门,因此被排除在计算之外。


结果,这三种方法的结合使得有可能或多或少有效地过滤掉不需要的区域,尽管并非没有体力劳动的参与。


但是,当然,后来遇到了例外。 例如,叶夫帕托里亚(Yevpatoriya),整个历史中心通常基本上是私营部门的狭窄街道。 如果将其全部扔掉-城市将一无所有。



Evpatoria的典型景观,距离大海只有几百米


特别是在这种情况下,不仅需要将手动删除的城市扇区添加到GeoJSON中,而且还需要手动添加扇区。 即 即使该季度不在其他条件下,它也仍包含在可搜索的点列表中。


工业区和商业场所


在工业园区,一切都比在私营部门要简单得多。 通常,它们已经被标记为landuse = industrial,并且没有问题。 除非有一些例外,即不是所有的街区都标出,而是分开的建筑物。 但是,由于我在项目中使用了现成的代码来处理Sight Safari中的地图,因此已经在其中考虑了这一点。


土地用途=零售必须手动修改商业用地。 因为在一半的情况下,大型市场或购物中心都采用这种方式标记,而在下半年,批发仓库则位于郊区或一般货运站的某个位置,禁止外部人进入。 像往常一样,标准化是la脚的。 幸运的是,有很多这样的区域,该标签不是很流行,因此手动处理它们并不困难。


同时,他将自己的有趣地名添加到了工业区中经常发现的有趣地名中。 例如,在雅罗斯拉夫(Yaroslavl),有刹车街(Brake Street)。 如果我住在那儿,我肯定会在那儿为我的IT办公室建立一个办公室。


制图的惊喜


尽管我已经对OSM有一定的经验,但总是弹出一些新的东西。


例如,雅罗斯拉夫尔(Yaroslavl)的外部电路断路。 从外观上看,它看起来是封闭的,但表示缺少节点和线。 可能存在出口问题。


在城市范围内发现了许多成瘾。 我天真地认为城市的边界总是一条简单的闭合虚线。 但是没有


有空洞的城市。 例如,奥布宁斯克。 也就是说,这里实际上是城市内部的一块,在行政上不属于他。



奥布宁斯克带孔


有一些城市由几个不相关的区域组成,例如基洛夫。 此外,如果在基洛夫的中间部分有几个街区,那么左边,最小的通常只有通往机场的那条路和四栋房屋。 切成这样一块并贴在城市上的盐是什么?



基洛夫包括三个无关的领域


当然,如果BDSM计划继续进行,并且我继续参与其中,那么我将熟悉一些我无法立即想象的非平凡的制图情况。


地图布局问题


关于OSM标记的几句话。


在我处理的最后一个城市中,我面临着这样的事实,即人们不会放置土地标签,也不会以某种方式放置它们。 实际上,对于远离IT的人来说,这些标签的深刻含义可能不是很清楚。 好吧,想想,它们会更改地图的颜色(灰色的居民区,工业区为粉红色等),这似乎是无原则的。 因此,许多人很随意地与他们有关。


但是,我认为OSM的优势在于能够处理大量数据,例如我在此处或Sight Safari中所做的处理。 互联网上只是有很多卡,但是我不知道有什么卡可以缩小所有几何图形和标签并在我的算法中自由使用它们。 正是出于这种目的,这些标签开始发挥重要作用。 由于任务几乎总是像“在某种类型的区域中找到东西”,而Landuse标签是识别和查找所需区域的第一种也是最简单的方法。


相同的,但程度较小的适用于其他一堆其他标签,例如,指定用途类型(嗯,这不仅是住宅区,而且是一栋低层建筑)。 他们常常不愿意投入,可能是因为他们没有看到太多好处。 实际上,如果仅使用导航器和在线地图,则它们在此处不可见。 但是正是对于制图数据的机器处理而言,它们可以提供有价值的提示并简化算法。


一般来说,请放置标签,先生们! 好吧,拜托!


是的,根据发现的问题,我自己检查了卡片并放了一些标签。 因此,该项目也为社区带来了好处。


那我把市长送到哪里呢?


由于我自己并未参与拍摄,并且我的大部分工作都是在拍摄第一集之前完成的,因此我被迫与其他所有人一样,都接受来自公共资源的零碎信息。


总的来说,如果我的算法将它们完全引导到某个荒野中,那将有些愚蠢。 当我在有关伊凡诺沃的帖子中阅读以下内容时,它变得特别愚蠢:


市长弗拉基米尔·沙里波夫(Vladimir Sharypov)给人留下了深刻的印象。 开诚布公的人。 对于一个官员,我会坦率地说。 谈话很有趣。 我们去了排序,在那里与一些选民自发举行了会议。

图片


一切都会好起来的,但在14点钟,Sort不会显得清醒。 根据展览的条款,市长必须在没有安全保护的情况下行走。 我什至在某些时候以为会打架,因为有些公民显然处于不足状态。 但是什么也没发生。

最后,该频道的第一个系列发行了,您可以观看。



当该算法在Yevpatoriya地图上选择Commodity Lane时,Ilya似乎也开始怀疑,无论如何,他询问市长是否害怕。 这个名字使人立即想到一些阴沉的废弃工厂,肮脏的道路和黑暗的人,他们的表情很难看(如果不是,请原谅耶夫帕托里亚的居民)。


结论


事实证明,该项目的工作很有趣。 在没有离开家的情况下,我去了我国的城市一些短途旅行,在所有可能的地图上都用放大镜爬了上去,并熟悉了当地的制图风格。 在此过程中,我还完成了Sight Safari代码。


如您所见,深入研究地图并选择随机点并不是一件容易的事。 对于每种显而易见的算法,生活已经准备就绪,可以为您提供十二个无法使用的城市。


作为广告:我目前正在ITMO 设计与城市研究所进行所有这些工作。 如果有人对此主题感兴趣,我们会在其中做很多与IT和城市数据有关的有趣事情-来找我们的裁判官或工作人员。


在项目准备期间,积极使用了Sight Safari项目(用于搜索旅游路线的导航器)的代码和经验。


最后:您认为这项倡议有用吗?与市长一起散步? 他们会改变什么吗? 您会问城市的哪些问题?

Source: https://habr.com/ru/post/zh-CN416899/


All Articles