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;
 		};