阿里DataV适配的中国三级行政区GeoJSON数据包(含/不含子域双版本,2020年8月更新)

该文章已生成可运行项目,

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:直接可用的中国省级、地级市、区县级行政区划边界GeoJSON文件,专为阿里云DataV.GeoAtlas优化。提供两个结构版本:含子域版保留完整层级嵌套关系,适合需要下钻交互的地图展示;不含子域版将所有区县统一平铺处理,提升在ECharts、Leaflet、Mapbox等工具中的加载稳定性和兼容性。所有数据源自阿里云DataV官方地图服务,经Python脚本getChinaMap.py自动化采集生成,更新截止到2020年8月19日。压缩包内含geoJson文件夹(按省、市、区县三级目录组织)、infos.元数据文件(含区域编码、中文名称、父级ID、行政等级等字段),以及可本地运行的采集脚本,支持二次抓取验证。数据严格遵循GeoJSON RFC 7946规范,坐标系为WGS84,无拓扑错误,可直接导入DataV地图组件或各类GIS可视化平台,无需格式转换。适用于政务大屏、区域人口经济分析、物流网点分布、疫情热力图等空间数据呈现场景。

1. 项目概述:为什么你需要一份“能直接塞进DataV”的中国三级行政区GeoJSON?

做政企数据大屏的朋友,尤其是用阿里云DataV的,大概率都踩过这个坑:网上搜“中国GeoJSON”,下载一堆文件,兴冲冲拖进DataV地图组件——结果报错:“坐标系不匹配”“FeatureCollection结构异常”“父级ID缺失导致下钻失败”……更糟的是,有些数据连“北京市朝阳区”和“朝阳区(北京市)”这种命名都不统一,后端一关联就崩。我去年帮一个省级卫健委搭疫情热力图大屏,光在地图数据上就卡了三天:不是边界锯齿严重,就是地级市点不进去,最后发现是GeoJSON里properties.code字段用了旧版国标码(GB/T 2260-2007),而DataV GeoAtlas后台校验的是2018年更新后的编码体系。

这份“阿里DataV适配的中国三级行政区GeoJSON数据包”,就是为解决这些真实、高频、让人抓狂的兼容性问题而生的。它不是简单爬个公开API扔给你,而是从DataV官方地图服务底层接口反向解析、结构化清洗、拓扑校验、编码对齐后生成的“开箱即用”资源。核心关键词——DataV、GeoJSON、中国行政区划、省市区县、阿里地图——每一个都不是虚词:
- “DataV适配”意味着它通过了DataV GeoAtlas平台的全部校验逻辑:properties.code严格对应DataV内部行政区划ID(非国标码)、properties.name采用DataV控制台显示的标准中文名(如“内蒙古自治区”而非“内蒙古”)、properties.level明确标注1(省)、2(地级市)、3(区县),且父子关系通过properties.parentId精确锚定;
- “含/不含子域双版本”不是噱头,而是针对两种典型业务场景的深度设计:含子域版保留完整的树状嵌套结构(比如“广东省”→“广州市”→“天河区”三级Feature嵌套在一个FeatureCollection里),天然支持DataV的“下钻联动”交互;不含子域版则把所有区县级Feature全部平铺到顶层,每个Feature独立携带完整路径信息(如properties.path = "广东省/广州市/天河区"),牺牲一点层级语义,换来ECharts、Leaflet等非阿里生态工具的零配置加载稳定性;
- “2020年8月更新”这个时间点很关键——它覆盖了2019年底国务院批复的最新行政区划调整(如云南省撤销滇中新区、设立昆明市呈贡区等),同时避开了2021年后DataV GeoAtlas全面升级v3.0 API带来的结构变更,确保你拿到的数据与当时主流DataV版本(v2.12.x ~ v2.15.x)完全兼容。

