企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### 数据清洗(将没有位置信息的数据删除) ~~~ DELETE FROM we_user WHERE province = '' OR city = '' DELETE FROM we_user_count WHERE lng = '' OR lat = '' ~~~ > 由于部分好友未设置地理位置信息,部分好友将地理位置信息设置成国外的,而百度地图地理编码服务只对国内地理位置进行地理编码。因此将这两种数据清除。 * * * * * ### 地理位置解析(thinkphp5调用[百度地理编码服务](http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding)) ~~~ public function index() { $url = 'http://api.map.baidu.com/geocoder/v2/'; //请求api $ak = '2qkjnM1Bpkac4825hyth9mGzU9xAGtDt'; //appkey $location = Db::name('user')->field(['id','province','city'])->select(); foreach ($location as $item) { $province = $item['province']; $city = $item['city']; $api_url = "$url?address=$province.$city&output=json&ak=$ak&callback=showLocation"; urlencode($api_url); $res = $this->httpGet2($api_url); if ($res && !empty($res['result'])) { $res2 = Db::name('user')->where('id',$item['id'])->update([ 'lng' => $res['result']['location']['lng'], 'lat' => $res['result']['location']['lat'], ]); if ($res2) { echo '更新成功!'; } } } ~~~ * * * * * ### 部分结果如下: ![](https://box.kancloud.cn/33098721c96eec7481e615b3be70951c_827x522.png) * * * * * ### 统计不同地区出现的人次(基于[thinkphp5](http://www.thinkphp.cn/)) ~~~ //统计同一地区好友出现的次数 public function count() { $sql = "SELECT id,lng,lat,COUNT('lng') as 'count' FROM we_user GROUP BY lng"; $res = Db::query($sql); foreach ($res as $item) { $data = [ 'user_id' => $item['id'], 'lng' => $item['lng'], 'lat' => $item['lat'], 'count' => $item['count'] ]; $res = Db::name('user_count')->insert($data); if ($res) { echo "插入成功!"; } } } ~~~ * * * * * > 一点小改动:由于我的好友大多分布在陇南市和兰州市,与其它市的数量相差较大,成图效果不理想,因此,调整了部分市的好友数量。 [TOC]