GeoTrellis 详细介绍

GeoTrellis

一、概述

GeoTrellis是一个高性能程序的地理数据处理引擎。

GeoTrellis是一个用Spark处理栅格数据的Scala库和框架。

GeoTrellis 能够非常快的读/写/操作栅格数据,他实现了很多的地图几何操作。支持渲染栅格数据为PNG格式,并且支持把栅格文件元信息保存为JSON格式,他致力于依赖网速实现栅格处理和提供大规模栅格的并行处理的REST服务接口。

二、模块及概念

三、数据输入

本地系统:GeoTiff,JPG,PNG,GeoJson(矢量),WKT/WKB(矢量),ShapeFile(矢量)

数据库:PostGIS(矢量)

分布式文件系统 : HDFS

其他:S3

四、数据存储/输出

NoSQL数据库 : HBase / Accumulo/ Cassandra

文件系统 : GeoTiff ,PNG/JPG ,GeoJson(矢量)

分布式文件 : HDFS

其他 : GeoMesa(矢量),GeoWave(矢量),S3

五、数据处理

5.1 三个分类

I/O : GeoTrellis 允许像在本地硬盘上读写数据那样用GeoTrellis处理数据。

处理:GeoTrellis 支持对栅格数据的多种操作,包括切割,采样,地图几何操作,渲染,矢栅转换,核密度等。

WEB服务:GeoTrellis提供了工具集帮助创建有用的,高效的WEB服务来加载和处理栅格数据。

5.2 核心模块

1. Spark处理空间数据

  • RDDs表示图层,Key表示空间网格中的一个坐标
  • RDD栅格瓦片表示空间或者时空栅格数据
  • 通过Spark IO API ,应用空间填充曲线索引优化存储检索(支持希尔伯特曲线,Z阶曲线),加载/保存图层RDD数据和元数据从后端/到后端, 支持的存储包含文件系统,S3,Cassandra,Accumulo.
  • 查询支持对图层数据的空间数据/时空数据的简单查询
  • 栅格图层数据的Map Algebra 操作 包含 geotrellis-raster 要素列表中的所有Map Algebra操作。
  • 支持通过对邻接栅格信息对当前栅格进行重投影,避免不合理的Nodata网格。
  • 支持通过缩放等级,应用多种重采样方法对图层数据进行金字塔构建。
  • 支持通过多种坐标系和样式渲染栅格瓦片图层。
  • 支持对栅格RDD图层操作:切割,过滤,连接,遮罩,合并,分区,金字塔,渲染,重采样,切割

2. 栅格数据处理

  • 支持单波段/多波段 多种栅格数据,数据类型支持Bit,Byte,Short,Int,Float,Double类型,支持常量Nodata和用户自定义Nodata。
  • 对栅格集合支持通过Map 或者 Foreach 来访问对应的方法
  • 合并栅格数据
  • 支持通过颜色渐变/颜色映射渲染栅格数据为PNG/JPG 格式。
  • 支持读取 DEFLATE,LAW,Packbites 压缩格式的栅格数据,并且提供对 LZW/DEFLATE 格式数据的水平和浮点预测。

3. 矢量数据处理

  • 支持通过scala 对JTS 类型的支持:Point,Line,Polygon,MultiPoint,MultiLine,MultiPolygon,GeometryCollecion
  • 支持JTS中对几何模型的支持,结果返回类型安全几何模型。
  • 支持要素类型为复合几何和常用数据类型
  • 支持通过GeoJSON读写几何模型和要素
  • 支持通过WKT/WKB读写几何模型

六、ETL数据处理

1. JSON

俩种形式:Local ETL 和 GeoDocker ETL

  1. 定义文件

包含三个配置文件,input.json,output.json,backend-profile.json

input.json 描述输入数据,output.json描述输出数据,backend-profile.json 描述后端存储信息

  1. 执行

    SPARK_HOME/bin/spark-submit \
       --class geotrellis.spark.etl.MultibandIngest \
       --master 'local[*]' \
       --driver-memory 16G \
       /tmp/geotrellis-spark-etl-assembly-1.0.0.jar \
       --input "file:///tmp/json/input.json" \
       --output "file:///tmp/json/output.json" \
       --backend-profiles "file:///tmp/json/backend-profiles.json"
    

