如何使用Python&OSM来获取我附近的内容的列表?

2024-05-19 01:05:49 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我能帮忙的话,我对生成瓷砖不感兴趣。相反,我要找的是一种获取“近在咫尺”信息的手段,尤其是水体和绿地,甚至是公务员制度。在

如果我有地图块,我想我可以把它们解析成我想要的颜色,但我想肯定有更好/更聪明的方法。难道不可能得到lat,lng附近属于类别A和{}的对象列表吗?在

我是一个称职的Python程序员,但对OSM完全陌生。我知道我可以下载一个非常大的XML文件,并且拥有所有的数据,但是访问它,尤其是为了这种目的访问它对我来说是完全陌生的。在

但是,我应该可以在GeoDjango设置中完全访问PostgreSQL数据库和PostGIS。在


Tags: 对象方法信息颜色手段地图类别瓷砖
1条回答
网友
1楼 · 发布于 2024-05-19 01:05:49

Tiles不是必需的,生成Tiles只是使用OSM数据的一种可能方法。在

您需要联机还是脱机解决方案?对于在线解决方案,您甚至不需要数据的本地副本。相反,您可以直接获取特定位置周围的数据。不要使用官方的API,它主要用于编辑,而不是用于批量查询,只需使用Overpass API,它的速度更快,并且具有复杂的query language。在

下面是一个用于查询给定bounding box50.6,7.0,50.65,7.05内所有商店停车位的示例:

(
  node
    ["shop"]
    (50.6,7.0,50.65,7.05);
  node
    ["amenity"="parking"]
    (50.6,7.0,50.65,7.05);
  way
    ["shop"]
    (50.6,7.0,50.65,7.05);
  way
    ["amenity"="parking"]
    (50.6,7.0,50.65,7.05);
  relation
    ["shop"]
    (50.6,7.0,50.65,7.05);
  relation
    ["amenity"="parking"]
    (50.6,7.0,50.65,7.05);
);
(
  ._;
  >;
);
out;

(结果可以下载为XML或{a6}。您也可以使用overpass turbo)将其可视化

为了理解查询,您必须熟悉OSM's basic elements节点方法关系),以及tagging system和{a10}。在

如果您需要一个更好的本地解决方案,那么您需要一个更好的本地数据库。对于一条指令,您可以阅读serving tiles howto on switch2osm并跳过Apache/mod_tile/mapnik步骤。输入一个extract而不是整个星球通常就足够了。相反,实时解析XML文件将非常慢,除非您有一个非常小的区域,比如一个城市,并且您事先做了一些filtering。在

相关问题 更多 >

    热门问题