地理空间数据存储

数字数据

在当代的地理信息系统中,地理空间数据存储为数字数据。

顾名思义,数字数据由数字或数字组成。在内部,数字电子技术将数据表示为 开或关的二进制信号()。这种二进制表示形式在数据表示和处理方面具有高度的灵活性和准确性。

出于历史原因,位被分成八组,称为bytes。如果遍历八位的所有可能组合,您会发现一个字节可以具有256个不同的值(数字0-255)。在大多数语言中,每个字节足以代表一个字符,因此像Hello这样的五个字符的单词需要五个字节来存储。

为了提高速度,现代计算机一次将多个字节作为字处理。尽管移动设备和较旧的计算机使用32位字(四个字节),但大多数现代笔记本电脑和台式机使用64位字(八个字节)。

计算机或存储设备中的存储量通常由其可以存储的字节数来衡量。由于存储设备可以存储数万亿或四千万个字节,因此希腊前缀用于简化对字节数的引用。但是,由于这是数字数据,所以使用2的幂,使得十进制数看起来有点草率

  • 1 KB(KB)= 2 10字节= 1,024字节
  • 1兆字节(MB)= 2 20字节= 1,048,576字节= 1,024 KB
  • 1 GB(MB)= 2 30字节= 1,073,741,824字节= 1,024 MB
  • 1兆字节(MB)= 2 40字节= 1,099,511,627,776字节= 1,024 GB

存储介质

数字数据存储在各种物理介质上,具体取决于需要访问数据的速度,需要存储多少数据以及在关闭或重新启动数字设备后是否需要继续存在数据。

  • 随机存取存储器(RAM)由硅晶体管制成,可以快速存储和访问正在积极使用的数据。RAM速度快,但比其他形式的内存昂贵,并且在关闭或重新引导设备时数据会丢失
  • 磁性硬盘是覆盖有磁性材料的旋转盘片,可将数据以磁性图案存储在磁盘上。硬盘驱动器可以存储非常大量的数据(以TB为单位),但是访问这些数据所需的时间比RAM要长。硬盘驱动器 是一项可靠的成熟技术。即使硬盘驱动器断电后,硬盘上的数据仍会保留,但是硬盘驱动器不会永远持续下去,最终会出现故障,通常会随身携带数据
  • 闪存是由RAM之类的晶体管制成的,但具有特殊的结构(浮栅MOSFET),即使关闭电源,该结构也能保持数据。闪存已在消费类设备(SD卡,拇指驱动器,智能手机等)中变得无处不在,因为它具有高容量,并且在过去十年中价格便宜。闪存正在用速度更快,功耗更低的固态驱动器慢慢取代磁性硬盘 。但是,闪存的写入次数受到限制,因此固态驱动器的使用寿命不会长于磁性硬盘,并且容易发生意外故障
  • 光盘作为光盘(CD)和数字多功能盘(DVD)存储比特作为在铝或化学薄膜凹陷所然后在塑料磁盘包住。光盘具有高容量并且批量制造便宜。但是,它们通常仅用于长时间不会更改的数据,并且通常用于从磁驱动器和闪存驱动器归档和备份数据。尚不确定 CD或DVD上的数据可以持续多长时间,并且光盘正在迅速淘汰。
  • 磁性软盘以与磁性硬盘类似的方式存储数据,但位于保护盒中的可移动塑料磁盘上除外。尽管此技术已过时且不可靠,但您有时可能会遇到存储在软盘上的旧数据。您应该尽快将所有重要数据从这些磁盘上迁移到硬盘驱动器上,以免数据因物理降级而丢失
  • 磁带是一卷涂有磁性材料的塑料薄膜,用于存储位,其方式类似于磁性硬盘驱动器。尽管磁带是 用于存储数字数据的最古老的技术之一, 但是磁带驱动器仍用于备份硬盘以进行长期存储

选择存储格式和平台时的注意事项

