GetBaiduMapResCommand.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. <?php
  2. /**
  3. * 爬取百度城市列表
  4. * @author >
  5. */
  6. class GetBaiduMapResCommand extends CConsoleCommand{
  7. public function run($args) {
  8. error_reporting(E_ERROR);
  9. set_time_limit(0);
  10. $city_list = $this->getcity(1);
  11. $city_json = json_encode($city_list);
  12. file_put_contents(dirname(__FILE__)."/../data/city.json",$city_json);
  13. $z_citylib = new ZCityLib();
  14. $str = file_get_contents(dirname(__FILE__)."/../data/city.json");
  15. $citylist = json_decode($str,true);
  16. foreach (array($citylist) as $key => $value) {
  17. if($value['sub_city']){
  18. foreach ($value['sub_city'] as $sub_key => $sub_value) {
  19. if($sub_value['sub_city']){
  20. foreach ($sub_value['sub_city'] as $grand_key => $grand_value) {
  21. if(isset($grand_value['sub_city'])){
  22. foreach ($grand_value['sub_city'] as $area) {
  23. echo 'insert'.$area['city_code'].'-'.$z_citylib->addCity($area['city_code'],$area['city_name'],$sub_value['city_code'],$grand_value['city_code'],0);
  24. echo "\n";
  25. }
  26. }
  27. echo 'insert'.$area['city_code'].'-'.$z_citylib->addCity($grand_value['city_code'],$grand_value['city_name'],$sub_value['city_code'],0,0);
  28. echo "\n";
  29. }
  30. echo 'insert'.$area['city_code'].'-'.$z_citylib->addCity($sub_value['city_code'],$sub_value['city_name'],0,0,0);
  31. echo "\n";
  32. }
  33. }
  34. }
  35. }
  36. //特别处理几个直辖市
  37. $z_citylib->addCity(10001,'上海市',0,0,0);
  38. $z_citylib->addCity(289,'上海市',10001,0,0);
  39. $criteria = new EMongoCriteria();
  40. $criteria->parent_province_id('==',289);
  41. $criteria->parent_city_id('==',0);
  42. $cursor = CityLib::model()->findAll($criteria);
  43. foreach ($cursor as $specail) {
  44. $specail->parent_province_id = 10001;
  45. $specail->parent_city_id = 289;
  46. $specail->update(array('parent_province_id','parent_city_id'),true);
  47. }
  48. $z_citylib->addCity(10002,'重庆市',0,0,0);
  49. $z_citylib->addCity(132,'重庆市',10002,0,0);
  50. $criteria = new EMongoCriteria();
  51. $criteria->parent_province_id('==',132);
  52. $criteria->parent_city_id('==',0);
  53. $cursor = CityLib::model()->findAll($criteria);
  54. foreach ($cursor as $specail) {
  55. $specail->parent_province_id = 10002;
  56. $specail->parent_city_id = 132;
  57. $specail->update(array('parent_province_id','parent_city_id'),true);
  58. }
  59. $z_citylib->addCity(10003,'北京市',0,0,0);
  60. $z_citylib->addCity(131,'北京市',10003,0,0);
  61. $criteria = new EMongoCriteria();
  62. $criteria->parent_province_id('==',131);
  63. $criteria->parent_city_id('==',0);
  64. $cursor = CityLib::model()->findAll($criteria);
  65. foreach ($cursor as $specail) {
  66. $specail->parent_province_id = 10003;
  67. $specail->parent_city_id = 131;
  68. $specail->update(array('parent_province_id','parent_city_id'),true);
  69. }
  70. $z_citylib->addCity(10004,'天津市',0,0,0);
  71. $z_citylib->addCity(332,'天津市',10004,0,0);
  72. $criteria = new EMongoCriteria();
  73. $criteria->parent_province_id('==',332);
  74. $criteria->parent_city_id('==',0);
  75. $cursor = CityLib::model()->findAll($criteria);
  76. foreach ($cursor as $specail) {
  77. $specail->parent_province_id = 10004;
  78. $specail->parent_city_id = 332;
  79. $specail->update(array('parent_province_id','parent_city_id'),true);
  80. }
  81. $z_citylib->addCity(10005,'香港特别行政区',0,0,0);
  82. $z_citylib->addCity(2912,'香港特别行政区',10005,0,0);
  83. $criteria = new EMongoCriteria();
  84. $criteria->parent_province_id('==',2912);
  85. $criteria->parent_city_id('==',0);
  86. $cursor = CityLib::model()->findAll($criteria);
  87. foreach ($cursor as $specail) {
  88. $specail->parent_province_id = 10005;
  89. $specail->parent_city_id = 2912;
  90. $specail->update(array('parent_province_id','parent_city_id'),true);
  91. }
  92. $z_citylib->addCity(10006,'澳门特别行政区',0,0,0);
  93. $z_citylib->addCity(2911,'澳门特别行政区',10006,0,0);
  94. $criteria = new EMongoCriteria();
  95. $criteria->parent_province_id('==',2911);
  96. $criteria->parent_city_id('==',0);
  97. $cursor = CityLib::model()->findAll($criteria);
  98. foreach ($cursor as $specail) {
  99. $specail->parent_province_id = 10006;
  100. $specail->parent_city_id = 2911;
  101. $specail->update(array('parent_province_id','parent_city_id'),true);
  102. }
  103. }
  104. public function getcity($areacode){
  105. $res = CommonFn::simple_http("http://api.map.baidu.com/shangquan/forward/?qt=sub_area_list&ext=1&level=1&areacode=$areacode&business_flag=0");
  106. $temp = json_decode($res);
  107. $city_list = array();
  108. $sub_city = array();
  109. if(isset($temp->content->sub)){
  110. foreach ($temp->content->sub as $value) {
  111. $sub_city[] = array('city_name'=>$value->area_name,'areacode'=> $value->area_code);
  112. }
  113. foreach ($sub_city as $key => $value) {
  114. if($value['areacode']){
  115. $sub_city[$key] = $this->getcity($value['areacode']);
  116. }
  117. }
  118. }
  119. $city_list['city_name'] = $temp->content->area_name;
  120. $city_list['city_code'] = $temp->content->area_code;
  121. $str = $temp->content->area_name."\n";
  122. echo $str;
  123. if($sub_city){
  124. $city_list['sub_city'] = $sub_city;
  125. }
  126. return $city_list;
  127. }
  128. }