%global _empty_manifest_terminate_build 0 Name: python-nismod-snail Version: 0.3.0 Release: 1 Summary: The spatial networks impact assessment library License: MIT License URL: https://github.com/nismod/snail Source0: https://mirrors.nju.edu.cn/pypi/web/packages/f3/ab/e3251f834c308d68cbd59c0ca18e4591cab4769624b2e6e92b2efe4230bb/nismod-snail-0.3.0.tar.gz BuildArch: noarch Requires: python3-geopandas Requires: python3-pyarrow Requires: python3-igraph Requires: python3-rasterio Requires: python3-shapely Requires: python3-affine Requires: python3-black Requires: python3-nbstripout Requires: python3-numpy Requires: python3-pytest-cov Requires: python3-pytest Requires: python3-sphinx Requires: python3-m2r2 %description

Tutorials | Issues

snail

[![Build](https://github.com/nismod/snail/actions/workflows/build.yml/badge.svg)](https://github.com/nismod/snail/actions/workflows/build.yml) > This code is under early development # 🤔 What is this? This is a Python package to help with analysis of the potential impacts of climate hazards and other perils on infrastructure networks. ## Installation Install using pip: pip install nismod-snail This should bring all dependencies with it. If any of these cause difficulties, try using a [conda](https://docs.conda.io/en/latest/miniconda.html) environment: conda env create -n snail_env \ python=3.8 geopandas shapely rasterio python-igraph conda activate snail_env pip install nismod-snail If all worked okay, you should be able to run python and import snail: $ python >>> import snail >>> help(snail) Help on package snail: NAME snail - snail - the spatial networks impact assessment library ## Using the `snail` command Once installed, you can use `snail` directly from the command line. Split features on a grid defined by its transform, width and height: ```bash snail split \ --features input.shp \ --transform 1 0 -180 0 -1 90 \ --width 360 \ --height 180 \ --output split.gpkg ``` Split features on a grid defined by a GeoTIFF, optionally adding the values from each raster band to each split feature as a new attribute: ```bash snail split \ --features lines.geojson \ --raster gridded_data.tif \ --attribute \ --output split_lines_with_raster_values.geojson ``` Split multiple vector feature files along the grids defined by multiple raster files, attributing all raster values: ```bash snail process -fs features.csv -rs rasters.csv ``` Where at a minimum, each CSV has a column `path` with the path to each file. ### Transform A note on `transform` - these six numbers define the transform from `i,j` cell index (column/row) coordinates in the rectangular grid to `x,y` geographic coordinates, in the coordinate reference system of the input and output files. They effectively form the first two rows of a 3x3 matrix: ``` | x | | a b c | | i | | y | = | d e f | | j | | 1 | | 0 0 1 | | 1 | ``` In cases without shear or rotation, `a` and `e` define scaling or grid cell size, while `c` and `f` define the offset or grid upper-left corner: ``` | x_scale 0 x_offset | | 0 y_scale y_offset | | 0 0 1 | ``` See [`rasterio/affine`](https://github.com/rasterio/affine#usage) and [GDAL Raster Data Model](https://gdal.org/user/raster_data_model.html#affine-geotransform) for more documentation. ## Development Clone this repository using [GitHub Desktop](https://desktop.github.com/) or on the command line: git clone git@github.com:nismod/snail.git Change directory into the root of the project: cd snail To create and activate a conda environment with snail's dependencies installed: conda env create -f .environment.yml conda activate snail-dev Run this to install the source code as a package: pip install . If you're working on snail itself, install it as "editable" along with test and development packages: pip install -e .[dev] Run tests using [pytest](https://docs.pytest.org/en/latest/) and [pytest-cov](https://pytest-cov.readthedocs.io) to check coverage: pytest --cov=snail --cov-report=term-missing Run a formatter ([black](https://github.com/psf/black)) to fix code formatting: black src/snail When working on the tutorial notebooks, it is recommended to install and configure [nbstripout](https://github.com/kynan/nbstripout) so data and outputs are not committed in the notebook files: nbstripout --install ### C++ library The C++ library in `src/cpp` contains the core routines to find intersections of lines with raster grids. Before working on the C++ library, fetch source code for Catch2 unit testing library (this is included as a git submodule): git submodule update --init --recursive Build the library and run tests: cmake -Bbuild . cmake --build build/ ./build/run_tests Run code style auto-formatting: clang-format -i src/cpp/*.hpp Run lints and checks: clang-tidy --checks 'cppcoreguidelines-*' src/cpp/*.hpp This may need some includes for `pybind11` - which will vary depending on your python installation. For example, with python via miniconda: clang-tidy --checks 'cppcoreguidelines-*' src/cpp/* -- \ -I/home/username/miniconda3/include/python3.7m/ \ -I./pybind11/include/ ### Integration of C++ and Python using pybind11 The `snail.core.intersections` module is built using `pybind11` with `setuptools` (see [docs](https://pybind11.readthedocs.io/en/stable/compiling.html#building-with-setuptools)) - `src/cpp/intersections.cpp` defines the module interface using the `PYBIND11_MODULE` macro - `pyproject.toml` defines the build requirements for snail, which includes pybind11, wheel and setuptools - `setup.py` defines the `Pybind11Extension` module to build - both the C++ files to compile, and the location of the built module within the python package %package -n python3-nismod-snail Summary: The spatial networks impact assessment library Provides: python-nismod-snail BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-nismod-snail

Tutorials | Issues

snail

[![Build](https://github.com/nismod/snail/actions/workflows/build.yml/badge.svg)](https://github.com/nismod/snail/actions/workflows/build.yml) > This code is under early development # 🤔 What is this? This is a Python package to help with analysis of the potential impacts of climate hazards and other perils on infrastructure networks. ## Installation Install using pip: pip install nismod-snail This should bring all dependencies with it. If any of these cause difficulties, try using a [conda](https://docs.conda.io/en/latest/miniconda.html) environment: conda env create -n snail_env \ python=3.8 geopandas shapely rasterio python-igraph conda activate snail_env pip install nismod-snail If all worked okay, you should be able to run python and import snail: $ python >>> import snail >>> help(snail) Help on package snail: NAME snail - snail - the spatial networks impact assessment library ## Using the `snail` command Once installed, you can use `snail` directly from the command line. Split features on a grid defined by its transform, width and height: ```bash snail split \ --features input.shp \ --transform 1 0 -180 0 -1 90 \ --width 360 \ --height 180 \ --output split.gpkg ``` Split features on a grid defined by a GeoTIFF, optionally adding the values from each raster band to each split feature as a new attribute: ```bash snail split \ --features lines.geojson \ --raster gridded_data.tif \ --attribute \ --output split_lines_with_raster_values.geojson ``` Split multiple vector feature files along the grids defined by multiple raster files, attributing all raster values: ```bash snail process -fs features.csv -rs rasters.csv ``` Where at a minimum, each CSV has a column `path` with the path to each file. ### Transform A note on `transform` - these six numbers define the transform from `i,j` cell index (column/row) coordinates in the rectangular grid to `x,y` geographic coordinates, in the coordinate reference system of the input and output files. They effectively form the first two rows of a 3x3 matrix: ``` | x | | a b c | | i | | y | = | d e f | | j | | 1 | | 0 0 1 | | 1 | ``` In cases without shear or rotation, `a` and `e` define scaling or grid cell size, while `c` and `f` define the offset or grid upper-left corner: ``` | x_scale 0 x_offset | | 0 y_scale y_offset | | 0 0 1 | ``` See [`rasterio/affine`](https://github.com/rasterio/affine#usage) and [GDAL Raster Data Model](https://gdal.org/user/raster_data_model.html#affine-geotransform) for more documentation. ## Development Clone this repository using [GitHub Desktop](https://desktop.github.com/) or on the command line: git clone git@github.com:nismod/snail.git Change directory into the root of the project: cd snail To create and activate a conda environment with snail's dependencies installed: conda env create -f .environment.yml conda activate snail-dev Run this to install the source code as a package: pip install . If you're working on snail itself, install it as "editable" along with test and development packages: pip install -e .[dev] Run tests using [pytest](https://docs.pytest.org/en/latest/) and [pytest-cov](https://pytest-cov.readthedocs.io) to check coverage: pytest --cov=snail --cov-report=term-missing Run a formatter ([black](https://github.com/psf/black)) to fix code formatting: black src/snail When working on the tutorial notebooks, it is recommended to install and configure [nbstripout](https://github.com/kynan/nbstripout) so data and outputs are not committed in the notebook files: nbstripout --install ### C++ library The C++ library in `src/cpp` contains the core routines to find intersections of lines with raster grids. Before working on the C++ library, fetch source code for Catch2 unit testing library (this is included as a git submodule): git submodule update --init --recursive Build the library and run tests: cmake -Bbuild . cmake --build build/ ./build/run_tests Run code style auto-formatting: clang-format -i src/cpp/*.hpp Run lints and checks: clang-tidy --checks 'cppcoreguidelines-*' src/cpp/*.hpp This may need some includes for `pybind11` - which will vary depending on your python installation. For example, with python via miniconda: clang-tidy --checks 'cppcoreguidelines-*' src/cpp/* -- \ -I/home/username/miniconda3/include/python3.7m/ \ -I./pybind11/include/ ### Integration of C++ and Python using pybind11 The `snail.core.intersections` module is built using `pybind11` with `setuptools` (see [docs](https://pybind11.readthedocs.io/en/stable/compiling.html#building-with-setuptools)) - `src/cpp/intersections.cpp` defines the module interface using the `PYBIND11_MODULE` macro - `pyproject.toml` defines the build requirements for snail, which includes pybind11, wheel and setuptools - `setup.py` defines the `Pybind11Extension` module to build - both the C++ files to compile, and the location of the built module within the python package %package help Summary: Development documents and examples for nismod-snail Provides: python3-nismod-snail-doc %description help

Tutorials | Issues

snail

[![Build](https://github.com/nismod/snail/actions/workflows/build.yml/badge.svg)](https://github.com/nismod/snail/actions/workflows/build.yml) > This code is under early development # 🤔 What is this? This is a Python package to help with analysis of the potential impacts of climate hazards and other perils on infrastructure networks. ## Installation Install using pip: pip install nismod-snail This should bring all dependencies with it. If any of these cause difficulties, try using a [conda](https://docs.conda.io/en/latest/miniconda.html) environment: conda env create -n snail_env \ python=3.8 geopandas shapely rasterio python-igraph conda activate snail_env pip install nismod-snail If all worked okay, you should be able to run python and import snail: $ python >>> import snail >>> help(snail) Help on package snail: NAME snail - snail - the spatial networks impact assessment library ## Using the `snail` command Once installed, you can use `snail` directly from the command line. Split features on a grid defined by its transform, width and height: ```bash snail split \ --features input.shp \ --transform 1 0 -180 0 -1 90 \ --width 360 \ --height 180 \ --output split.gpkg ``` Split features on a grid defined by a GeoTIFF, optionally adding the values from each raster band to each split feature as a new attribute: ```bash snail split \ --features lines.geojson \ --raster gridded_data.tif \ --attribute \ --output split_lines_with_raster_values.geojson ``` Split multiple vector feature files along the grids defined by multiple raster files, attributing all raster values: ```bash snail process -fs features.csv -rs rasters.csv ``` Where at a minimum, each CSV has a column `path` with the path to each file. ### Transform A note on `transform` - these six numbers define the transform from `i,j` cell index (column/row) coordinates in the rectangular grid to `x,y` geographic coordinates, in the coordinate reference system of the input and output files. They effectively form the first two rows of a 3x3 matrix: ``` | x | | a b c | | i | | y | = | d e f | | j | | 1 | | 0 0 1 | | 1 | ``` In cases without shear or rotation, `a` and `e` define scaling or grid cell size, while `c` and `f` define the offset or grid upper-left corner: ``` | x_scale 0 x_offset | | 0 y_scale y_offset | | 0 0 1 | ``` See [`rasterio/affine`](https://github.com/rasterio/affine#usage) and [GDAL Raster Data Model](https://gdal.org/user/raster_data_model.html#affine-geotransform) for more documentation. ## Development Clone this repository using [GitHub Desktop](https://desktop.github.com/) or on the command line: git clone git@github.com:nismod/snail.git Change directory into the root of the project: cd snail To create and activate a conda environment with snail's dependencies installed: conda env create -f .environment.yml conda activate snail-dev Run this to install the source code as a package: pip install . If you're working on snail itself, install it as "editable" along with test and development packages: pip install -e .[dev] Run tests using [pytest](https://docs.pytest.org/en/latest/) and [pytest-cov](https://pytest-cov.readthedocs.io) to check coverage: pytest --cov=snail --cov-report=term-missing Run a formatter ([black](https://github.com/psf/black)) to fix code formatting: black src/snail When working on the tutorial notebooks, it is recommended to install and configure [nbstripout](https://github.com/kynan/nbstripout) so data and outputs are not committed in the notebook files: nbstripout --install ### C++ library The C++ library in `src/cpp` contains the core routines to find intersections of lines with raster grids. Before working on the C++ library, fetch source code for Catch2 unit testing library (this is included as a git submodule): git submodule update --init --recursive Build the library and run tests: cmake -Bbuild . cmake --build build/ ./build/run_tests Run code style auto-formatting: clang-format -i src/cpp/*.hpp Run lints and checks: clang-tidy --checks 'cppcoreguidelines-*' src/cpp/*.hpp This may need some includes for `pybind11` - which will vary depending on your python installation. For example, with python via miniconda: clang-tidy --checks 'cppcoreguidelines-*' src/cpp/* -- \ -I/home/username/miniconda3/include/python3.7m/ \ -I./pybind11/include/ ### Integration of C++ and Python using pybind11 The `snail.core.intersections` module is built using `pybind11` with `setuptools` (see [docs](https://pybind11.readthedocs.io/en/stable/compiling.html#building-with-setuptools)) - `src/cpp/intersections.cpp` defines the module interface using the `PYBIND11_MODULE` macro - `pyproject.toml` defines the build requirements for snail, which includes pybind11, wheel and setuptools - `setup.py` defines the `Pybind11Extension` module to build - both the C++ files to compile, and the location of the built module within the python package %prep %autosetup -n nismod-snail-0.3.0 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-nismod-snail -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Fri May 05 2023 Python_Bot - 0.3.0-1 - Package Spec generated