{"id":24523551,"url":"https://github.com/kamangir/palisades","last_synced_at":"2025-03-15T14:12:33.731Z","repository":{"id":273607613,"uuid":"920271623","full_name":"kamangir/palisades","owner":"kamangir","description":"🧑🏽‍🚒 Post-Disaster Land Cover Classification.","archived":false,"fork":false,"pushed_at":"2025-03-02T05:06:18.000Z","size":306,"stargazers_count":7,"open_issues_count":2,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-02T06:18:07.663Z","etag":null,"topics":["aws","disaster-response","maxar-open-data","pytorch","qgis"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kamangir.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2025-01-21T21:23:16.000Z","updated_at":"2025-02-07T15:18:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"c64ef1a5-cec4-40e3-98c7-6d6afd060084","html_url":"https://github.com/kamangir/palisades","commit_stats":null,"previous_names":["kamangir/palisades"],"tags_count":0,"template":false,"template_full_name":"kamangir/blue-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamangir%2Fpalisades","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamangir%2Fpalisades/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamangir%2Fpalisades/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamangir%2Fpalisades/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kamangir","download_url":"https://codeload.github.com/kamangir/palisades/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243738984,"owners_count":20340002,"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":["aws","disaster-response","maxar-open-data","pytorch","qgis"],"created_at":"2025-01-22T04:15:48.655Z","updated_at":"2025-03-15T14:12:33.725Z","avatar_url":"https://github.com/kamangir.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🧑🏽‍🚒 `palisades`\n\n🧑🏽‍🚒 Post-disaster land Cover classification using [Semantic Segmentation](https://github.com/kamangir/roofai) on [Maxar Open Data](https://github.com/kamangir/blue-geo/tree/main/blue_geo/catalog/maxar_open_data) acquisitions. \n\n```bash\npip install palisades\n```\n\n```mermaid\ngraph LR\n    palisades_ingest_target[\"palisades\u003cbr\u003eingest -\u003cbr\u003etarget=\u0026lt;target\u0026gt; -\u003cbr\u003epredict - - - -\u003cbr\u003eto=\u0026lt;runner\u0026gt;\"]\n\n    palisades_ingest_query[\"palisades\u003cbr\u003eingest -\u003cbr\u003e\u0026lt;query-object-name\u0026gt; -\u003cbr\u003epredict - - - -\u003cbr\u003eto=\u0026lt;runner\u0026gt;\"]\n\n    palisades_label[\"palisades\u003cbr\u003elabel\u003cbr\u003eoffset=\u0026lt;offset\u0026gt; -\u003cbr\u003e\u0026lt;query-object-name\u0026gt;\"]\n\n    palisades_train[\"palisades\u003cbr\u003etrain -\u003cbr\u003e\u0026lt;query-object-name\u0026gt; -\u003cbr\u003e\u0026lt;dataset-object-name\u0026gt; -\u003cbr\u003e\u0026lt;model-object-name\u0026gt;\"]\n\n    palisades_predict[\"palisades\u003cbr\u003epredict - - -\u003cbr\u003e\u0026lt;model-object-name\u0026gt;\u003cbr\u003e\u0026lt;datacube-id\u0026gt;\u003cbr\u003e\u0026lt;prediction-object-name\u0026gt;\"]\n\n    palisades_buildings_download_footprints[\"palisades\u003cbr\u003ebuildings\u003cbr\u003edownload_footprints -\u003cbr\u003e\u0026lt;input-object-name\u0026gt; -\u003cbr\u003e\u0026lt;output-object-name\u0026gt;\"]\n\n    palisades_buildings_analyze[\"palisades\u003cbr\u003ebuildings\u003cbr\u003eanalyze -\u003cbr\u003e\u0026lt;prediction-object-name\u0026gt;\"]\n\n    palisades_analytics_ingest[\"palisades\u003cbr\u003eanalytics\u003cbr\u003eingest -\u003cbr\u003e\u0026lt;analytics-object-name\u0026gt;\"]\n\n    palisades_analytics_ingest_building[\"palisades\u003cbr\u003eanalytics\u003cbr\u003eingest_building\u003cbr\u003ebuilding=\u0026lt;building-id\u0026gt;\u003cbr\u003e\u0026lt;analytics-object-name\u0026gt;\"]\n\n    target[\"🎯 target\"]:::folder\n    query_object[\"📂 query object\"]:::folder\n    datacube[\"🧊 datacube\"]:::folder\n    dataset_object[\"🏛️ dataset object\"]:::folder\n    model_object[\"🏛️ model object\"]:::folder\n    prediction_object[\"📂 prediction object\"]:::folder\n    analytics_object[\"📂 analytics object\"]:::folder\n\n    query_object --\u003e datacube\n\n    target --\u003e palisades_ingest_target\n    palisades_ingest_target --\u003e palisades_ingest_query\n    palisades_ingest_target --\u003e query_object\n\n    query_object --\u003e palisades_ingest_query\n    palisades_ingest_query --\u003e palisades_predict\n\n    query_object --\u003e palisades_label\n    palisades_label --\u003e datacube\n\n    datacube --\u003e palisades_train\n    query_object --\u003e palisades_train\n    palisades_train --\u003e dataset_object\n    palisades_train --\u003e model_object\n\n    model_object --\u003e palisades_predict\n    datacube --\u003e palisades_predict\n    palisades_predict --\u003e palisades_buildings_download_footprints\n    palisades_predict --\u003e palisades_buildings_analyze\n    palisades_predict --\u003e prediction_object\n\n    prediction_object --\u003e palisades_buildings_download_footprints\n    palisades_buildings_download_footprints --\u003e prediction_object\n\n    datacube --\u003e palisades_buildings_analyze\n    prediction_object --\u003e palisades_buildings_analyze\n    palisades_buildings_analyze --\u003e prediction_object\n\n    prediction_object --\u003e palisades_analytics_ingest\n    palisades_analytics_ingest --\u003e analytics_object\n\n    analytics_object --\u003e palisades_analytics_ingest_building\n    palisades_analytics_ingest_building --\u003e analytics_object\n\n    classDef folder fill:#999,stroke:#333,stroke-width:2px;\n```\n\n\u003cdetails\u003e\n\u003csummary\u003epalisades help\u003c/summary\u003e\n\n```bash\npalisades \\\n\tingest \\\n\t[~download,dryrun] \\\n\t[target=\u003ctarget\u003e | \u003cquery-object-name\u003e] \\\n\t[~ingest | ~copy_template,dryrun,overwrite,scope=\u003cscope\u003e,upload] \\\n\t[predict,count=\u003ccount\u003e,~tag] \\\n\t[device=\u003cdevice\u003e,profile=\u003cprofile\u003e,upload] \\\n\t[-|\u003cmodel-object-name\u003e] \\\n\t[~download_footprints | country_code=\u003ciso-code\u003e,country_name=\u003ccountry-name\u003e,overwrite,source=\u003csource\u003e] \\\n\t[~analyze | buffer=\u003cbuffer\u003e,count=\u003ccount\u003e] \\\n\t[~submit | dryrun,to=\u003crunner\u003e]\n . ingest \u003ctarget\u003e.\n   target: Altadena | Altadena-100 | Altadena-test | Borger | Borger-250 | Borger-test | Brown-Mountain-Truck-Trail | Brown-Mountain-Truck-Trail-all | Brown-Mountain-Truck-Trail-test | LA | LA-250 | LA-test | Noto | Noto-250 | Noto-test | Palisades-Maxar | Palisades-Maxar-100 | Palisades-Maxar-test\n   scope: all + metadata + raster + rgb + rgbx + \u003c.jp2\u003e + \u003c.tif\u003e + \u003c.tiff\u003e\n      all: ALL files.\n      metadata (default): any \u003c 1 MB.\n      raster: all raster.\n      rgb: rgb.\n      rgbx: rgb and what is needed to build rgb.\n      \u003csuffix\u003e: any *\u003csuffix\u003e.\n   device: cpu | cuda\n   profile: FULL | DECENT | QUICK | DEBUG | VALIDATION\n   country-name: for Microsoft, optional, overrides \u003ciso-code\u003e.\n   iso-code: Country Alpha2 ISO code: https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes\n      Canada: CA\n      US: US\n   source: microsoft | osm | google\n   calls: https://github.com/microsoft/building-damage-assessment/blob/main/download_building_footprints.py\n   buffer: in meters.\n   runner: aws_batch | generic | local\n```\n```bash\npalisades \\\n\tlabel \\\n\t[download,offset=\u003coffset\u003e] \\\n\t[~download,dryrun,~QGIS,~rasterize,~sync,upload] \\\n\t[.|\u003cquery-object-name\u003e]\n . label \u003cquery-object-name\u003e.\n```\n```bash\npalisades \\\n\ttrain \\\n\t[dryrun,~download,review] \\\n\t[.|\u003cquery-object-name\u003e] \\\n\t[count=\u003c10000\u003e,dryrun,upload] \\\n\t[-|\u003cdataset-object-name\u003e] \\\n\t[device=\u003cdevice\u003e,dryrun,profile=\u003cprofile\u003e,upload,epochs=\u003c5\u003e] \\\n\t[-|\u003cmodel-object-name\u003e]\n . train palisades.\n   device: cpu | cuda\n   profile: FULL | DECENT | QUICK | DEBUG | VALIDATION\n```\n```bash\npalisades \\\n\tpredict \\\n\t[~tag] \\\n\t[~ingest | ~copy_template,dryrun,overwrite,scope=\u003cscope\u003e,upload] \\\n\t[device=\u003cdevice\u003e,profile=\u003cprofile\u003e,upload] \\\n\t[-|\u003cmodel-object-name\u003e] \\\n\t[.|\u003cdatacube-id\u003e] \\\n\t[-|\u003cprediction-object-name\u003e] \\\n\t[~download_footprints | country_code=\u003ciso-code\u003e,country_name=\u003ccountry-name\u003e,overwrite,source=\u003csource\u003e] \\\n\t[~analyze | buffer=\u003cbuffer\u003e,count=\u003ccount\u003e]\n . \u003cdatacube-id\u003e -\u003cmodel-object-name\u003e-\u003e \u003cprediction-object-name\u003e\n   device: cpu | cuda\n   profile: FULL | DECENT | QUICK | DEBUG | VALIDATION\n   country-name: for Microsoft, optional, overrides \u003ciso-code\u003e.\n   iso-code: Country Alpha2 ISO code: https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes\n      Canada: CA\n      US: US\n   source: microsoft | osm | google\n   calls: https://github.com/microsoft/building-damage-assessment/blob/main/download_building_footprints.py\n   buffer: in meters.\n```\n```bash\npalisades \\\n\tanalytics \\\n\tingest \\\n\t[acq_count=\u003c-1\u003e,building_count=\u003c-1\u003e,damage=\u003c0.1\u003e,dryrun,upload] \\\n\t[-|\u003cobject-name\u003e]\n . ingest analytics.\npalisades \\\n\tanalytics \\\n\tingest_building \\\n\t[acq_count=\u003c-1\u003e,building_count=\u003c-1\u003e,building=\u003cbuilding-id\u003e,deep,~download,dryrun,upload] \\\n\t[.|\u003cobject-name\u003e]\n . ingest building analytics.\n```\n\n\u003c/details\u003e\n\n|   |   |   |\n| --- | --- | --- |\n| [`STAC Catalog: Maxar Open Data`](https://github.com/kamangir/blue-geo/tree/main/blue_geo/catalog/maxar_open_data) [![image](https://github.com/kamangir/assets/blob/main/blue-geo/Maxar-Open-Datacube.png?raw=true)](https://github.com/kamangir/blue-geo/tree/main/blue_geo/catalog/maxar_open_data) [\"Satellite imagery for select sudden onset major crisis events\"](https://www.maxar.com/open-data/) | [`Vision Algo: Semantic Segmentation`](https://github.com/kamangir/palisades/blob/main/palisades/docs/step-by-step.md) [![image](https://github.com/kamangir/assets/raw/main/palisades/prediction-lres.png?raw=true)](https://github.com/kamangir/palisades/blob/main/palisades/docs/step-by-step.md) [segmentation_models.pytorch](https://github.com/qubvel-org/segmentation_models.pytorch) | [`Building Damage Analysis`](https://github.com/kamangir/palisades/blob/main/palisades/docs/building-analysis.md) [![image](https://github.com/kamangir/assets/blob/main/palisades/building-analysis-5.png?raw=true)](https://github.com/kamangir/palisades/blob/main/palisades/docs/building-analysis.md) using Microsoft, OSM, and Google footprints through [microsoft/building-damage-assessment](https://github.com/microsoft/building-damage-assessment) |\n| [`Analytics`](https://github.com/kamangir/palisades/blob/main/palisades/docs/damage-analytics.md) [![image](https://github.com/kamangir/assets/blob/main/palisades/palisades-analytics-2025-01-26-17-13-55-jl0par/thumbnail-035521-377202-palisades-analytics-2025-01-26-17-13-55-jl0par.gif?raw=true)](https://github.com/kamangir/palisades/blob/main/palisades/docs/damage-analytics.md) per-building multi-observation damage analytics. | [`Los Angeles Wild Fires, Jan 25`](https://github.com/kamangir/palisades/blob/main/palisades/docs/WildFires-LosAngeles-Jan-2025.md) [![image](https://github.com/kamangir/assets/blob/main/palisades/palisades-analytics-2025-01-29-18-08-11-wcq26v/QGIS.png?raw=true)](https://github.com/kamangir/palisades/blob/main/palisades/docs/WildFires-LosAngeles-Jan-2025.md) `2,685.88` sq. km = `1,148,351` buildings processed -\u003e `10,133` with fire damage found. |  |\n\n## Acknowledgments\n \n1. The concept and workflow of this tool is heavily affected by [microsoft/building-damage-assessment](https://github.com/microsoft/building-damage-assessment).\n2. `palisades buildings download_footprints` calls [`download_building_footprints.py`](https://github.com/microsoft/building-damage-assessment/blob/main/download_building_footprints.py).\n3. `palisades buildings analyze` is based on [`merge_with_building_footprints.py`](https://github.com/microsoft/building-damage-assessment/blob/main/merge_with_building_footprints.py).\n4. Through [satellite-image-deep-learning](https://www.satellite-image-deep-learning.com/p/building-damage-assessment).\n\n---\n\n\n[![pylint](https://github.com/kamangir/palisades/actions/workflows/pylint.yml/badge.svg)](https://github.com/kamangir/palisades/actions/workflows/pylint.yml) [![pytest](https://github.com/kamangir/palisades/actions/workflows/pytest.yml/badge.svg)](https://github.com/kamangir/palisades/actions/workflows/pytest.yml) [![bashtest](https://github.com/kamangir/palisades/actions/workflows/bashtest.yml/badge.svg)](https://github.com/kamangir/palisades/actions/workflows/bashtest.yml) [![PyPI version](https://img.shields.io/pypi/v/palisades.svg)](https://pypi.org/project/palisades/) [![PyPI - Downloads](https://img.shields.io/pypi/dd/palisades)](https://pypistats.org/packages/palisades)\n\nbuilt by 🌀 [`blue_options-4.227.1`](https://github.com/kamangir/awesome-bash-cli), based on 🧑🏽‍🚒 [`palisades-4.345.1`](https://github.com/kamangir/palisades).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkamangir%2Fpalisades","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkamangir%2Fpalisades","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkamangir%2Fpalisades/lists"}