diff --git a/README.md b/README.md
index 3777706..97da4fa 100644
--- a/README.md
+++ b/README.md
@@ -1,53 +1,189 @@
-# Harmony Browse Image Generator (HyBIG) backend service.
+# Harmony Browse Image Generator (HyBIG).
This Harmony backend service is designed to produce browse imagery, with
default behaviour to produce browse imagery that is compatible with the NASA
Global Image Browse Services ([GIBS](https://www.earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/gibs)).
+This means that defaults for images are selected to match the visualization
+generation requirements and recommendations put forth in the GIBS Interface
+Control Document (ICD), which can be found on [Earthdata
+Wiki](https://wiki.earthdata.nasa.gov/display/GITC/Ingest+Delivery+Methods)
+along with [additional GIBS
+documentation](https://nasa-gibs.github.io/gibs-api-docs/).
+
+HyBIG creates paletted PNG images and associated metadata from GeoTIFF input
+images. Scientific parameter raster data as well as RGB[A] raster images can
+be converted to browse PNGs. These browse images undergo transformation by
+reprojection, tiling and coloring to seamlessly integrate with GIBS.
+
+### Reprojection
+
+GIBS expects to receive images in one of three Coordinate Reference System (CRS) projections.
+
+| Region | Code | Name |
+|-------------|-----------|-----------------------------------------------------------|
+| north polar | EPSG:3413 | WGS 84 / NSIDC Sea Ice Polar Stereographic North |
+| south polar | EPSG:3031 | WGS 84 / Antarctic Polar Stereographic |
+| global | EPSG:4326 | WGS 84 -- WGS84 - World Geodetic System 1984, used in GPS |
+
+HyBIG processing will attempt to choose a GIBS-suitable target CRS from the
+input image or read it from the inputs. Reprojection is done by resampling via
+nearest neighbor. It is important to note that HyBig outputs are not scientific
+data, but browse imagery and should not be used for scientific analysis.
+
+
+### Tiling
+
+Large output images are divided into smaller, more manageable tiles for
+efficient handling and processing, as per agreement with GIBS. The maximum
+untiled image size generated by HyBIG is 67,108,864 cells (8,192 x 8,192). If
+the output image exceeds this threshold, HyBIG automatically tiles the output
+into multiple 4,096 x 4,096 cell images.
+
+Tiled images are labeled with the zero-based column and row numbers inserted
+into the output filename before its
+extension. For example, `VCF5KYR_1991001_001_2018224205008.r01c02.png` represents the
+second row and third column of the output tiles. The tiles at the edges are
+truncated to fit the overall image dimensions. Currently, you cannot override
+this behavior.
+
+### Coloring
+
+HyBIG images are colored in several ways. A palette can be included in the
+input [STAC
+Item](https://github.com/radiantearth/stac-spec/blob/master/item-spec/item-spec.md). If
+an Item's asset contains a value with the role of `palette`, it is assumed to
+be a reference to a remote color table, which is fetched from the asset's
+`href` and parsed as a GDAL color table.
+
+If the STAC Item lacks color information, the Harmony message source is
+searched for a related URL with a "content type" of `VisualizationURL` and a
+"type" of `Color Map`. If found, it is presumed to be a remote color table and
+fetched from that location.
+
+In the absence of remote color information, the input image itself is searched
+for a color map, which is used if present.
+
+If no color information can be found, grayscale is used.
+
+### Defaults
+
+HyBIG tries to provide GIBS-appropriate default values for the browse image
+outputs. When a user does not provide a target values for the output, HyBIG
+will try to pick an appropriate default.
+
+#### Coordinate Reference System (CRS)
+
+HyBIG selects a default CRS from the list of GIBS preferred projections. The
+steps followed are simple but effective:
+
+1. If the `proj` is `lonlat` use global (`EPSG:4326`)
+1. If the projection latitude of origin is above 80° N use northern (`EPSG:3413`)
+1. If the projection latitude of origin is below -80° N use southern (`EPSG:3031`)
+1. Otherwise use global (`EPGS:4326`)
+
+#### Scale Extent (Image Bounds)
+
+The default scale extent for an output image is computed by reprojecting the
+input data boundary into the target CRS. It densifies the edges by adding 21
+points ([rasterio's
+default](https://rasterio.readthedocs.io/en/latest/api/rasterio.warp.html#rasterio.warp.transform_bounds))
+to each edge before reprojection to account for non-linear edges produced by
+the transformation ensuring inclusion of all data in the output image.
+
+#### Dimensions / Scale Sizes
+
+Output image dimensions can be explicitly included as `width` and `height` in
+the harmony message or computed based on the scale extent and scale size
+(resolution).
+
+The dimension computations from the scale extent and scale size:
+```
+height = round((scale_extent['ymax'] - scale_extent['ymin']) / scale_size.y)
+width = round((scale_extent['xmax'] - scale_extent['xmin']) / scale_size.x)
+```
+
+When a Harmony message contains neither `dimensions` nor `scaleSizes` a default
+set of dimensions is computed.
+
+For coarse input data, the resolution (scale size) is used with the scale
+extent to compute the output dimensions. For high resolution data, finer than
+2km per gridcell, the input resolution is used to lookup the closest GIBS
+preferred resolution (Table 4.1.8-1 and -2 from the ICD) and the preferred
+resolution along with the scale extent is used to compute the output image
+dimensions.
+
+### Customizations
+
+Users can request customizations to the output images such as `crs`,
+`scale_extents`, or `scale_sizes` and dimensions (`height` & `width`) in the
+harmony request. However, the generated outputs may not be compatible with
+GIBS.
+
+When a user customizes `scale_extent` or `scale_size`, they must also include a
+`crs` in the request. The units of the cusomized values must match the target
+CRS. For example, specifying a bounding box in degrees requires a target CRS
+also with units of degrees.
+
+
## Repository structure:
```
-|- .pre-commit-config.yaml
+|- 📂 bin
+|- 📂 docker
+|- 📂 docs
+|- 📂 harmony_browse_image_generator
+|- 📂 tests
|- CHANGELOG.md
|- CONTRIBUTING.md
+|- LICENSE
|- README.md
-|- bin
|- conda_requirements.txt
|- dev-requirements.txt
-|- docker
-|- docs
-|- harmony_browse_image_generator
+|- legacy-CHANGELOG.md
|- pip_requirements.txt
-|- tests
```
-* `.pre-commit-config` - a pre-commit configuration file describing functions to
- be run on every git commit.
-* `CHANGELOG.md` - This file contains a record of changes applied to each new
- release of a service Docker image. Any release of a new service version
- should have a record of what was changed in this file.
-* `CONTRIBUTING.md` - This file contains guidance for making contributions to
- HyBIG, including recommended git best practices.
-* `README.md` - This file, containing guidance on developing the service.
* `bin` - A directory containing utility scripts to build the service and test
images. A script to extract the release notes for the most recent service
version, as contained in `CHANGELOG.md` is also in this directory.
-* `conda_requirements.txt` - A list of service dependencies, such as GDAL, that
- cannot be installed via Pip.
-* `dev-requirements.txt` - list of packages required for service development.
+
* `docker` - A directory containing the Dockerfiles for the service and test
images. It also contains `service_version.txt`, which contains the semantic
version number of the service image. Any time an update is made that should
have an accompanying service image release, this file should be updated.
-* `docs` - directory with example usage notebooks.
-* `harmony_browse_image_generator` - The directory containing Python source code
+
+* `docs` - A directory with example usage notebooks.
+
+* `harmony_browse_image_generator` - A directory containing Python source code
for the HyBIG. `adapter.py` contains the `BrowseImageGeneratorAdapter`
class that is invoked by calls to the service.
+
+* `tests` - A directory containing the service unit test suite.
+
+* `CHANGELOG.md` - This file contains a record of changes applied to each new
+ release of a service Docker image. Any release of a new service version
+ should have a record of what was changed in this file.
+
+* `CONTRIBUTING.md` - This file contains guidance for making contributions to
+ HyBIG, including recommended git best practices.
+
+* `LICENSE` - Required for distribution under NASA open-source
+ approval. Details conditions for use, reproduction and distribution.
+
+* `README.md` - This file, containing guidance on developing the service.
+
+* `conda_requirements.txt` - A list of service dependencies, such as GDAL, that
+ cannot be installed via Pip.
+
+* `dev-requirements.txt` - list of packages required for service development.
+
* `legacy-CHANGELOG.md` - Notes for each version that was previously released
internally to EOSDIS, prior to open-source publication of the code and Docker
image.
+
* `pip_requirements.txt` - A list of service Python package dependencies.
-* `tests` - A directory containing the service unit test suite.
+
## Local development:
@@ -74,7 +210,7 @@ service within that environment via conda and pip then install the pre-commit ho
This service utilises the Python `unittest` package to perform unit tests on
classes and functions in the service. After local development is complete, and
-test have been updated, they can be run via:
+test have been updated, they can be run in Docker via:
```bash
$ ./bin/build-image
@@ -106,8 +242,8 @@ major.minor.patch.
When publishing a new Docker image for the service, two files need to be
updated:
-* CHANGELOG.md - Notes should be added to capture the changes to the service.
-* docker/service_version.txt - The semantic version number should be updated.
+* `CHANGELOG.md` - Notes should be added to capture the changes to the service.
+* `docker/service_version.txt` - The semantic version number should be updated.
## CI/CD:
@@ -130,14 +266,15 @@ The `publish_docker_image.yml` workflow will:
* Extract the released notes for the most recent version from `CHANGELOG.md`.
* Create a GitHub release that will also tag the related git commit with the
semantic version number.
+* Build and deploy a this service's docker image to `ghcr.io`.
Before triggering a release, ensure both the `docker/service_version.txt` and
`CHANGELOG.md` files are updated. The `CHANGELOG.md` file requires a specific
format for a new release, as it looks for the following string to define the
-newest relate of the code (starting at the top of the file).
+newest release of the code (starting at the top of the file).
```
-## vX.Y.Z
+## vX.Y.Z - YYYY-MM-DD
```
### pre-commit hooks:
@@ -152,7 +289,7 @@ checking the repository for some coding standard best practices. These include:
* [black](https://black.readthedocs.io/en/stable/index.html) Python code
formatting checks.
-To enable these checks:
+To enable these checks locally:
```bash
# Install pre-commit Python package as part of test requirements:
@@ -179,10 +316,9 @@ automatically run for every pull request.
## Releasing a new version of the service:
Once a new Docker image has been published with a new semantic version tag,
-that service version can be released to a Harmony environment by updating the
-main Harmony Bamboo deployment project. Find the environment you wish to
-release the service version to and update the associated environment variable
-to update the semantic version tag at the end of the full Docker image name.
+that service version can be released to a Harmony environment by following the
+directions in the [Harmony Managing Existing Services
+Guide](https://github.com/nasa/harmony/blob/main/docs/guides/managing-existing-services.md).
## Get in touch:
diff --git a/docs/HyBIG-Example-Usage.ipynb b/docs/HyBIG-Example-Usage.ipynb
index ecf34fd..b0d3939 100644
--- a/docs/HyBIG-Example-Usage.ipynb
+++ b/docs/HyBIG-Example-Usage.ipynb
@@ -14,14 +14,17 @@
"* **JIRA:** [SDPS Data Services](https://bugs.earthdata.nasa.gov/secure/RapidBoard.jspa?rapidView=757&view=planning.nodetail)\n",
"\n",
"\n",
- "HyBIG converts GeoTIFF inputs to Global Imagery Browse Services ([GIBS](https://nasa-gibs.github.io/gibs-api-docs/)) compatible PNG or JPEG outputs with metadata. This includes, where necessary, conversion to a GIBS supported Coordinate Reference System (CRS) and preferred resolutions. User customizations, including `crs`, `scale_extents`, and dimensions (`height` & `width`), can be requested, but the generated outputs may not be compatible with GIBS. \n",
+ "HyBIG converts GeoTIFF inputs to Global Imagery Browse Services ([GIBS](https://nasa-gibs.github.io/gibs-api-docs/)) compatible PNG or JPEG outputs with metadata. This includes, where necessary, conversion to a GIBS supported Coordinate Reference System (CRS) and preferred resolutions. User customizations, including `crs`, `scale_extents`, and dimensions (via `height` & `width`), can be requested, but note the generated outputs may not be compatible with GIBS. \n",
+ "\n",
+ "Information on how HyBIG computes default values can be found in the [README.md](https://github.com/nasa/harmony-browse-image-generator/blob/main/README.md) file of this repository.\n",
"\n",
"The examples use data from these collections:\n",
"\n",
" - MEaSUREs Vegetation Continuous Fields (VCF) Yearly Global 0.05 Deg V001 ([VCF5KYR](https://cmr.uat.earthdata.nasa.gov/search/concepts/C1258119317-EEDTEST)) as GeoTIFF input data to demonstrate the HyBIG service against RGB color banded input. Each granule covers the full Earth.\n",
"\n",
" - ASTER Global Digital Elevation Model (GDEM) Version 3 ([ASTGTM](https://cmr.uat.earthdata.nasa.gov/search/concepts/C1256584478-EEDTEST)) as GeoTIFF input data to demonstrate the HyBIG service using an input GeoTIFF with no color information. Each granule covers a 1° x 1° region at 1\" resolution.\n",
- "\n",
+ " \n",
+ " \n",
"#### Authentication prerequisites:\n",
"\n",
"The `harmony.Client` class will attempt to use credentials from a local `.netrc` file, located in the home directory of the filesystem where this notebook is running. This will need to contain entries for Earthdata Login for your UAT environment:\n",
@@ -89,6 +92,34 @@
"harmony_client = Client(env=Environment.UAT)"
]
},
+ {
+ "cell_type": "markdown",
+ "id": "cf8acad9",
+ "metadata": {},
+ "source": [
+ "### Helper function to rename output images.\n",
+ "\n",
+ "Harmony prepends a job identifier to processed images, to display them in this notebook the `rename_files` function will strip off the job id."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "20381cb4",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def rename_files(file_paths):\n",
+ " print('Renaming:')\n",
+ " for file_path in file_paths:\n",
+ " path = Path(file_path)\n",
+ " filename = path.name\n",
+ " new_filename = '_'.join(filename.split('_')[1:])\n",
+ " new_path = path.parent / new_filename\n",
+ " path.rename(new_path)\n",
+ " print(new_path)"
+ ]
+ },
{
"cell_type": "markdown",
"id": "3716416c-81e0-49a3-b1f4-7d2d64106622",
@@ -96,9 +127,8 @@
"source": [
"### Example: default request for MEaSUREs VCF5KYR 3-Band RGB GeoTIFF input\n",
"\n",
- "This makes a default request for the data without input\n",
- "parameters. This allows the HyBIG service to determine a\n",
- "GIBS compatible output image.\n",
+ "This makes a default request for the data without input parameters allowing the\n",
+ "HyBIG service to determine the defaults for a GIBS compatible output image.\n",
"\n",
"The only selection made is the output image type, which can be either PNG or JPEG\n",
"and selection is done with the `format` keyword to the `Request`, by specifying\n",
@@ -118,7 +148,9 @@
"\n",
"# Specify a request to create a browse image from an MEaSUREs granule:\n",
"measures_request = Request(\n",
- " collection=measures_collection, granule_id=measures_granule, format=image_format\n",
+ " collection=measures_collection,\n",
+ " granule_id=measures_granule,\n",
+ " format=image_format,\n",
")\n",
"\n",
"# Submit the request and wait for it to complete:\n",
@@ -133,7 +165,9 @@
" for file_future in harmony_client.download_all(\n",
" measures_job_id, overwrite=True, directory=example1_output_dir\n",
" )\n",
- "]"
+ "]\n",
+ "\n",
+ "rename_files(downloaded_outputs)"
]
},
{
@@ -211,21 +245,23 @@
"\n",
"This example will use an ASTER granule, with the following extent:\n",
"\n",
- "* 22 ≤ longitude (degrees east) ≤ 23\n",
- "* 0 ≤ latitude (degrees north) ≤ 1\n",
+ "* 22 ≤ longitude (degrees east) ≤ 23.2\n",
+ "* 0 ≤ latitude (degrees north) ≤ 1.2\n",
"\n",
- "The expected output should be a single tile - while the resolution is fine enough to trigger tiling, the specified scale extent is small enough to land within a single tile. Because the output is tiled, the column and row of the tile is returned as part of the output file name, in this case `r00c00` row 0 column 0"
+ "The expected output should be a single tile, with a .2 degree border at the top and right edges."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "9e763411",
- "metadata": {},
+ "metadata": {
+ "scrolled": true
+ },
"outputs": [],
"source": [
"# The extent of the image [xmin, ymin, xmax, ymax]\n",
- "scale_extent = [22, 0, 23, 1]\n",
+ "scale_extent = [22, 0, 23.2, 1.2]\n",
"\n",
"# Specify a request to create a browse image from an ASTER granule specifying\n",
"# the scale extent of the image:\n",
@@ -249,16 +285,19 @@
" for file_future in harmony_client.download_all(\n",
" extent_job_id, overwrite=True, directory=example2_output_dir\n",
" )\n",
- "]"
+ "]\n",
+ "rename_files(downloaded_extent_outputs)"
]
},
{
"cell_type": "markdown",
- "id": "78c584ec",
+ "id": "2cf86b6a",
"metadata": {},
"source": [
"#### The resulting output JPEG\n",
- ""
+ "Notice the .2 degree border on the north and west edges.\n",
+ "\n",
+ "\n"
]
},
{
@@ -268,8 +307,8 @@
"source": [
"**The cell below shows the tile extents match the requested tile extents.**\n",
"\n",
- "* 22 ≤ longitude (degrees east) ≤ 23\n",
- "* 0 ≤ latitude (degrees north) ≤ 1"
+ "* 22 ≤ longitude (degrees east) ≤ 23.2\n",
+ "* 0 ≤ latitude (degrees north) ≤ 1.2"
]
},
{
@@ -280,7 +319,7 @@
"outputs": [],
"source": [
"# If gdal is installed this will show you the corner points associated with the output files.\n",
- "!gdalinfo hybig-output/example2/ASTGTMV003_N00E022_dem.r00c00.jpg | grep -E \"Left|Right\""
+ "!gdalinfo hybig-output/example2/ASTGTMV003_N00E022_dem.jpg | grep -E \"Left|Right\""
]
},
{
@@ -329,7 +368,8 @@
" for file_future in harmony_client.download_all(\n",
" scale_size_job_id, overwrite=True, directory=example3_output_dir\n",
" )\n",
- "]"
+ "]\n",
+ "rename_files(downloaded_scale_size_outputs)"
]
},
{
@@ -386,7 +426,8 @@
" for file_future in harmony_client.download_all(\n",
" dimensions_job_id, overwrite=True, directory=example4_output_dir\n",
" )\n",
- "]"
+ "]\n",
+ "rename_files(downloaded_dimensions_outputs)"
]
},
{
@@ -401,46 +442,153 @@
},
{
"cell_type": "markdown",
- "id": "11639b67",
+ "id": "f6877f7b",
+ "metadata": {},
+ "source": [
+ "## Example: Tiling \n",
+ "\n",
+ "In the next examples, carefully choosing the scale extent along with scale size, demonstrates the tiling behavior in HyBIG. "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "4c659b31",
+ "metadata": {},
+ "source": [
+ "### Example: untiled maximum size output image \n",
+ "Start with a square `scale_extent` over Australia, 42° on a side. \n",
+ "\n",
+ "Choose a `scale_size`s so that the expected output is precisely the maxium size of an untiled image. \n",
+ "\n",
+ "```\n",
+ "australia_extent = [112, -47, 154, -5]\n",
+ "scale_size_x = (154 - 112) / 8192\n",
+ "scale_size_y = (-5 - -47) / 8192\n",
+ "```\n",
+ "\n",
+ "We used 8192 because HyBIG can create a single untiled image of up to 8,192 x 8,192 cells large.\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "db250e2d",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Square extent over Australia 42° x 42°\n",
+ "australia_extent = [112, -47, 154, -5]\n",
+ "\n",
+ "\n",
+ "# cell size = width[height] / total cells\n",
+ "scale_size_x = (australia_extent[2] - australia_extent[0]) / 8192\n",
+ "scale_size_y = (australia_extent[3] - australia_extent[1]) / 8192\n",
+ "\n",
+ "\n",
+ "australia_scale_size = [scale_size_x, scale_size_y]\n",
+ "\n",
+ "\n",
+ "# Specify a request to create a browse image from an ASTER granule specifying\n",
+ "# scale_extent and scale_size to create a single tile:\n",
+ "untiled_request = Request(\n",
+ " collection=measures_collection,\n",
+ " granule_id=measures_granule,\n",
+ " scale_extent=australia_extent,\n",
+ " scale_size=australia_scale_size,\n",
+ " crs='EPSG:4326',\n",
+ " format='image/png',\n",
+ ")\n",
+ "\n",
+ "\n",
+ "# Submit the request and wait for it to complete:\n",
+ "untiled_job_id = harmony_client.submit(untiled_request)\n",
+ "harmony_client.wait_for_processing(untiled_job_id, show_progress=True)\n",
+ "\n",
+ "# download all generated files:\n",
+ "example5_output_dir = output_dir / 'example5'\n",
+ "Path.mkdir(example5_output_dir, exist_ok=True)\n",
+ "downloaded_untiled_outputs = [\n",
+ " file_future.result()\n",
+ " for file_future in harmony_client.download_all(\n",
+ " untiled_job_id, overwrite=True, directory=example5_output_dir\n",
+ " )\n",
+ "]\n",
+ "rename_files(downloaded_untiled_outputs)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "60c79ac6",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# The output file has the expected dimensions 8192 x 8192\n",
+ "!file hybig-output/example5/VCF5KYR_1991001_001_2018224205008.png"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "4bfcae8c",
"metadata": {},
"source": [
- "### Example: Tiled outputs:\n",
+ "the untiled output image:\n",
"\n",
- "This demonstrates tiled output. For high-resolution granules GIBS prefers large input images to be split into contiguous tiles, which can be combined to represent the entire input data array. The demonstration request specifies a combination of `scale_size` and `scale_extent` that will cause HyBIG to tile the output imagery. At the same time, we ensure only two tiles are generated, as the current tiling scheme (10° x 10°) results in a large number of tiles for a whole-Earth product.\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "d5e8e1f6",
+ "metadata": {},
+ "source": [
+ "### Example: tiled output images\n",
+ "\n",
+ "Again, start with same square `scale_extent` over Australia, 42° on a side. \n",
"\n",
- "The output is 2 contiguous tiles, each covering part of Iceland:\n",
+ "Decrease the `scale_size`s so that the expected output exceeds the maxium size of an untiled image forcing tiled output. \n",
"\n",
- "**Tile 1 (r00c00):**\n",
- "* -30 ≤ longitude (degrees east) ≤ -20\n",
- "* 60 ≤ latitude (degrees north) ≤ 70\n",
+ "```\n",
+ "australia_extent = [112, -47, 154, -5]\n",
+ "scale_size_x = (154 - 112) / 8192 + 10\n",
+ "scale_size_y = (-5 - -47) / 8192 + 10\n",
+ "```\n",
"\n",
- "**Tile 2 (r00c01):**\n",
- "* -20 ≤ longitude (degrees east) ≤ -10\n",
- "* 60 ≤ latitude (degrees north) ≤ 70"
+ "The total number of output cells have been extened by 10 in each direction, so that the output will be tiled into 4096 x 4096 images.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
- "id": "97bd2abd",
+ "id": "a5658afe",
"metadata": {},
"outputs": [],
"source": [
- "# customize the scale_extent and scale_size for iceland\n",
- "iceland_extent = [-30, 60, -10, 70]\n",
- "iceland_scale_size = [0.01, 0.01]\n",
+ "# Square extent over Australia 42° x 42°\n",
+ "australia_extent = [112, -47, 154, -5]\n",
+ "\n",
+ "\n",
+ "# width / total cells\n",
+ "scale_size_x = (australia_extent[2] - australia_extent[0]) / (8192 + 10)\n",
+ "scale_size_y = (australia_extent[3] - australia_extent[1]) / (8192 + 10)\n",
+ "\n",
+ "\n",
+ "australia_scale_size = [scale_size_x, scale_size_y]\n",
+ "\n",
"\n",
"# Specify a request to create a browse image from an ASTER granule specifying\n",
- "# scale_extent and scale_size to create two tiles:\n",
+ "# scale_extent and scale_size to create tiled images:\n",
"tiled_request = Request(\n",
" collection=measures_collection,\n",
" granule_id=measures_granule,\n",
- " scale_extent=iceland_extent,\n",
- " scale_size=iceland_scale_size,\n",
+ " scale_extent=australia_extent,\n",
+ " scale_size=australia_scale_size,\n",
" crs='EPSG:4326',\n",
" format='image/png',\n",
")\n",
"\n",
+ "\n",
"# Submit the request and wait for it to complete:\n",
"tiled_job_id = harmony_client.submit(tiled_request)\n",
"harmony_client.wait_for_processing(tiled_job_id, show_progress=True)\n",
@@ -453,7 +601,30 @@
" for file_future in harmony_client.download_all(\n",
" tiled_job_id, overwrite=True, directory=example5_output_dir\n",
" )\n",
- "]"
+ "]\n",
+ "rename_files(downloaded_tiled_outputs)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "8d1a6948",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# The tiles have expected dimensions 4096 x 4096:\n",
+ "!file hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c00.png"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "8f0a64c9",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# The edge tiles make up the remaining 10 grid cells\n",
+ "!file hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c02.png"
]
},
{
@@ -461,13 +632,24 @@
"id": "319a2b99",
"metadata": {},
"source": [
- "We can see the two output images here:\n",
- "\n",
- "\n",
- "
\n",
- " | \n",
- " | \n",
- "
\n"
+ "Some of the tiled output images:\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ " | \n",
+ " | \n",
+ "
\n",
+ "\n",
+ " | \n",
+ " | \n",
+ "
\n",
+ "\n",
+ " | \n",
+ " | \n",
+ "
\n",
+ "
\n",
+ "\n"
]
},
{
diff --git a/docs/hybig-output/example1/VCF5KYR_1991001_001_2018224205008.png b/docs/hybig-output/example1/VCF5KYR_1991001_001_2018224205008.png
index 11c733b..8eb8305 100644
Binary files a/docs/hybig-output/example1/VCF5KYR_1991001_001_2018224205008.png and b/docs/hybig-output/example1/VCF5KYR_1991001_001_2018224205008.png differ
diff --git a/docs/hybig-output/example2/ASTGTMV003_N00E022_dem.jgw b/docs/hybig-output/example2/ASTGTMV003_N00E022_dem.jgw
new file mode 100644
index 0000000..0ba2437
--- /dev/null
+++ b/docs/hybig-output/example2/ASTGTMV003_N00E022_dem.jgw
@@ -0,0 +1,6 @@
+0.00027466239414053543
+0.0
+0.0
+-0.0002746623941405356
+22.00013733119707
+1.1998626688029297
diff --git a/docs/hybig-output/example2/ASTGTMV003_N00E022_dem.jpg b/docs/hybig-output/example2/ASTGTMV003_N00E022_dem.jpg
new file mode 100644
index 0000000..8fdcdf5
Binary files /dev/null and b/docs/hybig-output/example2/ASTGTMV003_N00E022_dem.jpg differ
diff --git a/docs/hybig-output/example2/ASTGTMV003_N00E022_dem.r00c00.jpg.aux.xml b/docs/hybig-output/example2/ASTGTMV003_N00E022_dem.jpg.aux.xml
similarity index 84%
rename from docs/hybig-output/example2/ASTGTMV003_N00E022_dem.r00c00.jpg.aux.xml
rename to docs/hybig-output/example2/ASTGTMV003_N00E022_dem.jpg.aux.xml
index a9f137c..a2883b9 100644
--- a/docs/hybig-output/example2/ASTGTMV003_N00E022_dem.r00c00.jpg.aux.xml
+++ b/docs/hybig-output/example2/ASTGTMV003_N00E022_dem.jpg.aux.xml
@@ -1,6 +1,6 @@
GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]
- 2.2000000000000000e+01, 2.7464982147761604e-04, 0.0000000000000000e+00, 1.0000000000000000e+00, 0.0000000000000000e+00, -2.7464982147761604e-04
+ 2.2000000000000000e+01, 2.7466239414053543e-04, 0.0000000000000000e+00, 1.2000000000000000e+00, 0.0000000000000000e+00, -2.7466239414053559e-04
JPEG
PIXEL
diff --git a/docs/hybig-output/example2/ASTGTMV003_N00E022_dem.r00c00.jgw b/docs/hybig-output/example2/ASTGTMV003_N00E022_dem.r00c00.jgw
deleted file mode 100644
index ada1af9..0000000
--- a/docs/hybig-output/example2/ASTGTMV003_N00E022_dem.r00c00.jgw
+++ /dev/null
@@ -1,6 +0,0 @@
-0.00027464982147761604
-0.0
-0.0
--0.00027464982147761604
-22.00013732491074
-0.9998626750892612
diff --git a/docs/hybig-output/example2/ASTGTMV003_N00E022_dem.r00c00.jpg b/docs/hybig-output/example2/ASTGTMV003_N00E022_dem.r00c00.jpg
deleted file mode 100644
index 265e4c8..0000000
Binary files a/docs/hybig-output/example2/ASTGTMV003_N00E022_dem.r00c00.jpg and /dev/null differ
diff --git a/docs/hybig-output/example3/VCF5KYR_1991001_001_2018224205008.png b/docs/hybig-output/example3/VCF5KYR_1991001_001_2018224205008.png
index 53d5ac9..b3e809c 100644
Binary files a/docs/hybig-output/example3/VCF5KYR_1991001_001_2018224205008.png and b/docs/hybig-output/example3/VCF5KYR_1991001_001_2018224205008.png differ
diff --git a/docs/hybig-output/example4/VCF5KYR_1991001_001_2018224205008.png b/docs/hybig-output/example4/VCF5KYR_1991001_001_2018224205008.png
index 32ad092..406a8ae 100644
Binary files a/docs/hybig-output/example4/VCF5KYR_1991001_001_2018224205008.png and b/docs/hybig-output/example4/VCF5KYR_1991001_001_2018224205008.png differ
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.pgw b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.pgw
new file mode 100644
index 0000000..b37b97e
--- /dev/null
+++ b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.pgw
@@ -0,0 +1,6 @@
+0.005126953125
+0.0
+0.0
+-0.005126953125
+112.0025634765625
+-5.0025634765625
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.png b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.png
new file mode 100644
index 0000000..5741248
Binary files /dev/null and b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.png differ
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.png.aux.xml b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.png.aux.xml
new file mode 100644
index 0000000..9805131
--- /dev/null
+++ b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.png.aux.xml
@@ -0,0 +1,4 @@
+
+ GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]
+ 1.1200000000000000e+02, 5.1269531250000000e-03, 0.0000000000000000e+00, -5.0000000000000000e+00, 0.0000000000000000e+00, -5.1269531250000000e-03
+
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c00.pgw b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c00.pgw
index 46b6743..a8e55db 100644
--- a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c00.pgw
+++ b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c00.pgw
@@ -1,6 +1,6 @@
-0.01
+0.005120702267739576
0.0
0.0
--0.01
--29.995
-69.995
+-0.005120702267739576
+112.00256035113387
+-5.002560351133869
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c00.png b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c00.png
index 770d5e7..5bf1c57 100644
Binary files a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c00.png and b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c00.png differ
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c00.png.aux.xml b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c00.png.aux.xml
index 9327dc6..e6fdee8 100644
--- a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c00.png.aux.xml
+++ b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c00.png.aux.xml
@@ -1,4 +1,4 @@
GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]
- -3.0000000000000000e+01, 1.0000000000000000e-02, 0.0000000000000000e+00, 7.0000000000000000e+01, 0.0000000000000000e+00, -1.0000000000000000e-02
+ 1.1200000000000000e+02, 5.1207022677395757e-03, 0.0000000000000000e+00, -5.0000000000000000e+00, 0.0000000000000000e+00, -5.1207022677395757e-03
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c01.pgw b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c01.pgw
index a97fb8a..e2915dc 100644
--- a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c01.pgw
+++ b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c01.pgw
@@ -1,6 +1,6 @@
-0.01
+0.005120702267739576
0.0
0.0
--0.01
--19.995
-69.995
+-0.005120702267739576
+132.97695683979518
+-5.002560351133869
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c01.png b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c01.png
index cf43faf..5a0456c 100644
Binary files a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c01.png and b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c01.png differ
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c01.png.aux.xml b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c01.png.aux.xml
index 9602c1c..69a8868 100644
--- a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c01.png.aux.xml
+++ b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c01.png.aux.xml
@@ -1,4 +1,4 @@
GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]
- -2.0000000000000000e+01, 1.0000000000000000e-02, 0.0000000000000000e+00, 7.0000000000000000e+01, 0.0000000000000000e+00, -1.0000000000000000e-02
+ 1.3297439648866131e+02, 5.1207022677395757e-03, 0.0000000000000000e+00, -5.0000000000000000e+00, 0.0000000000000000e+00, -5.1207022677395757e-03
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c02.pgw b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c02.pgw
new file mode 100644
index 0000000..ae718d3
--- /dev/null
+++ b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c02.pgw
@@ -0,0 +1,6 @@
+0.005120702267739576
+0.0
+0.0
+-0.005120702267739576
+153.95135332845646
+-5.002560351133869
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c02.png b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c02.png
new file mode 100644
index 0000000..79dcbe4
Binary files /dev/null and b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c02.png differ
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c02.png.aux.xml b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c02.png.aux.xml
new file mode 100644
index 0000000..d503588
--- /dev/null
+++ b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r00c02.png.aux.xml
@@ -0,0 +1,4 @@
+
+ GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]
+ 1.5394879297732260e+02, 5.1207022677395757e-03, 0.0000000000000000e+00, -5.0000000000000000e+00, 0.0000000000000000e+00, -5.1207022677395757e-03
+
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c00.pgw b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c00.pgw
new file mode 100644
index 0000000..d843545
--- /dev/null
+++ b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c00.pgw
@@ -0,0 +1,6 @@
+0.005120702267739576
+0.0
+0.0
+-0.005120702267739576
+112.00256035113387
+-25.97695683979517
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c00.png b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c00.png
new file mode 100644
index 0000000..7504ec6
Binary files /dev/null and b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c00.png differ
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c00.png.aux.xml b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c00.png.aux.xml
new file mode 100644
index 0000000..962f154
--- /dev/null
+++ b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c00.png.aux.xml
@@ -0,0 +1,4 @@
+
+ GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]
+ 1.1200000000000000e+02, 5.1207022677395757e-03, 0.0000000000000000e+00, -2.5974396488661302e+01, 0.0000000000000000e+00, -5.1207022677395757e-03
+
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c01.pgw b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c01.pgw
new file mode 100644
index 0000000..cd38278
--- /dev/null
+++ b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c01.pgw
@@ -0,0 +1,6 @@
+0.005120702267739576
+0.0
+0.0
+-0.005120702267739576
+132.97695683979518
+-25.97695683979517
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c01.png b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c01.png
new file mode 100644
index 0000000..3cdb35f
Binary files /dev/null and b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c01.png differ
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c01.png.aux.xml b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c01.png.aux.xml
new file mode 100644
index 0000000..9aec990
--- /dev/null
+++ b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c01.png.aux.xml
@@ -0,0 +1,4 @@
+
+ GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]
+ 1.3297439648866131e+02, 5.1207022677395757e-03, 0.0000000000000000e+00, -2.5974396488661302e+01, 0.0000000000000000e+00, -5.1207022677395757e-03
+
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c02.pgw b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c02.pgw
new file mode 100644
index 0000000..4a96f2c
--- /dev/null
+++ b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c02.pgw
@@ -0,0 +1,6 @@
+0.005120702267739576
+0.0
+0.0
+-0.005120702267739576
+153.95135332845646
+-25.97695683979517
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c02.png b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c02.png
new file mode 100644
index 0000000..79dcbe4
Binary files /dev/null and b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c02.png differ
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c02.png.aux.xml b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c02.png.aux.xml
new file mode 100644
index 0000000..7c90920
--- /dev/null
+++ b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r01c02.png.aux.xml
@@ -0,0 +1,4 @@
+
+ GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]
+ 1.5394879297732260e+02, 5.1207022677395757e-03, 0.0000000000000000e+00, -2.5974396488661302e+01, 0.0000000000000000e+00, -5.1207022677395757e-03
+
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c00.pgw b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c00.pgw
new file mode 100644
index 0000000..43ff8a9
--- /dev/null
+++ b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c00.pgw
@@ -0,0 +1,6 @@
+0.005120702267739576
+0.0
+0.0
+-0.005120702267739576
+112.00256035113387
+-46.95135332845648
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c00.png b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c00.png
new file mode 100644
index 0000000..098be80
Binary files /dev/null and b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c00.png differ
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c00.png.aux.xml b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c00.png.aux.xml
new file mode 100644
index 0000000..addb072
--- /dev/null
+++ b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c00.png.aux.xml
@@ -0,0 +1,4 @@
+
+ GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]
+ 1.1200000000000000e+02, 5.1207022677395757e-03, 0.0000000000000000e+00, -4.6948792977322604e+01, 0.0000000000000000e+00, -5.1207022677395757e-03
+
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c01.pgw b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c01.pgw
new file mode 100644
index 0000000..06c7d74
--- /dev/null
+++ b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c01.pgw
@@ -0,0 +1,6 @@
+0.005120702267739576
+0.0
+0.0
+-0.005120702267739576
+132.97695683979518
+-46.95135332845648
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c01.png b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c01.png
new file mode 100644
index 0000000..098be80
Binary files /dev/null and b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c01.png differ
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c01.png.aux.xml b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c01.png.aux.xml
new file mode 100644
index 0000000..c7b2e08
--- /dev/null
+++ b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c01.png.aux.xml
@@ -0,0 +1,4 @@
+
+ GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]
+ 1.3297439648866131e+02, 5.1207022677395757e-03, 0.0000000000000000e+00, -4.6948792977322604e+01, 0.0000000000000000e+00, -5.1207022677395757e-03
+
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c02.pgw b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c02.pgw
new file mode 100644
index 0000000..7d69856
--- /dev/null
+++ b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c02.pgw
@@ -0,0 +1,6 @@
+0.005120702267739576
+0.0
+0.0
+-0.005120702267739576
+153.95135332845646
+-46.95135332845648
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c02.png b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c02.png
new file mode 100644
index 0000000..8014212
Binary files /dev/null and b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c02.png differ
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c02.png.aux.xml b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c02.png.aux.xml
new file mode 100644
index 0000000..985b224
--- /dev/null
+++ b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.r02c02.png.aux.xml
@@ -0,0 +1,4 @@
+
+ GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]
+ 1.5394879297732260e+02, 5.1207022677395757e-03, 0.0000000000000000e+00, -4.6948792977322604e+01, 0.0000000000000000e+00, -5.1207022677395757e-03
+
diff --git a/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.txt b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.txt
new file mode 100644
index 0000000..3b3100d
--- /dev/null
+++ b/docs/hybig-output/example5/VCF5KYR_1991001_001_2018224205008.txt
@@ -0,0 +1,9 @@
+/tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r00c00.png, /tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r00c00.pgw, /tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r00c00.png.aux.xml
+/tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r00c01.png, /tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r00c01.pgw, /tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r00c01.png.aux.xml
+/tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r00c02.png, /tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r00c02.pgw, /tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r00c02.png.aux.xml
+/tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r01c00.png, /tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r01c00.pgw, /tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r01c00.png.aux.xml
+/tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r01c01.png, /tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r01c01.pgw, /tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r01c01.png.aux.xml
+/tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r01c02.png, /tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r01c02.pgw, /tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r01c02.png.aux.xml
+/tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r02c00.png, /tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r02c00.pgw, /tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r02c00.png.aux.xml
+/tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r02c01.png, /tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r02c01.pgw, /tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r02c01.png.aux.xml
+/tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r02c02.png, /tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r02c02.pgw, /tmp/tmp3hjwljp7/1e6d8e6a2c90bc1108f8dd03f2e2e7f30e379a984ce287da0e42efe14316c44a.r02c02.png.aux.xml
diff --git a/docs/requirements.txt b/docs/requirements.txt
index 732b90d..a03f723 100644
--- a/docs/requirements.txt
+++ b/docs/requirements.txt
@@ -1,2 +1,2 @@
notebook==7.0.3
-harmony-py==0.4.10
+harmony-py~=0.4.14