跳转到主要内容

Threedi Raster Edits提供了适用于threedi的Python工具,例如栅格转换、对齐、填充、检查等

项目描述

threedi-raster-edits

简介

Threedi Raster Edits是在NENS内部用于栅格转换、编辑和检查的工具。目前它包括对齐、替换无数据、对齐检查、属性检查以及将栅格转换为摩擦、拦截等功能。

用法

我们可以下载栅格

>>> import threedi_raster_edits as tre
>>> landuse = tre.UUID.THREEDI_LANDUSE
>>> vector = tre.Vector(vector_path)
>>> feature = vector[0]
>>> rextract = tre.RasterExtraction(lizard_api_key)
>>> rextract.run("ouput/raster.tif", landuse_uuid, feature.geometry, cellsize=0.5, threads=1)

栅格转换

>>> from threedi_raster_edits import ThreediRasterGroup
>>> group = ThreediRasterGroup(dem_path, landuse_path=landuse_path, soil_path=soil_path)
>>> group.load_landuse_conversion_table(csv_landuse_path)
>>> group.load_soil_conversion_table(csv_soil_path)
>>> group.generate_friction()
>>> group.generate_permeability()
>>> group.generate_interception()
>>> group.generate_crop_type()
>>> group.generate_max_infiltration()
>>> group.generate_infiltration()
>>> group.generate_hydraulic_conductivity()
>>> group.friction.write("friction.tif")

栅格检查

>>> group = ThreediRasterGroup(dem_path, friction_path="friction.tif")
>>> align_checks = group.check_alignemnt()
>>> property_checks = group.check_properties()

也可以生成拦截建筑

>>> from threedi_raster_edits import Vector
>>> buildings = Vector("buildings.shp")
>>> group = ThreediRasterGroup(dem_path, buildings=buildings)
>>> group.generate_building_interception(10)
>>> group.interception.write("interception.tif")

还可以使用内部栅格类进行简单的栅格处理,如重新投影、裁剪、重采样、对齐、读取几何形状和创建副本

>>> from threedi_raster_edits import Raster
>>> import numpy as np
>>> raster = Raster("dem.tif")
>>> raster.reproject(28992)
>>> raster.resample(1,1)
>>> raster.clip(Vector("clip.shp"))
>>> raster.align(Raster("template.tif"))
>>> copy = raster.copy(shell=True)
>>> clip = Vector("clip.shp")
>>> geometry = clip[0].geometry # geometry of first feature
>>> clip_values = np.nansum(raster.read(clip))

对于更高级/更大的处理,您也可以使用栅格循环

>>> output = raster.copy(shell=True)
>>> for tile in raster:
>>>     array = tile.array
>>>     array[array==1] = 20
>>>     output.array = array, tile.location
>>> output.write("tiles_adding.tif")

或者只对数组进行一些操作

>>> output = raster.copy(shell=True)
>>> array = raster.array
>>> array = array *100
>>> output.array = array
>>> output.write("output.tif")

安装

我们可以使用以下方式安装

$ pip install threedi-raster-edits

(待办:在第一次发布后)

本项目开发版本的安装

GDAL不会自动安装,因此不在需求中,请自行安装GDAL 3.2.0或使用anaconda

$ conda create -n threedi_raster_edits python=3 gdal=3.2.0 rtree black pytest

我们使用Python的内置“virtualenv”来获取一个干净的目录。您只需要运行一次

$ python3 -m venv --system-site-packages .

virtualenv将它的命令放在目录中。所以等。设置依赖关系如下

$ bin/pip install -r requirements.txt

将会有一个可以运行的脚本

$ bin/run-threedi-raster-edits

threedi-raster-edits/scripts.py 中运行 main() 函数,如有必要请调整。该脚本的配置在 setup.py 中(见 entry_points)。

为了得到格式良好的 Python 文件,无需手动操作,定期运行以下命令:

$ bin/black threedi_raster_edits

定期运行测试。这也会检查 pyflakes、black 并报告覆盖率。纯粹是奢华。

$ bin/pytest

测试也会在“github actions”上自动运行(针对“master”和拉取请求)。所以不要只创建分支,而要立即将其转换为拉取请求。

  • 在标题前添加“[WIP]”,表示工作正在进行中。这样,你可以清楚地知道它尚未准备好合并。

  • 重要:在拉取请求上给出反馈很容易。例如,对个别行进行少量评论。因此,如果您认为这很有用,请用它来获取早期反馈。

  • 在您的拉取请求页面上,您还会自动收到来自自动化测试的反馈。

在 coveralls.io 上也有 覆盖率报告(一旦设置完毕)。

