All Projects → Esri → Raster Functions

Esri / Raster Functions

Licence: apache-2.0
A curated set of lightweight but powerful tools for on-the-fly image processing and raster analysis in ArcGIS.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Raster Functions

Rasterio
Rasterio reads and writes geospatial raster datasets
Stars: ✭ 1,643 (+914.2%)
Mutual labels:  raster
Exactextractr
R package for fast and accurate raster zonal statistics
Stars: ✭ 129 (-20.37%)
Mutual labels:  raster
Landscapemetrics
Landscape Metrics for Categorical Map Patterns 🗺️ in R
Stars: ✭ 151 (-6.79%)
Mutual labels:  raster
Freud
Powerful, efficient particle trajectory analysis in scientific Python.
Stars: ✭ 118 (-27.16%)
Mutual labels:  spatial-analysis
Leaflet.canvaslayer.field
Load and style Raster files in Leaflet (geotiff & asciigrid)
Stars: ✭ 128 (-20.99%)
Mutual labels:  raster
Raster Foundry
The Raster Foundry web application.
Stars: ✭ 132 (-18.52%)
Mutual labels:  raster
Dggridr
Discrete Global Grids for R: Spatial Analysis Done Right
Stars: ✭ 101 (-37.65%)
Mutual labels:  spatial-analysis
Sfnetworks
Tidy Geospatial Networks in R
Stars: ✭ 155 (-4.32%)
Mutual labels:  spatial-analysis
Spatstat
Development version of 'spatstat' package ..............................
Stars: ✭ 128 (-20.99%)
Mutual labels:  spatial-analysis
Rioxarray
geospatial xarray extension powered by rasterio
Stars: ✭ 148 (-8.64%)
Mutual labels:  raster
Depthmapx
depthmapX is a multi-platform Spatial Network Analysis Software
Stars: ✭ 120 (-25.93%)
Mutual labels:  spatial-analysis
Lerc
Limited Error Raster Compression
Stars: ✭ 126 (-22.22%)
Mutual labels:  raster
Book
This book serves as an introduction to a whole new way of thinking systematically about geographic data, using geographical analysis and computation to unlock new insights hidden within data.
Stars: ✭ 141 (-12.96%)
Mutual labels:  spatial-analysis
Peartree
peartree: A library for converting transit data into a directed graph for sketch network analysis.
Stars: ✭ 116 (-28.4%)
Mutual labels:  spatial-analysis
Awesome Geospatial
Long list of geospatial tools and resources
Stars: ✭ 2,386 (+1372.84%)
Mutual labels:  spatial-analysis
Gpstuff
GPstuff - Gaussian process models for Bayesian analysis
Stars: ✭ 106 (-34.57%)
Mutual labels:  spatial-analysis
Mapchete
Tile-based geodata processing using rasterio & Fiona
Stars: ✭ 129 (-20.37%)
Mutual labels:  raster
Dem.net
Digital Elevation model library in C#. 3D terrain models, line/point Elevations, intervisibility reports
Stars: ✭ 153 (-5.56%)
Mutual labels:  raster
Titiler
A dynamic Web Map tile server
Stars: ✭ 153 (-5.56%)
Mutual labels:  raster
Fasterize
High performance raster conversion for modern spatial data 🚀🌏▦
Stars: ✭ 146 (-9.88%)
Mutual labels:  raster

ArcGIS Raster Functions

This repository houses modern image processing and analytic tools called raster functions. Raster functions are lightweight and process only the pixels visible on your screen, in memory, without creating intermediate files. They are powerful because you can chain them together and apply them on huge rasters and mosaics on the fly.

In this repository, you will find useful function chains (*.rft.xml) created by the Esri community. You can also create custom raster functions in Python that work seamlessly with the several dozen functions that ship with ArcGIS.

Getting Started

  1. Install ArcGIS for Desktop 10.4 or higher or pro 1.2 or higher, or ArcGIS for Server 10.4 or higher.
  2. Install the latest release of prerequisite Python extension packages if you are setting up for the first time:
    • Download Python extensions binaries.
    • Unzip the contents to a temporary local folder.
    • Run <local-folder>/setup.py with administrator privileges.
  3. Install the latest release of custom raster functions:
  4. Learn more about raster functions, function chains, and templates using the Resources below.
  5. Learn how you can create new raster functions using the Python API.

Resources

Issues

Find a bug or want to request a new feature? Please let us know by submitting an issue.

Contributing

Esri welcomes contributions from anyone and everyone. Please see our guidelines for contributing.