为项目选择适当的存储硬件和格式时,需要考虑许多因素。这些需求是由组织规模和使命驱动的:您最终想用数据完成什么?

  1. 读者人数
    • 有多少人需要访问数据?
    • 他们需要多长时间访问数据?
  2. 编辑人数
    • 有多少人捕获,处理和维护数据?
    • 多个会同时处理数据吗?
  3. 变化频率
    • 数据多久更改一次?
    • 用户需要多长时间才能获得更改?
  4. 数据量和类型
    • 存在多少数据?
    • 将存在多少数据?
    • 需要将多少种不同类型的数据保存在一起?
    • 需求将如何随着时间增长或收缩?
  5. 访问安全性
    • 谁需要访问数据?
    • 谁应该远离数据?
    • 联邦或州法规是否要求限制对数据的访问?
    • 安全漏洞的成本如何与安全成本相平衡?
  6. 可用性安全性
    • 如果这些数据丢失或破坏会怎样?
    • 谁将执行备份?
    • 这些数据是否需要在该项目中生存?
  7. 费用
    • 这将与现有流程兼容吗?
    • 存储的设置和维护成本是多少?
    • 在资本投资和人力方面,我们能负担得起什么?
    • 经理或同事是否对技术有先入为主的偏见?

储存格式

地理空间数据可以存储在上述物理介质上的许多不同类型的数字文件中。以下是在执行基本GIS时通常会遇到的文件类型。

图形地图

  • 读者人数:单用户
  • 编辑人数:单编辑
  • 变更频率:信息是固定的,难以更改
  • 数据量和类型:受介质大小的限制。限于可视化的信息
  • 成本:创建质量图非常昂贵。数字化既耗时又容易出错
热拉尔·墨卡托(Gerardus Mercator)1569年世界地图(维基百科)

CSV

  • 读者人数:单用户
  • 编辑人数:单编辑
  • 变化频率:受单编辑器限制
  • 数据量和数据类型:主要仅对有限数量的点有用
  • 费用:便宜。可以使用任何电子表格软件轻松进行编辑,并在各种Web和桌面平台上进行渲染

地理空间数据可以以简单的表格格式存储,例如以 逗号分隔的变量(CSV)文件作为每行关联的纬度和经度列,并在这些纬度和经度上具有特定属性。但是,这主要限于点,而不是区域。对于线(如道路)和区域(如邻里或人口普查区域),您需要以专用的地理空间数据文件格式保存数据。

CSV文件的简单性在保存数据方面也具有优势。随着技术的变化,更复杂的文件格式(尤其是专有格式)将变得过时。但是CSV文件中的数据可能会世代相传。

CSV文件示例

形状文件

  • 读者人数:单用户
  • 编辑人数:单编辑
  • 变化频率:受单编辑器限制
  • 数据量和数据类型:点,线和面。可用于存储大量数据,但这不是首选
  • 成本:需要专门的GIS软件进行编辑

shape文件 是由ESRI在90年代末开发的地理空间数据文件格式。尽管此格式的年代已受到众多限制(例如列名长度限制为10个字符)的影响,但该格式已得到各种GIS软件的支持,并且仍被包括丹佛在内的市政府广泛用于分配地理空间数据 , 芝加哥, 洛杉矶, 纽约等等。

shapefile实际上是至少三个(通常更多)单独文件的集合,这些文件存储位置数据,与那些位置相关的特征以及有关该数据的其他信息。与shapefile关联的一些常见文件包括(按文件扩展名列出):

  • .shp:包含要素几何(点,线,面)
  • .shx:一个索引文件,指示.shp文件中特定功能的位置
  • .dbf:dBase IV数据库文件,具有与.shp文件中每个形状相关的属性
  • .prj:要素几何使用的坐标系和投影(可选)
  • .cpg:属性使用的字符编码(可选)
  • .qpj:QGIS使用的格式的坐标系和投影(可选)

为了方便起见,通常将所有这些文件压缩为单个ZIP文件,以在网站和服务器上分发。

Shapefile中不同文件的清单

单用户地理数据库

  • 读者人数:单用户
  • 编辑人数:单编辑
  • 变化频率:受单编辑器限制
  • 数据量和类型:支持矢量和栅格格式以及拓扑等其他功能。可用于存储大量数据,但这不是首选
  • 成本:需要使用专有的GIS软件

