跳转到主要内容

转换和转换框架(ETL),主要用于地理空间数据

项目描述

Stetl - 流式ETL

Stetl,流式ETL,发音为“staedl”,是一个轻量级的地理空间数据转换ETL框架。

Build Status Documentation Status Gitter Chat

注意:Stetl GH仓库现在位于GeoPython GH组织

许可证

Stetl在GNU GPL v3许可证下发布(见LICENSE.txt)。

文档

Stetl网站和文档可通过http://stetl.org找到。快速概述请阅读5分钟Stetl简介,或更详细的演示Stetl在多个活动中介绍,如FOSS4G 2013在诺丁汉GeoPython 2016

概念

Stetl基本上通过自定义Python代码将现有的解析和转换工具(如GDAL/OGR、Jinja2和XSLT)连接起来。通过使用原生库(如libxml2libxslt(通过Python lxml))进行速度优化。

配置文件采用 Python 的 .ini 格式,定义了一系列的转换步骤链:通常是一个 Input 连接到一个或多个 Filters,最终连接到 Output。在运行时,这个序列被实例化并作为一个链接的 Python 对象序列运行。这些对象在配置文件中以符号形式指定(通过其模块/类名)并参数化。通过 stetl -c <config file> 命令执行转换。

Stetl 已经证明可以处理数千万个 GML 对象而不会出现内存问题。这是通过一种称为“流式传输和分割”的技术实现的。例如:使用 OgrPostgisInput 模块可以从数据库中生成 GML 流。一个称为 GmlSplitter 的组件可以将这个流分割成可管理的块(如 20000 个要素),并将这些块向上游输入到 ETL 链中。

用例

Stetl 在复杂 GML 相关 ETL 案例中特别有用,例如在 欧盟 INSPIRE 数据协调 以及基于 GML/XML 的国家地理数据集转换为 PostGIS 等应用中。

荷兰 NLExtract 项目中的大多数数据转换都应用了 Stetl。

Stetl 在涉及 SensorWeb/SOS 的物联网相关转换中也证明非常有效。

示例

示例目录 中浏览所有示例。最好从 基本示例 开始。

安装

Stetl 可以通过 PyPi 使用 pip install stetl 安装,最近也可以作为 Stetl Docker 镜像 安装。有关安装的更多信息,请参阅文档中的 安装说明

贡献

欢迎任何人和每个人贡献。请花一点时间查看 贡献指南

起源

Stetl 起源于 INSPIRE-FOSS 项目: 2009-2013 现已归档。从那时起,Stetl 发展成为一种更广泛的应用,例如转换 荷兰 GML 基于的开放式数据集,如 IMGEO/BGT(大规模地形)和 IMKAD/BRK(地籍数据)以及 传感器数据转换和校准

最后

“stetl”一词也是“shtetl”的另一种书写方式: http://en.wikipedia.org/wiki/Stetl : “...在 shtetl 中,物质事物既不被轻视,也不被极度赞扬。学习和教育是社区眼中价值的终极衡量标准,而金钱在地位之下...”

更改

v2.2 - 计划中

2.2 的遗留问题,以及新的 CI/CD 工作流程和新的 Dockerfile。

v2.1 - 2023 年 1 月 9 日

请参阅 2.1 里程碑中关闭的问题: https://github.com/geopython/stetl/milestone/11?closed=1 主要是对 Py3 迁移问题的清理,支持库(GDAL 等)和 Dockerfile 的版本升级。还有许多与 NLExtract 中的 BAG v2 ETL 相关的问题,该 ETL 使用 GDAL OGR BAGLV 驱动程序。有关详细信息,请参阅 https://github.com/nlextract/NLExtract

v2.0 - 2019 年 4 月 11 日

第一个只支持 Python3 的版本!

请参阅 2.0 里程碑中关闭的问题: https://github.com/geopython/stetl/milestone/10?closed=1 这些都与 Py2 到 Py3 迁移相关。其他问题已移至后续里程碑/版本。

主要是针对 Py2 到 Py3 迁移工作的 PR: https://github.com/geopython/stetl/pull/81

v1.3 - 2019 年 3 月 20 日

最后一个支持Python2的版本!请查看1.3里程碑中的已关闭问题:https://github.com/geopython/stetl/milestone/9?closed=1

更改很少,这次发布主要是为v2.0(Python3)建立一个基准。