Featured Raster Functions and Templates

  • Normalized Difference Vegetation Index

    NDVI.py serves as a reference Python rendition of the stock NDVI raster function. It accepts one multi-band raster as input, and one-based indices corresponding to the Red and Infrared bands of the input raster. An additional method parameter controls whether the output NDVI raster contains raw, scaled, or color-mapped values.

    Supporting templates:

    • NDVI-Raw: Returns raw NDVI values in the range [-1.0, +1.0] as a one-band, floating-point raster.
    • NDVI-Grayscale: Returns NDVI values scaled to the range [0, 200] as one-band, 8-bit raster.
    • NDVI-Colormap: Returns scaled NDVI values as color-mapped raster.

    Learn more about NDVI on Wikipedia or in the Documentation for ArcGIS.

  • Wind Chill

    WindChill.py computes wind chill given two rasters representing wind speed in miles-per-hour and ambient air temperature in Fahrenheit.

    Windchill.rft.xml is a grouping raster function template.

    Learn more about Wind Chill on Wikipedia.

  • Heat Index

    HeatIndex.py computes apparent temperature (as perceived by us) given two rasters corresponding to ambient air temperature and relative humidity. An additional string parameter units controls whether the air temperature values are assumed to be in Celsius or Fahrenheit.

    HeatIndex.rft.xml is a grouping raster function template. The units parameter remains unmodified by the template and defaults to Fahrenheit.

    Learn more about Heat Index on Wikipedia.

  • Key Metadata

    KeyMetadata.py demonstrates how key properties can be introduced or overridden by a raster function. These are the inputs to the function:

    • Property Name, Property Value—The name and value of the dataset-level key property to update or introduce.
    • Band Names—Band names of the outgoing raster specified as a CSV.
    • Metadata JSON—Key metadata to be injected into the outgoing raster described as a JSON string representing a collection of key-value pairs. Learn more here.

    This function serves as an example of one that doesn't need to implement the .updatePixels() method.

  • Mask Raster

    MaskRaster.py enables you to apply the input mask raster as the NoData mask on the primary input raster.

    MaskRaster.rft.xml is a grouping raster function template where the inputs are the primary raster and the mask raster (in that order).

  • Arithmetic

    Arithmetic.py demonstrates the application of simple arithmetic operations on two rasters. It's not meant to replace the functionality provided by the built-in Local Function or the Math toolset. You can, however, use it as a springboard to building custom mathematical or analytical operations.

  • Aggregate

    Aggregate.py serves to demonstrates the application of simple aggregation along each pixel over a collection of overlapping rasters. The primary input to the function is of type rasters representing an array of rasters. The method string parameter enables a user or template to choose the specific operation (from Sum, Average, Standard Deviation, Minimum, and Maximum) to perform. The parameter defaults to Sum. The output is a raster containing values corresponding to the chosen statistic.

    Aggregate.rft.xml is a sample grouping raster function template with only one input: the collection of rasters to aggregate. The template leaves the method parameter unmodified.

  • Deviation from Mean

    DeviationFromMean.rft.xml helps with anomaly detection by calculating the deviation of the primary raster from the mean computed over a collection of overlapping rasters. This grouping raster function template demonstrates how complex operations can be constructed by chaining simple functions. The template computes the mean over a collection of rasters using the Aggregate function and then subtracts that result from the pixels values of the primary raster.

    It's interesting to note that this template could be rewritten as a single Python raster function that accepts a raster array and compute deviation from the group mean of the first (or some user-specified) raster in that group.

  • Select By Pixel Size

    SelectByPixelSize.py accepts two overlapping rasters and a threshold value indicating the resolution at which the function switches from returning the first raster to returning the second raster as output. If unspecified, the threshold parameter defaults to the average cell size of the two input rasters.

    SelectByPixelSize.rft.xml is a grouping raster function template that accepts two rasters as input and leaves threshold unspecified.

  • Convert Per Second to Per Month

    ConvertPerSecondToPerMonth.py accepts a raster containing pixels values representing observations in some units per-second, and converts it to a raster representing the observation in units per-month. For this conversion to be a accurate, the function needs to know the month associated with acquisition of the input raster. This function demonstrates effective use of key metadata in processing and analysis.

  • Composite Bands

    CompositeBands.rft.xml and CompositeBands-4Bands-Ordered.rft.xml are raster function templates that demonstrate grouping with rasters (an array of raster objects) and with four individual rasters, respectively. The output is a single raster generated by compositing all bands of all overlapping input rasters. The template uses the built-in composite bands raster function.

  • Hillshade

    Hillshade.py is reference Python implementation designed to emulate the built-in Hillshade raster function while serving to demonstrate effective use of SciPy, NumPy, and the helper functions implemented in the utils module. This is an example of a neighborhood or focal operation.

    The Scale-adjusted Hillshade raster function template applies hillshading on the input elevation raster with a non-linearly adjusted z-factor.

    Learn more about how the hillshade algorithm works here.

  • Multidirectional Hillshade

    MultidirectionalHillshade.pyd and the accompanying MultidirectionalHillshade.rft.xml raster function template applies Hillshading from multiple directions for improved visualization. Learn more here.

  • Fish Habitat Suitability

    FishHabitatSuitability.py returns a raster representing suitability of fish habitat at a user-specified ocean depth given two rasters representing water temperature and salinity. This function demonstrates how raster functions can be exploited in analytic workflows.

    FishHabitatSuitability.rft.xml is a grouping raster function template that accepts the temperature and salinity rasters (in that order). This template—when used in the Add Rasters to Mosaic Dataset tool with the Table raster type or as a processing template on a mosaic dataset—is capable of obtaining the value of the depth parameter from a specific field (StdZ, if available) in the table.

  • Vineyard Analysis

    VineyardAnalysis.py serves to demonstrate how you can compute a suitability raster given the elevation, slope, and aspect of the region.

    VineyardAnalysis.rft.xml accepts the elevation input raster and uses built-in raster functions to compute slope and elevation before feeding the output to the Vineyard Analysis raster function.

  • Aspect-Slope

    AspectSlope.py generates an aspect slope map i.e. simultaneously shows the aspect (direction) and slope in degree (steepness) for a terrain or other continuous surface.

    AspectSlope.rft.xml accepts the elevation input raster and creates aspect slope map raster for visualization.

  • Topographic C-Correction

    Topographic c-correction is used to remove the effects of hillshade on multispectral images. It reduces the effects of reflectance variability in areas of high or rugged terrain, thus improving the consistency of the multispectral image pixel values and the quality of images as additional processing is applied. There are many different topographic correction algorithms. These algorithms have been compared by Ion Sola et. al (2016) and the c-correction proposed in Teillet, Guindon, and Goodenough (1982) was ranked as one of the best topographic correction methods.

Licensing

Copyright 2014 Esri

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

A copy of the license is available in the repository's License.txt file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].