第一课:认识地图数据——GIS地图、常见格式与坐标系

大家好,我是老张。干GIS这行十几年了,今天咱们聊聊最基础的东西——地图数据。

很多人一上来就急着用工具,结果数据加载进去显示不出来,或者位置对不上。我见过太多这样的案例了。说白了,就是没搞懂地图数据到底是什么。

这一课,咱们把三个核心概念讲透:GIS地图是什么、常见的地图格式、坐标系到底是个啥。嗯,别小看这些,这是你后面所有操作的地基。

核心观点:地图数据不是一张图片,而是一堆带有位置信息的“数字积木”。你只有理解了积木的规则,才能搭出想要的场景。

认识地图数据 什么是GIS地图 矢量 + 栅格 + 属性 点、线、面三种要素 常见地图格式 Shapefile (.shp) GeoJSON (.geojson) KML / KMZ 坐标系概念 地理坐标系 (GCS) 投影坐标系 (PCS)

1. 什么是GIS地图?

GIS地图,全称是地理信息系统地图。你想想看,平时用的百度地图、高德地图,那只是GIS地图的一种“展示形式”。真正的GIS地图,背后是一套完整的数据体系。

我个人习惯把GIS地图拆成三层来看:

  • 底层:空间数据——就是地图上那些点、线、面。比如一个路灯的位置(点)、一条马路(线)、一个小区(面)。
  • 中间层:属性数据——每个空间要素背后的信息。比如这个路灯的编号、高度、灯泡类型。
  • 顶层:显示样式——你看到的地图颜色、符号、标注。说白了就是“化妆”层。

我的经验:刚入行时我总觉得GIS地图就是画图。直到有一次做管网项目,甲方要查某个阀门的生产日期。我傻眼了——因为我的数据里只有位置,没有属性。从那以后,我建任何数据都会先问自己:这个要素需要记录哪些信息?

GIS地图的核心就三个字:位置 + 属性 + 关系。位置告诉你在哪,属性告诉你是什么,关系告诉你跟周围怎么连。

2. 常见地图格式

做GIS的人,天天跟格式打交道。我整理了三类最常见的,你记牢了。

2.1 Shapefile(.shp)

这是ESRI公司推出的老牌格式。说它老,是因为1990年代就有了。但直到今天,它依然是行业默认的“通用语言”。

注意了,Shapefile不是单个文件,而是一组文件。最少需要三个:

文件后缀 作用 是否必需
.shp 存储几何形状(点线面) 是
.shx 形状索引,加速读取 是
.dbf 存储属性数据(表格) 是
.prj 存储坐标系信息 推荐有

避坑指南:我曾经因为只拷贝了.shp文件,没带.dbf和.shx,结果在另一台电脑上死活打不开。Shapefile必须三个文件一起复制!另外,字段名长度不能超过10个字符,中文支持也不太好。嗯,这是它的硬伤。

2.2 GeoJSON(.geojson)

GeoJSON是JSON格式的地理数据变体。说白了,就是用文本描述地图。它的优势是:

  • 纯文本,人类可读
  • Web前端直接解析,不需要额外库
  • 轻量,适合网络传输

一个简单的GeoJSON长这样:

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": [116.397, 39.908]
      },
      "properties": {
        "name": "天安门",
        "height": 33
      }
    }
  ]
}

你看,坐标、属性都写在一起了。我个人特别喜欢用GeoJSON做原型验证,因为用记事本就能改数据。

2.3 KML / KMZ

KML是Google Earth带火的格式。KMZ就是KML的压缩包。它的特点是:

  • 基于XML,结构清晰
  • 支持样式、标注、3D模型
  • 适合做展示型地图

我的建议:如果你只是做数据交换,用Shapefile。如果是Web开发,用GeoJSON。如果是给客户做汇报展示,KML配上Google Earth效果很好。我有个项目就是用KML做的汇报,甲方看了直接说“就是这个感觉”。

3. 坐标系概念

坐标系,是GIS里最容易让人懵圈的东西。我刚开始也搞不懂,为什么同一个点在不同软件里位置不一样?

你想想看,地球是个球体,地图是张平面纸。怎么把球面上的位置画到纸上?这就需要坐标系。

坐标系分两大类:

3.1 地理坐标系(GCS)

用经纬度表示位置。单位是度。比如:

  • 北京天安门:东经116°23′,北纬39°54′
  • 最常用的:WGS84(GPS用的就是这个)
  • 中国常用:CGCS2000(北斗系统用的)

地理坐标系的问题在于:经纬度不是长度单位。1度经度在赤道上是111公里,到了北极就变成0了。所以做面积计算、距离测量时,不能用经纬度直接算。

3.2 投影坐标系(PCS)

把球面投影到平面,用米、千米做单位。比如:

  • 墨卡托投影:航海图常用,越往两极变形越大
  • 高斯-克吕格投影:中国地形图、大比例尺地图常用
  • UTM投影:全球通用,分带投影

记住这个原则:数据存储用地理坐标系(WGS84),数据分析用投影坐标系(根据区域选合适的)。我见过太多人拿WGS84的数据直接算面积,结果算出来是平方度,完全不对。

3.3 坐标系转换

不同坐标系之间怎么转?有固定公式,但一般用工具完成:

  • QGIS:内置了Proj库,支持几百种坐标系互转
  • ArcGIS:Project工具,参数设置清晰
  • Python:用pyproj库,几行代码搞定

避坑指南:我曾经接过一个项目,甲方给了两份数据,一份是WGS84,一份是北京54。我没检查坐标系就直接叠加了,结果两个图层差了500多米。嗯,从那以后我拿到数据的第一件事就是看.prj文件或者元数据里的坐标系信息。

好了,这一课的内容就是这些。记住三个关键词:GIS地图 = 位置+属性、常见格式三兄弟、坐标系分地理和投影。把这些搞明白了,后面导入数据、搭场景就顺了。

可可精品资料库