当前位置: 首页 > news >正文

GDAL 的内置矢量工具集ogr的详解使用

GDAL 的内置矢量工具集ogr的详解使用

    • 1,GDAL简介
    • 2,OGR 的主要功能
    • 3,常用 OGR 命令行工具
      • 3.1. ogrinfo:矢量数据结构与元数据查看工具
      • 3.2. ogr2ogr:核心的矢量处理工具
      • 3.3. ogrlineref:线性参考系统处理工具
      • 3.4. ogrmerge.py:批量矢量数据合并工具
    • 4,总结

1,GDAL简介

在 GDAL(Geospatial Data Abstraction Library) 里,实际上分为两个部分:

  • GDAL (Geospatial Data Abstraction Library)

核心负责 栅格数据(Raster) 的读写与处理,例如 GeoTIFF、NetCDF、IMG、DEM 等。

提供 gdal_translate、gdalwarp、gdalinfo 等命令行工具。

  • OGR (OpenGIS Simple Features Reference Implementation)

最初是独立项目(OGR Simple Features Library),后来合并进 GDAL。

主要负责 矢量数据(Vector) 的读写和操作,例如 Shapefile、GeoJSON、GPKG、PostGIS、KML 等。

2,OGR 的主要功能

GDAL 的矢量处理能力主要来自其子库 OGR,支持的格式包括 Shapefile、GeoJSON、GPKG、PostGIS、CSV 等数十种。GDAL 2.x 之后,栅格和矢量的处理能力统一到一个框架中,命令行工具前缀统一为 ogr 或 gdal 开头。

提供 ogr2ogr、ogrinfo 等命令行工具。

  • 数据读写:支持上百种矢量格式(Shapefile、GeoJSON、KML、GPKG、PostGIS…)。

  • 数据转换:通过 ogr2ogr 进行格式转换、坐标投影转换。

  • 几何操作:缓冲区、相交、并集、差分、裁剪等(部分功能借助 GEOS)。

  • 属性操作:字段增删改、筛选(SQL-like 语法)。

  • 空间查询:支持 OGRSQL、SQLite SQL(结合 -dialect SQLite)。

3,常用 OGR 命令行工具

  • ogrinfo → 查看矢量文件基本信息

  • ogr2ogr → 矢量数据转换、投影、裁剪、抽取子集

3.1. ogrinfo:矢量数据结构与元数据查看工具

用于查看数据集中的图层、字段、要素数量、几何类型等基本信息,是掌握数据结构的第一步。

常用参数:

参数功能
-so仅显示图层结构信息,不显示要素
-al显示所有图层和要素信息
-where <条件>属性过滤
-geom=NO不输出几何字段
-sql “<SQL语句>”使用 SQL 语句查看示例:ogrinfo -al -so path.gpkg

说明:查看 GeoPackage 中所有图层的字段信息与空间参考。

示例:

ogrinfo -al -so path.gpkg

说明:查看 GeoPackage 中所有图层的字段信息与空间参考。

3.2. ogr2ogr:核心的矢量处理工具

ogr2ogr 是 GDAL 中最核心、最灵活的矢量处理工具,支持:

  • 矢量数据格式转换(如 SHP 转 GeoJSON)
  • 坐标参考系转换
  • 属性字段过滤与提取
  • 几何处理(裁剪、缓冲、简化、修复)
  • 字段操作与子集提取
  • 多图层合并与输出控制

常用参数说明:

参数功能
-f <格式>指定输出格式,如 “GeoJSON”、“GPKG”
-t_srs 指定目标投影坐标系(如 EPSG:4326)
-where <条件>属性过滤条件(SQL 语法)
-spat xmin ymin xmax ymax空间过滤框
-sql “<SQL语句>”自定义 SQL 查询处理
-dialect <SQL类型>指定 SQL 方言,如 sqlite
-simplify <距离>简化几何,单位与数据坐标系一致
-makevalid对无效几何进行修复
-overwrite覆盖已有输出图层
-append向已有图层追加要素

示例 1:格式转换

ogr2ogr -f "GeoJSON" output.geojson input.shp

说明:将 input.shp 转换为 GeoJSON 格式,并输出为 output.geojson。

示例 2:属性过滤提取子集

ogr2ogr -where "Population > 100000" bigcities.shp cities.shp

说明:提取属性字段 Population 大于 10 万的要素,生成新的 Shapefile bigcities.shp。

示例 3:投影转换

ogr2ogr -t_srs EPSG:4326 reprojected.shp input.shp

说明:将 input.shp 的投影转换为 WGS84 (EPSG:4326),生成 reprojected.shp。

示例 4:几何简化

ogr2ogr -simplify 100 simplified.shp input.shp

说明:将 input.shp 中的几何按 100 米简化,输出为 simplified.shp,适用于大比例尺地图渲染。