2. PIPELINE

附录

1. GeoPySpark

​ GeoTrellis 可以通过Python封装为 GeoPySpark,可以集成其他Python包,如NumPy,scikit-lean,JupyterNodeboos。GeoPySpark 构建了 GeoNotebook的可视化能力。

2. GeoNoteBook

3. GeoDocker

4. 工程模板

geotrellis-sbt-template

5. GeoTrellis子模块

  • geotrellis-proj4: Coordinate Reference systems and reproject (Scala wrapper around Proj4j)
  • geotrellis-vector: Vector data types and operations (Scala wrapper around JTS)
  • geotrellis-raster: Raster data types and operations
  • geotrellis-spark: Geospatially enables Spark; save to and from HDFS
  • geotrellis-s3: S3 backend for geotrellis-spark
  • geotrellis-accumulo: Accumulo backend for geotrellis-spark
  • geotrellis-cassandra: Cassandra backend for geotrellis-spark
  • geotrellis-hbase: HBase backend for geotrellis-spark
  • geotrellis-spark-etl: Utilities for writing ETL (Extract-Transform-Load), or “ingest” applications for geotrellis-spark
  • geotrellis-geotools: Conversions to and from GeoTools Vector and Raster data
  • geotrellis-geomesa: Experimental GeoMesa integration
  • geotrellis-geowave: Experimental GeoWave integration
  • geotrellis-shapefile: Read shapefiles into GeoTrellis data types via GeoTools
  • geotrellis-slick: Read vector data out of PostGIS via LightBend Slick
  • geotrellis-vectortile: Experimental vector tile support, including reading and writing
  • geotrellis-raster-testkit: Testkit for testing geotrellis-raster types
  • geotrellis-vector-testkit: Testkit for testing geotrellis-vector types
  • geotrellis-spark-testkit: Testkit for testing geotrellis-spark code

geotrellis-proj4

  • 基于椭球,基准面定义坐标点参照系统
  • 通过porj4 进行坐标转换
  • 通过EPSG 进行CRS的查询
  • 转换(X,Y)从一个坐标系到其他

geotrellis-vector

  • 支持对JTS 类型的支持,见 矢量数据处理 节点
  • 支持对JTS类型数据的几何操作,见 矢量数据处理 节点
  • 支持要素类型为组合几何模型和常用几何类型,见 矢量数据处理 节点
  • 支持从GeoJSON读写几何模型和要素
  • 支持从WKT/WKB读取几何模型
  • 支持几何模型间不同坐标系转换
  • 支持几何操作:凸包,密度,简化
  • 支持对点数据的克吕格 查询 运算
  • 支持几何模型的仿射转换

geotrellis-raster

  • 支持单波段/复合波段栅格的读取,见 栅格数据处理 节点
  • 支持对待瓦片想数据集一样,见 栅格数据处理 节点
  • 支持合并栅格数据,见 栅格数据处理 节点
  • 支持根据颜色波段或颜色表 绘制PNG/JPG图片,见 栅格数据处理 节点
  • 支持读取GeoTiff 压缩格式数据的,见 栅格数据处理 节点
  • 支持写入 DEFLATE或者无压缩GeoTiff
  • 支持栅格数据进行CRS重投影
  • 支持栅格数据重采样
  • 支持遮罩/切割栅格
  • 支持切割栅格为小的瓦片,合并小的瓦片为大的栅格
  • 支持获取栅格直方图,表示值的分布和创建中数中断
  • 局部地图代数:Abs, Acos, Add, And, Asin, Atan, Atan2, Ceil, Cos, Cosh, Defined, Divide, Equal, Floor, Greater, GreaterOrEqual, InverseMask, Less, LessOrEqual, Log, Majority, Mask, Max, MaxN, Mean, Min, MinN, Minority, Multiply, Negate, Not, Or, Pow, Round, Sin, Sinh, Sqrt, Subtract, Tan, Tanh, Undefined, Unequal, Variance, Variety, Xor, If
  • 焦点地图代数:Hillshade, Aspect, Slope, Convolve, Conway’s Game of Life, Max, Mean, Median, Mode, Min, MoransI, StandardDeviation, Sum
  • 区域地图代数:ZonalHistogram(区域直方图), ZonalPercentage (区域百分比)
  • 与面相交的 栅格整体信息:Min, Mean, Max, Sum.
  • 根据摩擦栅格数据和 起始点集合 计算路径花费
  • 水文(Hydrology)操作: 堆积,填充,流向
  • 几何的栅格化及单元值的迭代
  • 栅格矢量化
  • 计算点集的高斯克吕格插值,输出为栅格
  • 视域处理
  • 区域操作

