开源GIS现状

转自:开源中国社区论坛 ===================================================== 地 理信息系统(Geographic Information Systems,GIS)软件依赖于覆盖整个地球的数据集。为处理大量的 GIS 数据及其格式,编程人员创建了若干开源库和 GIS 套件。本文简要介绍可用于 UNIX® 和 Linux® 的 GIS 工具和库的范围和深度。 GIS 软件以前仅限于地理学者和地质工作者使用,自从网上提供全球地图服务和移动电话公司开始提供全球定位系统(Global Positioning System,GPS)服务以来,GIS 软件已变得非常普及了。GIS 系统可获得并处理描述地球表面的空间数据。一般情况下,在空间处理软件对地理数据进行格式化、处理和显示后,这些数据就转换为地理信息。声纳、雷达、照相 机和其他观测平台便可以获得这些数据。GIS 软件将这些数据存储在三维数据库中,并将其格式化,然后传输它们。有时甚至可以通过所谓的四维(三维 + 时间)转换来显示数据随时间的发展情况。 当然,我们能够对所有 GIS 数据进行编辑,而且必须经常编辑这些数据,训练有素的 GIS 专家可以处理接收到的大多数数据集格式。许多(若非全部)数据格式都遵守开放标准,GIS 空间中的所有操作都可以使用运行于 Linux、主要的 Berkeley Software Design (BSD) 和一些 UNIX 变体上的开源应用程序来执行。最重要的是,GIS 软件套件还可以在 Mac OS X 上运行。 Quantum GIS:开源 GIS 数据查看器 ---------------------------------------------------------------------------------------------------- 近 年来,Linux 上运行的 GIS 应用程序迅速增加。20 世纪 80 年代,编程人员开发了地理资源分析支持系统(Geographic Resources Analysis Support System,GRASS)。在 20 世纪 90 年代后期经过修改后,任何具有 GIS 知识和一些 Linux 专业知识的人员都可以利用 GRASS 从 Linux 命令行或图形用户界面 (GUI) 运行完整的 GIS 系统。遗憾的是,GRASS 极其复杂,为在 Linux 上运行 GIS 的初学者造成了一些不便。GUI 显示大量的功能和命令行标识,其目标用户是 GIS 专家,而非尝试创建网络地图的新手。 2002 年 5 月,开发人员开发了 GPLed Quantum GIS (QGIS),该项目面向需要访问、显示和可能编辑 GIS 数据集的初学者和中间用户。GIS 用户可以将 QGIS 部署为单独的 GIS 数据查看器和编辑器,或者部署为 GIS 工具链的一部分。GIS 工具链可包括 QGIS、GRASS 软件套件、一个三维 PostGIS 数据库和一个向通过 Internet 访问地图网站的用户提供数据集和地图的地图服务器。 QGIS 开发人员决定使用基于 C++ 的 Qt 工具包来构建 QGIS 界面,这是不同于以前实践的主要方案(编程人员主要使用 Tcl/Tk 创建了 GRASS,Tcl/Tk 建立于 20 世纪 80 年代后期)。尽管 QGIS 是在 GPLed Qt 工具包的基础上开发的,但它可以在多数 Linux 和 UNIX 变体、Microsoft® Windows® 和 Mac OS X 上运行。 栅格数据 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 应用程序使用两种不同的数据结构存储 GIS 数据:栅格数据 和矢量数据。您可以添加三维数据格式的数据库存储,该格式针对 PostgreSQL 处理而优化 —— 即 PostGIS 数据格式。我们将 PostGIS 数据归类为矢量数据,其原因将在下文介绍。 QGIS 处理所有三种数据 —— 栅格数据、矢量数据和数据库,这也是编写 GIS 数据编程库的程序员的重要努力方向。通过想像正方形网格或六边形单元,可以方便地可视化数据结构(实践中,应用程序在多数情况下采用正方形网格)。这些网 格覆盖一个像矩阵一样的地理区域,并在一个名为 map algebra 的字段中使用数学表示形式。GIS 专家可以向每个网格中添加数据,如降水量值或经济数据,但描述复杂的不规则地理形状较为困难。该软件通常必须依赖于相似性和网格中值的位置来对特征分类 (如街道或海岸),而非基于封装在元数据中的特征描述。另一种可能的解释依赖于使用与个别网格相关联的颜色值将栅格网格组归类为某些特征。 网 格按行或按列排列,它反映硬盘存储数据的方式。许多基于栅格的格式都有基本的图像格式:常见的基于栅格的图像格式是位图 (.bmp)。带标记的图像文件格式 (.tiff) 是另一种常用的基于栅格的图像格式,GIS 专家为适应地理学者的需要将其重命名为 GeoTIFF。基于栅格的数据格式更类似于图像。其准确性依赖于描述尽可能少的特征的网格数量。 在栅格数据模型中,地图的准确性还依赖 于地图的比例。因此,地图的分辨率和准确性依赖于每个网格代表的实际区域。该数据模型可比较的简单性有助于对 GPS 设备和卫星成像捕获的数据进行建模。有些数据格式可以很好地适用于栅格模型。例如,数字高程模型(Digital Elevation Model,DEM)数据点在网格图形中均匀排列。DEM 格式编码高程数据来创建高清晰地形。前几年,美国地质调查局 (USGS) 向公共领域发布了一个非常受欢迎的全球 DEM 数据集。 矢量数据 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 基于矢量的数据格式的出现改变了 GIS 专家的生活。新数据查看器和编辑器,如 Thuban 和 QGIS 不必再费力地表示复杂的基于矢量的格式,因为它一开始就内置了编辑和添加基于矢量的数据层的能力。GRASS 已有 20 多年的历史,但最近才获得此能力。 简 言之,矢量数据利用最简单的拓扑实体 — 点、线和多边形,并在二维笛卡尔坐标系统中固定它们来描述地理特征。连接线称为弧,笛卡尔坐标系统中的点称为节点。数据结构与图形关联,并以图形理论做为 其数学基础。所谓的弧节点列表包含弧和节点。列表定义多边形,并可以相互层叠,来表示方向完全相反但描述相同地理区域的数据集,从而形成数据详细的地图。 QGIS 和其他较为简单的数据查看器用于探测各种数据格式和覆盖此行星系统的所有数据集。与某些商业产品、甚至 GRASS 不同,您可以容易地安装这些查看器,并且几乎可以在所有主要操作系统上使用。里程可能稍有偏差,但几乎可以始终保证成功。 数据格式 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ QGIS 支持许多矢量数据格式,如 Shapefile、MapInfo 图层和 ArcInfo coverage。矢量数据要求的存储要比栅格数据少得多,因为弧节点列表简化并减少了表示地图中包含的特征所需的数据。这些数据还非常便于搜索地图或用 矢量表示的各种图层。在 20 世纪 90 年代初,商业软件套件 ArcInfo GIS 进入市场以后,促进了对 Shapefile 的使用。后来出现了其他文件和数据格式,但是,没有免费的开源编程社区,这些成果仍局限于地理学者的理论研究和军事规划。 GRASS ---------------------------------------------------------------------------------------------------- 最近推出了 GRASS 6.01 版,该版本支持大约 40 种数据格式。它突破了二维栅格格式,可包括体元(voxel) 或三维栅格格式。大量的成像和成图模块大大方便了 GIS 专家以新的方法分析数据。这使得长期模拟和完善的地图制作成为可能。 不 过,用户仍需要解决的问题是,由于该版本针对的是 UNIX 和 Linux 专家,其界面相当杂乱而且安装过程也比较复杂。进一步说,导致这一复杂性的原因是随 GRASS 提供了大量的库和工具。所幸的是,各个 GIS 技术级别的学生编写了许多有关 GRASS 的文档,因此使 Linux 和 UNIX 新手能够对付 GRASS 安装时的复杂要求。 GDAL 和 OGR ---------------------------------------------------------------------------------------------------- 在 谈到 GIS 数据格式时,必然会考虑到要支持的大量格式,以使每个数据查看器和 GIS 应用程序可以广泛适用。开源 GIS 应用程序必须包括从 ArcInfo 到 X 窗口系统的大多数开放数据格式标准。诸如 GeoTIFF 的格式是通常由多数应用程序支持的开放标准的常见示例。 在 开源范围中,GRASS、QGIS、Thuban 和许多其他 GIS 应用程序使用基本库,即 Geospatial Data Abstraction Library (GDAL)。GDAL 用 C 和 C++ 编写,只能包括一种栅格格式。另一个库叫做 OGR Simple Features Library(以前称为 OpenGIS Simple Features Reference Implementation),尽管是为了适应 GDAL 源树中存在的矢量格式而构建的,但 OGR 依赖于 GDAL。事实上,如果没有开源许可的 GDAL,多数现代地理空间数据查看器将是不可思议的。该库为编程人员提供了通用的数据模型,包括所有栅格数据格式和矢量数据格式(通过 OGR)。GDAL 还可让编程人员在世界地理坐标(即地理参考坐标)上设计栅格数据。 PostGIS 和 OpenGIS ---------------------------------------------------------------------------------------------------- 在没有相当完善的数据存储机制的情况下,公共领域 GIS 数据不可能存在。然而,存储可能不像栅格数据那样重要,其空间构成可能包含相当简单的数字数据。编程人员只须知道一些较高级别的结构,但是多数编程人员认为栅格数据较为复杂并且占用大量的存储。 OpenGIS 标准通过生成矢量数据解决了这些问题,矢量数据也指几何对象,如点、线、多边形及其组合,可以在启用三维数据库的 PostgreSQL 中存取(PostgreSQL 的 OpenGIS 实现标准称为 PostGIS)。存储在 PostgreSQL 数据库中的 GIS 数据完全可以使用 SQL-92 搜索。 目前,编程人员能够访问整个开源 GIS 应用程序在很大程度上依赖于 UNIX 和 Linux 系统。这些成果得益于通常的开放标准,而且多数 Internet 地图制作领域正在趋向于依赖这些标准。以任何形式处理地理数据的所有编程人员都会遇到与 Linux 系统编程人员在 glibc 上遇到的相同的基础库问题。GIS 编程人员即使只是想利用键盘编写数据过滤器的脚本或删改工具链,也无法判断要使用哪些数据格式和基础库。 结束语 ---------------------------------------------------------------------------------------------------- 在 谈到有关开源和全球环境现象时,很难让人联想到地理数据集和 GIS 应用程序领域。但是,开源应用程序,如 GRASS 和 QGIS 在尝试使公共领域 GIS 数据集可用于编程人员和技术用户,以便他们不必使用商业产品。GDAL 和 OGR 之类的库可以将 GIS 数据放在通用开源基础上处理,而不会影响开放 GIS 数据标准的完整性。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读601次。Oracle的数据导入导出是一项基本的技能,但是对于懂数据库却不熟悉Oracle的同学可能会有一定的障碍。正好在最近的一个项目中碰到了这样一个任务,于是研究了一下Oracle的数据导入导出,在这里跟大家分享一下。......_oracle 迁移方法 对比
文章浏览阅读553次。开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共700多人左右 1 + 2)。最近我们在使用MYSQL 8 的情况下(8.025)在数据库运行中出现一个问题 参数prefer_order_i..._mysql prefer_ordering_index
文章浏览阅读3.5k次,点赞3次,收藏7次。折腾了两个小时多才成功连上,在这分享一下我的经验,也仅仅是经验分享,有不足的地方欢迎大家在评论区补充交流。_navicat连接opengauss
文章浏览阅读2.7k次。JSON 代表 JavaScript Object Notation。它是一种开放标准格式,将数据组织成中详述的键/值对和数组。_postgresql json
文章浏览阅读2.9k次,点赞2次,收藏6次。navicat 连接postgresql 注:navicat老版本可能报错。1.在springboot中引入我们需要的依赖以及相应版本。用代码生成器生成代码后,即可进行增删改查(略)安装好postgresql 略。更改配置信息(注释中有)_mybatisplus postgresql
文章浏览阅读1.4k次。postgre进阶sql,包含分组排序、JSON解析、修改、删除、更新、强制踢出数据库所有使用用户、连表更新与删除、获取今年第一天、获取近12个月的年月、锁表处理、系统表使用(查询所有表和字段及注释、查询表占用空间)、指定数据库查找模式search_path、postgre备份及还原_pgsql分组取每组第一条
文章浏览阅读3.3k次。上一篇我们学习了日志清理,日志清理虽然解决了日志膨胀的问题,但就无法再恢复检查点之前的一致性状态。因此,我们还需要日志归档,pg的日志归档原理和Oracle类似,不过归档命令需要自己配置。以下代码在postmaster.c除了开启归档外,还需要保证wal_level不能是MINIMAL状态(因为该状态下有些操作不会记录日志)。在db启动时,会同时检查archive_mode和wal_level。以下代码也在postmaster.c(PostmasterMain函数)。......_postgresql archive_mode
文章浏览阅读3k次。系统:ubuntu22.04.3目的:利用向日葵实现windows远程控制ubuntu。_csdn局域网桌面控制ubuntu
文章浏览阅读1.6k次。表分区是解决一些因单表过大引用的性能问题的方式,比如某张表过大就会造成查询变慢,可能分区是一种解决方案。一般建议当单表大小超过内存就可以考虑表分区了。1,继承式分区,分为触发器(trigger)和规则(rule)两种方式触发器的方式1)创建表CREATE TABLE "public"."track_info_trigger_partition" ( "id" serial, "object_type" int2 NOT NULL DEFAULT 0, "object_name..._pg数据表分区的实现
文章浏览阅读3.3k次。物联网平台开源的有几个,就我晓得的有、、thingskit、JetLink、DG-iot(还有其他开源的,欢迎在评论区留言哦!),然后重点分析了下ThingsBoard、ThingsPanel和JetLink,ThingsBoard和Jetlinks是工程师思维产品,可以更多的通过配置去实现开发的目的,ThingsPanel是业务人员思路产品,或者开发或者用,避免了复杂的配置带来的较高学习门槛。ThingsBoard和Jetlinks是Java技术体系的,ThingsPanel是PHP开发的。_jetlinks和thingsboard
文章浏览阅读3.8k次。PostgreSQL 数据类型转换_pgsql数字转字符串
文章浏览阅读7k次,点赞3次,收藏14次。在做数据统计页面时,总会遇到统计某段时间内,每天、每月、每年的数据视图(柱状图、折线图等)。这些统计数据一眼看过去也简单呀,不就是按照时间周期(天、月、年)对统计数据进行分个组就完了嘛?但是会有一个问题,简单的写个sql对周期分组,获取到的统计数据是缺失的,即没有数据的那天,整条记录也都没有了。如下图需求:以当前月份(2023年2月)为起点,往后倒推一年,查询之前一年里每个月的统计数据。可见图中的数据其实是缺少的,这条sql只查询到了有数据的月份(23年的1月、2月,22年的12月)_如何用一条sql查出按年按月按天的汇总
文章浏览阅读3.8k次,点赞66次,收藏51次。PostgreSQL全球开发小组与2022年10月13日,宣布发布PostgreSQL15,这是世界上最先进的开源数据库的最新版本_mysql8 postgresql15
文章浏览阅读1.3k次。上文介绍了磁盘管理器中VFD的实现原理,本篇将从上层角度讲解磁盘管理器的工作细节。_smgrrelationdata
文章浏览阅读1.1k次。PostgreSQL设置中文语言界面和局域网访问_postgressql汉化
文章浏览阅读4.2k次。PostgreSQL 修改数据存储路径_如何设置postgresql 数据目录
文章浏览阅读4.7k次。在项目中用到了多数据源,在连接postgres数据库时,项目启动报错,说数据库连接错误,说dual不存在,网上好多教程都是说数据库查询的时候的大小写问题,而这个仅仅是连接,咋鞥却处理方法是修改application-dev.yml中的配置文件.项目中的druid参数是这样的:确实在配置文件中有个查询语句。_relation "dual" does not exist
文章浏览阅读4.9k次。PostgreSQL是一款强大的关系型数据库,但在实际使用过程中,许多用户经常会遇到慢SQL的问题。这些问题不仅会降低数据库性能,还会直接影响业务流程和用户体验。因此,本文将会深入分析PostgreSQL慢SQL的原因和优化方案,帮助用户更好地利用这个优秀的数据库系统。无论你是初学者还是专业开发者,本文都将为你提供实用的技巧和方法,让你的PostgreSQL数据库始终保持高效快速。_postgresql数据库优化
文章浏览阅读1.6k次。Linux配置postgresql开机自启_linux 启动pgsql
文章浏览阅读2k次。本篇介绍如何在centos7系统搭建一个postgresql主备集群实现最近的HA(高可用)架构。后续更高级的HA模式都是基于这个最基本的主备搭建。_postgresql主备