示例 5:SQL 几何缓冲操作

ogr2ogr buffer.shp input.shp -dialect sqlite -sql "SELECT ST_Buffer(geometry, 500) AS geometry FROM input"

说明:对每个要素缓冲 500 米,输出缓冲区结果为 buffer.shp,适用于影响范围分析。

示例 6:几何修复

ogr2ogr -makevalid valid.shp invalid_input.shp

说明:修复无效几何(如自相交)并输出为 valid.shp,可用于空间分析前的预处理。

3.3. ogrlineref:线性参考系统处理工具

用于处理线性参考(Linear Referencing)相关的任务,创建一个线性引用—一个包含特殊长度段(例如,以引用单位为 1km)的文件,并从该文件中获取坐标、线性引用距离或子线(子路径)。

常用参数:

参数功能
-create创建线性参考
-p <参考图层>到线性参考点的路径(例如道路里程碑)
-pm <位置字段名称>`沿路径距离的字段名称(例如里程碑值)

示例:

// 从路线线图层、公里桩点图层创建线性参考
ogrlineref -create -l paths.shp -p mstones.shp -pm pos -o parts.shp -s 100
// 输出:线性参考文件parts.shp// 计算指定点公里数
ogrlineref -get_pos -r parts.shp -x -1.4345 -y 51.9497 -quiet
// 输出:15977.724709// 计算指定距离出的点坐标
ogrlineref -get_coord -r parts.shp -m 15977.724709 -quiet
// 输出:-1.435097,51.950080,0.000000// 按起始距截取部分路线
ogrlineref -get_subline -r parts.shp -mb 13300 -me 17400 -o output.shp
// 输出:output.shp

3.4. ogrmerge.py:批量矢量数据合并工具

适用于将多个 Shapefile、GeoJSON 等合并为一个图层或多个图层,需要使用 python 命令调用。

常用参数:

参数功能
-o <输出路径>输出文件
-single合并为单图层
-f <格式>输出格式,如 GPKG、ESRI Shapefile
-nln <图层名>指定输出图层名

示例:

python ogrmerge.py -o merged.gpkg -single -f GPKG ./province/*.shp

说明:将 ./province/ 文件夹下的所有 Shapefile 合并为一个 GPKG 文件中的单一图层。

4,总结

GDAL 的矢量工具集以其轻量、高效、脚本化的优势,为 GIS 数据处理提供了强有力的支撑。特别是 ogr2ogr,几乎覆盖了从预处理、格式标准化、空间分析、再到数据发布的全流程,是 GIS 开发者与空间分析人员必学的工具。掌握这些工具,并结合批处理或 Python 脚本,可显著提升工作效率,为构建自动化、标准化的数据处理链条奠定基础。

在这里插入图片描述


“人的一生会经历很多痛苦,但回头想想,都是传奇”。


http://www.dtcms.com/a/418560.html

相关文章:

  • ppt制作软件模板网站wordpress 邮件投稿
  • Git - git status 观察记录(初始化本地仓库、初始暂存、初始提交、修改文件、第二次暂存、第二次提交)
  • 帝国网站管理系统安装山西省住房和城乡建设部网站
  • 怎么选择昆明网站建设长沙县星沙人才招聘网
  • 【C++】AVL详解
  • SQLE:一个全方位的SQL质量管理平台
  • 基于51单片机智能台灯无线WIFI控制LED灯亮灭亮度APP设计
  • postgres linux 环境psql 中文乱码处理
  • “静态前端 + Serverless API”** 架构做视频站
  • 推广做网站联系方式如何找人帮我做网站推广
  • 基于定制开发开源AI智能名片S2B2C商城小程序的文案信息传达策略研究
  • 使用 Python 将 PDF 拆分为图片
  • 菠菜彩票网站怎么建设外贸先做网站还是开公司
  • @EnableWebMvc 的核心影响
  • C# WPF使用线程池运行Action方法
  • 计算机视觉(opencv)——基于 dlib 关键点定位
  • 快递网站模版广安发展建设集团有限公司门户网站
  • AWS中的离线计算(大数据大屏项目)
  • 功能体=数据定义+算法
  • 机器学习之逻辑回归(梯度下降,Z标准化,0-1归一化)
  • socket 套接字函数
  • 利用ChIPBase数据库构建出高质量的mRNA-TF调控网络
  • FastAPI 与 Flask的主要区别是什么?
  • Qt常用控件之QSpinBox
  • 基于PyTorch的CIFAR10加载与TensorBoard可视化实践
  • 西安网站建设陕icp网站建设公司考察
  • Linux中安装es
  • flink批处理-水位线
  • Unity单元测试:C语言轻量级框架实战
  • 网站怎么做搜索引擎优化、中建官网