广州2,631个村界装进一张图:geojson整包下载
技术专栏 · 数据产品 · 2026-10-11
广州市的村级边界,一个 8.7MB 的包就能全部装下:2,631 个村级面、11 个区,页内下单付款即得。广州这份数据有两个别处没有的看点——一是村改居改得彻底,包里大量单元的名字叫「社区」;二是它的区县归属要靠 12 位村级码自己算。两个坑本文都铺好路,照做就能用。
先说口径:广州的「村」,一半以上叫社区
广州是全国村改居最彻底的城市之一。原来的行政村连人带地改成居委会后,名字从「东心村」变成「三元坊社区」「五羊南社区」,但村级单元的边界和 12 位代码延续了下来。本包 2,631 个村级单元在类型字段里统一登记为「行政村」,村名字段里则村与社区混排——这是同一级单元的两种形态,做村居尺度分析(城中村研究、租赁网点、十五分钟生活圈)时应当一视同仁。
抽样看几个真实单元:南沙区的鱼窝头社区(村级码 440115104002)、东心村(440115104213)——注意这两个名字不同的单元前 6 位都是 440115,也就是南沙区。这就是广州包使用方法的核心:一切归属,从村级码来。
全市图景:11 个区的 2,631 个村级单元
按村级码前 6 位归组后,2,631 个单元在 11 个区的分布如下,无一落空:
| 区 | 区划代码 | 村级单元 | 区 | 区划代码 | 村级单元 |
|---|---|---|---|---|---|
| 白云区 | 440111 | 362 | 花都区 | 440114 | 228 |
| 增城区 | 440118 | 325 | 荔湾区 | 440103 | 198 |
| 越秀区 | 440104 | 270 | 天河区 | 440106 | 189 |
| 从化区 | 440117 | 270 | 南沙区 | 440115 | 164 |
| 海珠区 | 440105 | 259 | 黄埔区 | 440112 | 112 |
| 番禺区 | 440113 | 254 | 合计 2,631 | ||
白云区的城中村体量撑起了 362 个单元的第一名;增城、从化两个郊区贡献了 595 个;越秀作为最老的城区还有 270 个——几乎全是改居社区的形态。南北跨度大是广州地图的第一印象:从化的山地村居到南沙的沙田水乡,东西不过 110 公里、南北接近 155 公里。
购买入口:已预选广州市
下面的入口与「村界数据 · 按市」页同一购物通道,已替你选中广州市,也可以改选其他地市:
已为你选中广州市,支付后即时获得下载链接。
正在加载地市清单…
付款后页面直接给出 广州市_村界_WGS84.geojson.gz 的下载地址,链接长期有效。坐标 WGS84(EPSG:4326),全市范围在东经 112.953° 至 114.055°、北纬 22.552° 至 23.936° 之间,与天地图等国际底图零偏移叠加。
按区分组:一段脚本 + 一张映射表
广州包的属性字段里,市、区县、乡镇的名称栏是空的——广东省的数据统一如此,归属信息全部压在 12 位村级码里。这不影响使用:前 6 位就是区划代码,配一张 11 区的映射表就能分区。这段脚本真实跑过,输出就是上表的数字:
import { createGunzip } from 'node:zlib';
import { createReadStream } from 'node:fs';
import * as readline from 'node:readline';
const CODE = {
440103: '荔湾区', 440104: '越秀区', 440105: '海珠区', 440106: '天河区',
440111: '白云区', 440112: '黄埔区', 440113: '番禺区', 440114: '花都区',
440115: '南沙区', 440117: '从化区', 440118: '增城区',
};
const rl = readline.createInterface({
input: createReadStream('广州市_村界_WGS84.geojson.gz').pipe(createGunzip()),
});
const byDistrict = new Map();
for await (const line of rl) {
if (!line.includes('"Feature"')) continue;
const m = line.match(/"村级码":\s*"(\d{12})"/);
if (!m) continue;
const d = CODE[m[1].slice(0, 6)];
byDistrict.set(d, (byDistrict.get(d) || 0) + 1);
}
console.log(byDistrict);
在 QGIS 里操作等价且更直观:新建「区县」虚拟字段,用表达式 substr(村级码, 1, 6) 配映射即可批量打标签,之后按区筛选、按区配色都顺理成章。拿到数据先做一遍完整性检查的习惯,推荐配合《边界数据拓扑检查:一段脚本查出缝隙与重叠》一起用。
城中村、广佛联动与更小粒度
广州这份数据最对口的场景是城中村研究:白云、番禺、天河的城中村原型就是这批村级单元,完整的面边界加 12 位村级码,能直接承接人口、租赁与改造项目台账做空间化。研究范围越过大坦沙、金沙洲伸到佛山时,佛山以及广东其余 20 个地市都在按市列表里,同批次同口径,拼图不用校坐标;更大范围直接取广东省包。只需要天河或番禺一个区的,按区县村界页单独取,下单前可见该区实际村级单元数。
奥维导入的路径不变:QGIS 里按区筛选后另存 KML,经奥维收藏管理导入,WGS84 无偏移直接对底图。格式取舍见《GeoJSON 与 Shapefile 怎么选:结构、编码与场景对照》,同系列城市的用法见《下载成都市村界geojson:20区县一个包全拿》与《重庆市村界数据下载:38区县整包拿走》。
常见问题
- 广州市村界数据在哪里下载?
- 本文页内的购买入口已预选广州市,支付宝付款后立即出现下载链接;同款商品也挂在站内「村界数据 · 按市」页。文件为 gz 压缩 GeoJSON,约 8.7MB,下载后解压即用,链接可重复使用。
- 数据里大量「社区」也算村界吗?
- 算,这正是广州的口径特点。广州经历了大规模村改居,原来的行政村很多改成了社区,但村级单元的边界与代码延续下来。本包 2,631 个村级单元统一挂在「行政村」类型下,村名字段既有东心村这样的传统村,也有五羊南社区这样的改居社区,做村居尺度的分析应当把它们视为同一级单元。
- 属性里没有区县名,怎么按 11 个区分组?
- 用 12 位村级码的前 6 位:440103 荔湾、440104 越秀、440105 海珠、440106 天河、440111 白云、440112 黄埔、440113 番禺、440114 花都、440115 南沙、440117 从化、440118 增城。按这 11 个前缀给面要素打区名标签即可完成分区,本文给出了可直接运行的分组脚本,2,631 个面全部能对上区,无一落空。
- 广州的城中村研究用这份数据合适吗?
- 合适。城中村的原型就是这批村级单元:白云、番禺、天河等区的城中村在数据里都有完整的面边界与 12 位村级码,可以直接承接人口、租赁、改造项目等台账数据做空间化。注意边界性质是村级管理边界,不等于某一栋或某一围的精细范围。
- 能导入奥维互动地图或转成 SHP 吗?
- 奥维不直接读 GeoJSON:在 QGIS 里把需要的范围另存为 KML,再经奥维收藏管理导入,数据为 WGS84 无偏移坐标,与卫星影像直接对齐。需要 SHP 时在 QGIS 或 ArcGIS 中另存导出,保持 UTF-8 编码避免中文乱码。
- 只要广州某一个区的村界怎么办?
- 到按区县村界页单独买目标区,下单前选择器里能看到该区实际的村级单元数;整市包里也可以按村级码前 6 位自行筛出单区。广东全省包与其余 20 个地市都在按市、按省两个入口里,佛山、东莞等相邻城市可按同样的方式取数做广佛、深莞联动分析。
另外,如果你需要的是广州市的可编辑矢量 PPT 模板,请到:广州市可编辑地图PPT模板。