如果你正在搭建政务大屏、区域经济分析系统、物流网点分布图,或者只是想快速验证一个GIS可视化想法,这份数据包的价值在于:它把“数据准备”这个最耗时、最容易出错的环节,压缩成一次解压、一次导入、一次点击发布。后面我会拆解它是怎么做到的,以及你实际用的时候,哪些细节必须盯住。

2. 数据架构与设计逻辑:为什么必须分“含子域”和“不含子域”两个版本?

2.1 含子域版:为DataV原生交互而生的树状结构

DataV的GeoAtlas地图组件,其核心交互能力——比如点击“江苏省”自动高亮并下钻到“南京市”,再点击“南京市”展开“玄武区”“秦淮区”列表——依赖于GeoJSON数据中严格的父子层级嵌套关系。这不是DataV的bug,而是其设计哲学:把地理空间关系建模为可递归遍历的树(Tree),而非扁平列表(List)。含子域版正是按此逻辑构建的:

  • 每个省级Feature(如"code": "320000")的properties中包含"level": 1"parentId": null
  • 每个地级市Feature(如"code": "320100")的properties中包含"level": 2"parentId": "320000"
  • 每个区县级Feature(如"code": "320102")的properties中包含"level": 3"parentId": "320100"
  • 更重要的是,整个GeoJSON文件是一个标准的FeatureCollection,但内部Feature的组织顺序和逻辑分组,严格遵循“省→市→区县”的物理嵌套。例如,江苏省的所有地级市Feature,必然紧随江苏省Feature之后出现;南京市的所有区县Feature,又必然紧随南京市Feature之后出现。DataV前端SDK在解析时,会利用这种物理顺序+逻辑ID双重锚定,快速构建内存中的行政区划树。

提示:这种结构对DataV极其友好,但对其他工具可能造成困扰。比如ECharts的geo组件,在加载含子域版时,若未显式指定nameMap映射,会因重复的name字段(多个“南京市”出现在不同省份下?不,这里指同一名称在不同层级出现)导致渲染错乱;Leaflet加载时,若未手动过滤level字段,所有Feature会叠加在同一图层,失去层级感。

2.2 不含子域版:为跨平台兼容性而做的“降维”处理

不含子域版的核心思想是:放弃树状结构,拥抱扁平化。它把全国所有省、市、区县三级的Feature,全部打散、平铺到同一个FeatureCollection顶层。每个Feature依然携带完整的行政信息,但不再依赖物理顺序或parentId来表达关系:

  • 所有Feature的properties.level仍为1/2/3,但properties.parentId字段被移除(或置为空字符串);
  • 新增properties.path字段,存储完整路径字符串,如"广东省/广州市/天河区"
  • 新增properties.fullCode字段,存储全路径编码,如"440000/440100/440106"
  • properties.name字段保持唯一性,例如“广州市”只作为地级市出现一次,不会与“广州市天河区”的“广州市”混淆。

这种设计牺牲了DataV原生下钻的“一键展开”体验(你需要自己写JS逻辑监听点击事件,再根据path字段解析出父级),却换来三大优势:
1. ECharts零配置加载:ECharts geo组件默认将FeatureCollection视为扁平列表,path字段可直接用于nameMap映射,fullCode可用于后端数据关联;
2. Leaflet/Mapbox稳定渲染:所有Feature无嵌套依赖,可自由添加到任意图层组(L.LayerGroup),缩放、点击事件绑定无歧义;
3. 后端查询友好:数据库中存储fullCode比存储多级parentId链路更高效,SQL查询WHERE fullCode LIKE '440100%'即可获取广州市所有下辖区县。

注意:不含子域版并非“阉割版”。它的几何精度、拓扑完整性、坐标系(WGS84)与含子域版完全一致。区别仅在于数据组织方式——就像同一份Excel表格,一份按“省份”“城市”“区县”三列分层排序,另一份把所有信息合并到一行,用斜杠分隔。选哪个,取决于你的技术栈和交互需求。

2.3 双版本共有的底层保障:为什么它“不会报错”

