version: 0.2
文章目录
1. GIS 数据类型
分为矢量(vector)数据和栅格(raster)数据。
GIS矢量文件可以理解为一种特殊的表格。
GIS栅格文件可以理解为一种特殊的图像。
GIS数据里的坐标值都是真实世界坐标,也必须有CRS(坐标参考系统),因为脱离了坐标系的坐标毫无意义。
GDAL提供的驱动程序及其对应格式的表格:
2. 矢量
2.1 Shapefile
2.1.1 Wiki介绍
Shapefile格式是一种地理信息系统(GIS)软件的地理空间矢量数据格式。它由Esri开发和规范,作为在Esri和其他GIS软件产品之间实现数据互操作性的开放规范。Shapefile格式可以在空间上描述矢量要素,如点、线和多边形,代表水井、河流和湖泊等。每个项目通常都有描述它的属性,比如名称或温度。
2.1.2 重点总结
-
Shapefile存储离散的空间元素,或者说标注结果,不储存地图本身。
-
一份Shapefile只允许存储1种几何体。
-
Shapefile以单个空间元素为单位,相对于普通表格,它的特殊之处就在于有一个geometry列,存储几何体对象。
-
一份Shapefile至少包括3个文件:.shp(主文件)、.shx(索引文件)和.dbf(dBASE表)。
-
.shp 只存空间元素本身,也就是它的坐标信息,例如多边形的每个顶点、折线的顶点等等。
-
.shx 存储空间元素的索引,和.shp顺序对应。
-
.dbf 存储属性,和.shp顺序对应。例如希望给每个省附加上人口、男女比等。
-
-
Shapefile的缺点是格式太老以及1份文件包含多个子文件,使用起来很不方便。
2.1.3 样例
河南省1:500万地质图(1990年)(部分)。
- 原始文件
-
.shp:几何体对象
-
.dbf:属性
-
.xml:GIS软件生成的辅助文件
-
.prj:投影信息,即CRS
-
.sbn/.sbx/.shx:索引文件
-
表格形式(用Python的GeoPandas库读取)
- geometry列,对应.shp主文件;其他列对应.dbf文件。
- geometry列存储每个几何体的坐标信息,例如上图中都是Polygon对象。注意这份文件的多边形坐标看起来很小,像像素坐标,但其实是经纬度。
- ID列,如果有的话,可以用于和其他表格联表,以获取某个区域的更多属性。通常是国家统一使用的行政区ID。
-
CRS(用Python的GeoPandas库读取)
<Geographic 2D CRS: EPSG:4326> Name: WGS 84 Axis Info [ellipsoidal]: - Lat[north]: Geodetic latitude (degree) - Lon[east]: Geodetic longitude (degree) Area of Use: - name: World. - bounds: (-180.0, -90.0, 180.0, 90.0) Datum: World Geodetic System 1984 ensemble - Ellipsoid: WGS 84 - Prime Meridian: Greenwich
-
Geographic 2D CRS: EPSG:4326:
- 这表示地理坐标系,2D表示使用经度和纬度进行描述,EPSG:4326是这个坐标系的EPSG编码。
-
Name: WGS 84:
- 这是地理坐标系的名称,即 WGS 84。
-
Axis Info [ellipsoidal]:
- 描述了坐标轴的信息,包括纬度和经度。在这个坐标系中,纬度使用 “Lat[north]” 表示,经度使用 “Lon[east]” 表示。
-
Area of Use:
- 描述了这个坐标系的使用范围,即世界范围。
-
Datum: World Geodetic System 1984 ensemble:
- 描述了使用的基准,即 WGS 84。包括椭球体信息和本初子午线的位置。
-
Ellipsoid: WGS 84:
- 描述了使用的椭球体,即 WGS 84 椭球体。
-
Prime Meridian: Greenwich:
- 描述了本初子午线的位置,即格林威治子午线。
-
-
可视化
2.2 GeoJSON
2.2.1 Wiki介绍
GeoJSON 是一种用于表示简单地理要素及其非空间属性的开放标准格式。它基于 JSON 格式。
这些要素包括点(因此包括地址和位置)、线串(因此包括街道、高速公路和边界)、多边形(国家、省份、土地区等),以及这些类型的多部分集合。GeoJSON 的要素不仅需要表示物理世界的实体;例如,移动路由和导航应用程序可能使用 GeoJSON 描述其服务覆盖范围。
GeoJSON 格式与其他 GIS 标准的不同之处在于,它不是由正式的标准组织编写和维护的,而是由一个互联网开发者工作组负责。
GeoJSON 的一个显著衍生产品是 TopoJSON,它是 GeoJSON 的扩展,编码地理空间拓扑关系,并通常提供更小的文件大小。
2.2.2 重点总结
- 老版的GeoJSON里有crs字段,但最新版的GeoJSON里省略了crs,因为全部统一采用WGS84,即用经纬度表示坐标。
- GeoJSON的格式相当固定,不允许随意更改,如更改结构、更改字段名等。详细的可以看RFC 7464。
2.2.3 样例
英国 Key Stage 2(KS2)数据集。
-
原始形式
{ "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": { "WD19CD": "E05001371", "School Ward": "Brighouse", "No. of Primary Schools in Ward": 4, "Reading - Total No. of Pupils": 134, "Reading - No. of Pupils Achieved EXS+": 118, "Reading - KS1-2 Average Progress Score": 0.77, "Writing - Total No. of Pupils": 134, "Writing - No. of Pupils Achieved EXS+": 109, "Writing - KS1-2 Average Progress Score": -0.33, "Maths - Total No. of Pupils": 134, "Maths - No. of Pupils Achieved EXS+": 119, "Maths - KS1-2 Average Progress Score": 0.09, "Reading & Writing & Maths Combined (RWM) - Total No. of Pupils": 134, "Reading & Writing & Maths Combined (RWM) - No. of Pupils Achieved EXS+": 103 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -1.74448, 53.71582 ], [ -1.74879, 53.71411 ], ... ], ... ], ... ] } }, ... ] }
-
features列表存所有的空间元素,单个空间元素有properties(属性)和geometry(几何对象)两大字段。
-
注意MultiPolygon对象是4层列表:x + y坐标组成单个点;n个点组成1条边缘;1条外边缘 + n条内边缘(即镂空) 组成1个多边形;n个多边形组成1个MultiPolygon。其他几何体结构并不复杂,不展示了。
-
表格形式、可视化形式和Shapefile并无区别,因此省略
3. 栅格
3.1 GeoTIFF
3.1.1 Wiki介绍
GeoTIFF是一种公共领域的元数据标准,允许将地理参考信息嵌入到TIFF文件中。潜在的额外信息包括地图投影、坐标系统、椭球体、基准等一切用于建立文件精确空间参考的必要信息。GeoTIFF格式完全符合TIFF 6.0标准,因此无法读取和解释专门元数据的软件仍然能够打开GeoTIFF格式文件。
与"内联"TIFF地理空间元数据相对的是*.tfw World File副本文件格式,它可以位于与常规TIFF文件相同的文件夹中,提供了此处描述的标准GeoTIFF功能的子集。
.twf是可选的,等价于从图像坐标系到世界坐标系的3 * 3 仿射变换矩阵
3.1.2 重点总结
- 真实世界借由投影转换为二维的GeoTIFF图,转换之后用投影坐标系来表示坐标,投影坐标系介绍见第四节。
- GeoTIFF的数据层(band)数量不固定,而普通图片通常只有RGB 3个数据层(channel)。这种设计是因为GeoTIFF里可能不止存储了一份数据,同一片区域采集了多份不同种类的数据(例如不同光谱波段),叠加在一起就成了多个bands。
3.1.3 样例
四川省1km栅格土地利用城乡、工矿、居民用地类型数据(1980s)。
-
原始文件
-
用普通的图像软件打开
-
用QGIS打开
- 可能有多个bands。
- 最大最小值不是固定的,看是什么传感器,采集的什么数据。
- 可以用别的方式渲染,并不一定是灰度图。
-
数组形式(用Python的rasterio库读取)
tif = r'D:/sprite/PythonProject/main/gis/tiff/sichuan_ild51.tif' raster = rasterio.open(tif) raster_array = raster.read() print(raster_array) """ [[[-32768 -32768 -32768 ... -32768 -32768 -32768] [-32768 -32768 -32768 ... -32768 -32768 -32768] [-32768 -32768 -32768 ... -32768 -32768 -32768] ... [-32768 -32768 -32768 ... -32768 -32768 -32768] [-32768 -32768 -32768 ... -32768 -32768 -32768] [-32768 -32768 -32768 ... -32768 -32768 -32768]]] """ print(raster_array.shape) # (1, 232, 140),代表1个band,高232个像素,宽140个像素。 print(raster_array.min(), raster_array.max()) # -32768 10000
-
CRS(用Python的rasterio库读取)
print(raster.crs) """ PROJCS["WGS_1984_Albers",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Albers_Conic_Equal_Area"],PARAMETER["latitude_of_center",0],PARAMETER["longitude_of_center",105],PARAMETER["standard_parallel_1",25],PARAMETER["standard_parallel_2",47],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH]] """
-
PROJCS[“WGS_1984_Albers”:
- 这表示投影坐标系(Projected Coordinate System),其名称为 “WGS_1984_Albers”。
-
GEOGCS[“WGS 84”,…]:
- 这是地理坐标系(Geographic Coordinate System)的描述,其中 “WGS 84” 表示使用 WGS 84 椭球体作为基准。
-
PROJECTION[“Albers_Conic_Equal_Area”]:
- 这表示使用 Albers等积圆锥投影(Albers Conic Equal Area Projection)。
-
PARAMETER[“latitude_of_center”,0]:
- 这是投影的参数之一,表示投影中央纬度为 0 度。
-
PARAMETER[“longitude_of_center”,105]:
- 这是投影的参数之一,表示投影中央经度为 105 度。
-
PARAMETER[“standard_parallel_1”,25]:
- 这是投影的参数之一,表示标准纬度 1 为 25 度。
-
PARAMETER[“standard_parallel_2”,47]:
- 这是投影的参数之一,表示标准纬度 2 为 47 度。
-
PARAMETER[“false_easting”,0] 和 PARAMETER[“false_northing”,0]:
- 这两个参数表示投影的偏移,通常用于确保所有坐标都为正数。
-
UNIT[“metre”,1,AUTHORITY[“EPSG”,“9001”]]:
- 这表示投影的单位是米,具有一个比例因子 1。
-
AXIS[“Easting”,EAST] 和 AXIS[“Northing”,NORTH]:
- 这表示地图的坐标轴方向,其中 “Easting” 表示东向,“Northing” 表示北向。
-
4. 矢量+栅格
4.1 GeoPackage
4.1.1 Wiki介绍
GeoPackage(GPKG)是一种开放、非专有、跨平台且基于标准的地理信息系统数据格式,构建在 SQLite 数据库的一组约定之上。由开放地理空间协会(OGC)定义,得到了美国军方的支持,并于2014年发布,GeoPackage在各种政府、商业和开源组织中得到了广泛支持。
4.1.2 重点总结
- GeoPackage文件本质上是一个 SQLite 数据库文件。可以只含有矢量/栅格数据,也可以都有。
- 1个GeoPackage文件里可以存储很多个矢量层(vector layer),包含了出于多种目的收集/标注的多种空间元素,既有条理,使用也方便。
4.1.3 样例
OS Open Built Up Areas 数据集(大不列颠地区面积达到或超过200,000平方米或20公顷的建成区域)
虽然GeoPackage可以同时存储矢量数据和栅格数据,但并没有找到这种数据集
-
原始形式
-
表格形式、可视化形式和Shapefile、GeoJSON并无区别,因此省略
5. 其他参考资料及名词解释
-
CRS:空间参考系统(SRS)或坐标参考系统(CRS)是一个框架,用于精确测量地球表面上的位置坐标。因此,它将坐标系统的抽象数学和解析几何应用于地理空间。一个特定的SRS规范(例如,“通用横轴墨卡托投影 WGS 84 区域 16N”)包括对地球椭球体、水平基准、地图投影(在地理坐标系中除外)、原点和测量单位的选择。为了在世界各地或特定区域以及不同目的上使用,已经规定了成千上万个坐标系统,因此需要在不同的SRS之间进行转换。
分为地理坐标系(geographic coordinate system)和投影坐标系(projected coordinate system)
-
地理坐标系:地理坐标系(GCS)是一种用于测量和直接表示地球上位置的球面或大地测地坐标系,通常用纬度和经度表示。它是各种正在使用的空间参考系统中最简单、最古老且最广泛使用的一种,也是大多数其他系统的基础。尽管纬度和经度形成了一个坐标元组,就像笛卡尔坐标系一样,但地理坐标系并非笛卡尔坐标系,因为测量的是角度而不是平面表面上的坐标。
例如GPS使用的坐标系WGS84(World Geodetic System 1984)。
-
投影坐标系:投影坐标系,也称为投影坐标参考系统、平面坐标系或格网坐标系,是一种空间参考系统的类型,通过特定的地图投影在一个平面表面上使用笛卡尔坐标(x,y)表示地球上的位置。每个投影坐标系,例如“通用横轴墨卡托投影 WGS 84 区域 26N”,由地图投影的选择(具有特定参数)、用于将坐标系统绑定到地球上实际位置的大地基准的选择、原点和测量单位的选择所定义。已经为各种目的在各个地区指定了数百个投影坐标系。
-
-
WKT(Well-known text representation of coordinate reference systems):坐标参考系统的文本表示(WKT或WKT-CRS)是一种文本标记语言,用于表示空间参考系统和空间参考系统之间的转换。这些格式最初由开放地理空间联盟(OGC)定义,并在其“简单要素访问”和“坐标参考系统的文本表示”规范中进行描述。当前的标准定义是ISO 19162:2019,这取代了ISO 19162:2015。
-
空间分辨率(spatial resolution):在物理学和地球科学中,空间分辨率一词指的是独立测量之间的距离,或表示图像像素的物理尺寸的物理维度。虽然在一些仪器中,如相机和望远镜,空间分辨率直接与角分辨率相关,但其他仪器,如合成孔径雷达或一系列气象站,生成的数据其空间采样布局更与地球表面相关,例如在遥感和卫星图像中。
-
epsg(The European Petroleum Survey Group)代码:由于不同地区、国家使用的坐标系多种多样,为了方便管理,由epsg统一分配编号。所以确定epsg代码就能确定使用的坐标系。epsg的一切信息可以去官网看:https://epsg.io/
-
投影带:由于三维球体投影成二维平面会带来不可避免的失真,为减少这种失真而设置了投影带。类似于划分时区。例如上面案例中的epsg 32647就对应坐标系:WGS 84 / UTM zone 47N,斜杠后的"UTM zone 47N"就代表使用通用横墨尔卡投影(Universal Transverse Mercator),投影带选择47N(北半球,96°E-102°E)。
6. GIS相关工具
- GDAL:GDAL(Geospatial Data Abstraction Library)是一个用于栅格和矢量地理空间数据格式的转换库,由开源地理空间基金会以MIT风格的开源许可发布。作为一个库,它为调用应用程序提供了统一的栅格抽象数据模型和统一的矢量抽象数据模型,适用于所有支持的格式。它还配备了各种有用的命令行工具,用于数据转换和处理。
- QGIS:在Windows、macOS、Linux、BSD和移动设备上创建、编辑、可视化、分析和发布地理空间信息。
- ArcGIS:连接人、地点和数据,利用交互式地图。使用智能、数据驱动的样式和直观的分析工具。与世界或特定群体分享您的见解。
- Equator:一体化土地数据平台 - 帮助土木工程师、房地产专业人员和基础设施设计师赢得更多项目,并更快地推动项目进展。
7. GIS相关组织机构
- OGC:开放地理空间联盟(OGC)是一个国际性的自愿一致性标准组织,致力于地理空间内容和基于位置的服务、传感器网络和物联网、地理信息系统(GIS)数据处理和数据共享。它始于1994年,涉及超过500家商业、政府、非营利和研究组织,通过一致性过程鼓励开发和实施开放标准。
- OSGeo:开源地理空间基金会(OSGeo)是一个非盈利的非政府组织,其使命是支持和推动开放地理空间技术和数据的协作开发。该基金会成立于2006年2月,旨在为更广泛的自由开源地理空间社区提供财务、组织和法律支持。它还充当一个独立的法律实体,社区成员可以向其贡献代码、资金和其他资源。
- ESRI:美国环境系统研究所(Environmental Systems Research Institute, Inc.),简称Esri(/ˈɛzriː/),是一家总部位于加利福尼亚州雷德兰兹的美国跨国地理信息系统(GIS)软件公司。该公司以其ArcGIS产品而闻名。凭借40%的市场份额,Esri是全球领先的GIS软件、Web GIS和地理数据库管理应用程序供应商。