Skip to content

Commit

Permalink
发布2021.220321.220704版
Browse files Browse the repository at this point in the history
  • Loading branch information
xiangyuecn committed Jul 4, 2022
1 parent 5432cf8 commit 1a7a158
Show file tree
Hide file tree
Showing 6 changed files with 89 additions and 64 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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/采集到的数据` 文件夹内的文件来使用。

Expand Down Expand Up @@ -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">

Expand Down Expand Up @@ -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)数据;镇级采用腾讯地图行政区划作为主要数据,综合高德和统计局的镇级。采集高德省市区三级坐标和行政区域边界范围。
Expand Down
2 changes: 1 addition & 1 deletion assets/AreaCity-Geo-Transform-Tools.html
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down
2 changes: 1 addition & 1 deletion assets/csv-ver-date.js
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down
2 changes: 1 addition & 1 deletion assets/geo-level4.html
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down
123 changes: 65 additions & 58 deletions src/1_5_合并.js
Original file line number Diff line number Diff line change
Expand Up @@ -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={
Expand All @@ -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:[
Expand All @@ -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是老的,配置上会打标识
Expand All @@ -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地图数据和高德地图前三级数据有效的差异
Expand All @@ -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"}
};


Expand Down Expand Up @@ -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}

};

Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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]);
};
Expand Down Expand Up @@ -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);
}
};
};
};
Expand All @@ -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);
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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]);
Expand Down
18 changes: 18 additions & 0 deletions src/坐标和边界/map_geo_格式化.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
};

Expand Down

0 comments on commit 1a7a158

Please sign in to comment.