最终经过一番周折,基于网上资料进行了整理
- 注册高德账号,获取高德key
- 下载安装ArcMap/ArcGIS
- 将抓取区域等距分割并导出多边形经纬度
- 基于切割后的经纬度重新轮高德api
先通过高德行政区域查询,获取城市的坐标点
在示例下的"districts"–>“0”–>“polyline”;得到边界坐标值
复制出polyline,用任何一个现代化编辑器(vs code,notepad++等)将 ;
替换成换行符,在第一行插入 x,y
保存成 sz.csv
根据 ArcMap 0 (ArcGIS10.2安装(完善版–能解决常见问题)) 下载并安装ArcMap 10.2,并破解,但别汉化(后边点集转线的时候会报错)
第二步,通过arcmap 10.2获得深圳的对角线坐标
第三步,对每一个网格爬取POI
这里使用高德地图的多边形搜索API,具体参数可以查看https://lbs.amap.com/api/webservice/guide/api/search
这里需要介绍一下这一API的限制。高德地图规定每一个KEY每天只能调用5000次,经过测试,每一个账号可以申请10个KEY;在每一次调用“多边形搜索”API时,每一页最多返回25条数据,这意味着每天一个账号最多可获取50万条POI,这是最理想的情况,因为一页不可能总是满的。
同时,“多边形搜索”API最多只能返回一个多边形小于900的数据量;保险起见,当遇到某一个网格的POI数据量大于850的时候,需要再次划分网格进行递归查询。这一部分需要简单的调用requests和json库,构建URL参考请参考高德地图API文档-搜索POI中的“多边形搜索”,不多解释,完整代码如下。
const router = require("koa-router")(),
util = require("../utils/util"),
query = require('../controllers/mysqlConfig'),
fs = require('fs'),
neatCsv = require('neat-csv'),
superagent = require('superagent'),
readline = require('readline')
router.prefix("/poi")
const aMapBase = {
keys: ['x', 'a', 'b', 'c', 'd'],
nodeIndex: 0, // 当前使用的key下标
count: 0, // 计数,单独key的api限制使用5000次
poiType: '010000|020000|030000|040000|050000|060000|070000|080000|090000|100000|110000|120000|130000|140000|150000|160000|170000|180000|190000|200000', // 搜索的poi类,具体参考:https://lbs.amap.com/api/webservice/download
csvData: new Array() // csv数据
}
router.get('/toProcess', async ctx => {
const r1 = await readline.createInterface({
input: await fs.createReadStream("./common/lph.csv")
})
let i = 1
await r1.on('line', async line => { //事件监听
searchFn(line, 1)
i += 1
})
})
// 封装的递归函数
const searchFn = (polygon, page) => {
const url = "https://restapi.amap.com/v3/place/polygon?key=" + aMapBase.keys[aMapBase.nodeIndex] + '&polygon=' + polygon +'&types=' + aMapBase.poiType + '&extensions=all&output=json&offset=25&page=' + page
let arr = new Array()
superagent.get(url).timeout({
response: 500
})
.end((err, res) => {
if (err) {
console.log(err)
} else {
// 结果集
console.log(res)
}
})
console.log(arr)
}
module.exports = router
- 这是半成品,arcMap 10.2导出渔网坐标应该是有问题的,有大佬有空麻烦教教我
最后
公众号:
小何成长
,佛系更文,都是自己曾经踩过的坑或者是学到的东西有兴趣的小伙伴欢迎关注我哦,我是:
何小玍
。大家一起进步鸭