1.1 从现实世界到空间数据:GIS核心概念


1.1 从现实世界到空间数据:GIS 核心概念

本节摘要:空间数据是用"几何、属性、空间参照"三要素对现实世界的抽象记录,本节是全册加工链的第一块基石——先弄清抽象的规则,后面所有工序才有评价标准。读完你应当能对任何一份数据回答三个问题:它长什么样、它是什么、它在哪里。

学习目标

阅读完本节,你应当能够:

  1. 把一批业务对象正确归类为点、线、面或栅格,并说明归类依据
  2. 解释"最小上图图斑"与地图比例尺如何决定抽象的粗细
  3. 用三要素解剖一份数据,指出缺项会引发的连锁故障
  4. 读懂一份字段级数据字典,判断字段设计能否支撑后续分析

一、抽象这把刀怎么落

地理世界是连续的:一条河有宽有窄,一片林子边界模糊。要让计算机存得下、算得动,必须先切一刀。GIS 的切法有两种,分别造就了矢量与栅格两大原料体系,1.3 节会展开对比,这里先建立直觉——矢量像用笔描边,栅格像用方格纸罩着涂色。

切多细,由比例尺说了算。1 比 1 万地形图上,图上 1 毫米相当于实地 10 米,小于这个尺寸的地物画不进去,这就是"最小上图图斑"的来由。同一片村庄,在 1 比 1 万图上是十几个独立面,在 1 比 50 万图上可能只剩一个点位符号。我在项目里见过两个部门各拿不同比例尺的数据做叠加,结论吵了半个月——其实两边都没错,抽象精度本来就不一样。

抽象时还要做"降维"决策。一条宽度 8 米的道路,在 1 比 25 万的图上画成双线根本看不清,通常降为单线;一个占地 2 公顷的水塘,在小比例尺上降为一个记号。降维不可逆:把面降成点之后再想恢复面积,就得回原始数据重做。这就是加工链思维的第一课——上游的抽象决策会锁死下游的分析能力

二、三要素:几何、属性、空间参照

任何一份合格的空间数据都能拆成三块。

几何回答"长什么样":点是坐标对,线是坐标串,面是首尾闭合的坐标串。属性回答"是什么":一张表,每行挂在一个几何上,每列是一个字段。空间参照回答"在哪里":大地基准与投影合起来,把坐标数字钉在地球的某个位置上。

看一份真实的字段设计。某县做学校布点规划,需要一张小学分布图层:

# 图层:XZQ_小学分布 几何类型:点 比例尺:1比1万 # 字段字典(节选) 字段名 类型 长度 小数 含义与取值约束 SCHOOL_ID 字符 12 - 学校唯一编码,前6位为行政区划代码 SCHOOL_NAME 字符 60 - 学校正式名称,取自教育部门名录 STUDENTS 整型 - - 在校学生数,大于等于0 TEACHERS 整型 - - 专任教师数,大于等于0 FOUND_YEAR 整型 - - 建校年份,1900至2025 IS_PUBLIC 布尔 - - 是否公办,1为是0为否 LONGITUDE 双精度 - 6 经度,度为单位,仅备查用 LATITUDE 双精度 - 6 纬度,度为单位,仅备查用

字段设计不是随便起的。SCHOOL_ID 前 6 位放区划代码,是为了后续能与统计年报按区划汇总对上;经纬度两个字段标注"仅备查",因为真正的位置信息在几何列里,这两个字段是从几何反算出来的冗余列——冗余是为了方便外行查阅,代价是编辑几何后必须同步刷新,否则两头打架。

再看属性表里的实际内容:

# 属性表前5行(几何列已省略) SCHOOL_ID SCHOOL_NAME STUDENTS TEACHERS FOUND_YEAR IS_PUBLIC 411528001001 城关镇第一小学 1832 98 1956 1 411528001002 城关镇第二小学 1245 71 1978 1 411528001003 河口镇中心小学 634 39 1983 1 411528002001 民办英才学校 521 28 2002 0 411528002002 山区希望小学 89 12 2008 1 # 观察:民办英才学校编码段为002,与公办001分段,便于分类统计

三要素缺一项的后果各有各的惨法。缺属性,地图画得出来但回答不了"哪个学校超员";缺空间参照,图层之间错位,叠加分析全线报废;几何有伤(线自相交、面不闭合),面积汇总对不上账。第 2 章的每一道进厂工序,本质都是在补这三要素的课。

三、用 Python 的眼光看一份要素集合

概念讲完,换一个视角检验理解。把图层想成一个"几何加属性"的对象集合,很多后续开发章节的代码就好懂了:

# 概念演示:一个图层在内存中的逻辑形态(与任何具体平台解耦) schools = [ {"geom": (114.0521, 32.1587), # 几何:经纬度坐标对 "attr": {"name": "城关镇第一小学", "students": 1832, "public": True}}, {"geom": (114.0789, 32.1412), "attr": {"name": "河口镇中心小学", "students": 634, "public": True}}, ] # 遍历要素,先问几何再问属性——这就是空间查询的最朴素形态 for f in schools: lon, lat = f["geom"] if 32.14 <= lat <= 32.16: # 纬度带过滤:只看城区范围 print(f["attr"]["name"], f["attr"]["students"]) # 输出: # 城关镇第一小学 1832 # 解读:河口镇中心小学纬度32.1412不满足条件,被过滤

这段代码跑不出真地图,但它揭示了第 3 章所有查询分析的骨架:条件写在属性上,范围写在几何上。真实平台只是把这两个判断做成了引擎级的高速操作。

⚠️ 常见坑:拿到数据先画图、后看坐标。正确顺序是反过来——先确认空间参照,再确认字段,最后才轮到符号化。顺序错了,返工是小事,拿着错位图层去汇报才是大事。

💡 关键直觉:比例尺不是地图的一个参数,而是整条数据供应链的精度契约。采集精度、抽象粒度、分析结论的有效范围,全都挂在这一个数字上。

本节要点回顾

  • 抽象规则:连续世界被切成矢量或栅格,比例尺决定最小上图图斑与降维决策
  • 降维不可逆:面降为点后面积信息永久丢失,抽象前先想清下游分析要什么
  • 三要素缺一不可:几何定形状,属性定语义,空间参照定位置,缺项故障各不相同
  • 字段设计即分析设计:字段类型、编码规则、冗余列,直接决定后续能不能汇总统计
  • 查询的骨架:条件在属性上,范围在几何上,所有平台都是这句话的工程化

下一节把镜头转向工具箱:MapGIS 家族有哪些成员,它们在加工链上各把守哪个工位。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U