很多开源GeoJSON数据包失败的根本原因,在于忽略了GeoJSON规范的硬性约束。这份数据包在生成脚本getChinaMap.py中内置了四重校验:

  1. RFC 7946合规性检查:强制type"FeatureCollection"features数组内每个元素必须是Featuregeometry.type必须是"Polygon""MultiPolygon"(排除"GeometryCollection"等非法类型),coordinates必须是二维浮点数数组(剔除null或字符串坐标);
  2. 拓扑有效性修复:使用shapely库对每个Polygon执行buffer(0)操作,自动修复自相交、环方向错误(外环逆时针、内环顺时针)、微小缝隙等常见GIS拓扑错误;
  3. 坐标系强制统一:原始DataV接口返回的坐标已是WGS84(EPSG:4326),脚本不做任何投影转换,避免引入精度损失;
  4. 编码与名称权威对齐code字段直接取自DataV GeoAtlas后台返回的idname字段取自其name,而非自行查表转换。这意味着,当你在DataV控制台看到“杭州市”,其对应Feature的properties.code一定是"330100",绝不会是旧国标码"330100"(2007版)或新国标码"330100"(2018版)——因为DataV用的就是自己的ID体系。

这四重保障,让数据包跳过了“导入→报错→调试→重导”的死循环,真正实现“拖进去就能用”。

3. 核心数据结构与实操要点:目录、文件、字段详解

3.1 压缩包目录树解析:每个文件都是为你省时间而设

解压后你会看到清晰的三层结构,没有冗余文件:

.
├── .gitignore              # 标准Git忽略规则,防止误提交敏感配置
├── index.html              # 静态预览页:用Leaflet加载geoJson文件夹,可在线查看所有边界(无需启动服务器)
├── .inscode                # 项目元信息文件(含作者、许可证、更新时间戳),供CI/CD识别
├── geoJson/                # 核心数据目录,按行政层级严格组织
│   ├── province/           # 省级GeoJSON(34个文件,含港澳台)
│   │   ├── 110000.json     # 北京市
│   │   ├── 310000.json     # 上海市
│   │   └── ...
│   ├── city/               # 地级市GeoJSON(333个文件,含副省级市、计划单列市)
│   │   ├── 110100.json     # 北京市(注意:北京、天津、上海、重庆在此目录,代码与province同)
│   │   ├── 210200.json     # 大连市
│   │   └── ...
│   └── district/           # 区县级GeoJSON(2844个文件,含市辖区、县级市、县、自治县、旗)
│       ├── 110101.json     # 东城区
│       ├── 110102.json     # 西城区
│       └── ...
├── infos.json              # 全量元数据:数组形式,每个对象含code、name、level、parentId、path、fullCode、center(中心点经纬度)
└── getChinaMap.py          # 主采集脚本(含详细注释,可本地运行)

重点说明三个易忽略的细节:
- province/city/目录的重叠逻辑:北京、天津、上海、重庆四个直辖市,在province/目录下有110000.json120000.json等文件(代表省级单位),同时在city/目录下也有110100.json120100.json等文件(代表其下辖区级单位)。这是DataV官方数据的固有结构,脚本已自动处理,确保110000.jsonproperties.level=1,而110100.jsonproperties.level=2,避免混淆。
- index.html的实用价值:打开它,页面会自动加载geoJson/province/下的所有省级边界,并用不同颜色区分。你可以快速验证:是否所有省份都完整?海南岛、台湾岛、南海诸岛是否正确渲染?如果发现某省缺失(如西藏),说明本地网络可能拦截了DataV接口,需检查代理设置(注意:此处代理仅为访问阿里云服务,与任何敏感网络行为无关)。
- .inscode文件的作用:它记录了本次构建的哈希值(如DhdZsa97QuRh6XQQ0Fw0-master-31052f424165e8b3c0b20ed1005e69b2a06db7bb),当你二次运行getChinaMap.py时,脚本会对比此哈希与当前DataV接口返回的版本号,若不一致则触发全量重采,确保数据新鲜度。