geotrellis-spark

  • RDDs表示图层,Key表示空间网格中的一个坐标,见 Spark平台处理地理空间数据 节点
  • RDD栅格瓦片表示空间或者时空栅格数据,见 Spark平台处理地理空间数据 节点
  • 通过Spark IO API ,应用空间填充曲线索引优化存储检索(支持希尔伯特曲线,Z阶曲线),加载/保存图层RDD数据和元数据从后端/到后端, 支持的存储包含文件系统,S3,Cassandra,Accumulo.,见 Spark平台处理地理空间数据 节点
  • 查询支持对图层数据的空间数据/时空数据的简单查询,见 Spark平台处理地理空间数据 节点
  • 栅格图层数据的Map Algebra 操作 包含 geotrellis-raster 要素列表中的所有Map Algebra操作,见 Spark平台处理地理空间数据 节点
  • 支持通过对邻接栅格信息对当前栅格进行重投影,避免不合理的Nodata网格,见 Spark平台处理地理空间数据 节点
  • 支持通过缩放等级,应用多种重采样方法对图层数据进行金字塔构建,见 Spark平台处理地理空间数据 节点
  • 支持通过多种坐标系和样式渲染栅格瓦片图层,见 Spark平台处理地理空间数据 节点
  • 支持对栅格RDD图层操作:切割,过滤,连接,遮罩,合并,分区,金字塔,渲染,重采样,切割,见 Spark平台处理地理空间数据 节点
  • 与面相交的 栅格整体信息:Min, Mean, Max, Sum,见 geotrellis-raster 节点
  • 用特殊的Key保存RDD到HDFS或本地文件系统中的 z/x/y文件,用作Web地图中的地图图层或通过z / x / y瓦片坐标访问GeoTiff。
  • 公共模块用于创建spark content上下文,处理GeoTrellis

geotrellis-accumulo

  • 保存/加载图层从/到accumulo

geotrellis-cassandra

  • 保存/加载图层从/到acassandra

geotrellis-hbase

  • 保存/加载图层从/到hbase

geotrellis-s3

  • 用Spark IO接口 保存/加载栅格图层从/到本地文件系统或HDFS
  • 用特殊的Key保存RDD到S3的 z/x/y 文件, 保存为PNG格式,方便在Web地图中访问地图图层

geotrellis-etl

  • 为ETL的输入/输出解析命令行选项(提取,转换,加载)。
  • 为ETL提供了公共的方法方便用户使用
  • 输入栅格可为本地文件系统,HDFS,S3
  • 对输入栅格的每个瓦片,考虑相邻的瓦片进行 瓦片重投影或者无缝重投影
  • 根据ZXY图层样式,转换输入栅格为图层
  • 保存图层到Accumulo,S3,HDFS或本地文件系统

geotrellis-shapefile

  • 通过GeoTools从Shape文件读取几何模型和要素到GeoTrellis

geotrellis-slick

  • 用slick 模块 保存/导入几何模型和要素到/从PostGIS
  • 可通过scala在 PostGIS 中 执行PostGIS的 ST_操作加粗样式

你可能感兴趣的:(GIS-Spark)