如果能帮助我,我对制作瓷砖并不感兴趣。相反,我正在寻找的是一种获取“我的附近”信息的方式,特别是水和绿地,甚至是公务员。
如果我有地图图块,我想我可以解析它们我想要的颜色,但我认为必须有更好/更聪明的方法。是否无法获取属于lat,lng
和A
类别的B
附近的对象列表?
我是一名称职的Python程序员,但我对OSM来说是全新的。我知道我可以下载一个非常大的XML文件而拥有所有数据,但访问它,特别是出于这种目的对我来说是完全陌生的。
但是,我应该可以在GeoDjango设置中完全访问PostgreSQL数据库和PostGIS。
答案 0 :(得分:4)
平铺不是必需的,生成切片只是使用OSM数据的一种可能方式。
您需要在线或离线解决方案吗?对于在线解决方案,您甚至不需要本地数据副本。相反,您可以直接获取特定位置周围的数据。不要使用主要用于编辑的官方API而不是批量查询,只需使用速度更快且具有复杂Overpass API的query language。
以下是一个示例Overpass API查询,用于在给定的bounding box 50.6,7.0,50.65,7.05 <内查询所有商店和停车位 / EM>:
(
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或JSON。您还可以使用overpass turbo将其显示为
为了理解查询,您还必须熟悉OSM's basic elements(节点,方式和关系)作为tagging system和most common tags。
如果您需要离线解决方案,那么最好设置一个本地数据库。对于一条指令,您可以阅读serving tiles howto on switch2osm并跳过Apache / mod_tile / mapnik步骤。导入extract而不是整个星球通常就足够了。实际解析XML文件将非常缓慢,除非你有一个非常小的区域,比如一个城市,你事先做了一些filtering。
答案 1 :(得分:0)
GeoffBoeing 有一个非常漂亮的 OSMnx 包 https://geoffboeing.com/tag/osmnx/ 您可以通过 OSM 轻松获得附近的所有便利设施。
import osmnx as ox
import geopandas as gpd
place_name = "" (geocoding of polygon)
tags = {'amenity': 'charging_station'}
ox.geometries_from_place(place_name, tags)