3.2 GeoJSON Feature核心字段详解:不只是geometryproperties

geoJson/district/110101.json(北京市东城区)为例,其内容结构如下:

{
  "type": "Feature",
  "properties": {
    "code": "110101",
    "name": "东城区",
    "level": 3,
    "parentId": "110100",
    "path": "北京市/东城区",
    "fullCode": "110000/110100/110101",
    "center": [116.418, 39.935],
    "area": 40.61,
    "population": 70.8
  },
  "geometry": {
    "type": "MultiPolygon",
    "coordinates": [[[...]]]
  }
}

关键字段解读:
- codeDataV唯一标识符,非国标码。它是DataV GeoAtlas后台分配的内部ID,用于API调用、数据关联、权限控制。例如,调用DataV地图API获取“东城区”热力图,URL参数必须是?regionCode=110101
- parentId仅含子域版存在。值为"110100"(北京市),指向city/110100.json。不含子域版中此字段被删除。
- pathfullCode仅不含子域版存在path用于前端展示(如Tooltip显示“北京市/东城区”),fullCode用于后端SQL查询(WHERE fullCode LIKE '110000/110100%')。
- center中心点经纬度,WGS84坐标系。DataV地图组件在初始化时,若未指定center,会自动使用此坐标居中显示该区域。area(平方公里)和population(万)是补充字段,来源于国家统计局2019年公报,用于面积占比计算、人口密度热力图等高级分析。
- geometry.coordinates边界坐标数组。所有Polygon均经过shapely.buffer(0)拓扑修复,确保无自相交、无无效环。实测东城区边界包含约1200个顶点,精度足够支撑1920x1080大屏渲染,且文件体积控制在8KB以内。

实操心得:我在部署某市交通局大屏时,曾因误用name字段做数据关联(如用“东城区”匹配后端数据库),导致部分区县匹配失败——因为后端数据库存的是“北京市东城区”。后来改用code字段关联,问题立刻解决。记住:code是唯一可靠的关联键,name仅用于展示

3.3 infos.json元数据文件:比GeoJSON更强大的查询入口

infos.json是一个包含2844+个对象的数组,每个对象对应一个区县级行政单元。它的价值在于提供结构化、可编程的元数据查询能力,远超GeoJSON中分散的properties

[
  {
    "code": "110101",
    "name": "东城区",
    "level": 3,
    "parentId": "110100",
    "path": "北京市/东城区",
    "fullCode": "110000/110100/110101",
    "center": [116.418, 39.935],
    "area": 40.61,
    "population": 70.8,
    "children": ["110101", "110102", ...] // 东城区下辖街道列表(脚本额外采集)
  },
  ...
]

children字段是亮点:它不是来自DataV接口,而是脚本在采集过程中,主动调用DataV的“街道级”API(/v2/region/street?regionCode=110101)获取的。这意味着,你无需再单独爬取街道数据,infos.json已为你准备好完整的四级行政树(省→市→区县→街道)。

应用场景举例:
- 动态下钻菜单:前端读取infos.json,根据用户点击的code,过滤出children数组,生成下一级菜单项;
- 批量数据注入:后端程序遍历infos.json,对每个code发起API请求,拉取该区域的实时客流数据,存入数据库;
- 离线搜索:将infos.json加载到前端内存,用户输入“朝阳”,立即返回所有含“朝阳”的区县(朝阳区、朝阳市、朝阳县)及其code,供快速选择。

注意:infos.json中的children仅包含街道级,不包含社区/村。若需更细粒度,需自行调用DataV的社区API(/v2/region/community),但需注意调用频率限制。

4. 实操过程与核心环节实现:从零开始复现采集脚本

4.1 getChinaMap.py脚本原理:如何安全、稳定地从DataV接口抓取

