转换和转换框架(ETL),主要用于地理空间数据
项目描述
Stetl - 流式ETL
Stetl,流式ETL,发音为“staedl”,是一个轻量级的地理空间数据转换ETL框架。
注意: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)连接起来。通过使用原生库(如libxml2
和libxslt
(通过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日
- 解决strange lxml解析错误:https://bugs.launchpad.net/lxml/+bug/1185701
- 更多由thijsbrentjens提供的Dutch BGT(大型规模拓扑)示例
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由以下人员开发:
- Just van den Broecke(发起人,http://www.justobjects.nl)
- Frank Steggink
- Thijs Brentjens
- 还有更多,请参阅贡献者: https://github.com/geopython/stetl/graphs/contributors
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 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | b4052cad5eaf585b96d4a8ac9e8b706a2cd445b8e223b11b775873af2bcf7891 |
|
MD5 | cdc4c26acd267f1f74be99a1d828f83e |
|
BLAKE2b-256 | 1c7f0c3cecb973338f67016c3cf8ce825ffcd468b632b5913496fe5ef4f519ec |
Stetl-2.1-py3.7.egg 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | d68fa7c17b81e54edbc82878bbf7b6fc50a1d49cb5203bcbd687ae4bad77e7c6 |
|
MD5 | d3e5cf78880423037c740da92fe7a344 |
|
BLAKE2b-256 | de43de9eecb964e44490802b871f0b2198bc6816c5f2dc7a6b588dd1b0ec8034 |