Skip to content

kongyl/Poi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Poi

从网络地图(目前仅支持百度地图)的 API 获取 POI

功能描述

  通过百度地图的 Place API v2 批量获取 POI。

  程序根据地级市组织获取 POI 的范围,默认根据关键字和地级市名称搜索 POI。

  百度 Place API v2 的搜索结果最多只有 400 条。程序支持分块获取 POI,以突破 400 条的限制。程序内置了全国大部分地级市的矢量面数据(共 362 个地级市,其中 339 个包含矢量数据),从选定城市的矢量数据中获取外包矩形框,根据选定的分块方案对矩形框进行分块,逐分块请求 POI 数据。对于请求得到的 POI,再根据矢量的边界,将边界外的 POI 剔除。

  程序所需的数据都存储在 Db\poi.db 中,这是一个 sqlite 文件,其中包含 spatialite 形式存储的矢量。

程序启动

  直接在 Visual Studio 中打开 Poi.sln 即可开发和修改代码。

  编译生成程序后,32 位平台将 Dll\x86 文件夹中所有的 dll 文件复制到 exe 生成的文件夹下;64 位平台将 Dll\x64 文件夹中所有的 dll 文件复制到 exe 生成的文件夹下,已存在的 dll 文件跳过或覆盖都可以。再将 Db\poi.db 复制到 exe 生成的文件夹下,程序即可正常启动。

  此时程序中并未包含有效的百度地图 API 的校验码。需要在百度地图开放平台中注册账户,创建服务端应用,确保能够支持 Place API v2,并选择“sn校验方式”。创建应用后,获取相应的 AK 和 SK。通过程序的“配置密钥”按钮添加 AK 和 SK,或直接用 sqlite 客户端打开 poi.db,在 dictionary 表中添加正确的 AK 和 SK。添加成功后,即可正确运行程序。

其他

  1. POI 的总数是通过 API 获取的,与实际请求获得的总数很可能不同。这可能是由于

  (1) 分块不够细密;

  (2) 矢量边界与百度地图中地级市的范围不一致;

  (3) POI 重复;

  (4) 坐标偏移;

等原因造成。

  2. 这里的分块策略是均匀分块,而实际 POI 分布并不均匀,如果 POI 分布过于密集,需要很大的分块数量才能完整获取,但过多的分块请求有可能导致配额不足。

  3. 分块建议功能就是假设 POI 均匀分布的情况下进行的分块估算,并将估算结果翻倍后的结果,可能远远大于所需分块数量,也可能由于 POI 过于密集而分块不足,因此只是建议,不必受此限制。

  4. 对于一次分块获取的结果,如果配额足够,可以加密分块,如果结果数量没有增加,说明已经获取了矢量范围内所有 POI。

About

从百度地图的API获取POI

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages