diff --git a/README.md b/README.md index aaa9ab9..77a9432 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ ## 数据下载 -当前最新版数据在 **src文件夹** 内,此数据更新于2022-04-28,整合了 `统计局2021-12-30`、`民政部2022-03-21`、`腾讯地图行政区划2022-01-14`、`高德地图行政区划采集当天` 数据。 +当前最新版数据在 **src文件夹** 内,此数据更新于2022-07-04,整合了 `统计局2021-12-30`、`民政部2022-03-21`、`腾讯地图行政区划2022-01-14`、`高德地图行政区划采集当天` 数据。 可在 [GitHub Releases](https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov/releases) 中下载最新发布数据文件,也可直接打开 `src/采集到的数据` 文件夹内的文件来使用。 @@ -62,7 +62,7 @@ git clone --depth 1 https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov.git ## 【QQ群】交流与支持 -欢迎加QQ群:484560085,纯小写口令:`areacity` +欢迎加QQ群:①群 484560085、②群 626141661,纯小写口令:`areacity` <img src="https://xiangyuecn.gitee.io/areacity-jsspider-statsgov/assets/qq_group_484560085.png" width="220px"> @@ -141,7 +141,7 @@ polygon|string|行政区域边界,高德地图`GCJ-02`火星坐标系。格式 ## 数据更新日志 -- 2021.220321.220428版(更新时间: 2022-04-28)采集了4层,省、市、区、镇,来源:[统计局2021版数据](http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2021/index.html);省市区3级合并了[民政部2022-03-21数据](http://www.mca.gov.cn/article/sj/xzqh/1980/202203/20220300040708.shtml)、[高德地图行政区域](https://lbs.amap.com/api/webservice/guide/api/district)、[腾讯地图行政区划v20220114](https://lbs.qq.com/webservice_v1/guide-region.html)数据;镇级采用腾讯地图行政区划作为主要数据,综合高德和统计局的镇级。采集高德省市区三级坐标和行政区域边界范围。 +- 2021.220321.220704版(更新时间: 2022-07-04)采集了4层,省、市、区、镇,来源:[统计局2021版数据](http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2021/index.html);省市区3级合并了[民政部2022-03-21数据](http://www.mca.gov.cn/article/sj/xzqh/1980/202203/20220300040708.shtml)、[高德地图行政区域](https://lbs.amap.com/api/webservice/guide/api/district)、[腾讯地图行政区划v20220114](https://lbs.qq.com/webservice_v1/guide-region.html)数据;镇级采用腾讯地图行政区划作为主要数据,综合高德和统计局的镇级。采集高德省市区三级坐标和行政区域边界范围。 - 2020.210510.1103版(2021)采集了4层,省、市、区、镇,来源:[统计局2020版数据](http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/index.html);省市区3级合并了[民政部2021-05-10数据](http://www.mca.gov.cn/article/sj/xzqh/1980/202105/20210500033655.shtml)、[高德地图行政区域](https://lbs.amap.com/api/webservice/guide/api/district)、[腾讯地图行政区划v20211103](https://lbs.qq.com/webservice_v1/guide-region.html)数据;镇级采用腾讯地图行政区划作为主要数据,综合高德和统计局的镇级。采集高德省市区三级坐标和行政区域边界范围。 - 2020.201120.0814版(2020)采集了4层,省、市、区、镇,来源:[统计局2020版数据](http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/index.html);省市区3级合并了[民政部2020-11-20数据](http://www.mca.gov.cn/article/sj/xzqh/2020/202011/20201100030582.shtml)、[高德地图行政区域](https://lbs.amap.com/api/webservice/guide/api/district)、[腾讯地图行政区划v20200814](https://lbs.qq.com/webservice_v1/guide-region.html)数据;镇级采用腾讯地图行政区划作为主要数据,综合高德和统计局的镇级。采集高德省市区三级坐标和行政区域边界范围。 - 2019.200925.0814版(2020)采集了4层,省、市、区、镇,来源:[统计局2019版数据](http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2019/index.html);省市区3级合并了[民政部2020-09-25数据](http://www.mca.gov.cn/article/sj/xzqh/2020/2020/2020092500801.html)、[高德地图行政区域](https://lbs.amap.com/api/webservice/guide/api/district)、[腾讯地图行政区划v20200814](https://lbs.qq.com/webservice_v1/guide-region.html)数据;镇级采用腾讯地图行政区划作为主要数据,综合高德和统计局的镇级。采集高德省市区三级坐标和行政区域边界范围。 diff --git a/assets/AreaCity-Geo-Transform-Tools.html b/assets/AreaCity-Geo-Transform-Tools.html index 04e6a58..ce9cf33 100644 --- a/assets/AreaCity-Geo-Transform-Tools.html +++ b/assets/AreaCity-Geo-Transform-Tools.html @@ -765,7 +765,7 @@ <div class="h3">如何在QQ群内下载本工具?<a name="xzqq"></a></div> <div class="desc"> - 加入QQ群:<i class="i">484560085</i>,口令<i class="i">areacity</i>,然后到群文件中下载。 + 加入QQ群:①群 <i class="i">484560085</i>、②群 <i class="i">626141661</i>,口令<i class="i">areacity</i>,然后到群文件中下载。 </div> <div class="h3">Mac OS等非Windows系统上如何使用本工具?<a name="otherSys"></a></div> diff --git a/assets/csv-ver-date.js b/assets/csv-ver-date.js index c9448b1..391a0e2 100644 --- a/assets/csv-ver-date.js +++ b/assets/csv-ver-date.js @@ -4,7 +4,7 @@ 更新ok_data_level*.csv、ok_geo*.csv后,需要同时更新这里的数据时间 **************/ (function(){ -var OpenVer="2021.220321.220428",OpenDate="2022-04-28"; +var OpenVer="2021.220321.220704",OpenDate="2022-07-04"; var UrlRoot="https://xiangyuecn.gitee.io/areacity-jsspider-statsgov/"; var UrlTool=UrlRoot+"assets/AreaCity-Geo-Transform-Tools.html"; diff --git a/assets/geo-level4.html b/assets/geo-level4.html index 6d2786e..ff943c8 100644 --- a/assets/geo-level4.html +++ b/assets/geo-level4.html @@ -517,7 +517,7 @@ <div class="h3">如何在QQ群内下载本数据?<a name="xzqq"></a></div> <div class="desc"> - 加入QQ群:<i class="i">484560085</i>,口令<i class="i">areacity</i>,然后到群文件中下载。 + 加入QQ群:①群 <i class="i">484560085</i>、②群 <i class="i">626141661</i>,口令<i class="i">areacity</i>,然后到群文件中下载。 </div> <div class="h3">购买数据能砍价吗?</div> diff --git "a/src/1_5_\345\220\210\345\271\266.js" "b/src/1_5_\345\220\210\345\271\266.js" index ffe33c8..dbee349 100644 --- "a/src/1_5_\345\220\210\345\271\266.js" +++ "b/src/1_5_\345\220\210\345\271\266.js" @@ -43,16 +43,19 @@ var fixQQmapAddGovBeforeAmp={ /*130502:{ name:"襄都区",pid:1305 }*/ + 659011:{name:"新星市",pid:65,childCopySelf:true} //还要复制一份当子级 直辖市 }; //和高德数据对比前qq替换统计局数据,就是这些id对应的数据都采用统计局的数据 var fixQQmapReplaceGovBeforeAmp={ - /*3205:{ - name:"苏州市",level:2 - ,msg:"统计局、高德都有一个工业园(高德里面全国唯一一个,百度地图也有),并且边界也是独立出来的,qq缺少了并且子级在分散在各城区" - },*/ - 6328:{ + /*6328:{ name:"海西",level:2,msg:"qq的大柴旦不正常,整个都用统计局的" - } + }*/ + + //qq升级数据后,这些没有下级,用老id才能查出下级,直接换统计的数据 + 350405:{name:"沙县区",level:3,whereEmptyChild:true,msg:"emptyChild"} + ,431181:{name:"祁阳市",level:3,whereEmptyChild:true,msg:"emptyChild"} + ,513402:{name:"会理市",level:3,whereEmptyChild:true,msg:"emptyChild"} + ,532302:{name:"禄丰市",level:3,whereEmptyChild:true,msg:"emptyChild"} }; //qq地图数据用上级替换,表现为下级和上级的编号前缀不匹配,主要是那几个直筒子市是qq自定义的99结尾 var fixQQmapReplaceFill={ @@ -64,12 +67,8 @@ var fixQQmapReplaceFill={ //qq编号名称有问题的,直接替换掉当前级和下级编号,一般新的为高德的 ,350403:{name:"三元区",level:3,replaceAs:{codePrefix:"350404",name:"三元区"}} - ,350427:{name:"沙县区",level:3,replaceAs:{codePrefix:"350405",name:"沙县区"}} - ,350681:{name:"龙海区",level:3,replaceAs:{codePrefix:"350604",name:"龙海区"}} - ,410306:{name:"孟津区",level:3,replaceAs:{codePrefix:"410308",name:"孟津区"}} - ,410381:{name:"偃师区",level:3,replaceAs:{codePrefix:"410307",name:"偃师区"}} - ,520522:{name:"黔西市",level:3,replaceAs:{codePrefix:"520581",name:"黔西市"}} - + ,350402:{name:"梅列区",remove:true} //已撤销的,删除qq的 + //添加明确缺失的子级 /*,2327:{name:"大兴安岭地区",addOnNotExists:[ @@ -78,14 +77,17 @@ var fixQQmapReplaceFill={ //移除特殊的 - ,440499:{name:"香洲区澳门大学横琴校区(由澳门特别行政区实施管辖)",remove:true} + //,440499:{name:"香洲区澳门大学横琴校区(由澳门特别行政区实施管辖)",remove:true} //港澳转换成 港澳(省)-港澳(市)-港澳(区)-第二级(镇) 结构。当做直筒子市来处理,比如把香港当做东莞,从面积和人口来看还算合理 ,81:{name:"香港特别行政区",repeat:2} ,82:{name:"澳门特别行政区",repeat:2} //移除QQ单独的芦台区(唐山市芦台经济技术开发区),本着都没有开发区,像高德一样转移到路南区下面。qq的子级code和统计局不同,不处理 - ,130230:{name:"芦台区",childMove:"130202000000"} + //,130230:{name:"芦台区",childMove:"130202000000"} + + //移除又被QQ拆分出来的苏州工业园区,移到吴中区 + ,320571:{name:"苏州工业园区",childMove:"320506000000"} //新改名的,qq未及时更新,需更新为新名称 //同名保持住,mca是老的,配置上会打标识 @@ -95,7 +97,8 @@ var fixQQmapReplaceFill={ //移除已废弃的 ,460321:{name:"西沙群岛",remove:true} ,460322:{name:"南沙群岛",remove:true} - ,460323:{name:"中沙群岛的岛礁及其海域",remove:true} + ,460323:{name:"中沙群岛",remove:true} + ,460324:{name:"东沙群岛",remove:true} }; //qq地图数据和高德地图前三级数据有效的差异 @@ -105,19 +108,19 @@ var amapDifference={ ,childCompareName:true} ,82:{name:"澳门特别行政区",level:1,xAomenChild:true}//特殊的,高德和qq的完全不同,采用高德的全面些,但code规则按qq的来 - ,232761:{name:"加格达奇区",compareName:true}//id不同,qq的是对的,通过名称可以匹配 + //,232761:{name:"加格达奇区",compareName:true}//id不同,qq的是对的,通过名称可以匹配 //声明名称不同但code相同的项,这种是qq未fix的,并且最终采用qq的名称 - //,632825:{name:"大柴旦行政委员会",amapName:"海西蒙古族藏族自治州直辖"} - ,632857:{name:"大柴旦行政委员会",useQQ:true} + ,632825:{name:"大柴旦行政委员会",amapName:"海西蒙古族藏族自治州直辖"} + //,632857:{name:"大柴旦行政委员会",useQQ:true} //标记QQ里确实不存在的,如果需要添加到qq中需lostAdd=true - ,632825:{lostName:"海西蒙古族藏族自治州直辖"}//qq统计局为632857大柴旦行政委员会 + //,632825:{lostName:"海西蒙古族藏族自治州直辖"}//qq统计局为632857大柴旦行政委员会 ,460301:{lostName:"西沙区",lostAdd:true}//新设区 ,460302:{lostName:"南沙区",lostAdd:true}//新设区 - //,320613: {lostName: "崇川区",lostAdd:true}//新调整的区划 qq滞后,使用高德的 - //,350625:{lostName:"长泰区",lostAdd:true}//新调整的区划 qq滞后,使用高德的 + //高德的id错误,使用qq的id + //,431121:{name:"祁阳市",useQQCode:"431181000000"} }; @@ -147,52 +150,37 @@ var gov3Difference={ ,460322:{lostName:"南沙群岛"} ,460323:{lostName:"中沙群岛的岛礁及其海域"} - ,350403:{lostName:"三元区"} //已被合并到其他新区 - ,320611:{lostName:"港闸区"} - ,320684:{lostName:"海门市"} - ,330103:{lostName:"下城区"} - ,330104:{lostName:"江干区"} - ,340208:{lostName:"三山区"} - ,340221:{lostName:"芜湖县"} - ,340222:{lostName:"繁昌县"} - ,350402:{lostName:"梅列区"} - ,350427:{lostName:"沙县"} - ,350625:{lostName:"长泰县"} - ,350681:{lostName:"龙海市"} - ,410306:{lostName:"吉利区"} - ,410322:{lostName:"孟津县"} - ,410381:{lostName:"偃师市"} - ,421023:{lostName:"监利县"} - ,520221:{lostName:"水城县"} - ,520522:{lostName:"黔西县"} - ,632321:{lostName:"同仁县"} + ,330103:{lostName:'下城区'} //已被合并到其他新区 + ,330104:{lostName:'江干区'} + ,350402:{lostName:'梅列区'} + ,350427:{lostName:'沙县'} + ,350625:{lostName:'长泰县'} + ,350681:{lostName:'龙海市'} + ,410306:{lostName:'吉利区'} + ,410322:{lostName:'孟津县'} + ,410381:{lostName:'偃师市'} + ,431121:{lostName:'祁阳县'} + ,450127:{lostName:'横县'} + ,513425:{lostName:'会理县'} + ,520522:{lostName:'黔西县'} + ,532331:{lostName:'禄丰县'} + ,610322:{lostName:'凤翔县'} + ,610928:{lostName:'旬阳县'} + ,654223:{lostName:'沙湾县'} //MCA和qq名称称相同但id不同的,但qq和高德相同,暂采用qq和高德的便于数据处理 //,0:{name:"",asID:00} + ,232718:{name:"加格达奇区",asID:"232761"} + ,632825:{name:"大柴旦行政委员会",asID:"632857"} //MCA和qq id相同,但名称不同的,这里明确取qq的名称 - ,431121:{name:"祁阳市",useQQ:true} - ,450127:{name:"横州市",useQQ:true} - ,513425:{name:"会理市",useQQ:true} - ,532331:{name:"禄丰市",useQQ:true} - ,610322:{name:"凤翔区",useQQ:true} - ,610928:{name:"旬阳市",useQQ:true} - ,654223:{name:"沙湾市",useQQ:true} + //,431121:{name:"祁阳市",useQQ:true} //MAC没有的,但是是新出的 - ,330113:{name:"临平区",keep:true} - ,330114:{name:"钱塘区",keep:true} - ,350404:{name:"三元区",keep:true} - ,350405:{name:"沙县区",keep:true} - ,350605:{name:"长泰区",keep:true} - ,350604:{name:"龙海区",keep:true} - ,410308:{name:"孟津区",keep:true} - ,410307:{name:"偃师区",keep:true} ,460301:{name:"西沙区",keep:true} ,460302:{name:"南沙区",keep:true} - ,520581:{name:"黔西市",keep:true} }; @@ -256,6 +244,7 @@ var setParent=function(p,arr,mp){ }; var qqMap=JSON.parse(JSON.stringify(window[QQmapSaveName])); +var amapData=JSON.parse(JSON.stringify(window[AmapSaveName])); var govData=JSON.parse(JSON.stringify(window[StatsGovMCASaveName])); var govDataMP=setParent(null,govData.cityList); @@ -397,6 +386,7 @@ var formatQQ=function(arr,parent,findBad){ }; }; if(replaceSet.childMove){//平级移动合并子级 + replaceAsFn(itm,{replaceAs:{codePrefix:SCode(moveTo)}}); for(var i=0;i<itm.child.length;i++){ moveTo.child.push(itm.child[i]); }; @@ -545,7 +535,14 @@ var formatQQ=function(arr,level){ console.log(itm.code+":"+itm.name+"已添加子级",govItm,itm); addSet.fix=true; govItm.isAdd=true; - itm.child.push(govItm); + if(addSet.childCopySelf){ + itm.child.push(Object.assign({} + ,govItm + ,{child:[govItm]} + )); + }else{ + itm.child.push(govItm); + } }; }; }; @@ -560,6 +557,10 @@ var formatQQ=function(arr,level){ console.error("fixQQmapReplaceGovBeforeAmp名称不匹配",replaceSet,itm); throw new Error(); }; + if(replaceSet.whereEmptyChild && itm.child.length){ + console.error("fixQQmapReplaceGovBeforeAmp子级不为空",replaceSet,itm); + throw new Error(); + } var govItm=govDataMP[itm.code]; if(!govItm){ console.error("fixQQmapReplaceGovBeforeAmp项在Gov中不存在",replaceSet,itm); @@ -613,6 +614,12 @@ var compareAmap=function(parent,qqmapArr,amapArrSrc,level){ for(var i1=0;i1<amapArr.length;i1++){ var itm=amapArr[i1]; + var diffSet=amapDifference[SCode(itm)]; + if(diffSet && diffSet.useQQCode){//高德使用qq的code + diffSet.hit=true; + itm.code=diffSet.useQQCode; + }; + if(itm.code==qqItm.code){ if(amapItm){ console.error("高德存在多个和qq相同的ID",qqItm,amapArr); @@ -750,7 +757,7 @@ var compareAmap=function(parent,qqmapArr,amapArrSrc,level){ qq_amap_QQLost.push({level:level,code:itm.code,name:itm.name}); }; }; -compareAmap(null,qqMap.cityList,window[AmapSaveName].cityList,1); +compareAmap(null,qqMap.cityList,amapData.cityList,1); for(var k in amapDifference){ if(!amapDifference[k].hit){ console.error("存在未被匹配的预定义amapDifference",k,amapDifference[k]); diff --git "a/src/\345\235\220\346\240\207\345\222\214\350\276\271\347\225\214/map_geo_\346\240\274\345\274\217\345\214\226.js" "b/src/\345\235\220\346\240\207\345\222\214\350\276\271\347\225\214/map_geo_\346\240\274\345\274\217\345\214\226.js" index 68d1538..628c05a 100644 --- "a/src/\345\235\220\346\240\207\345\222\214\350\276\271\347\225\214/map_geo_\346\240\274\345\274\217\345\214\226.js" +++ "b/src/\345\235\220\346\240\207\345\222\214\350\276\271\347\225\214/map_geo_\346\240\274\345\274\217\345\214\226.js" @@ -198,6 +198,24 @@ for(var k=0;k<DATA_GEO.length;k++){ while(arr[0].join(" ")==arr[arr.length-1].join(" ")){ arr.pop(); }; + + //找到最小的一个坐标,环从这个坐标开始,免得每次采集起点不一样导致差异 + var min=999.999999,idx=0; + for(var i=0;i<arr.length;i++){ + if(arr[i][0]<min){ + min=arr[i][0]; + idx=i; + } + }; + var arr2=[]; + for(var i=idx;i<arr.length;i++){ + arr2.push(arr[i]); + } + for(var i=0;i<idx;i++){//起点接到尾部后面 + arr2.push(arr[i]); + } + arr=arr2; + polygon[j]=arr; };