{"id":13734927,"url":"https://github.com/developmentseed/rio-viz","last_synced_at":"2025-07-08T01:10:40.506Z","repository":{"id":35001477,"uuid":"183089264","full_name":"developmentseed/rio-viz","owner":"developmentseed","description":"Visualize Cloud Optimized GeoTIFF in browser","archived":false,"fork":false,"pushed_at":"2025-04-01T17:28:09.000Z","size":8314,"stargazers_count":160,"open_issues_count":3,"forks_count":20,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-07-05T00:06:28.537Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/developmentseed.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-04-23T20:15:55.000Z","updated_at":"2025-05-28T08:03:47.000Z","dependencies_parsed_at":"2024-08-03T03:04:17.254Z","dependency_job_id":"22287de8-0871-420e-8a7a-48798833239f","html_url":"https://github.com/developmentseed/rio-viz","commit_stats":{"total_commits":105,"total_committers":3,"mean_commits":35.0,"dds":0.01904761904761909,"last_synced_commit":"e9ca7132fdce21fbb47ef3ddc5e6b22ccebbc762"},"previous_names":[],"tags_count":42,"template":false,"template_full_name":null,"purl":"pkg:github/developmentseed/rio-viz","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/developmentseed%2Frio-viz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/developmentseed%2Frio-viz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/developmentseed%2Frio-viz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/developmentseed%2Frio-viz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/developmentseed","download_url":"https://codeload.github.com/developmentseed/rio-viz/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/developmentseed%2Frio-viz/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264171942,"owners_count":23567788,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T03:01:01.281Z","updated_at":"2025-07-08T01:10:40.484Z","avatar_url":"https://github.com/developmentseed.png","language":"HTML","funding_links":[],"categories":["`Python` processing of optical imagery (non deep learning)"],"sub_categories":["Cloud Native Geospatial"],"readme":"# rio-viz\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/10407788/60689165-78be7780-9e88-11e9-84b9-9a3602156ef2.jpg\" style=\"max-width: 500px;\"/\u003e\n  \u003cp align=\"center\"\u003eA Rasterio plugin to visualize Cloud Optimized GeoTIFF in browser.\u003c/p\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/developmentseed/rio-viz/actions?query=workflow%3ACI\" target=\"_blank\"\u003e\n      \u003cimg src=\"https://github.com/developmentseed/rio-viz/workflows/CI/badge.svg\" alt=\"Test\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://codecov.io/gh/developmentseed/rio-viz\" target=\"_blank\"\u003e\n      \u003cimg src=\"https://codecov.io/gh/developmentseed/rio-viz/branch/main/graph/badge.svg\" alt=\"Coverage\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/rio-viz\" target=\"_blank\"\u003e\n      \u003cimg src=\"https://img.shields.io/pypi/v/rio-viz?color=%2334D058\u0026label=pypi%20package\" alt=\"Package version\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/developmentseed/rio-viz/blob/main/LICENSE\" target=\"_blank\"\u003e\n      \u003cimg src=\"https://img.shields.io/github/license/developmentseed/rio-viz.svg\" alt=\"Downloads\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\n## Install\n\nYou can install rio-viz using pip\n\n```bash\n$ pip install rio-viz\n```\nwith 3d feature\n\n```bash\n# 3d visualization features is optional\n$ pip install -U pip\n$ pip install rio-viz[\"mvt\"]\n```\n\nBuild from source\n\n```bash\n$ git clone https://github.com/developmentseed/rio-viz.git\n$ cd rio-viz\n$ pip install -e .\n```\n\n## CLI\n\n```bash\n$ rio viz --help\nUsage: rio viz [OPTIONS] SRC_PATH\n\n  Rasterio Viz cli.\n\nOptions:\n  --nodata NUMBER|nan  Set nodata masking values for input dataset.\n  --minzoom INTEGER    Overwrite minzoom\n  --maxzoom INTEGER    Overwrite maxzoom\n  --port INTEGER       Webserver port (default: 8080)\n  --host TEXT          Webserver host url (default: 127.0.0.1)\n  --no-check           Ignore COG validation\n  --reader TEXT        rio-tiler Reader (BaseReader). Default is `rio_tiler.io.COGReader`\n  --layers TEXT        limit to specific layers (only used for MultiBand and MultiBase Readers). (e.g --layers b1 --layers b2).\n  --server-only        Launch API without opening the rio-viz web-page.\n  --config NAME=VALUE  GDAL configuration options.\n  --help               Show this message and exit.\n```\n\n## Multi Reader support\n\nrio-viz support multiple/custom reader as long they are subclass of `rio_tiler.io.base.BaseReader`.\n\n```bash\n# Multi Files as Bands\n$ rio viz \"cog_band{2,3,4}.tif\" --reader rio_viz.io.MultiFilesBandsReader\n\n# Simple Mosaic\n$ rio viz \"tests/fixtures/mosaic_cog{1,2}.tif\" --reader rio_viz.io.MosaicReader\n\n# MultiBandReader\n# Landsat 8 - rio-tiler-pds\n# We use `--layers` to limit the number of bands\n$ rio viz LC08_L1TP_013031_20130930_20170308_01_T1 \\\n  --reader rio_tiler_pds.landsat.aws.landsat8.L8Reader \\\n  --layers B1,B2 \\\n  --config GDAL_DISABLE_READDIR_ON_OPEN=FALSE \\\n  --config CPL_VSIL_CURL_ALLOWED_EXTENSIONS=\".TIF,.ovr\"\n\n# MultiBaseReader\n# We use `--layers` to limit the number of assets\nrio viz https://earth-search.aws.element84.com/v0/collections/sentinel-s2-l2a-cogs/items/S2A_34SGA_20200318_0_L2A \\\n  --reader rio_tiler.io.STACReader \\\n  --layers B04,B03,B02\n```\n\n## RestAPI\n\nWhen launching rio-viz, the application will create a FastAPI application to access and read the data you want. By default the CLI will open a web-page for you to explore your file but you can use `--server-only` option to ignore this.\n\n```bash\n$ rio viz my.tif --server-only\n\n# In another console\n$ curl http://127.0.0.1:8080/info | jq\n{\n  \"bounds\": [6.608576517072109, 51.270642883468895, 11.649386808679436, 53.89267160832534],\n  \"band_metadata\": [...],\n  \"band_descriptions\": [...],\n  \"dtype\": \"uint8\",\n  \"nodata_type\": \"Mask\",\n  \"colorinterp\": [\n    \"red\",\n    \"green\",\n    \"blue\"\n  ]\n}\n```\n\nYou can see the full API documentation over `http://127.0.0.1:8080/docs`\n\n![API documentation](https://user-images.githubusercontent.com/10407788/99135093-a7a53b80-25ee-11eb-98ba-0ce932775791.png)\n\n## In Notebook environment\n\nThanks to the awesome [server-thread](https://github.com/banesullivan/server-thread) we can use `rio-viz` application in Notebook environment.\n\n```python\nimport time\n\nimport httpx\nfrom folium import Map, TileLayer\n\nfrom rio_viz.app import Client\n\n# Create rio-viz Client (using server-thread to launch backgroud task)\nclient = Client(\"https://data.geo.admin.ch/ch.swisstopo.swissalti3d/swissalti3d_2019_2573-1085/swissalti3d_2019_2573-1085_0.5_2056_5728.tif\")\n\n# Gives some time for the server to setup\ntime.sleep(1)\n\nr = httpx.get(\n    f\"{client.endpoint}/tilejson.json\",\n    params = {\n        \"rescale\": \"1600,2000\",  # from the info endpoint\n        \"colormap_name\": \"terrain\",\n    }\n).json()\n\nbounds = r[\"bounds\"]\nm = Map(\n    location=((bounds[1] + bounds[3]) / 2,(bounds[0] + bounds[2]) / 2),\n    zoom_start=r[\"minzoom\"]\n)\n\naod_layer = TileLayer(\n    tiles=r[\"tiles\"][0],\n    opacity=1,\n    attr=\"Yo!!\"\n)\naod_layer.add_to(m)\nm\n```\n![](https://user-images.githubusercontent.com/10407788/181458278-9ae197ae-5a30-469d-834f-36c6d8a57395.jpg)\n\n\n## 3D (Experimental)\n\nrio-viz supports Mapbox VectorTiles encoding from a raster array. This feature was added to visualize sparse data stored as raster but will also work for dense array. This is highly experimental and might be slow to render in certain browser and/or for big rasters.\n\n![](https://user-images.githubusercontent.com/10407788/56853984-4713b800-68fd-11e9-86a2-efbb041daeb0.gif)\n\n## Contribution \u0026 Development\n\nSee [CONTRIBUTING.md](https://github.com/developmentseed/rio-viz/blob/main/CONTRIBUTING.md)\n\n## Authors\n\nCreated by [Development Seed](\u003chttp://developmentseed.org\u003e)\n\n## Changes\n\nSee [CHANGES.md](https://github.com/developmentseed/rio-viz/blob/main/CHANGES.md).\n\n## License\n\nSee [LICENSE.txt](https://github.com/developmentseed/rio-viz/blob/main/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevelopmentseed%2Frio-viz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevelopmentseed%2Frio-viz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevelopmentseed%2Frio-viz/lists"}