GIS数据GIS DATA

量一量谁的村界最碎:7万面紧凑度排行

技术专栏 · 数据处理 · 2026-11-03

上一卷量了村的大小,这一卷量村界「长得规不规整」:把 19 个市的 74,781 个村级面逐个算一遍紧凑度(4π×面积÷周长²,正圆为 1,越小越碎)。结论先行:全局中位 0.357,成都市以 0.260 拿下「最碎」,上海市以 0.538 成为「最整」——山区水网和城区面片,把两个极端都占了。

19 市排行:山水越多,边界越碎

19 市村界中位紧凑度排行图:成都最碎、上海最整
19 市村级面中位紧凑度(碎→整),橙为碎档(<0.30)、青绿为中间档、浅青为整档(≥0.40)。

排行的规律几乎是一条山水线。碎档前四(成都 0.260、长沙 0.268、临沂 0.273、郑州 0.298)全是山区或水网大市:成都的村界贴着龙门山与岷江河谷切,临沂沿沂蒙山碎分,郑州西南部同样是山地丘陵。中间档里,信阳 0.301、南阳 0.307 两个豫南市紧挨着——与《南水北调穿过的南阳:4,856个村界一包下载》里「沟 269、岗 263」的村名指纹互相印证。整档则清一色是直辖市与城区面片主导的市:上海 0.538、苏州 0.486、北京 0.484、天津 0.445,街坊面片横平竖直,紧凑度自然高。

分档紧凑度区间面数占比
极端碎条< 0.11,4932.0%
很碎0.1 – 0.27,81110.4%
偏碎0.2 – 0.317,23823.1%
中等0.3 – 0.531,15841.7%
规整≥ 0.517,08122.8%

极值解剖:周长 85 公里的 0.13 平方公里

最碎的前几名不是「不圆」,而是「细成一条线」。广州南沙的「新群工区社区」面积 0.13 平方公里,周长却有 85 公里——这是滩涂河汊被水线反复切割出的碎带;南阳的木寨林场周长同样有 79 公里,县蚕场(紧凑度 0.0007)同为林场蚕场的狭长管护面。武汉蔡甸的「侏儒街办事处直管」更是几乎退化成线。它们的紧凑度低到没有比较意义,但恰恰是这些面最该在统计前被单独标记:面积看着不起眼,周长成本却是别人的百倍。

另一端的「最圆」榜也有味道:重庆万州的大兴场社区紧凑度 0.9444,几乎就是个圆——规划新建的集中居民点边界往往就是这样一锤子画圆的。碎与圆,一边是千百年的自然与耕作史,一边是最近几十年的规划笔,一份村界数据里同时藏着两者。

脚本:十几行算完一个市

function compactness(coords, type) {      // 返回 4πA/P²,0–1
  const polys = type === 'MultiPolygon' ? coords : [coords];
  let A = 0, P = 0;
  const ringArea = r => { /* 球面面积,同《量出最大的村》 */ };
  const ringLen  = r => { /* 等距圆柱周长,米 */ };
  polys.forEach(poly => poly.forEach((ring, ri) => {
    A += (ri ? -1 : 1) * ringArea(ring);  // 外环加、内环减
    P += ringLen(ring);                   // 周长内外环都算
  }));
  return 4 * Math.PI * A / (P * P);
}
// 全市扫描:剔除退化面后按紧凑度排序,最碎的百分之一先人工过目

内环面积扣减、周长全计入(有洞的面天然不圆,扣得有理)。它和《量出最大的村:7.2万个村面面积排行实测》共用面积函数,和《边界数据拓扑检查:一段脚本查出缝隙与重叠》同属入库前的体检流程——拓扑查对错,紧凑度查性格。

三条使用建议

其一,紧凑度是最好的异常面筛子:把全市的面按紧凑度升序排,最碎的 1% 几乎全是滩涂带、林带、切割残留,逐个人工确认后标记类型,后续统计才能干净。其二,别拿统一阈值跨市套:成都的正常面放在上海就是异常碎,阈值跟着本市中位数走。其三,碎面多的市做 Web 端要更省——碎面顶点密度高,先量化再上图的管线在《把村界地图搬上网页:geojson瘦身三板斧》里已经验证过。19 个市的村界包在「村界数据 · 按市」按市取用,省级批量走「村界数据 · 按省」。

常见问题

紧凑度是什么?怎么用来说明村界的形状?
紧凑度 = 4π×面积÷周长的平方,取值 0 到 1:正圆为 1,形状越不规则越接近 0。它把「形状碎不碎」变成一个可比的数字,本文用它对 19 个市的 74,781 个村级面逐个打分,全局中位 0.357。
哪个市的村界最碎、哪个最整?
成都市最碎(中位紧凑度 0.260),长沙 0.268、临沂 0.273 紧随——山区与水网把村界切得零碎;上海市最整(0.538),街坊面片横平竖直,苏州 0.486、北京 0.484 同属规整档。规律很清晰:山水越多的城市村界越碎,城区面片越主导越整。
最碎的村级面有多离谱?
广州南沙的「新群工区社区」面积只有 0.13 平方公里,周长却有 85 公里,紧凑度 0.0002——典型的滩涂河汊碎带;南阳的木寨林场、县蚕场也是周长 80 公里级的狭长面。这一类面多是水域、林场等线性地物的切片,本身合法,但做统计前值得单独识别。
村界碎会带来什么实际问题?
三件事直接受影响:同样的面积下边界更长,围栏、巡护、边界采集的成本都按周长算;面积加权类统计对碎面更敏感,一个退化面能带偏一片;渲染时碎面顶点密度高,Web 端加载更吃力。所以数据入库前按紧凑度排个序,最碎的百分之一先人工过目。
紧凑度低是数据错误吗?
绝大部分不是。山区村界沿山脊河谷走、滩涂沿水线切,形状天然细碎,这是地理事实的如实表达;真正要警惕的是两类:面积近乎为零的极端碎条(本文最小样例紧凑度 0.0002),以及紧凑度异常但周长巨大的面——它们更像切割残留,建议标记后人工确认。
想自己复算紧凑度需要什么?
一份村界数据加十几行脚本就够:逐面算面积与周长,代入 4πA/P² 即可,本文脚本可直接搬走。19 个市的村界包在「村界数据 · 按市」页按市取用,全省批量分析走「村界数据 · 按省」整包。