地理数据库 是一种将相似数据保持在一起的有组织方式。当单个用户使用数据库时,ArcMap提供两种不同的单用户数据库文件格式。这些是专有的数据文件格式,旨在完全支持ESRI软件的功能,并且只能使用ESRI软件读取。

推荐的单用户数据库格式是 文件地理数据库,该文件 于2006年 引入。就像shapefile一样,文件地理数据库是不同文件的集合,所有文件都保存在扩展名为.gdb的文件夹中。

一个个人地理数据库是包含地理空间数据的微$经常Access数据库的.mdb文件。该格式最初于1999年引入,具有一些重大限制,包括2GB的表大小限制。ESRI建议使用文件地理数据库而不是个人地理数据库,尽管您有时可能会发现这种格式的旧数据。

与专有ESRI个人地理数据库类似的开源文件格式是 SpatiaLite,它是Sqlite自包含数据库文件格式的扩展。

Web的地理空间文件格式

  • 读者人数:多用户
  • 编辑人数:单编辑
  • 变化频率:受单编辑器限制
  • 数据量和数据类型:点,线和面。可以存储大量数据,但是网络地图中的大量数据使它们非常缓慢
  • 成本:可以使用各种专有和开源产品创建

Google Earth / Maps以基于可扩展标记语言(XML)Keyhole标记语言(KML)格式交换地理空间数据 。KML是为网络设计的,包含有关如何在诸如Google Maps的网络地图或Google Earth中显示地理空间数据的信息 。由于KML是为简单的Web映射而设计的,因此对于存储复杂的属性数据并不是特别好。可以分别使用KML到LayerLayer到KML工具将KML导入ArcMap和从ArcMap导出。大多数GIS软件都可以读取KML文件,但对于认真分析或使用任何大小的数据集,通常首选shapefile。

GPS交换格式(GPX) 是另一种基于XML的格式,通常由智能手机中的GPS跟踪器应用程序导出以存储GPS点。可以使用 GPX转要素工具将GPX文件导入ArcMap。

GeoJSON JavaScript对象符号(JSON)的扩展,用于在Web地图中显示的数据。尽管ArcMap可以分别使用“要素转换 JSON” 工具和“ JSON转换要素”工具与GeoJSON进行相互转换,但是GeoJSON对于Web地图程序员来说主要具有价值。

的AutoCAD

  • 读者人数:单用户
  • 编辑人数:单编辑
  • 变化频率:受单编辑器限制
  • 数据量和类型:工程数据
  • 成本:需要昂贵的专有软件进行维护。转移到GIS领域可能既困难又耗时

您有时可能会看到工程绘图程序AutoCAD使用的文件中存储的地理空间数据。但是,AutoCAD是适用于各种尺寸对象的通用绘图程序,并且专有文件格式通常不包含足够的坐标或属性信息,无法将数据直接传输到GIS软件中。

的AutoCAD

栅格数据格式

  • 读者人数:单用户
  • 编辑人数:单编辑
  • 变化频率:受单编辑器限制
  • 数据量和数据类型:栅格数据。可能会很大
  • 成本:可以使用各种专有和开源产品创建

来自卫星和其他空中平台的遥感栅格数据以多种格式存储,例如:

这些文件格式专用于栅格数据,并且在有关遥感的课程或教程中更加实际地讨论了这些文件格式。

美国的MODIS NDVI

经常从已扫描成栅格图像的历史地图中收集历史地理空间数据。图像文件可以是用于照片的标准JPEG,PNG或TIFF文件格式。

在对历史信息进行数字化处理时,可以对地图进行 地理配准,这涉及将历史坐标交互式地分配给历史地图上的位置,然后使用数学转换(重采样)来重塑该地图,以便可以使用当代地理空间技术找到历史位置。地理配准后,通常会将图像保存到GeoTIFF文件中,该文件保留地理配准信息并允许像其他任何栅格数据一样加载图像。

