AreaCity开源库整理省、市、区四级行政区划数据,镇、镇、街道,并配有在线工具转换成三级、四级联动JavaScript代码,使用内置的转换工具软件,可导入数据库;数据来自:统计局、民政部、腾讯地图行政区划、高德地图行政区划,由这四大平台整合而来。开源库包含省市三级坐标边界数据。数据来源为高德开放平台。使用包提供的转换工具软件,可以转换成shp、geojson、sql,导入数据库;还搭载了开源的Java查询工具,内存占用低,性能优异,一秒可查询10000多个坐标对应的城市信息。GitHub地址:https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGovGitee地址:https://gitee.com/xiangyuecn/AreaCity-JsSpider-StatsGov数据在线预览:https://xiangyuecn.gitee.io/areacity-jsspider-statsgov/截至发布(2023-02-08),2023年2月2日在开源库中发布了最新版本的最新编译数据;行政区划数据更新频繁,每年只有区县变化较多,统计局和民政部每年都会发布新数据(目前最新版本是2022年12月29日发布的数据),但需要自己处理;所以需要同步维护各省市的数据,好在这个开源库有持续长期维护,还有配套的转换工具。新数据发布后更新相对容易。由于开源库的更新和维护数据比较及时,只要开源库没有关闭,本文介绍的提取方法一直适用,不仅仅是今年;比那些上传到下载平台万年不更新的数据强多了。一、最新版行政区划数据提取1、获取通用json格式文件。在数据在线预览页面下,提供了在线转换工具。打开它,你会看到当前库中组织的最新版本的数据(开源库及时更新和维护数据)。可以将省、市、镇四级数据转换成json格式文件,控件选项也很丰富。如果要导出一级、二级、三级、四级数据,转换后直接下载到json文件即可。json文件对于跨平台使用非常方便,不仅可以用于网页,还可以用于移动应用程序、桌面程序、后端代码。可以通过自定义函数导出任何格式的JSON数据。比如第三方开源的级联操作库,需要一个特定结构的JSON数组。一些自定义操作参考:Android-PickerView:province.json的自定义更新操作AndroidPicker:china_address。json的自定义更新操作citypicker:china_city_data.json的自定义更新操作2.获取多级联动js版本数据代码在数据在线预览页面下,提供了一个在线转换工具,打开是当前库中整理的最新版本数据(开源库及时更新维护数据),可以将省市镇四级数据转换为多级联动js,控件选项也丰富。可转换为二级、三级、四级联动。直接体验四级联动下拉选择:转换后直接下载js文件。其实js代码已经嵌入了json格式的数据,多级联动的js代码已经封装好了。我们只需要按说明调用该方法即可在html网页中快速实现多级联动,用户选择后会有事件回调。3、导入数据库,导入前导出SQL文件:【转换工具软件】在数据在线预览页面,点击转换工具软件链接,下载开源库提供的转换工具。使用本工具,您可以将省、市、镇四级行政区划数据导入MySQL、SQLServer数据库,或转换成sql文件(导入其他兼容数据库);【ok_data_level4.csv数据文件】在数据在线预览页面,点击显示的数据下载链接,下载并解压得到ok_data_level4.csv数据文件。准备好后,打开转换工具,开始向数据库导入数据(这里导入MySQL和导入SQLServer是一样的):点击工具中的“高级>>”按钮,打开自定义脚本界面;点击脚本界面上方的选择文件,选择下载解压后的ok_data_level4.csv数据文件;在内置脚本下拉框中,选择“导入省市镇数据库”选项,然后点击应用按钮;在左侧界面的数据库设置中,类型选择MySQL,填写好数据库连接端口+数据库名+账户密码;在自定义脚本界面点击“导入数据库”按钮,稍等片刻,不到3分钟,4万多条数据就导入到数据库中。MySQL客户端查看数据:以上操作同样适用于SQLServer,步骤相同,另外,内置脚本还支持“省市转SQL”功能,可直接导出SQL文件并将它们导入其他兼容的数据库。4.部分地方开源数据库需要注意的行政区划数据会尽量与民政部的更新频率保持一致,但由于国家统计局和腾讯地图这两个最重要的数据源,行政区划更新频率没有民政部高;所以,省市三级精度和民政部精度是同一个数量级,应该更全;第四级城镇层级主要由腾讯地图的行政区划提供,腾讯的数据源更新不频繁,所以会造成一小部分新增和调整的城市第四级没有数据(会补充上层数据),使用前应考虑该缺陷。数据以上层数据的形式完成(详见库文档后面的数据规则),使任何数据都能满足省、市、镇4级结构,以及没有隔离(ID是全局唯一的),因此无论来自哪里,都可以选择较低的级别进行有效操作。这种填充数据可以通过ID结构来识别。只要ID是上级ID+多个0,就说明该数据是填充数据,比如:东莞(4419)-东莞(441900),容易识别441900是填充数据。有补充行为的数据很少,大约50个左右,主要是:直筒子市(东莞、儋州等)、省直辖县级市(济源、潜江等),它们的下一级仅补充齐这个数据。另外,下属直辖市(北京、天津等)也只有一条数据,ID以01结尾(不包括重庆,分为两个市县)。大部分行政区域未包含在数据中(请自行查看与行政区划的区别),例如:雄安新区,天府新区,苏州工业园区等。2.省份坐标边界数据提取,市、县地图四级下钻代码。数据大小:13MB+压缩包解压130M+数据来源:高德开放平台文件格式:csv通用纯文本格式(可转成shp、geojson、sql,导入数据库)文件名:ok_geo.csv.7z坐标系:默认GCJ-02(可转换成WGS-84、CGCS2000、BD-09等坐标系)更新频率:开源库每月更新一次(直接从高德同步,忙的时候时间会长一些)的下载的数据是最新的csv纯文本格式,可以自行转换成需要的格式;也可以下载开源库提供的格式转换工具。工具支持将csv数据转换成:shp、geojson、sql,导入数据库,坐标系转换,功能比较丰富。1.转换为GeoJSON文件。Geojson是一种通用的格式,可以在网页中使用:地图和ECharts可以直接支持,边界也可以在GIS软件中打开和编辑。打开下载的格式转换工具,选择下载解压好的ok_geo.csv文件;点击Converttogeojsonfile按钮,耐心等待一会,数据就会导出;导出的json文件和csv文件在同一个目录下,默认所有数据都在一个json文件里,点击Advanced可以使用里面的geojsonsplit工具,按照省市区分割成单独的小文件。开源库还自带Java坐标边界查询工具:AreaCity-Query-Geometry,利用jts库从geojson边界数据文件中查找与任意点、线、面相交的矢量边界,内存不足使用和性能卓越,1秒内即可查看10000多个坐标对应的城市信息;本工具自带HTTPAPI服务,可在在线预览页面的自定义数据源中调用测试,页面会立即绘制出查询到的边界图形。2、转换为SHP文件shp文件一般在GIS软件中使用和编辑,如:ArcGIS、QGIS软件;使用格式转换工具导出shp格式文件,导出操作同上述geojson文件,点击按钮转换为shp文件即可导出。3、导入数据库,导出SQL文件使用格式转换工具将省市区界线数据导入数据库,利用数据库提供的空间查询,方便查询任意坐标点对应的省市区名称;或者通过后台程序查询WKT格式的省市多级边界数据,供前台使用。打开下载的格式转换工具,选择下载解压好的ok_geo.csv文件;在数据库设置中选择要导入的数据库类型,支持:MySQL、SQLServer,然后填写数据库连接,包括:端口、数据库名、账户密码;点击导入数据库按钮,稍等片刻,大概3分钟左右,所有的数据就会导入到数据库中按今天日期创建的表中。查询空间字段需要使用`ST_AsText()`方法查询字符串文本(WKT:WellKnownText),否则查询的是二进制数据--MySQL版本:SELECTid,name,ST_AsText(geo)ASgeo,ST_AsText(polygon)ASpolygonFROMtablename--SQLServerversion:SELECTid,name,geo.STAsText()ASgeo,polygon.STAsText()ASpolygonFROMtablename省区界线导入数据库,我们可以在`Java`、`Python`、`PHP`、`C#`等程序中查询数据库,使用SQL空间计算函数`ST_Intersects`查询一个坐标在哪些边界内,就可以得到对应例如查询坐标`lng:113.929976lat:22.529497`在哪个城市:--MySQLversion:SELECTid,deep,nameFROMtablenameWHEREST_Intersects(polygon,ST_GeomFromText('POINT(113.92997622.529497)',0))=1--SQLServer版本:SELECTid,deep,nameFROMtablenameWHEREpolygon.STIntersects(geometry::STGeomFromText('POINT(113.92997622.529497)',0))=1注:csv文件中边界数据默认为高德GCJ-02火星坐标系。如果需要其他坐标系,比如百度的BD-09或者GPS的WGS-84,可以通过高级脚本中的坐标系转换插件进行转换,选择对应的即可。插件完成后点击应用,导入数据库时??会自动进行坐标系转换。3、乡镇坐标界线数据的获取乡镇坐标界线数据不开源,但可以像省市三级一样在线预览,半年左右重新整合。数据参考文档及下载地址:https://xiangyuecn.gitee.io/areacity-jsspider-statsgov/assets/geo-level4.html数据大小:压缩包导出后109MB+300M+数据来源:多个数据源集成文件名:ok_geo4_*.csv.7z坐标系:默认GCJ-02(可转换为WGS-84、CGCS2000、BD-09等坐标系)乡镇级坐标界线数据使用方法同省市两级。可以使用配套的转换工具转换成shp、geojson、sql,导入数据库。请参考上述三级省市的操作步骤。【超过】