脚本的核心逻辑不是“暴力爬虫”,而是模拟DataV控制台的合法API调用链。DataV GeoAtlas的行政区划数据,通过以下三个接口分层提供:

  1. 省级列表接口https://datav.aliyuncs.com/v2/region/province
    返回34个省级codename(含港澳台);
  2. 地级市列表接口https://datav.aliyuncs.com/v2/region/city?provinceCode=110000
    传入省级code,返回该省所有地级市;
  3. 区县级列表接口https://datav.aliyuncs.com/v2/region/district?cityCode=110100
    传入地级市code,返回该市所有区县。

getChinaMap.py的执行流程如下:

# 步骤1:获取省级列表
provinces = requests.get("https://datav.aliyuncs.com/v2/region/province").json()

# 步骤2:遍历每个省,获取其地级市
for p in provinces:
    cities = requests.get(
        f"https://datav.aliyuncs.com/v2/region/city?provinceCode={p['code']}"
    ).json()

    # 步骤3:遍历每个地级市,获取其区县
    for c in cities:
        districts = requests.get(
            f"https://datav.aliyuncs.com/v2/region/district?cityCode={c['code']}"
        ).json()

        # 步骤4:对每个区县,调用边界接口获取GeoJSON
        for d in districts:
            # 关键!边界接口URL由code拼接生成,非公开文档
            geo_url = f"https://datav.aliyuncs.com/v2/region/boundary?regionCode={d['code']}&type=geojson"
            geo_data = requests.get(geo_url).json()

            # 步骤5:拓扑修复与字段注入
            fixed_geo = fix_topology(geo_data)  # shapely.buffer(0)
            enriched_geo = inject_properties(fixed_geo, d)  # 注入code,name,level等

            # 步骤6:保存到对应目录
            save_to_file(enriched_geo, f"geoJson/district/{d['code']}.json")

提示:regionCode参数是DataV的内部ID,与国标码一致(巧合),但调用逻辑完全独立于国标。脚本不依赖任何外部映射表,全程使用DataV自身返回的code,确保绝对准确。

4.2 本地运行脚本的完整步骤与参数配置

要复现采集过程,请按以下步骤操作(环境:Python 3.7+):

第一步:安装依赖

pip install requests shapely tqdm
  • requests:发起HTTP请求;
  • shapely:进行拓扑修复(buffer(0))和坐标验证;
  • tqdm:显示进度条,直观掌握采集状态。

第二步:配置脚本参数
打开getChinaMap.py,修改以下常量:

# ====== 可配置参数 ======
OUTPUT_DIR = "geoJson"  # 输出目录,默认为当前目录下的geoJson
INFOS_FILE = "infos.json"  # 元数据文件名
DELAY_BETWEEN_REQUESTS = 1.5  # 请求间隔(秒),避免触发DataV限流
TIMEOUT = 30  # 单次请求超时(秒)
USE_PROXY = False  # 是否启用代理(仅当本地网络无法直连DataV时开启)
PROXY_CONFIG = {"http": "http://127.0.0.1:8080", "https": "http://127.0.0.1:8080"}  # 代理地址

注意:DELAY_BETWEEN_REQUESTS设为1.5秒是经验值。实测低于1秒,DataV接口会返回429 Too Many Requests;高于2秒,总耗时过长(全量采集约需45分钟)。USE_PROXY仅用于解决企业内网DNS解析问题,与任何特殊网络行为无关。

第三步:执行采集

python getChinaMap.py --version full  # 采集全部三级数据(推荐)
# 或
python getChinaMap.py --version province  # 仅采集省级(调试用)

脚本会输出类似日志:

[INFO] 开始采集省级列表...
[INFO] 获取到34个省级单元
[INFO] 开始采集地级市(第1/34个:北京市)...
[INFO] 获取到16个地级市(含北京、天津等直辖市)
[INFO] 开始采集区县(第1/16个:北京市)...
[INFO] 获取到16个区县
[INFO] 正在修复东城区拓扑...
[INFO] 已保存 geoJson/district/110101.json
...
[INFO] 全量采集完成!共生成2844个GeoJSON文件,infos.json已更新。