与地理编码一样,该过程也不完美,因为地图制作者的工作中几乎总是存在错误和不准确之处(包括过去和现在),并且没有任何简化的表示形式可以完美地捕捉到复杂,不断变化的现实。

华盛顿州斯波坎市中心,1908年

储存平台

  • 阅读器数量:多用户(复印和打印)
  • 编辑人数:单编辑
  • 变更频率:难以变更。容易出错和过时
  • 数据量和类型:适用于少量数据,但繁琐的大量数据
  • 访问安全性:不受数字黑客攻击,但需要昂贵的物理安全性
  • 可用性安全性:处于最佳条件下的优质纸张可以存活数个世纪,并且不受技术变化的影响。极易遭受物理破坏和损失
  • 成本:手写数据通常难以读取。主要价值是在公开演讲或用户无法访问数字媒体等低技术情况下作为灵活的分发媒体。与数字技术一起使用需要昂贵且容易出错的数字技术。如果需要大批量或高质量打印,则复印成本很高

共享计算机硬盘

  • 读者人数:单用户
  • 编辑人数:单编辑
  • 更改频率:仅应用于临时存储从其他介质传输的数据
  • 数据量和类型:受存储设备和安装的软件限制
  • 访问安全性:高度不安全
  • 可用性安全性:仅应用于临时存储从其他介质传输的数据
  • 成本:在没有其他选择可用的非关键情况下的最简单选择

笔记本电脑和移动设备内存

  • 读者人数:单用户
  • 编辑人数:单编辑
  • 变化频率:高度灵活
  • 数据量和类型:受存储设备和安装的软件限制
  • 访问安全性:容易受到电子黑客和物理盗窃的攻击
  • 可用性安全性:物理上灵活,但容易遭受物理损失和设备故障,除非与服务器存储同步
  • 成本:移动设备无处不在

个人/工作台式机硬盘

  • 读者人数:单用户
  • 编辑人数:单编辑
  • 变化频率:高度灵活
  • 数据量和类型:受存储设备和安装的软件限制
  • 访问安全性:容易受到电子黑客和物理盗窃的攻击
  • 可用性安全性:物理上不可移动。容易遭受身体损失和设备故障
  • 成本:购买,维护和房地产成本

便携式闪存驱动器

  • 阅读器数量:一次为单用户,多个连续用户
  • 编辑人数:一次编辑,多个连续用户
  • 变化频率:高度灵活
  • 数据量和类型:高度灵活
  • 访问安全性:容易被盗
  • 可用性安全性:容易遭受物理损失和设备故障。病毒载体
  • 成本:便宜且高度移动

文件服务器

  • 读者人数:多用户。仅私人访问
  • 编辑人数:使用支持并发访问的数据格式时为多用户
  • 变化频率:高度灵活
  • 数据量和类型:高度灵活
  • 访问安全性:容易受到黑客攻击和物理盗窃
  • 可用性安全性:通过适当的物理保护和异地备份来确保安全
  • 费用:需要资金和支持费用

服务器是被通过计算机访问的功能强大的计算机网络客户端用户。此 客户端-服务器模型用于数字计算中的各种应用程序。

客户端-服务器模型(Wikipedia)

文件服务器是便携式计算机和台式计算机可以连接到的集中式服务器,文件的显示就像存储在本地硬盘上一样。它们最适合个人使用或在小组/组织中工作。在PC上,文件服务器可以作为字母驱动器(例如N :)安装,并可以通过组织的常规IT管理结构进行处理。

网络服务器

  • 读者人数:多用户,公共访问
  • 编辑人数:单用户
  • 变化频率:高度灵活
  • 数据量和类型:仅限于静态文件格式
  • 访问安全性:容易受到黑客攻击和物理盗窃
  • 可用性安全性:通过适当的物理保护和异地备份来确保安全
  • 成本:资金和支持成本取决于用户流量

当您在Web浏览器中键入URL或单击超链接时,客户端会将请求发送到服务器以获取网页。响应该请求的服务器称为Web服务器,该响应包括显示网页所需的文本,图像,视频和其他元素。

网页通常包含用户可以与之交互的网络地图。虽然包含Web地图的页面是由Web服务器提供的,但是地图内容本身需要专门的地理空间数据服务器。