v1.2 - 2018年7月7日

请查看1.2里程碑中的已关闭问题:https://github.com/geopython/stetl/milestone/8?closed=1

最重要的更改与在Docker和Kubernetes环境中部署相关,处理(env)变量、Stetl参数和日志,例如

  • 问题 #71:允许环境变量替换/覆盖配置模板arg变量
  • 问题 #72:允许Stetl主程序有多个-a参数。允许多个-a参数可以更简单地覆盖例如默认选项。
  • 问题 #68:Stetl不应该在日志中输出密码和其他特定数据

v1.1.1 - 2017年11月7日

最大的变化是将Stetl仓库移动到了https://github.com/geopython/stetl/

请查看1.1.1里程碑中的已关闭问题:https://github.com/geopython/stetl/milestone/6?closed=1

亮点

  • 新的组件拆分器,用于在链中拆分(Filter/Output)数据流
  • 新的组件合并器,用于在链中合并(Input)数据流
  • 拆分器和合并器可以组合在单个链中
  • 自动Travis构建
  • 更多的单元测试
  • flake8用于清洁Python代码
  • 迁移到GDAL v2(尽管v1可能仍然工作)
  • 基于debian:stretch-slim的新紧凑型Docker镜像
  • 修复了XML流支持的问题

v1.0.9 - 2016年6月17日

请查看https://github.com/geopython/stetl/issues?q=milestone%3A%22Version+1.0.9%22+is%3Aclosed

亮点

  • 属性文件中的可替换配置选项(-a参数)
  • 通过Stetl Docker镜像支持Docker
  • 增强通用ogr2ogr输入组件

v1.0.8 - 2015年7月2日

请查看https://github.com/geopython/stetl/issues?q=milestone%3A%22Version+1.0.8%22

  • 通用OgrOutput组件
  • Apache日志文件输入

v1.0.7 - 2014年11月24日

  • Stetl格式转换过滤器的开始
  • 通用OgrInput组件
  • SQLite输入组件
  • BAG到INSPIRE Addresses示例,使用Jinja2模板过滤器
  • Jinja2过滤器的改进

v1.0.6 - 2014年9月5日

  • 在OGROutput Top10NL示例中允许空间范围
  • httpinput更健壮
  • 数据包:新的类型'记录',相当于Python字典结构
  • httpinput:ApacheDirInput,从Apache索引列表输入数据
  • dboutput:PostgresInsertOutput,将单个记录插入到Postgres
  • 组件:添加before_/after_invoke和after_chain_invoke()用于拦截
  • 过滤器:Python模板过滤器的开始:简单的字符串和Jinja2模板
  • 数据包:新的类型'struct',基本上是一个自由形式的字典,是读取CSV的结果
  • 输入:CSV文件输入
  • 新示例:9_string_templating和10_jinja2_templating
  • 开始使用stetl --doc选项打印类配置信息
  • 配置:开始添加通过类变量类型Attr的元属性配置信息

v1.0.5 - 2014年2月19日

v1.0.4 - 2013年9月23日

  • 更多的文档
  • Dutch BGT(Basis Registratie Grootschalige Topografie)示例
  • Ordnance Survey Mastermap示例
  • XmlElementStreamerFileInput的strip XML命名空间选项

v1.0.1 v1.0.3 - 2013年8月/9月

进行了一些小的修改,以实现分发。

v1.0.0 - 2013年6月

  • 第一个版本
  • 添加到Python包索引(#3)。

鸣谢

Stetl由以下人员开发:

Bas Couwenberg 提供了 Debian/Ubuntu 打包。

Rob van Loon 准备 Python3 迁移和其他工作。

没有 Frank Warmerdam 和其他 GDAL/OGR 开发者的杰出工作,这个项目将无法实现(http://gdal.org)。

还有带来 Python、PostGIS(Paul Ramsey 等人)、Jinja2、lxml 以及像 GEOS、Proj、libxml2 和 libxslt 这样的库的人。

我们主要是站在这些巨人的肩膀上。

感谢 Tom Kralidis 帮助迁移到 https://github.com/geopython 组织。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

Stetl-2.1.tar.gz (6.4 MB 查看散列)

上传时间

构建分布

Stetl-2.1-py3.7.egg (310.5 kB 查看散列)

上传时间

由以下组织支持