POI服务开放消费街道图日期
openpoiservice的Python项目详细描述
OpenPoiseService
openpoiservice(ops)是一个flask应用程序,它承载一个高度可定制的兴趣点数据库,该数据库来自 openstreetmap.org的数据,因此利用了标签的概念…
< Buff行情>openstreetmap由键和值组成的标记描述 映射元素(节点、方式或关系)或变更集。这两个项都是自由格式的文本字段,但通常表示数字 或其他结构化项目。
此服务通过将osm标记分组到预定义的类别中来使用节点、方式和关系上的osm标记。
如果它获取一个OSM对象,该对象使用categories.yml
中定义的OSM键之一进行标记,它将导入
特定附加标签的兴趣点,可在ops_settings.yml
中定义。任何附加标签,
例如,轮椅
或吸烟
可用于在导入后通过API查询服务。
例如,如果要请求轮椅在几何图形中访问的所有poi,可以添加然后添加
轮椅:['yes','dedicated]
在http post请求的主体中过滤。
您可以在请求中向数据库传递3种不同类型的几何体。当前"point"和"linestring"与 支持相应的和缓冲区以及多边形。兴趣点将在给定的几何图形中返回。
您可以在本服务的设置文件中控制几何图形的最大大小和进一步的限制。
导入过程
将要导入的OSM文件进行多次分析,以从关系(OSM U类型3)中提取感兴趣的点, 方式(OSM_类型2)和节点(OSM_类型1)按顺序排列。具体兴趣点来源于哪种类型 在响应中返回-这将帮助您直接在openstreetmap.org上找到对象。
安装
您可以在虚拟环境中的主机上运行OpenPoiseService,也可以简单地使用Docker。文档文件 提供安装一个wsgi服务器(gunicorn),该服务器在端口5000上启动烧瓶服务。
存储和导入OSM文件的技术规范
python版本
因为此服务使用了python集合库,特别是deque的概念及其函数 它只支持Python3.5及更高版本。
数据库
此应用程序使用psql/postgis设置来存储感兴趣的点。我们强烈建议使用此功能 码头集装箱。
进口商
请考虑以下解析和导入OSM文件的技术要求。
<表><广告>注意:OpenPoiseService将导入OSM文件夹或子目录中的任何OSM PBF文件。 这样,您可以将planet文件分割成更小的区域(例如,从geofrabrik下载,用于下载的scraper脚本 在osm文件夹中找到链接),并使用一个较小的实例导入全局数据集(只要 OSM文件的磁盘空间不超过5 GB,16 GB的内存足以导入整个星球。
作为Docker C运行容器(烧瓶+玻璃瓶)
对文件ops\u settings\u docker.yml中的设置进行必要的更改。此文件将被复制到Docker容器中。
如果您计划导入其他OSM文件,请将其下载到
OSM文件夹中(将扫描其中的任何文件夹
对于OSM文件),因为这将是一个共享卷。
之后运行:
$ docker-compose up -d -f /path/to/docker-compose.yml
一旦建立了容器,就可以创建空数据库:
$ docker exec -it container_name /ops_venv/bin/python manage.py create_db
删除数据库:
$ docker exec -it container_name /ops_venv/bin/python manage.py drop_db
或导入OSM数据:
$ docker exec -it container_name /ops_venv/bin/python manage.py import_data
在虚拟环境中运行
- 创建并激活virtualenv
- 此存储库使用imposm.parser来解析
打开街道地图数据。为此,请确保在您的系统上安装了Google的Protobuf
< > >
- ubuntu(16.04及更早版本,17.10版支持):如果 https://imposm.org/docs/imposm.parser/latest/install.html"requirements没有 做这项工作。
- OS X在OS X上使用自制程序
就足够了。
- 然后,您可以通过pipWith
pip install-r requirements.txt安装必要的需求 < > >
准备设置.yml
使用必要的设置更新openpoiservice/server/ops_settings.yml,然后运行下列操作之一 命令。
[P/P>
$ exportAPP_SETTINGS="openpoiservice.server.config.ProductionConfig|DevelopmentConfig"
创建POI数据库
$ python manage.py create_db
放下POI数据库
$ python manage.py drop_db
分析和导入OSM数据
$ python manage.py import_data
使用烧瓶werkzeug运行应用程序
$ python manage.py run
默认情况下,您可以在以下地址访问应用程序:http://localhost:5000/" rel="nofollow">http://localhost:5000/
< Buff行情>要指定其他端口吗?
< Buff行情>$ docker-compose up -d -f /path/to/docker-compose.yml
0测试
$ docker-compose up -d -f /path/to/docker-compose.yml
1类别ID及其配置
openpoiservice/server/categories/categories.yml是一个列表(注意:不是全部!)具有任意类别ID的OpenStreetMap标记。 如果您保持以下结构,则可以根据需要操作此列表。
$ docker-compose up -d -f /path/to/docker-compose.yml
2openpoiservice在从openstreetmap数据导入poi并分配自定义类别id时使用此映射 相应地。
openpoiservice/server/ops_settings.yml中的列映射
控制将在数据库中考虑哪些osm信息,以及 用户可以通过api查询这些信息,例如$ docker-compose up -d -f /path/to/docker-compose.yml
3例如,意味着openstreetmap标签将考虑轮椅。 在导入和保存到数据库期间。然后,用户可以在filters对象中添加一个公共值列表
轮椅:['yes','dedicated',…]
对应于标签本身的osm公共值,例如。 https://wiki.openstreetmap.org/wiki/key:轮椅API文档
此烧瓶服务的文档通过flasger提供,可以是 通过
http://localhost:5000/apidocs/
访问通常有三种不同的请求类型
poi
,stats
和列表
在post主体中使用
request=poi
将返回一个geojson特性集合 在指定的边界框或几何体中。使用
request=stats
也会这样做,但最终会按类别分组 返回json obje一组泊松绝对数的ct。最后,
request=list
将返回从openpoiservice/server/categories/categories.yml
示例
缓冲点周围的泊松值
$ docker-compose up -d -f /path/to/docker-compose.yml
4给定类别的poi
$ docker-compose up -d -f /path/to/docker-compose.yml
5给定类别组的poi
$ docker-compose up -d -f /path/to/docker-compose.yml
6POI统计
$ docker-compose up -d -f /path/to/docker-compose.yml
7POI类别列表
$ docker-compose up -d -f /path/to/docker-compose.yml
8推荐PyPI第三方库