但是,通用Web服务器可以提供对地理空间数据文件的访问,例如通过城市开放数据门户,以供桌面GIS软件使用。

地理空间数据服务器

  • 读者人数:多用户
  • 编辑人数:多用户
  • 变化频率:高度灵活
  • 数据量和类型:高度灵活
  • 访问安全性:容易受到黑客攻击和物理盗窃
  • 可用性安全性:通过适当的物理保护和异地备份来确保安全
  • 成本:需要大量资本和支持成本

当使用频繁变化且在多个用户之间共享的大型,复杂数据集时,您需要一种更健壮的数据存储方式。

地理空间数据服务器是使用诸如ESRI的ArcGIS Server之类的软件的专用服务器 。他们将数据存储在数据库中,使多个编辑器可以访问该数据以进行维护。地理空间数据服务器还将这些数据渲染到地图中,这些地图可以作为Web地图显示在Web客户端上。

云端

传统上,组织维护着用于处理不同类型数据的服务器机架。这种方法面临的挑战是服务器的构建,操作和维护成本很高。此外,组织必须提供足够的服务器容量来处理高峰负载(例如,在员工上班并检查电子邮件时的上午9点)。大部分时间都没有使用此全部容量,这使得常规服务器部署无法有效利用资源。

提高服务器利用率的一种方法是服务器虚拟化。这种做法通常称为云计算, 或者简称为 The Cloud

服务器集合在多个组织和/或组织内的组之间共享。随着这些组织的需求潮起潮落,服务器容量被分配给那些需要更多容量的用户,而那些不需要的服务器则被淘汰了。服务器虚拟化的独特之处在于,这种动态分配 是由服务器上的软件自动处理的,从而可以快速响应不断变化的情况。

云服务器可以分布在多个地理位置的服务器场中。这样可以提高可靠性,因为如果一个服务器场中存在问题,则云中的其他服务器场可以解决这一问题。此外,数据可以在多个位置进行复制,从而可以更快速地为多个用户提供服务,并可以在任何一个服务器场发生硬件故障时提供备份。

现在,所有拥有大量Internet的公司都普遍使用云,例如 Google, NetflixAmazon。对于较小的组织,云可以使组织摆脱内部服务器的成本,麻烦和不可靠性。

云储存

云存储可能是The Cloud的一部分,它对公众最为可见。 OneDrive,Dropbox,Google Drive和Box等公司 提供了一个集中的,即时可用的位置,用于存储和备份个人文件。

基础架构即服务

基础架构即服务(IaaS)是指云公司通过Internet提供虚拟服务器,该虚拟服务器可以像在您自己办公室中的服务器那样工作。您负责维护软件,但是云公司负责维护硬件,甚至可以在需要时为您分配更多服务器容量。

例如,亚马逊出售使用与销售业务相同的基础架构的云服务,尽管亚马逊网络服务仅占亚马逊2014年收入的7%, 但占其利润的37%。公司可以使用在Amazon Web Services上设置EC2实例,并在Cloud中运行ArcGIS for Server,就像在办公室中的服务器上一样。

软件作为服务

软件即服务(SaaS)是当您使用来自Cloud提供商的交互式网站时,就像您使用实际在计算机或移动设备上运行的软件一样。Google文档是SaaS的一个示例。更具体地说,对于地理空间数据,ArcGIS Online, Carto和 MapBox等流行的SaaS服务 使无需安装,学习和使用复杂的桌面和服务器软件即可轻松创建和维护复杂且有吸引力的Web地图。

数据即服务

当诸如Google Maps, OpenStreetMap和 Bing之类的Web制图门户 通过应用程序编程接口(API)将其地理空间数据提供给开发人员 以用于Web和移动应用程序时,就可以使用 数据即服务(DaaS)

安全问题一直 困扰着云服务,尽管更大的问题是越来越多的公司越来越依赖较小的云提供商, 当这些提供商遇到技术问题时会导致严重的故障。

数字黑暗时代

