# AreaCity-JsSpider-StatsGov **Repository Path**: macosx/AreaCity-JsSpider-StatsGov ## Basic Information - **Project Name**: AreaCity-JsSpider-StatsGov - **Description**: 省市区县乡镇三级或四级城市数据,带拼音标注、坐标、行政区域边界范围;2020年12月13日最新采集,提供csv格式文件,支持在线转成多级联动js代码、通用json格式,提供软件转成shp、geojson、sql、导入数据库;带浏览器里面运行的js采集源码,综合了中华人民共和国民政部、国家统计局、高德地图、腾讯地图行政区划数据 - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: https://xiangyuecn.gitee.io/areacity-jsspider-statsgov/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 249 - **Created**: 2021-01-17 - **Last Updated**: 2022-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README **【[源GitHub仓库](https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov)】 | 【[Gitee镜像库](https://gitee.com/xiangyuecn/AreaCity-JsSpider-StatsGov)】如果本文档图片没有显示,请手动切换到Gitee镜像库阅读文档。** # :open_book:省市区数据采集并标注拼音、坐标和边界范围 [省市区镇四级数据在线测试和预览](https://xiangyuecn.gitee.io/areacity-jsspider-statsgov/)(支持转换成JSON、多级联动js);导入数据库或坐标、边界范围转换:[AreaCity-Geo格式转换工具软件下载](https://xiangyuecn.gitee.io/areacity-jsspider-statsgov/assets/AreaCity-Geo-Transform-Tools.html)(支持转成`sql`、导入数据库,转成`shp`、`geojson`);当前最新版为 **src文件夹** 内的数据,此数据发布于`统计局2020-11-06`、`民政部2020-11-20`、`腾讯地图行政区划2020-08-14`、`高德地图行政区划采集当天`。
在 [Releases](https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov/releases) 中下载最新发布数据文件,也可直接打开 `src/采集到的数据` 文件夹内的文件来使用;如果下载缓慢可以通过[Gitee Pages外链](https://xiangyuecn.gitee.io/areacity-jsspider-statsgov/assets/download.html)来下载: - [【三级】省市区 数据下载](https://gitee.com/xiangyuecn/AreaCity-JsSpider-StatsGov/raw/master/src/采集到的数据/ok_data_level3.csv) : /src/采集到的数据/ok_data_level3.csv - [【四级】省市区镇 数据下载](https://gitee.com/xiangyuecn/AreaCity-JsSpider-StatsGov/raw/master/src/采集到的数据/ok_data_level4.csv) : /src/采集到的数据/ok_data_level4.csv (3M+大小) - [【GEO三级】省市区 坐标和边界 数据下载](https://gitee.com/xiangyuecn/AreaCity-JsSpider-StatsGov/raw/master/src/采集到的数据/ok_geo.csv.7z) : /src/采集到的数据/ok_geo.csv.7z (解压后130M+) - [AD][【GEO四级】乡镇 坐标和边界 数据下载](https://xiangyuecn.gitee.io/areacity-jsspider-statsgov/assets/geo-level4.html) : 乡镇第4级坐标边界数据 ok_geo4_*.csv,为付费数据 (广告、闭源) > csv格式非常方便解析成其他格式,算是比较通用;如果在使用csv文件过程中出现乱码、错乱等情况,需自行调对utf-8(带BOM)编码(或者使用文本编辑器 `如 notepad++` 把文件转成需要的编码),文本限定符为`"`。 > > 通过[AreaCity-Geo格式转换工具](https://xiangyuecn.gitee.io/areacity-jsspider-statsgov/assets/AreaCity-Geo-Transform-Tools.html)可快速方便的将省市区、坐标、边界范围导入数据库,并且提供格式转换功能。 > > 手动导入csv文件到数据库如果接触的比较多应该能很快能完成导入,省市区数据参考[导入教程](https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov/blob/master/src/3_%E6%A0%BC%E5%BC%8F%E5%8C%96.js)、坐标和边界参考[导入教程](https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov/blob/master/src/%E5%9D%90%E6%A0%87%E5%92%8C%E8%BE%B9%E7%95%8C/map_geo_%E6%A0%BC%E5%BC%8F%E5%8C%96.js),教程在代码开头注释中,是SQL Server的导入流程和SQL语句。 > > **温馨建议**:不要在没有动态更新机制的情况下把数据嵌入到Android、IOS、等安装包内;缓存数据应定期从服务器拉取更新。 注:本库最高采集省市区镇4级数据、省市区3级边界范围;如需乡镇级别的坐标边界[请到此下载](https://xiangyuecn.gitee.io/areacity-jsspider-statsgov/assets/geo-level4.html),如果需要街道5级数据,请参考底下的`其他资源`。 ## 如何clone: Gitee镜像库加速 由于历史记录数据异常庞大,几乎每次commit都有40M+的新采集数据,所以你直接clone会很慢的,加上`--depth 1`提取最新版的数据即可。 ``` java //Gitee镜像仓库: 速度快 git clone --depth 1 https://gitee.com/xiangyuecn/AreaCity-JsSpider-StatsGov.git //源GitHub仓库: 可能比较慢或无法访问 git clone --depth 1 https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov.git ``` ## 数据源 - [国家统计局](http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/) :统计用区划和城乡划分代码,此数据比较齐全但是比较杂,并且数据是一年一更可能会存在滞后,需额外移除和处理开发区、经济区、高新区、国家级新区等区域;此数据源为省市区三级数据的主要数据源,镇级辅助数据源。 - [民政部](http://www.mca.gov.cn/article/sj/xzqh/) :行政区划代码,提供省市区三级数据,一月一更;为辅助数据源。 - [腾讯地图行政区划](https://lbs.qq.com/webservice_v1/guide-region.html):提供省市区镇四级数据,更新比较频繁;为镇级主要数据源,省市区三级辅助数据源。 - [高德地图行政区域](https://lbs.amap.com/api/webservice/guide/api/district):提供省市区镇数据,实际采用前三级,更新比较频繁但具体时间未知;为辅助数据源。 - [高德地图坐标和行政区域边界范围](https://lbs.amap.com/api/javascript-api/example/district-search/draw-district-boundaries):当城市数据有变化时,主动从高德查询坐标和边界信息。 ## 采集环境 chrome 控制台,`Chrome 41`这版本蛮好,win7能用,`Chrome 46`这版本win10能用;新版本`Chrome 72+`乱码(统计局内页编码为`gb2312`,新版本`xhr`对编码反而支持的超级不友好,估计是印度阿三干的)、SwitchyOmega代理没有效果、各种问题([简单制作chrome便携版实现多版本共存](https://github.com/xiangyuecn/Docs/blob/master/Other/%E8%87%AA%E5%B7%B1%E5%88%B6%E4%BD%9Cchrome%E4%BE%BF%E6%90%BA%E7%89%88%E5%AE%9E%E7%8E%B0%E5%A4%9A%E7%89%88%E6%9C%AC%E5%85%B1%E5%AD%98.md))。 乱码的根本原因在于统计局服务器响应的内容编码为`gb2312`,但服务器响应头只给了`Content-Type: text/html`,因此可用Fiddler篡改`Content-Type`响应头为`Content-Type: text/html; charset=gb2312`也可解决新版Chrome乱码问题。 ## 采集深度 - 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)数据;镇级采用腾讯地图行政区划作为主要数据,综合高德和统计局的镇级。采集高德省市区三级坐标和行政区域边界范围。 - 2018版(2019)采集了4层,省、市、区、镇,来源:[统计局2018版数据](http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2018/index.html);省市区3级额外合并了[民政部2019-08-27数据](http://www.mca.gov.cn/article/sj/xzqh/2019/201908/201908271607.html)。采集高德省市区三级坐标和行政区域边界范围。 - 2017版(2018)采集了3层,省、市、区,来源:[统计局2017版数据](http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2017/index.html)。 - 2016版(2017)采集了3层,省、市、区,来源:[统计局2016版数据](http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/index.html)。 - 2013版(2013)采集了4层,省、市、区、镇,来源:[统计局2013版数据](http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2013/index.html)。 ## 数据有效性和完整性 本库会尽量和民政部的更新频率保持一致,但由于最为主要的两个数据源`国家统计局`、`腾讯地图行政区划`更新频度并没有民政部高;因此省市区三级准确度和民政部准确度是一量级,并且要更完整些;第四级镇级主要由`腾讯地图行政区划`提供,腾讯数据源并不经常更新,因此会导致小部分新增、调整的城市第四级没有数据(会用上级数据补齐),使用前应该考虑此缺陷。 数据通过使用上级数据补齐的形式(具体细节请参考后面的数据规则),使得任何一个数据都能满足省市区镇4级结构,没有孤立的(ID全局唯一),因此不管从哪级进行下级选择,都能进行有效操作。可以通过ID结构来识别这种补齐填充的数据,只要ID为上级的ID+多个0,就代表此数据为补齐填充数据,比如:东莞(4419)-东莞(441900),很容易鉴别出441900为补齐用的填充数据。 会发生补齐行为的数据很少,约50来个(不含台湾),主要为:直筒子市(东莞、儋州等)、省直辖县级市(济源、潜江等),他们的下一级仅有补齐的这条数据。另外直辖市(北京、天津等)下级也仅有一条数据,ID结尾为01(不包括重庆,重庆下级分成了市、县两个)。 直筒子等这种为什么不直接把下级往上提一级来做区级,采用补齐填充的方式来对齐数据的原因,请参考[issue#9](https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov/issues/9)。 ## 【字段】ok_data表 省市区镇数据表。 字段|类型|描述 :--:|:--:|-- id|int/long|城市编号,三级用int类型,四级用long类型;省市区三级为统计局的编号经过去除后缀的`0{3,6,8}`得到的短编号,港澳台编号为民政部的编号;如果是添加的数据(国外),此编号为自定义编号;镇级主要为腾讯地图行政区划的编号,大部分和统计局的数据一致,约7.5%(约3000个)的镇级不一致;如果某级缺失(如:省直辖县级市、新增城市),会用上级数据进行补齐,编号为上级结尾添加0{2,3},*注意如果要恢复长编号时(简单的补上00)已有的ID会和添加的ID产生冲突,比如4位恢复到6位将导致部分上下级ID冲突,恢复时这些新加的数据要进行特殊处理*。 pid|int|上级ID deep|int|层级深度;0:省,1:市,2:区,3:镇 name|string|城市名称;省市区三级为统计局的名称精简过后的,镇级主要为腾讯地图行政区划的名称精简过后的 pinyin_prefix|string|`name`的拼音前缀,取的是`pinyin`第一个字母,或港澳台、国外自定义前缀;用来排序时应当先根据拼音前缀的首字母来排序,相同的再根据前缀+名称进行排序 pinyin|string|`name`的完整拼音 ext_id|long|数据源原始的编号;如果是添加的数据,此编号为0 ext_name|string|数据源原始的名称,为未精简的名称 ## 【字段】ok_geo表 此表为坐标和行政区域边界范围数据表,含省市区三级不含第四级,如需乡镇坐标边界数据[请到此下载](https://xiangyuecn.gitee.io/areacity-jsspider-statsgov/assets/geo-level4.html);因为数据文件过大(130M+),所以分开存储。由于边界数据的解析比较复杂,请参考[src/map_geo_格式化.js](https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov/blob/master/src/%E5%9D%90%E6%A0%87%E5%92%8C%E8%BE%B9%E7%95%8C/map_geo_%E6%A0%BC%E5%BC%8F%E5%8C%96.js)内的SQL Server的解析语句,或者直接使用[AreaCity-Geo格式转换工具软件](https://xiangyuecn.gitee.io/areacity-jsspider-statsgov/assets/AreaCity-Geo-Transform-Tools.html)进行转换成`shp`、`geojson`、`sql`格式或直接导入数据库。 字段|类型|描述 :--:|:--:|-- id|int|和`ok_data`表中的`ID`相同,通过这个`ID`关联到省市区具体数据,`map_geo_格式化.js`中有数据合并SQL语句 geo|string|城市中心坐标,高德地图`GCJ-02`火星坐标系。格式:"lng lat" or "EMPTY",少量的EMPTY(仅台湾的城市、国外)代表此城市没有抓取到坐标信息 polygon|string|行政区域边界,高德地图`GCJ-02`火星坐标系。格式:"lng lat,...;lng lat,..." or "EMPTY",少量的EMPTY(仅台湾的城市、国外)代表此城市没有抓取到边界信息;存在多个地块(如飞地)时用`;`分隔,每个地块的坐标点用`,`分隔,特别要注意:多个地块组合在一起可能是[MULTIPOLYGON](https://docs.microsoft.com/zh-cn/sql/relational-databases/spatial/multipolygon?view=sql-server-2014)或者[POLYGON](https://docs.microsoft.com/zh-cn/sql/relational-databases/spatial/polygon?view=sql-server-2014),需用工具进行计算和对数据进行验证 ## 【QQ群】交流与支持 欢迎加QQ群:484560085,纯小写口令:`areacity`