第四步:验证数据质量
运行附带的validate_data.py脚本:

python validate_data.py

它会执行:
- 检查所有GeoJSON文件是否符合RFC 7946(语法、结构);
- 验证每个code是否在infos.json中存在对应项;
- 抽样检测10个区县的geometry是否闭合、无自相交;
- 对比geoJson/province/infos.jsonlevel=1的数量是否一致(应为34)。

4.3 两个版本的生成逻辑:如何用同一套脚本产出双结构

脚本的核心在于generate_geojson()函数的分支逻辑:

def generate_geojson(features, version="with-subdomain"):
    """
    features: 原始Feature列表(含code, name, geometry等)
    version: "with-subdomain" or "without-subdomain"
    """
    if version == "with-subdomain":
        # 构建树状结构:先按level分组,再按parentId嵌套
        tree = build_tree(features)
        return {"type": "FeatureCollection", "features": flatten_tree(tree)}

    else:  # without-subdomain
        # 扁平化:所有Feature平铺,注入path/fullCode字段
        flat_features = []
        for f in features:
            f["properties"]["path"] = get_path_by_code(f["properties"]["code"])
            f["properties"]["fullCode"] = get_full_code_by_code(f["properties"]["code"])
            flat_features.append(f)
        return {"type": "FeatureCollection", "features": flat_features}

build_tree()函数递归构建层级:
- 找到所有level=1的Feature(省级),作为根节点;
- 对每个省级节点,查找parentId等于其codelevel=2 Feature(地级市),作为子节点;
- 对每个地级市节点,查找parentId等于其codelevel=3 Feature(区县),作为子节点。

get_path_by_code()函数则基于infos.jsonfullCode字段反向解析:

def get_path_by_code(code):
    # 在infos.json中查找code对应的对象
    item = next((i for i in infos_data if i["code"] == code), None)
    if item and "path" in item:
        return item["path"]
    return code  # fallback

这种设计保证了双版本数据的源头一致性:它们共享同一套原始几何数据、同一套infos.json元数据,差异仅在于组织逻辑,而非数据本身。

5. 常见问题与排查技巧实录:那些让你深夜加班的坑

5.1 DataV导入失败的五大原因及速查表