在发达国家,我们几乎捕获并存储了所有可以存储的内容:安全视频,电子通信,重大事件的智能手机照片。

这些数据几乎都无法幸免。

尽管存储价格每年都便宜,但技术每年都在变化。数据必须从旧的存储介质和文件格式中迁移,否则由于物理性能下降或技术过时而丢失。

云中的数据永远不会拥有永久的物理位置。云是一种性能,需要持续不断的资金和资源流以保持运行。云端经济的变化将导致某些数据丢失。哪些数据会丢失?

对比 2500年以前纸莎草文字 或 远至3300年以前的泥板 的数字的无常性 。

虽然没有犯罪活动的自动柜员机提供的安全摄像头视频可能不应该让我们久久不衰,但您的孙子们可能希望看到您儿子一岁时拍摄的数千张婴儿照片中的一些。您应该进行相应的计划。

ArcMap中的地理空间数据存储

  1. CSV文件(0:10)
  2. 形状文件(2:50)
  3. 文件地理数据库(4:30)
  4. 将数据保存在新文件地理数据库中(5:50)
  5. 服务器(6:45)
  6. 网络功能服务(7:15)
  7. KML和Google地图(7:50)
  8. ArcCatalog(9:20)

R中的地理空间数据存储

从CSV文件绘制点

此示例中的CSV文件位于 此处…

#R GDAL库包含用于加载空间数据的GDAL函数
#RGDAL加载sp库,其中包含空间函数
图书馆(rgdal)

#阅读纬度和经度的CSV文件
数据= read.csv(“ 2016-cracker-barrel.csv”,stringsAsFactors = F)

#将数据转换为SpatialPointsDataFrame
坐标= data.frame(data $ LONGITUDE,data $ LATITUDE)
wgs​​84 = CRS(“ + proj = longlat + ellps = WGS84 + datum = WGS84 + no_defs”)
餐厅= SpatialPointsDataFrame(坐标,数据,proj4string = wgs84)

#点的简单x / y图
情节(餐厅,pch = 16,col =“海军”)

#加载并绘制覆盖该区域的OpenStreetMap基本地图
upperLeft = c(max(data $ LATITUDE)+ 0.2,min(data $ LONGITUDE)-0.2)
lowerRight = c(最小值(数据$纬度)-0.2,最大值(数据$经度)+ 0.2)

图书馆(OpenStreetMap)
osm = openmap(upperLeft,lowerRight,type =“ osm”)
情节(osm)

#将投影从WGS84变换为球形墨卡托以绘制点
spherical_mercator = CRS(“ + proj = merc + a = 6378137 + b = 6378137 + lat_ts = 0.0 + lon_0 = 0.0 + x_0 = 0.0 + y_0 = 0 
	+ k = 1.0 + units = m + nadgrids = @ null + no_defs“)
餐馆= spTransform(餐厅,spherical_mercator)

情节(餐厅,pch = 16,col =“ red”,cex = 2,add = T)

#可选保存到shapefile
writeOGR(餐厅,“。”,“饼干桶”,“ ESRI Shapefile”)

#可选保存到sqlite数据库文件
writeOGR(餐厅,“ cracker-barrel.sqlite”,“餐厅”,driver =“ SQLite”)

从Shapefile绘制多边形

此示例的数据在 2017-state-data.zip中

图书馆(rgdal)

#加载shapefile
状态= readOGR(“。”,“ 2017-state-data”,stringsAsFactors = F)

#仅选择连续的48个州
状态=状态[(((states $ ST!=“ AK”)&(states $ ST!=“ HI”)),]

#转换为Albers等面积圆锥体以使制图正确
albers = CRS(“ + proj = aea + lat_1 = 29.5 + lat_2 = 45.5 + lat_0 = 37.5 + lon_0 = -96 + x_0 = 0 + y_0 = 0 
	+ ellps = GRS80 +基准= NAD83 + units = m + no_defs“)
状态= spTransform(状态,字母)

#绘制红色状态/蓝色状态
颜色= ifelse(states $ WIN2012 ==“奥巴马”,“海军”,“红色”)
情节(状态,col =颜色)