import pyrasterframes
from pyrasterframes.utils import create_rf_spark_session
import pyrasterframes.rf_ipython # enables nicer visualizations of pandas DF
from pyrasterframes.rasterfunctions import *
import pyspark.sql.functions as F
spark = create_rf_spark_session()
bash: /opt/conda/lib/libtinfo.so.6: no version information available (required by bash) bash: /opt/conda/lib/libtinfo.so.6: no version information available (required by bash) WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.apache.spark.unsafe.Platform (file:/usr/local/spark-3.1.2-bin-hadoop3.2/jars/spark-unsafe_2.12-3.1.2.jar) to constructor java.nio.DirectByteBuffer(long,int) WARNING: Please consider reporting this to the maintainers of org.apache.spark.unsafe.Platform WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release 21/10/02 03:12:39 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties Setting default log level to "WARN". To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Read a DataFrame that consists of STAC Items retrieved from the STAC API service.
# read assets from the landsat-8-l1-c1 collection
# due to the collection size and query parameters
# it makes sense to limit the amount of items retrieved from the STAC API
uri = 'https://earth-search.aws.element84.com/v0'
df = spark.read.stacapi(uri, {'collections': ['landsat-8-l1-c1']}).limit(100)
df.printSchema()
root |-- id: string (nullable = true) |-- stacVersion: string (nullable = true) |-- stacExtensions: array (nullable = true) | |-- element: string (containsNull = true) |-- _type: string (nullable = true) |-- geometry: geometry (nullable = true) |-- bbox: struct (nullable = true) | |-- xmin: double (nullable = true) | |-- ymin: double (nullable = true) | |-- xmax: double (nullable = true) | |-- ymax: double (nullable = true) |-- links: array (nullable = true) | |-- element: struct (containsNull = true) | | |-- href: string (nullable = true) | | |-- rel: string (nullable = true) | | |-- _type: string (nullable = true) | | |-- title: string (nullable = true) | | |-- extensionFields: string (nullable = true) |-- assets: map (nullable = true) | |-- key: string | |-- value: struct (valueContainsNull = true) | | |-- href: string (nullable = true) | | |-- title: string (nullable = true) | | |-- description: string (nullable = true) | | |-- roles: array (nullable = true) | | | |-- element: string (containsNull = true) | | |-- _type: string (nullable = true) | | |-- extensionFields: string (nullable = true) |-- collection: string (nullable = true) |-- properties: struct (nullable = true) | |-- datetime: struct (nullable = true) | | |-- datetime: timestamp (nullable = true) | | |-- start: timestamp (nullable = true) | | |-- end: timestamp (nullable = true) | | |-- _type: string (nullable = true) | |-- title: string (nullable = true) | |-- description: string (nullable = true) | |-- created: timestamp (nullable = true) | |-- updated: timestamp (nullable = true) | |-- license: string (nullable = true) | |-- providers: struct (nullable = true) | | |-- head: struct (nullable = true) | | | |-- name: string (nullable = true) | | | |-- description: string (nullable = true) | | | |-- roles: array (nullable = true) | | | | |-- element: string (containsNull = true) | | | |-- url: string (nullable = true) | | |-- tail: array (nullable = true) | | | |-- element: struct (containsNull = true) | | | | |-- name: string (nullable = true) | | | | |-- description: string (nullable = true) | | | | |-- roles: array (nullable = true) | | | | | |-- element: string (containsNull = true) | | | | |-- url: string (nullable = true) | |-- platform: string (nullable = true) | |-- instruments: struct (nullable = true) | | |-- head: string (nullable = true) | | |-- tail: array (nullable = true) | | | |-- element: string (containsNull = true) | |-- constellation: string (nullable = true) | |-- mission: string (nullable = true) | |-- gsd: double (nullable = true) | |-- extensionFields: string (nullable = true)
Each item in the DataFrame represents the entire STAC Item.
df.count()
100
df.select(df.id, df.collection, df.geometry)
id | collection | geometry |
---|---|---|
LC08_L1TP_232093_20210716_20210717_01_T1 | landsat-8-l1-c1 | POLYGON ((-74.64766964714028 -46.3435154... |
LC08_L1TP_232092_20210716_20210717_01_T1 | landsat-8-l1-c1 | POLYGON ((-74.07682865409966 -44.9166888... |
LC08_L1TP_232091_20210716_20210717_01_T1 | landsat-8-l1-c1 | POLYGON ((-73.54155930424828 -43.4885910... |
LC08_L1TP_232090_20210716_20210717_01_T1 | landsat-8-l1-c1 | POLYGON ((-73.02667875381594 -42.0589406... |
LC08_L1TP_232089_20210716_20210717_01_T1 | landsat-8-l1-c1 | POLYGON ((-72.67424121162182 -40.6804236... |
To read rasters we don't need STAC Items, but we need STAC Item Assets. Each STAC Item in the DataFrame can contain more than a single asset => to covert such STAC Item DataFrame into the STAC Item Assets DataFrame we need to explode the assets column.
# select the first Landsat STAC Item
# explode its assets
# select blue, red, green, and nir assets only
# name each asset link as the band column
assets = df \
.limit(1) \
.select(df.id, F.explode(df.assets)) \
.filter(F.col("key").isin(["B2", "B3", "B4", "B5"])) \
.select(F.col("value.href").alias("band"))
assets.printSchema()
root |-- band: string (nullable = true)
assets.count()
4
# read rasters from the exploded STAC Assets DataFrame
# select only the blue asset to speed up notebook
rs = spark.read.raster(assets.limit(1), tile_dimensions=(512, 512), buffer_size=2, catalog_col_names=["band"])
rs.count()
256
rs.printSchema()
root |-- band_path: string (nullable = false) |-- band: struct (nullable = true) | |-- tile: tile (nullable = true) | |-- extent: struct (nullable = true) | | |-- xmin: double (nullable = false) | | |-- ymin: double (nullable = false) | | |-- xmax: double (nullable = false) | | |-- ymax: double (nullable = false) | |-- crs: crs (nullable = true)
Additional transformations are complished through use of column functions. The functions used here are mapped to their Scala implementation and applied per row. For each row the source elevation data is fetched only once before it's used as input.
# limit tiles, to work only with 10 DataFrame rows
rs = rs.limit(10)
# apply focal operations to data cells only
rs.select(
rf_crs(rs.band),
rf_extent(rs.band),
rf_aspect(rs.band),
rf_slope(rs.band, z_factor=1),
rf_hillshade(rs.band, azimuth=315, altitude=45, z_factor=1))
rf_crs(band) | rf_extent(band) | rf_aspect(band, all) | rf_slope(band, 1, all) | rf_hillshade(band, 315, 45, 1, all) |
---|---|---|---|---|
utm-CS | {488445.0, -5335365.0, 503805.0, -5320005.0} | |||
utm-CS | {657405.0, -5335365.0, 672765.0, -5320005.0} | |||
utm-CS | {688125.0, -5335365.0, 703485.0, -5320005.0} | |||
utm-CS | {642045.0, -5197125.0, 657405.0, -5181765.0} | |||
utm-CS | {549885.0, -5366085.0, 565245.0, -5350725.0} |
Focal operations above are applied to the entire rasters, and the NoData is not handled. Focal operations allow to specify the target cells type: "data", "nodata", "all"; and by default the "all" is used. The example below shows the NoData handling and applied focal operation only to Data cells.
# Set LC 8 NoData to zero
rsnd = rs.select(rf_with_no_data(rs.band, 0).alias("band"))
# apply focal operations to data cells only
rsnd.select(
rf_crs(rsnd.band),
rf_extent(rsnd.band),
rf_aspect(rsnd.band, target="data"),
rf_slope(rsnd.band, z_factor=1, target="data"),
rf_hillshade(rsnd.band, azimuth=315, altitude=45, z_factor=1, target="data"))
rf_crs(band) | rf_extent(band) | rf_aspect(band, data) | rf_slope(band, 1, data) | rf_hillshade(band, 315, 45, 1, data) |
---|---|---|---|---|
utm-CS | {488445.0, -5335365.0, 503805.0, -5320005.0} | |||
utm-CS | {657405.0, -5335365.0, 672765.0, -5320005.0} | |||
utm-CS | {688125.0, -5335365.0, 703485.0, -5320005.0} | |||
utm-CS | {642045.0, -5197125.0, 657405.0, -5181765.0} | |||
utm-CS | {549885.0, -5366085.0, 565245.0, -5350725.0} |
# save a hillshade raster to the disk as a tiff
rsnd \
.limit(1) \
.select(rf_hillshade(rsnd.band, azimuth=315, altitude=45, z_factor=1, target="data")) \
.write.geotiff("lc8-hillshade.tiff", "EPSG:32718")
21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_boundary replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_coorddim replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_dimension replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_envelope replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_exteriorring replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_geometryn replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_geometrytype replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_interiorringn replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_isclosed replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_iscollection replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_isempty replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_isring replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_issimple replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_isvalid replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_numgeometries replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_numpoints replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_pointn replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_x replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_y replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_casttopoint replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_casttopolygon replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_casttolinestring replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_casttogeometry replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_bytearray replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_box2dfromgeohash replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_geomfromgeohash replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_geomfromgeojson replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_geomfromtext replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_geometryfromtext replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_geomfromwkt replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_geomfromwkb replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_linefromtext replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_mlinefromtext replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_mpointfromtext replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_mpolyfromtext replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_makebbox replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_makebox2d replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_makeline replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_makepoint replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_makepointm replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_makepolygon replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_point replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_pointfromgeohash replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_pointfromtext replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_pointfromwkb replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_polygon replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_polygonfromtext replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_asbinary replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_asgeojson replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_aslatlontext replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_astext replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_geohash replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_antimeridiansafegeom replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_idlsafegeom replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_bufferpoint replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_translate replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_contains replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_covers replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_crosses replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_disjoint replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_equals replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_intersects replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_overlaps replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_touches replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_within replaced a previously registered function. 21/10/02 03:16:28 WARN SimpleFunctionRegistry: The function st_relate replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function st_relatebool replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function st_area replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function st_closestpoint replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function st_centroid replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function st_distance replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function st_length replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function st_distancesphere replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function st_aggregatedistancesphere replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function st_lengthsphere replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function st_convexhull replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function st_intersection replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function st_difference replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_make_constant_tile replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_make_zeros_tile replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_make_ones_tile replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_cell_types replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_rasterize replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_array_to_tile replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_local_add replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_local_subtract replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_assemble_tile replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_explode_tiles replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_cell_type replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_convert_cell_type replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_interpret_cell_type_as replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_with_no_data replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_dimensions replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function st_geometry replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_geometry replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function st_extent replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_extent replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_crs replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_tile replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_proj_raster replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_local_multiply replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_local_divide replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_normalized_difference replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_local_less replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_local_greater replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_local_less_equal replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_local_greater_equal replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_local_equal replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_local_unequal replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_local_is_in replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_local_no_data replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_local_data replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_local_min replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_local_max replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_local_clamp replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_where replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_standardize replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_rescale replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_tile_sum replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_round replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_abs replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_log replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_log10 replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_log2 replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_log1p replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_exp replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_exp10 replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_exp2 replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_expm1 replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_sqrt replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_resample replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_resample_nearest replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_tile_to_array_double replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_tile_to_array_int replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_data_cells replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_no_data_cells replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_is_no_data_tile replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_exists replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_for_all replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_tile_min replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_tile_max replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_tile_mean replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_tile_stats replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_tile_histogram replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_agg_data_cells replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_agg_no_data_cells replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_agg_stats replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_agg_approx_histogram replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_agg_local_stats replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_agg_local_min replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_agg_local_max replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_agg_local_data_cells replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_agg_local_no_data_cells replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_agg_local_mean replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_focal_max replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_focal_min replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_focal_mean replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_focal_mode replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_focal_median replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_focal_moransi replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_focal_stddev replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_convolve replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_slope replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_aspect replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_hillshade replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_mask replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_inverse_mask replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_mask_by_value replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_inverse_mask_by_value replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_mask_by_values replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_render_ascii replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_render_matrix replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_render_png replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_rgb_composite replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_xz2_index replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_z2_index replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function st_reproject replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_local_extract_bits replaced a previously registered function. 21/10/02 03:16:29 WARN SimpleFunctionRegistry: The function rf_local_extract_bit replaced a previously registered function.
# save a hillshade raster to the disk as a tiff
rs \
.limit(1) \
.select(rf_hillshade(rs.band, azimuth=315, altitude=45, z_factor=1)) \
.write.geotiff("lc8-hillshade-all.tiff", "EPSG:32718")
21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_boundary replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_coorddim replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_dimension replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_envelope replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_exteriorring replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_geometryn replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_geometrytype replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_interiorringn replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_isclosed replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_iscollection replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_isempty replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_isring replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_issimple replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_isvalid replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_numgeometries replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_numpoints replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_pointn replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_x replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_y replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_casttopoint replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_casttopolygon replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_casttolinestring replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_casttogeometry replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_bytearray replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_box2dfromgeohash replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_geomfromgeohash replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_geomfromgeojson replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_geomfromtext replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_geometryfromtext replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_geomfromwkt replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_geomfromwkb replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_linefromtext replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_mlinefromtext replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_mpointfromtext replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_mpolyfromtext replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_makebbox replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_makebox2d replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_makeline replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_makepoint replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_makepointm replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_makepolygon replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_point replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_pointfromgeohash replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_pointfromtext replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_pointfromwkb replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_polygon replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_polygonfromtext replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_asbinary replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_asgeojson replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_aslatlontext replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_astext replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_geohash replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_antimeridiansafegeom replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_idlsafegeom replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_bufferpoint replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_translate replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_contains replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_covers replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_crosses replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_disjoint replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_equals replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_intersects replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_overlaps replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_touches replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_within replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_relate replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_relatebool replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_area replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_closestpoint replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_centroid replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_distance replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_length replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_distancesphere replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_aggregatedistancesphere replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_lengthsphere replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_convexhull replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_intersection replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_difference replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_make_constant_tile replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_make_zeros_tile replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_make_ones_tile replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_cell_types replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_rasterize replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_array_to_tile replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_local_add replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_local_subtract replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_assemble_tile replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_explode_tiles replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_cell_type replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_convert_cell_type replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_interpret_cell_type_as replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_with_no_data replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_dimensions replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_geometry replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_geometry replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_extent replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_extent replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_crs replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_tile replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_proj_raster replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_local_multiply replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_local_divide replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_normalized_difference replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_local_less replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_local_greater replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_local_less_equal replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_local_greater_equal replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_local_equal replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_local_unequal replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_local_is_in replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_local_no_data replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_local_data replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_local_min replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_local_max replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_local_clamp replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_where replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_standardize replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_rescale replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_tile_sum replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_round replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_abs replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_log replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_log10 replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_log2 replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_log1p replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_exp replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_exp10 replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_exp2 replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_expm1 replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_sqrt replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_resample replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_resample_nearest replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_tile_to_array_double replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_tile_to_array_int replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_data_cells replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_no_data_cells replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_is_no_data_tile replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_exists replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_for_all replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_tile_min replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_tile_max replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_tile_mean replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_tile_stats replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_tile_histogram replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_agg_data_cells replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_agg_no_data_cells replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_agg_stats replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_agg_approx_histogram replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_agg_local_stats replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_agg_local_min replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_agg_local_max replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_agg_local_data_cells replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_agg_local_no_data_cells replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_agg_local_mean replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_focal_max replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_focal_min replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_focal_mean replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_focal_mode replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_focal_median replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_focal_moransi replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_focal_stddev replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_convolve replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_slope replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_aspect replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_hillshade replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_mask replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_inverse_mask replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_mask_by_value replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_inverse_mask_by_value replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_mask_by_values replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_render_ascii replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_render_matrix replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_render_png replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_rgb_composite replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_xz2_index replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_z2_index replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function st_reproject replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_local_extract_bits replaced a previously registered function. 21/10/02 03:16:51 WARN SimpleFunctionRegistry: The function rf_local_extract_bit replaced a previously registered function.