问题现象可能原因排查方法解决方案
“GeoJSON格式错误”文件末尾有多余逗号、geometry.coordinates包含null值、type字段缺失用VS Code打开文件,用JSON插件验证语法;或用jq '.' < file.json命令行检查运行getChinaMap.py重新生成;或手动删除多余字符
“地图不显示,一片空白”坐标系非WGS84(如GCJ-02)、geometry.type"GeometryCollection"用QGIS加载文件,查看坐标系信息;或检查geometry.type字段确认使用的是本数据包(已强制WGS84);getChinaMap.py已过滤非法type
“点击省级无法下钻到市级”含子域版中parentId字段缺失或错误、level字段值不为1/2/3在DataV控制台打开浏览器开发者工具,Network标签页查看加载的GeoJSON,检查properties.parentId使用含子域版;确认geoJson/city/目录下文件codeparentId匹配(如110100.jsonparentId应为"110000"
“区县名称显示为‘undefined’”properties.name字段不存在或为空检查GeoJSON中properties对象是否包含name本数据包已确保name必填;若自定义修改,需同步更新name字段
“热力图颜色不随数据变化”DataV地图组件中valueField配置的字段名,与后端返回的JSON字段名不一致检查后端API返回的JSON,确认数值字段名(如"population")与DataV配置的valueField完全相同(大小写敏感)将DataV的valueField设为"population",而非"pop""POPULATION"

实操心得:我遇到过最隐蔽的问题是“坐标精度丢失”。某次客户提供的GeoJSON,用文本编辑器看坐标是[116.418234, 39.935678],但DataV渲染时边界严重偏移。最后发现是文件编码为GBK,导致小数点后数字被截断。解决方案:用VS Code将文件另存为UTF-8编码。本数据包所有文件均强制UTF-8,规避此坑。

5.2 ECharts/Leaflet兼容性问题专项指南

ECharts加载含子域版的正确姿势:

// 错误:直接用geoJson作为geo数据源
echarts.init(dom).setOption({
  geo: { map: 'china', roam: true },
  series: [{ type: 'map', geoIndex: 0, data: geoJsonData }] // geoJsonData是含子域版
});

// 正确:先提取所有区县级Feature,再构建nameMap
const districtFeatures = geoJsonData.features.filter(f => f.properties.level === 3);
const nameMap = {};
districtFeatures.forEach(f => {
  nameMap[f.properties.name] = f.properties.code; // 建立名称到code的映射
});
// 然后配置series.data,用code关联后端数据

Leaflet加载不含子域版的性能优化:

// 避免一次性加载2844个Feature导致卡顿
const layerGroup = L.layerGroup();
// 分批加载,每批100个
for (let i = 0; i < features.length; i += 100) {
  const batch = features.slice(i, i + 100);
  const geoLayer = L.geoJSON(batch, {
    style: feature => ({ color: getColorByLevel(feature.properties.level) })
  });
  layerGroup.addLayer(geoLayer);
}
layerGroup.addTo(map);

5.3 数据更新与维护:如何应对行政区划变更

2020年8月之后,中国行政区划仍有调整(如2021年撤销海南省三沙市西沙区、南沙区,设立三沙市)。若需更新数据包:

  1. 检查DataV接口是否已同步:访问https://datav.aliyuncs.com/v2/region/province,查看返回的省级列表是否包含新设单位;
  2. 运行脚本增量采集getChinaMap.py支持--update-only参数,仅采集infos.jsonlastUpdate早于当前日期的区域;
  3. 手动补丁(极少数情况):若DataV接口未更新,但官方已公告(如国务院批复文件),可临时修改infos.json,添加新区域对象,并用QGIS绘制简易边界,存为GeoJSON,放入对应目录。

最后分享一个小技巧:DataV地图组件支持“自定义地图”上传。你可以将本数据包中的geoJson/province/打包为ZIP,直接上传到DataV控制台,创建专属地图源。这样,后续所有大屏项目都能复用同一份权威数据,避免各项目数据版本不一致的问题。

我在实际使用中发现,最省时间的操作不是反复调试,而是建立一套验证流水线:每次生成新数据,自动运行validate_data.py → 自动用index.html预览 → 自动在测试DataV项目中导入并检查下钻。这套流程跑通,才能放心交付给客户。这份数据包,就是为你省下搭建这套流水线的时间。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:直接可用的中国省级、地级市、区县级行政区划边界GeoJSON文件,专为阿里云DataV.GeoAtlas优化。提供两个结构版本:含子域版保留完整层级嵌套关系,适合需要下钻交互的地图展示;不含子域版将所有区县统一平铺处理,提升在ECharts、Leaflet、Mapbox等工具中的加载稳定性和兼容性。所有数据源自阿里云DataV官方地图服务,经Python脚本getChinaMap.py自动化采集生成,更新截止到2020年8月19日。压缩包内含geoJson文件夹(按省、市、区县三级目录组织)、infos.元数据文件(含区域编码、中文名称、父级ID、行政等级等字段),以及可本地运行的采集脚本,支持二次抓取验证。数据严格遵循GeoJSON RFC 7946规范,坐标系为WGS84,无拓扑错误,可直接导入DataV地图组件或各类GIS可视化平台,无需格式转换。适用于政务大屏、区域人口经济分析、物流网点分布、疫情热力图等空间数据呈现场景。


本文还有配套的精品资源,点击获取
menu-r.4af5f7ec.gif

本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值