如果您需要新的依赖项(如 requests),请将其添加到 setup.py 中的 install_requires。例如,“black”这样的本地开发工具可以添加到 requirements.txt 目录中。在两种情况下,运行安装以实际安装您的依赖项。

$ bin/pip install -r requirements.txt

发布项目

要发布,首先全局安装 zest.releaser。

$ pip install zest.releaser

确保您在 master 分支上,并且已经更新了变更日志。然后使用“fullrelease”发布它。您可以在每个问题上都按“enter”键。

$ fullrelease

github action 应该上传新鲜包到 pypi。

使用 cookiecutter 生成的步骤

  • https://github.com/nens/ 上添加具有相同名称的新项目。将可见性设置为“公开”,并且不要生成许可证或自述文件。

    注意:“公开”意味着“不要在 github 上放置包含真实人员地址的客户数据或样本数据”!

  • 按照您看到的步骤操作(从“git init”到“git push origin master”),您的代码将上线。

  • 转到 https://github.com/nens/threedi-raster-edits/settings/collaboration 并添加具有写入权限的团队(您可能需要向具有管理员权限的人请求操作)。

  • 更新此自述文件。使用 .rst 作为格式。

  • 请 Reinout 配置 travis 和 coveralls。

  • 由于您已经完成了一切,请删除此部分 :-)

threedi-raster-edits 的变更日志

0.27 (2022-08-29)

  • 修复:对于栅格瓦片,现在不再全部在内存中完成。

  • 为 lizard 包括依赖项安装进行清理。

  • 更新用于 postgres 上传。再次工作。

  • 更新块大小估计。

  • 堆叠和相邻栅格之间的差异。

  • 没有自动控制台记录。

0.26 (2022-07-11)

  • 连接节点几何字段的更改。

0.25 (2022-07-08)

  • 热修复:从 v2_aggregation_settings 中删除 aggregation_in_space

0.24 (2022-07-08)

  • 热修复:requirements.txt

0.23 (2022-07-07)

  • 添加了两个额外的依赖项。

0.22 (2022-07-07)

  • 删除了 3Di 结果。

  • 删除了 3Di 场景。

  • 支持 Klondike。

0.21 (2022-03-22)

  • 场景 > 3.8.0

0.20 (2022-03-22)

  • QGIS 变更以进行栅格转换。

  • 包括全局缓存,用于 pickle 存储。

  • 添加了简单的 threedi 场景下载。

0.19 (2022-02-28)

  • 增加矢量环路的速度。

  • 在脚本中添加了示例。

  • 添加了直观的进度条,包括 gdal。

0.18 (2021-11-29)

  • 更改了 rextract 的输入。

0.17 (2021-11-29)

  • 为 lizard rextract 添加了线程。

  • 还添加了 QGIS 兼容的显示进度的方式。

  • 模拟现在在队列中。

0.16 (2021-10-28)

  • 修复发布错误。

0.15 (2021-10-28)

  • 更有效地加载 threedirastergroup。

0.14 (2021-10-28)

  • ThreediAPI 和 ThreediResults 现在是可选的。

0.13 (2021-10-19)

  • 修复了矢量重投影。

  • 为栅格添加了膨胀的栅格环。

  • 为rastergroups添加了rasterloops

  • 为rastergroups添加了膨胀的rasterloops

  • 为rasters添加了bbox裁剪

0.12 (2021-09-13)

  • 改进了差异算法

  • 移除每次调用都固定的几何形状,现在使用veotor.fix()调用一次

  • fid=-1将产生一个fid,它是计数

0.11 (2021-09-06)

  • 令牌释放

0.10 (2021-09-06)

  • 添加了sqlite-model支持

  • 添加了api支持

0.9 (2021-05-06)

  • 更改了black格式。

0.8 (2021-05-06)

  • 为rasters添加了剪辑

  • 添加了自定义线字符串长度

  • 添加了矢量插值

  • 添加了(部分)修复三维rasters

0.7 (2021-03-26)

  • 修复了发布过程(0.6/0.6相同)。

0.4 (2021-03-26)

  • 修复了发布过程。

  • 修复了测试。

  • 添加了日志。

  • 优化了rasters的内存使用。

  • 向量和几何形状中的小改动。

0.3 (2021-03-25)

  • 自动化的pypi发布。

0.2 (2021-03-12)

  • 更改了raster类的语法

  • 将导入更改为主脚本:例如,from threedi_raster_edits import raster, rastergroup等。

  • 更改了readme。

  • 重写了几何结构。

0.1 (2021-03-11)

项目详情


下载文件

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

源分发

threedi-raster-edits-0.27.tar.gz (7.6 MB 查看哈希值)

上传时间

构建分发

threedi_raster_edits-0.27-py3-none-any.whl (7.8 MB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面