第一课:认识地图数据——GIS地图、常见格式与坐标系
大家好,我是老张。干GIS这行十几年了,今天咱们聊聊最基础的东西——地图数据。
很多人一上来就急着用工具,结果数据加载进去显示不出来,或者位置对不上。我见过太多这样的案例了。说白了,就是没搞懂地图数据到底是什么。
这一课,咱们把三个核心概念讲透:GIS地图是什么、常见的地图格式、坐标系到底是个啥。嗯,别小看这些,这是你后面所有操作的地基。
核心观点:地图数据不是一张图片,而是一堆带有位置信息的“数字积木”。你只有理解了积木的规则,才能搭出想要的场景。
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地图 = 位置+属性、常见格式三兄弟、坐标系分地理和投影。把这些搞明白了,后面导入数据、搭场景就顺了。