From 6e6223cd5e423c5cac4ee3b52d53b660bd0e3ba4 Mon Sep 17 00:00:00 2001 From: Lucas Merrill Brown Date: Tue, 4 Oct 2022 18:08:47 -0400 Subject: [PATCH] Issue 105: Configure and run `black` and other pre-commit hooks (clean branch) (#1962) * Configure and run `black` and other pre-commit hooks Co-authored-by: matt bowen --- .github/CODEOWNERS | 1 - .github/ISSUE_TEMPLATE/dataset_request.yaml | 20 ++--- .../ISSUE_TEMPLATE/pull_request_template.md | 2 +- .github/workflows/deploy_be_staging.yml | 6 +- .github/workflows/deploy_fe_staging.yml | 6 +- .github/workflows/e2e.yml | 4 +- .github/workflows/generate-census.yml | 2 +- .github/workflows/main.yml | 4 +- CODE_OF_CONDUCT-es.md | 1 - CODE_OF_CONDUCT.md | 2 +- COMMUNITY_GUIDELINES.md | 2 +- CONTRIBUTING-es.md | 1 - INSTALLATION.md | 4 +- LICENSE-es.md | 1 - README-es.md | 4 +- README.md | 14 ++-- data/data-pipeline/.pre-commit-config.yaml | 39 ++++++++++ data/data-pipeline/README.md | 76 ++++++++++++++++--- .../data_pipeline/application.py | 34 ++++----- .../data_pipeline/comparison_tool/README.md | 48 ++++++------ .../comparison_tool/run_all_comparisons.sh | 2 +- .../comparison_tool/src/donut_hole_dacs.yaml | 2 +- .../src/run_tract_comparison.py | 8 +- .../src/tract_comparison__template.ipynb | 55 ++++++++------ .../comparison_tool/src/utils.py | 4 +- data/data-pipeline/data_pipeline/config.py | 3 +- .../field_descriptions_for_codebook.yml | 6 +- .../content/config/scratch.ipynb | 4 +- .../content/schemas/download_schemas.py | 6 +- data/data-pipeline/data_pipeline/etl/base.py | 11 +-- .../data-pipeline/data_pipeline/etl/runner.py | 2 +- .../etl/score/config/datasets.yml | 48 ++++++------ .../data_pipeline/etl/score/constants.py | 3 +- .../data_pipeline/etl/score/etl_score.py | 27 +++---- .../data_pipeline/etl/score/etl_score_geo.py | 20 ++--- .../data_pipeline/etl/score/etl_score_post.py | 34 ++++----- .../data_pipeline/etl/score/etl_utils.py | 23 +++--- .../etl/score/schemas/datasets.py | 6 +- .../data_pipeline/etl/score/tests/conftest.py | 3 +- .../tests/sample_data/state_data_initial.csv | 2 +- .../etl/score/tests/test_etl_utils.py | 5 +- .../etl/score/tests/test_score_post.py | 7 +- .../etl/sources/calenviroscreen/etl.py | 3 +- .../etl/sources/cdc_life_expectancy/etl.py | 8 +- .../etl/sources/cdc_places/etl.py | 8 +- .../etl/sources/cdc_svi_index/README.md | 4 +- .../etl/sources/cdc_svi_index/etl.py | 5 +- .../data_pipeline/etl/sources/census/etl.py | 6 +- .../etl/sources/census/etl_utils.py | 12 ++- .../etl/sources/census_acs/etl.py | 16 ++-- .../etl/sources/census_acs/etl_imputations.py | 9 ++- .../etl/sources/census_acs/etl_utils.py | 3 +- .../etl/sources/census_acs_2010/etl.py | 3 +- .../sources/census_acs_median_income/etl.py | 9 ++- .../etl/sources/census_decennial/etl.py | 9 +-- .../sources/child_opportunity_index/etl.py | 5 +- .../etl/sources/doe_energy_burden/etl.py | 5 +- .../sources/dot_travel_composite/README.md | 4 +- .../etl/sources/dot_travel_composite/etl.py | 7 +- .../etl/sources/eamlis/README.md | 2 +- .../data_pipeline/etl/sources/eamlis/etl.py | 5 +- .../data_pipeline/etl/sources/ejscreen/etl.py | 4 +- .../sources/ejscreen_areas_of_concern/etl.py | 2 - .../etl.py | 5 +- .../data_pipeline/etl/sources/epa_rsei/etl.py | 5 +- .../etl/sources/fsf_flood_risk/README.md | 2 +- .../etl/sources/fsf_flood_risk/etl.py | 5 +- .../etl/sources/fsf_wildfire_risk/README.md | 2 +- .../etl/sources/fsf_wildfire_risk/etl.py | 5 +- .../data_pipeline/etl/sources/geo_utils.py | 5 +- .../data_pipeline/etl/sources/geocorr/etl.py | 10 +-- .../etl/sources/historic_redlining/etl.py | 6 +- .../sources/housing_and_transportation/etl.py | 6 +- .../etl/sources/hud_housing/etl.py | 3 +- .../etl/sources/hud_recap/etl.py | 3 +- .../etl/sources/mapping_for_ej/etl.py | 10 +-- .../data/holc_grades_manually_mapped.csv | 2 +- .../etl/sources/mapping_inequality/etl.py | 5 +- .../etl/sources/maryland_ejscreen/README.md | 4 +- .../etl/sources/maryland_ejscreen/etl.py | 8 +- .../etl/sources/michigan_ejscreen/README.md | 2 +- .../etl/sources/michigan_ejscreen/etl.py | 7 +- .../etl/sources/national_risk_index/etl.py | 5 +- .../sources/nlcd_nature_deprived/README.md | 6 +- .../etl/sources/nlcd_nature_deprived/etl.py | 5 +- .../etl/sources/persistent_poverty/etl.py | 11 ++- .../data_pipeline/etl/sources/tribal/etl.py | 5 +- .../etl/sources/tribal/etl_utils.py | 9 +-- .../etl/sources/tribal_overlap/etl.py | 11 ++- .../etl/sources/us_army_fuds/etl.py | 12 +-- .../ipython/agricultural_loss_indicator.ipynb | 24 ++++-- .../ipython/check_tribal_count.ipynb | 13 +++- .../compare_tiles_and_geoJson_files.ipynb | 15 ++-- .../data_pipeline/ipython/county_lookup.ipynb | 2 +- .../experiment_4_weighting/health_scores.py | 3 - .../ipython/explore_adjacency.ipynb | 11 ++- .../ipython/explore_eamlis.ipynb | 3 +- .../ipython/generate_fuds_test_data.ipynb | 24 ++++-- .../ipython/geojson_compare_tiles.ipynb | 37 +++++---- .../ipython/geopandas_speed_test.ipynb | 12 +-- .../ipython/tribal_and_tracts_overlap.ipynb | 4 +- .../score/adding_variables_to_score.md | 6 +- .../data_pipeline/score/score_a.py | 5 +- .../data_pipeline/score/score_b.py | 5 +- .../data_pipeline/score/score_c.py | 4 +- .../data_pipeline/score/score_d.py | 5 +- .../data_pipeline/score/score_f.py | 5 +- .../data_pipeline/score/score_g.py | 5 +- .../data_pipeline/score/score_h.py | 5 +- .../data_pipeline/score/score_i.py | 5 +- .../data_pipeline/score/score_k.py | 5 +- .../data_pipeline/score/score_l.py | 3 +- .../data_pipeline/score/score_m.py | 6 +- .../data_pipeline/score/score_narwhal.py | 8 +- .../data_pipeline/score/score_runner.py | 1 - .../data_pipeline/score/utils.py | 8 +- .../data_pipeline/tests/conftest.py | 1 - .../data_pipeline/tests/score/fixtures.py | 2 +- .../tests/score/test_calculation.py | 4 +- .../data_pipeline/tests/score/test_output.py | 49 ++++++------ .../tests/score/test_score_narwhal_methods.py | 3 +- .../tests/score/test_tiles_smoketests.py | 10 ++- .../tests/score/test_utils/test_adjacency.py | 10 +-- .../sources/cdc_life_expectancy/test_etl.py | 1 + .../tests/sources/cdc_places/test_etl.py | 3 +- .../sources/doe_energy_burden/test_etl.py | 4 +- .../sources/dot_travel_composite/test_etl.py | 3 +- .../tests/sources/eamlis/test_etl.py | 8 +- .../tests/sources/ejscreen/test_etl.py | 3 +- .../tests/sources/example/etl.py | 5 +- .../tests/sources/example/test_etl.py | 17 ++--- .../tests/sources/fsf_flood_risk/test_etl.py | 3 +- .../sources/fsf_wildfire_risk/test_etl.py | 3 +- .../tests/sources/geocorr/test_etl.py | 3 +- .../sources/historic_redlining/test_etl.py | 3 +- .../tests/sources/hud_housing/test_etl.py | 3 +- .../sources/national_risk_index/test_etl.py | 2 +- .../sources/nlcd_nature_deprived/test_etl.py | 3 +- .../sources/persistent_poverty/test_etl.py | 3 +- .../tests/sources/test_geo_utils.py | 3 +- .../sources/us_army_fuds/data/fuds.geojson | 2 +- .../tests/sources/us_army_fuds/test_etl.py | 8 +- .../data_pipeline/tests/test_etl.py | 3 +- .../data_pipeline/tile/generate.py | 3 +- data/data-pipeline/data_pipeline/utils.py | 22 +++--- data/data-pipeline/pyproject.toml | 2 + docker-compose.yml | 14 ++-- docs/architecture/architecture-mmd.svg | 2 +- docs/architecture/architecture.mmd | 4 +- .../geodata-pipeline-arch-mmd.svg | 2 +- docs/architecture/geodata-pipeline-arch.mmd | 4 +- .../0002-files/AccessibilityComparison.tsv | 2 +- docs/decisions/0002-files/Highways.csv | 2 +- docs/decisions/0002-files/Maryland.csv | 2 +- docs/decisions/0003-files/adr_process-mmd.svg | 2 +- docs/decisions/0003-files/adr_process.mmd | 4 +- docs/decisions/0004-client-side-framework.md | 4 +- docs/decisions/0005-hosting.md | 11 ++- docs/decisions/0006-files/adr_diagram-mmd.svg | 2 +- docs/decisions/0006-files/adr_diagram.mmd | 4 +- docs/glossary.md | 4 +- docs/operations/METHODOLOGY_CHANGE_PROCESS.md | 2 +- 162 files changed, 716 insertions(+), 602 deletions(-) create mode 100644 data/data-pipeline/.pre-commit-config.yaml diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index c7b23bb0..b4ace2f3 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,2 +1 @@ * @esfoobar-usds @vim-usds @emma-nechamkin @mattbowen-usds - diff --git a/.github/ISSUE_TEMPLATE/dataset_request.yaml b/.github/ISSUE_TEMPLATE/dataset_request.yaml index 68941d3a..95e4236b 100644 --- a/.github/ISSUE_TEMPLATE/dataset_request.yaml +++ b/.github/ISSUE_TEMPLATE/dataset_request.yaml @@ -56,7 +56,7 @@ body: id: other-datasource-type attributes: label: If "other" above, please specify - description: If you have selected "other" above, please give as much detail as you can as to where this data can live + description: If you have selected "other" above, please give as much detail as you can as to where this data can live placeholder: www.example.com and www.example2.com validations: required: false @@ -110,14 +110,14 @@ body: attributes: label: Known data quality issues description: Please describe any data quality issues you know about with this dataset. - placeholder: Limited accuracy in rural areas, etc. + placeholder: Limited accuracy in rural areas, etc. validations: - required: false + required: false - type: input id: geographic-coverage attributes: label: What is the geographic coverage (in percent) of this dataset - description: If known, provide an estimate of the coverage of this dataset vis-a-vis the full United States + description: If known, provide an estimate of the coverage of this dataset vis-a-vis the full United States placeholder: 90% validations: required: false @@ -126,9 +126,9 @@ body: attributes: label: Description of geographic coverage estimate description: (If relevant) Please explain your reasoning behind the above estimate of geographic coverage - placeholder: e.g. Missing information for Puerto Rico, etc. + placeholder: e.g. Missing information for Puerto Rico, etc. validations: - required: false + required: false - type: input id: last-updated-date attributes: @@ -151,10 +151,10 @@ body: id: link-to-documentation attributes: label: Link to more documentation - description: Please provide a link where one can find additional information + description: Please provide a link where one can find additional information placeholder: www.example.com validations: - required: true + required: true - type: dropdown id: can-go-in-cloud attributes: @@ -167,8 +167,8 @@ body: - type: textarea id: additional-information attributes: - label: Additional Information + label: Additional Information description: Please provide any additional information you have about this dataset - placeholder: e.g. Missing information for Puerto Rico, etc. + placeholder: e.g. Missing information for Puerto Rico, etc. validations: required: false diff --git a/.github/ISSUE_TEMPLATE/pull_request_template.md b/.github/ISSUE_TEMPLATE/pull_request_template.md index 55e0e4c5..2b1251c9 100644 --- a/.github/ISSUE_TEMPLATE/pull_request_template.md +++ b/.github/ISSUE_TEMPLATE/pull_request_template.md @@ -19,4 +19,4 @@ Fixes # (issue number) - [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes -- [ ] Any dependent changes have been merged and published in downstream modules \ No newline at end of file +- [ ] Any dependent changes have been merged and published in downstream modules diff --git a/.github/workflows/deploy_be_staging.yml b/.github/workflows/deploy_be_staging.yml index d33fe9e3..a79df8e4 100644 --- a/.github/workflows/deploy_be_staging.yml +++ b/.github/workflows/deploy_be_staging.yml @@ -79,8 +79,8 @@ jobs: with: # Deploy to S3 for the Staging URL message: | - ** Score Deployed! ** - Find it here: + ** Score Deployed! ** + Find it here: - Score Full usa.csv: https://justice40-data.s3.amazonaws.com/data-pipeline-staging/${{env.PR_NUMBER}}/${{env.SHA_NUMBER}}/data/score/csv/full/usa.csv - Download Zip Packet: https://justice40-data.s3.amazonaws.com/data-pipeline-staging/${{env.PR_NUMBER}}/${{env.SHA_NUMBER}}/data/score/downloadable/Screening_Tool_Data.zip repo-token: ${{ secrets.GITHUB_TOKEN }} @@ -116,7 +116,7 @@ jobs: with: # Deploy to S3 for the staging URL message: | - ** Map Deployed! ** + ** Map Deployed! ** Map with Staging Backend: https://screeningtool.geoplatform.gov/en?flags=stage_hash=${{env.PR_NUMBER}}/${{env.SHA_NUMBER}} Find tiles here: https://justice40-data.s3.amazonaws.com/data-pipeline-staging/${{env.PR_NUMBER}}/${{env.SHA_NUMBER}}/data/score/tiles repo-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/deploy_fe_staging.yml b/.github/workflows/deploy_fe_staging.yml index 0ddc1f86..9976e528 100644 --- a/.github/workflows/deploy_fe_staging.yml +++ b/.github/workflows/deploy_fe_staging.yml @@ -93,7 +93,7 @@ jobs: with: # Deploy to S3 for the staging URL message: | - **🚢 Here is the frontend staging link: 🚢** + **🚢 Here is the frontend staging link: 🚢** Find it here: http://usds-geoplatform-justice40-website.s3-website-us-east-1.amazonaws.com/justice40-tool/${{env.DESTINATION_FOLDER}}/en/ ! repo-token: ${{ secrets.GITHUB_TOKEN }} repo-token-user-login: "github-actions[bot]" # The user.login for temporary GitHub tokens @@ -108,9 +108,9 @@ jobs: uses: mshick/add-pr-comment@v1 with: message: | - ** 👋 Attention translators!! 👋 ** + ** 👋 Attention translators!! 👋 ** Copy changes have resulted in a new en.json file. Please download en.json file and send to translators: https://github.com/usds/justice40-tool/blob/${{env.COMMIT_HASH}}/client/src/intl/en.json repo-token: ${{ secrets.GITHUB_TOKEN }} repo-token-user-login: "github-actions[bot]" # The user.login for temporary GitHub tokens allow-repeats: true - if: contains(steps.changed-files.outputs.modified_files, 'client/src/intl/en.json') \ No newline at end of file + if: contains(steps.changed-files.outputs.modified_files, 'client/src/intl/en.json') diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index cd5aafea..cceff8ee 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -10,7 +10,7 @@ on: schedule: # runs tests every day at 12am ET (4am UTC): - cron: '0 4 * * *' -jobs: +jobs: nightly: runs-on: ubuntu-20.04 env: @@ -25,4 +25,4 @@ jobs: start: npm start wait-on: 'http://localhost:8000' # To run only specific spec/tests: - # spec: cypress/e2e/downloadPacket.spec.js \ No newline at end of file + # spec: cypress/e2e/downloadPacket.spec.js diff --git a/.github/workflows/generate-census.yml b/.github/workflows/generate-census.yml index 4820c3e7..a15240be 100644 --- a/.github/workflows/generate-census.yml +++ b/.github/workflows/generate-census.yml @@ -1,5 +1,5 @@ name: Generate Census -on: +on: workflow_dispatch: inputs: confirm-action: diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c07be441..05a3146e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -9,11 +9,11 @@ on: workflow_dispatch: inputs: logLevel: - description: 'Log level' + description: 'Log level' required: true default: 'warning' tags: - description: 'Ping test' + description: 'Ping test' jobs: sitePingCheck: name: Slack Notification diff --git a/CODE_OF_CONDUCT-es.md b/CODE_OF_CONDUCT-es.md index e2f8da54..a1585082 100644 --- a/CODE_OF_CONDUCT-es.md +++ b/CODE_OF_CONDUCT-es.md @@ -13,4 +13,3 @@ Los mantenedores del proyecto tienen el derecho y la obligación de eliminar, ed Los casos de abuso, acoso o de otro comportamiento inaceptable se pueden denunciar abriendo un problema o contactando con uno o más de los mantenedores del proyecto en justice40open@usds.gov. Este Código de conducta es una adaptación de la versión 1.0.0 del Convenio del colaborador ([Contributor Covenant](http://contributor-covenant.org), *en inglés*) disponible en el sitio http://contributor-covenant.org/version/1/0/0/ *(en inglés)*. - diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index aeb28c98..31e75075 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -12,4 +12,4 @@ Project maintainers have the right and responsibility to remove, edit, or reject Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers at justice40open@usds.gov. -This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.0.0, available at [http://contributor-covenant.org/version/1/0/0/](http://contributor-covenant.org/version/1/0/0/) \ No newline at end of file +This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.0.0, available at [http://contributor-covenant.org/version/1/0/0/](http://contributor-covenant.org/version/1/0/0/) diff --git a/COMMUNITY_GUIDELINES.md b/COMMUNITY_GUIDELINES.md index 4b398c81..a4b3cfc5 100644 --- a/COMMUNITY_GUIDELINES.md +++ b/COMMUNITY_GUIDELINES.md @@ -32,4 +32,4 @@ When participating in Justice40 open source community conversations and spaces, - Take space and give space. We strive to create an equitable environment in which all are welcome and able to participate. We hope individuals feel comfortable voicing their opinions and providing contributions and will do our best to recognize and make space for individuals who may be struggling to find space here. Likewise, we expect individuals to recognize when they are taking up significant space and take a step back to allow room for others. - Be present when joining synchronous conversations such as our community chat. Why be here if you're not going to _be here_? - Be respectful. -- Default to positive. Assume others' contributions are legitimate and valuable and that they are made with good intention. \ No newline at end of file +- Default to positive. Assume others' contributions are legitimate and valuable and that they are made with good intention. diff --git a/CONTRIBUTING-es.md b/CONTRIBUTING-es.md index 989fa384..f7a4ec59 100644 --- a/CONTRIBUTING-es.md +++ b/CONTRIBUTING-es.md @@ -43,4 +43,3 @@ Si desea colaborar con alguna parte del código base, bifurque el repositorio si * Al menos un revisor autorizado debe aprobar la confirmación (en [CODEOWNERS](https://github.com/usds/justice40-tool/tree/main/.github/CODEOWNERS), en inglés, consulte la lista más reciente de estos revisores). * Todas las verificaciones de estado obligatorias deben ser aprobadas. Si hay un desacuerdo importante entre los integrantes del equipo, se organizará una reunión con el fin de determinar el plan de acción para la solicitud de incorporación de cambios. - diff --git a/INSTALLATION.md b/INSTALLATION.md index b20101f7..b8a57fbf 100644 --- a/INSTALLATION.md +++ b/INSTALLATION.md @@ -36,7 +36,7 @@ Homebrew is an easy way to manage software downloads on MacOS. You don't _have_ You should regularly run `brew update` and `brew doctor` to make sure your packages are up to date and in good condition. -### Install Node using NVM +### Install Node using NVM This will work for both MacOS and Win10. Follow instructions on this [link](https://medium.com/@nodesource/installing-node-js-tutorial-using-nvm-5c6ff5925dd8). Be sure to read through the whole doc to find the sections within each step relevant to you (e.g. if you're using Homebrew, when you get to Step 2 look for the section, "Install NVM with Homebrew"). @@ -54,7 +54,7 @@ You should then be able to switch to that version of node by: To validate you are using node 14, type: -`node -v` +`node -v` This should return *Now using node 14.x.x (npm v6.x.x)* diff --git a/LICENSE-es.md b/LICENSE-es.md index 64a26f3f..413b3d74 100644 --- a/LICENSE-es.md +++ b/LICENSE-es.md @@ -28,4 +28,3 @@ Por estos u otros propósitos y motivos, y sin ninguna expectativa de otra consi c. El Afirmante excluye la responsabilidad de los derechos de compensación de otras personas que se puedan aplicar a la Obra o a cualquier uso de esta, incluidos, entre otros, los Derechos de Autor y Derechos Conexos de cualquier persona sobre la Obra. Además, el Afirmante excluye la responsabilidad de obtener los consentimientos o permisos u otros derechos necesarios que se exijan para cualquier uso de la Obra. d. El Afirmante entiende y reconoce que Creative Commons no es una parte en este documento y que no tiene ningún derecho u obligación con respecto a esta CC0 o al uso de la Obra. - diff --git a/README-es.md b/README-es.md index b35f25ff..0e845b4a 100644 --- a/README-es.md +++ b/README-es.md @@ -2,7 +2,7 @@ [![CC0 License](https://img.shields.io/badge/license-CCO--1.0-brightgreen)](https://github.com/usds/justice40-tool/blob/main/LICENSE.md) *[Read this in English!](README.md)* - + Le damos la bienvenida a la comunidad de código abierto de Justice40. Este repositorio contiene el código, los procesos y la documentación que activa los datos y la tecnología de la Herramienta Justice40 para la Vigilancia del Clima y la Justicia Económica (CEJST, por sus siglas en inglés). ## Antecedentes @@ -36,7 +36,7 @@ El equipo central usa el grupo para publicar la información más reciente sobre Las colaboraciones son siempre bien recibidas. Nos agradan las aportaciones en forma de conversación sobre los temas de este repositorio y las solicitudes para incorporación de cambios en la documentación y el código. En [CONTRIBUTING-es.md](CONTRIBUTING-es.md), consulte la manera de empezar a participar. -## Instalación +## Instalación La instalación es una instalación típica de gatsby y los detalles se pueden encontrar en [INSTALLATION-es.md](INSTALLATION-es.md) diff --git a/README.md b/README.md index bd62dc27..ff62780a 100644 --- a/README.md +++ b/README.md @@ -11,19 +11,19 @@ The Justice40 initiative and screening tool were announced in an [Executive Orde Please see our [Open Source Community Orientation](docs/Justice40_Open_Source_Community_Orientation.pptx) deck for more information on the Justice40 initiative, our team, this project, and ways to participate. ## Core team -The core Justice40 team building this tool is a small group of designers, developers, and product managers from the US Digital Service in partnership with the Council on Environmental Quality (CEQ). +The core Justice40 team building this tool is a small group of designers, developers, and product managers from the US Digital Service in partnership with the Council on Environmental Quality (CEQ). An up-to-date list of core team members can be found in [MAINTAINERS.md](MAINTAINERS.md). The engineering members of the core team who maintain the code in this repo are listed in [.github/CODEOWNERS](.github/CODEOWNERS). ## Community -The Justice40 team is taking a community-first and open source approach to the product development of this tool. We believe government software should be made in the open and be built and licensed such that anyone can take the code, run it themselves without paying money to third parties or using proprietary software, and use it as they will. +The Justice40 team is taking a community-first and open source approach to the product development of this tool. We believe government software should be made in the open and be built and licensed such that anyone can take the code, run it themselves without paying money to third parties or using proprietary software, and use it as they will. -We know that we can learn from a wide variety of communities, including those who will use or will be impacted by the tool, who are experts in data science or technology, or who have experience in climate, economic,or environmental justice work. We are dedicated to creating forums for continuous conversation and feedback to help shape the design and development of the tool. +We know that we can learn from a wide variety of communities, including those who will use or will be impacted by the tool, who are experts in data science or technology, or who have experience in climate, economic,or environmental justice work. We are dedicated to creating forums for continuous conversation and feedback to help shape the design and development of the tool. We also recognize capacity building as a key part of involving a diverse open source community. We are doing our best to use accessible language, provide technical and process documents in multiple languages, and offer support to our community members of a wide variety of backgrounds and skillsets, directly or in the form of group chats and training. If you have ideas for how we can improve or add to our capacity building efforts and methods for welcoming folks into our community, please let us know in the [Google Group](https://groups.google.com/u/4/g/justice40-open-source) or email us at justice40open@usds.gov. ### Community Guidelines -Principles and guidelines for participating in our open source community are available [here](COMMUNITY_GUIDELINES.md). Please read them before joining or starting a conversation in this repo or one of the channels listed below. +Principles and guidelines for participating in our open source community are available [here](COMMUNITY_GUIDELINES.md). Please read them before joining or starting a conversation in this repo or one of the channels listed below. ### Community Chats We host open source community chats every third Monday of the month at 5-6pm ET. You can find information about the agenda and how to participate in our [Google Group](https://groups.google.com/u/4/g/justice40-open-source). @@ -31,15 +31,15 @@ We host open source community chats every third Monday of the month at 5-6pm ET. Community members are welcome to share updates or propose topics for discussion in community chats. Please do so in the Google Group. ### Google Group -Our [Google Group](https://groups.google.com/u/4/g/justice40-open-source) is open to anyone to join and share their knowledge or experiences, as well as to ask questions of the core Justice40 team or the wider community. +Our [Google Group](https://groups.google.com/u/4/g/justice40-open-source) is open to anyone to join and share their knowledge or experiences, as well as to ask questions of the core Justice40 team or the wider community. The core team uses the group to post updates on the program and tech/data issues, and to share the agenda and call for community participation in the community chat. -Curious about whether to ask a question here as a Github issue or in the Google Group? The general rule of thumb is that issues are for actionable topics related to the tool or data itself (e.g. questions about a specific data set in use, or suggestion for a new tool feature), and the Google Group is for more general topics or questions. If you can't decide, use the google group and we'll discuss it there before moving to Github if appropriate! +Curious about whether to ask a question here as a Github issue or in the Google Group? The general rule of thumb is that issues are for actionable topics related to the tool or data itself (e.g. questions about a specific data set in use, or suggestion for a new tool feature), and the Google Group is for more general topics or questions. If you can't decide, use the google group and we'll discuss it there before moving to Github if appropriate! ## Contributing -Contributions are always welcome! We encourage contributions in the form of discussion on issues in this repo and pull requests of documentation and code. +Contributions are always welcome! We encourage contributions in the form of discussion on issues in this repo and pull requests of documentation and code. See [CONTRIBUTING.md](CONTRIBUTING.md) for ways to get started. diff --git a/data/data-pipeline/.pre-commit-config.yaml b/data/data-pipeline/.pre-commit-config.yaml new file mode 100644 index 00000000..64a240cd --- /dev/null +++ b/data/data-pipeline/.pre-commit-config.yaml @@ -0,0 +1,39 @@ +exclude: ^client|\.csv +repos: +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.3.0 + hooks: + - id: end-of-file-fixer + - id: trailing-whitespace + +- repo: https://github.com/lucasmbrown/mirrors-autoflake + rev: v1.3 + hooks: + - id: autoflake + args: + [ + "--in-place", + "--remove-all-unused-imports", + "--remove-unused-variable", + "--ignore-init-module-imports", + ] + +- repo: https://github.com/pycqa/isort + rev: 5.10.1 + hooks: + - id: isort + name: isort (python) + args: + [ + "--force-single-line-imports", + "--profile=black", + "--line-length=80", + "--src-path=.:data/data-pipeline" + ] + +- repo: https://github.com/ambv/black + rev: 22.8.0 + hooks: + - id: black + language_version: python3.9 + args: [--config=./data/data-pipeline/pyproject.toml] diff --git a/data/data-pipeline/README.md b/data/data-pipeline/README.md index d19cc6f9..e47a5a64 100644 --- a/data/data-pipeline/README.md +++ b/data/data-pipeline/README.md @@ -243,14 +243,66 @@ If you want to run tile generation, please install TippeCanoe [following these i - We use [Poetry](https://python-poetry.org/) for managing dependencies and building the application. Please follow the instructions on their site to download. - Install Poetry requirements with `poetry install` -### Running tox +### Running tox -Our full test and check suite is run using tox. This can be run using commands such +Our full test and check suite is run using tox. This can be run using commands such as `poetry run tox`. Each run can take a while to build the whole environment. If you'd like to save time, -you can use the previously built environment by running `poetry run tox -e lint` -which will drastically speed up the process. +you can use the previously built environment by running `poetry run tox -e lint` +which will drastically speed up the linting process. + +### Configuring pre-commit hooks + + +To promote consistent code style and quality, we use git pre-commit hooks to +automatically lint and reformat our code before every commit we make to the codebase. +Pre-commit hooks are defined in the file [`.pre-commit-config.yaml`](../.pre-commit-config.yaml). + + +1. First, install [`pre-commit`](https://pre-commit.com/) globally: + + $ brew install pre-commit + +2. While in the `data/data-pipeline` directory, run `pre-commit install` to install + the specific git hooks used in this repository. + +Now, any time you commit code to the repository, the hooks will run on all modified files automatically. If you wish, +you can force a re-run on all files with `pre-commit run --all-files`. + +#### Conflicts between backend and frontend git hooks + +In the front-end part of the codebase (the `justice40-tool/client` folder), we use +`Husky` to run pre-commit hooks for the front-end. This is different than the +`pre-commit` framework we use for the backend. The frontend `Husky` hooks are +configured at +[client/.husky](client/.husky). + +It is not possible to run both our `Husky` hooks and `pre-commit` hooks on every +commit; either one or the other will run. + + + +`Husky` is installed every time you run `npm install`. To use the `Husky` front-end +hooks during front-end development, simply run `npm install`. + +However, running `npm install` overwrites the backend hooks setup by `pre-commit`. +To restore the backend hooks after running `npm install`, do the following: + +1. Run `pre-commit install` while in the `data/data-pipeline` directory. +2. The terminal should respond with an error message such as: +``` +[ERROR] Cowardly refusing to install hooks with `core.hooksPath` set. +hint: `git config --unset-all core.hooksPath` +``` + +This error is caused by having previously run `npm install` which used `Husky` to +overwrite the hooks path. + +3. Follow the hint and run `git config --unset-all core.hooksPath`. +4. Run `pre-commit install` again. + +Now `pre-commit` and the backend hooks should take precedence. ### The Application entrypoint @@ -323,7 +375,7 @@ see [python-markdown docs](https://github.com/ipython-contrib/jupyter_contrib_nb ### Background -For this project, we make use of [pytest](https://docs.pytest.org/en/latest/) for testing purposes. +For this project, we make use of [pytest](https://docs.pytest.org/en/latest/) for testing purposes. To run tests, simply run `poetry run pytest` in this directory (i.e., `justice40-tool/data/data-pipeline`). @@ -466,19 +518,19 @@ In order to update the snapshot fixtures of an ETL class, follow the following s 1. If you need to manually update the fixtures, update the "furthest upstream" source that is called by `_setup_etl_instance_and_run_extract`. For instance, this may - involve creating a new zip file that imitates the source data. (e.g., for the - National Risk Index test, update - `data_pipeline/tests/sources/national_risk_index/data/NRI_Table_CensusTracts.zip` + involve creating a new zip file that imitates the source data. (e.g., for the + National Risk Index test, update + `data_pipeline/tests/sources/national_risk_index/data/NRI_Table_CensusTracts.zip` which is a 64kb imitation of the 405MB source NRI data.) 2. Run `pytest . -rsx --update_snapshots` to update snapshots for all files, or you - can pass a specific file name to pytest to be more precise (e.g., `pytest + can pass a specific file name to pytest to be more precise (e.g., `pytest data_pipeline/tests/sources/national_risk_index/test_etl.py -rsx --update_snapshots`) 3. Re-run pytest without the `update_snapshots` flag (e.g., `pytest . -rsx`) to ensure the tests now pass. 4. Carefully check the `git diff` for the updates to all test fixtures to make sure these are as expected. This part is very important. For instance, if you changed a - column name, you would only expect the column name to change in the output. If - you modified the calculation of some data, spot check the results to see if the + column name, you would only expect the column name to change in the output. If + you modified the calculation of some data, spot check the results to see if the numbers in the updated fixtures are as expected. ### Other ETL Unit Tests @@ -520,4 +572,4 @@ These tests are implemented as pytest test, but are skipped by default. To run t 1. Generate a full score with `poetry run python3 data_pipeline/application.py score-full-run` 2. Generate the tile data with `poetry run python3 data_pipeline/application.py generate-score-post` 3. Generate the frontend GEOJSON with `poetry run python3 data_pipeline/application.py geo-score` -4. Select the smoke tests for pytest with `poetry run pytest data_pipeline/tests -k smoketest` \ No newline at end of file +4. Select the smoke tests for pytest with `poetry run pytest data_pipeline/tests -k smoketest` diff --git a/data/data-pipeline/data_pipeline/application.py b/data/data-pipeline/data_pipeline/application.py index 00ebdf56..680f72a1 100644 --- a/data/data-pipeline/data_pipeline/application.py +++ b/data/data-pipeline/data_pipeline/application.py @@ -1,31 +1,27 @@ -from subprocess import call import sys -import click +from subprocess import call +import click from data_pipeline.config import settings -from data_pipeline.etl.runner import ( - etl_runner, - score_generate, - score_geo, - score_post, -) +from data_pipeline.etl.runner import etl_runner +from data_pipeline.etl.runner import score_generate +from data_pipeline.etl.runner import score_geo +from data_pipeline.etl.runner import score_post +from data_pipeline.etl.sources.census.etl_utils import check_census_data_source from data_pipeline.etl.sources.census.etl_utils import ( - check_census_data_source, reset_data_directories as census_reset, - zip_census_data, ) +from data_pipeline.etl.sources.census.etl_utils import zip_census_data from data_pipeline.etl.sources.tribal.etl_utils import ( reset_data_directories as tribal_reset, ) from data_pipeline.tile.generate import generate_tiles -from data_pipeline.utils import ( - data_folder_cleanup, - get_module_logger, - score_folder_cleanup, - downloadable_cleanup, - temp_folder_cleanup, - check_first_run, -) +from data_pipeline.utils import check_first_run +from data_pipeline.utils import data_folder_cleanup +from data_pipeline.utils import downloadable_cleanup +from data_pipeline.utils import get_module_logger +from data_pipeline.utils import score_folder_cleanup +from data_pipeline.utils import temp_folder_cleanup logger = get_module_logger(__name__) @@ -36,8 +32,6 @@ dataset_cli_help = "Grab the data from either 'local' for local access or 'aws' def cli(): """Defines a click group for the commands below""" - pass - @cli.command(help="Clean up all census data folders") def census_cleanup(): diff --git a/data/data-pipeline/data_pipeline/comparison_tool/README.md b/data/data-pipeline/data_pipeline/comparison_tool/README.md index 27be1430..ea0172e4 100644 --- a/data/data-pipeline/data_pipeline/comparison_tool/README.md +++ b/data/data-pipeline/data_pipeline/comparison_tool/README.md @@ -2,13 +2,13 @@ ## Comparison tool -TODO once the comparison tool has been refactored. +TODO once the comparison tool has been refactored. ## Single comparator score comparisons -The goal of this directory is to create interactive 1-to-1 dac list:cejst comparisons. That means that, when this tool is run, you will have comparisons of two true/false classifications. +The goal of this directory is to create interactive 1-to-1 dac list:cejst comparisons. That means that, when this tool is run, you will have comparisons of two true/false classifications. -This uses `papermill` to parameterize a jupyter notebook, and is meant to be a *lightweight* entry into this analysis. The tool as a whole creates a bunch of comparisons against CEJST data -- but after it runs, you'll have the notebook to re-run and add to if you are so inclined. +This uses `papermill` to parameterize a jupyter notebook, and is meant to be a *lightweight* entry into this analysis. The tool as a whole creates a bunch of comparisons against CEJST data -- but after it runs, you'll have the notebook to re-run and add to if you are so inclined. To run: ` $ python src/run_tract_comparison.py --template_notebook=TEMPLATE.ipynb --parameter_yaml=PARAMETERS.yaml` @@ -19,52 +19,52 @@ For example, if I am running this from the `comparison_tool` directory within th __What is the template notebook?__ -This gets filled in by the parameters in the yaml file and then executed. Even after execution, it is run-able and interactive. You do not need to change anything in this (with the caveat -- depending on how you run `jupyter lab`, you might need to add `import sys` and then `sys.path.append("../../../../)` to run the notebook live). +This gets filled in by the parameters in the yaml file and then executed. Even after execution, it is run-able and interactive. You do not need to change anything in this (with the caveat -- depending on how you run `jupyter lab`, you might need to add `import sys` and then `sys.path.append("../../../../)` to run the notebook live). __What is the output?__ When you run this, you'll get back three files: -1. The filled-in parameter notebook that you can run live, with the date appended. This means if you run the script twice in one day, the notebook will get overriden, but if you run the script on two consecutive days, you will get two separate notebooks saved. -2. A graph that shows the relative average of the specified `ADDITIONAL_DEMO_COLUMNS` and `DEMOGRAPHIC_COLUMNS` segmented by CEJST and the comparator you include. This gets overridden with every run. +1. The filled-in parameter notebook that you can run live, with the date appended. This means if you run the script twice in one day, the notebook will get overriden, but if you run the script on two consecutive days, you will get two separate notebooks saved. +2. A graph that shows the relative average of the specified `ADDITIONAL_DEMO_COLUMNS` and `DEMOGRAPHIC_COLUMNS` segmented by CEJST and the comparator you include. This gets overridden with every run. 3. An excel file with many tabs that has summary statistics from the comparison of the two classifications (the cejst and the comparator). In more detail, the excel file contains the following tabs: - `Summary`: out of all tracts (even if you keep missing), how many tracts are classified TRUE/FALSE by the comparator and CEJST, by population and number. -- `Tract level stats`: overall, for all tracts classified as TRUE for CEJST and the comparator, how do the demographics of those tracts compare? Here, we think of "demographics" loosely -- whatever columns you include in the parameter yaml will show up. For example, if my additional demographics column in the yaml included `percent of households in linguistic isolation`, I'd see the average percent of households in linguistic isolation for the comparator-identified tracts (where the comparator is TRUE) and for CEJST-identified tracts. +- `Tract level stats`: overall, for all tracts classified as TRUE for CEJST and the comparator, how do the demographics of those tracts compare? Here, we think of "demographics" loosely -- whatever columns you include in the parameter yaml will show up. For example, if my additional demographics column in the yaml included `percent of households in linguistic isolation`, I'd see the average percent of households in linguistic isolation for the comparator-identified tracts (where the comparator is TRUE) and for CEJST-identified tracts. - `Population level stats`: same demographic variables, looking at population within tract. Since not all tracts have the same number of people, this will be slightly different. This also includes segments of the population -- where you can investigate the disjoint set of tracts identified by a single method (e.g., you could specifically look at tracts identified by CEJST but not by the comparator.) -- `Segmented tract level stats`: segmented version of the tract-level stats. -- (Optional -- requires not disjoint set of tracts) `Comparator and CEJST overlap`: shows the overlap from the vantage point of the comparator ("what share of the tracts that the comparator identifies are also identified in CEJST?"). Also lists the states the comparator has information for. +- `Segmented tract level stats`: segmented version of the tract-level stats. +- (Optional -- requires not disjoint set of tracts) `Comparator and CEJST overlap`: shows the overlap from the vantage point of the comparator ("what share of the tracts that the comparator identifies are also identified in CEJST?"). Also lists the states the comparator has information for. __What parameters go in the yaml file?__ -- ADDITIONAL_DEMO_COLUMNS: list, demographic columns from the score file that you want to run analyses on. All columns here will appear in the excel file and the graph. -- COMPARATOR_COLUMN: the name of the column that has a boolean (*must be TRUE / FALSE*) for whether or not the tract is prioritized. You provide this! -- DEMOGRAPHIC_COLUMNS: list, demographic columns from another file that you'd like to include in the analysis. -- DEMOGRAPHIC_FILE: the file that has the census demographic information. This name suggests, in theory, that you've run our pipeline and are using the ACS output -- but any file with `GEOID10_TRACT` as the field with census tract IDs will work. -- OUTPUT_DATA_PATH: where you want the output to be. Convention: output + folder named of data source. Note that the folder name of the data source gets read as the "data name" for some of the outputs. -- SCORE_COLUMN: CEJST score boolean name column name. -- SCORE_FILE: CEJST full score file. This requires that you've run our pipeline, but in theory, the downloaded file should also work, provided the columns are named appropriately. -- TOTAL_POPULATION_COLUMN: column name for total population. We use `Total Population` currently in our pipeline. -- OTHER_COMPARATOR_COLUMNS: list, other columns from the comparator file you might want to read in for analysis. This is an optional argument. You will keep these columns to perform analysis once you have the notebook -- this will not be included in the excel print out. +- ADDITIONAL_DEMO_COLUMNS: list, demographic columns from the score file that you want to run analyses on. All columns here will appear in the excel file and the graph. +- COMPARATOR_COLUMN: the name of the column that has a boolean (*must be TRUE / FALSE*) for whether or not the tract is prioritized. You provide this! +- DEMOGRAPHIC_COLUMNS: list, demographic columns from another file that you'd like to include in the analysis. +- DEMOGRAPHIC_FILE: the file that has the census demographic information. This name suggests, in theory, that you've run our pipeline and are using the ACS output -- but any file with `GEOID10_TRACT` as the field with census tract IDs will work. +- OUTPUT_DATA_PATH: where you want the output to be. Convention: output + folder named of data source. Note that the folder name of the data source gets read as the "data name" for some of the outputs. +- SCORE_COLUMN: CEJST score boolean name column name. +- SCORE_FILE: CEJST full score file. This requires that you've run our pipeline, but in theory, the downloaded file should also work, provided the columns are named appropriately. +- TOTAL_POPULATION_COLUMN: column name for total population. We use `Total Population` currently in our pipeline. +- OTHER_COMPARATOR_COLUMNS: list, other columns from the comparator file you might want to read in for analysis. This is an optional argument. You will keep these columns to perform analysis once you have the notebook -- this will not be included in the excel print out. - KEEP_MISSING_VALUES_FOR_SEGMENTATION: whether or not to fill NaNs. True keeps missing. __Cleaning data__ -Comparator data should live in a flat csv, just like the CEJST data. Right now, each comparator has a folder in `comparison_tool/data` that contains a notebook to clean the data (this is because the data is often quirky and so live inspection is easier), the `raw` data, and the `clean` data. We can also point the `yaml` to an `ETL` output, for files in which there are multiple important columns, if you want to use one of the data sources the CEJST team has already included in the pipeline (which are already compatible with the tool). +Comparator data should live in a flat csv, just like the CEJST data. Right now, each comparator has a folder in `comparison_tool/data` that contains a notebook to clean the data (this is because the data is often quirky and so live inspection is easier), the `raw` data, and the `clean` data. We can also point the `yaml` to an `ETL` output, for files in which there are multiple important columns, if you want to use one of the data sources the CEJST team has already included in the pipeline (which are already compatible with the tool). -When you make your own output for comparison, make sure to follow the steps below. +When you make your own output for comparison, make sure to follow the steps below. When you clean the data, it's important that you: 1. Ensure the tract level id is named the same as the field name in score M (specified in `field_names`). Right now, this is `GEOID10_TRACT`. 2. Ensure the identification column is a `bool`. -You will provide the path to the comparator data in the parameter yaml file. +You will provide the path to the comparator data in the parameter yaml file. __How to use the shell script__ -We have also included a shell script, `run_all_comparisons.sh`. This script includes all -of the commands that we have run to generate pairwise comparisons. +We have also included a shell script, `run_all_comparisons.sh`. This script includes all +of the commands that we have run to generate pairwise comparisons. To run: `$ bash run_all_comparisons.sh` -To add to it: create a new line and include the command line for each notebook run. \ No newline at end of file +To add to it: create a new line and include the command line for each notebook run. diff --git a/data/data-pipeline/data_pipeline/comparison_tool/run_all_comparisons.sh b/data/data-pipeline/data_pipeline/comparison_tool/run_all_comparisons.sh index 9c9a2474..379ef29a 100755 --- a/data/data-pipeline/data_pipeline/comparison_tool/run_all_comparisons.sh +++ b/data/data-pipeline/data_pipeline/comparison_tool/run_all_comparisons.sh @@ -1,3 +1,3 @@ #! /bin/bash -poetry run python3 src/run_tract_comparison.py --template_notebook=src/tract_comparison__template.ipynb --parameter_yaml=src/donut_hole_dacs.yaml \ No newline at end of file +poetry run python3 src/run_tract_comparison.py --template_notebook=src/tract_comparison__template.ipynb --parameter_yaml=src/donut_hole_dacs.yaml diff --git a/data/data-pipeline/data_pipeline/comparison_tool/src/donut_hole_dacs.yaml b/data/data-pipeline/data_pipeline/comparison_tool/src/donut_hole_dacs.yaml index d01210d1..a329cb58 100644 --- a/data/data-pipeline/data_pipeline/comparison_tool/src/donut_hole_dacs.yaml +++ b/data/data-pipeline/data_pipeline/comparison_tool/src/donut_hole_dacs.yaml @@ -17,7 +17,7 @@ DEMOGRAPHIC_COLUMNS: DEMOGRAPHIC_FILE: ../../data_pipeline/data/dataset/census_acs_2019/usa.csv OUTPUT_DATA_PATH: output/donut_hole_dac SCORE_FILE: ../../data_pipeline/data/score/csv/full/usa.csv -OTHER_COMPARATOR_COLUMNS: +OTHER_COMPARATOR_COLUMNS: - donut_hole_dac - P200_PFS - HSEF diff --git a/data/data-pipeline/data_pipeline/comparison_tool/src/run_tract_comparison.py b/data/data-pipeline/data_pipeline/comparison_tool/src/run_tract_comparison.py index 3372e31e..a63bd5e1 100644 --- a/data/data-pipeline/data_pipeline/comparison_tool/src/run_tract_comparison.py +++ b/data/data-pipeline/data_pipeline/comparison_tool/src/run_tract_comparison.py @@ -12,12 +12,12 @@ To see more: https://buildmedia.readthedocs.org/media/pdf/papermill/latest/paper To run: ` $ python src/run_tract_comparison.py --template_notebook=TEMPLATE.ipynb --parameter_yaml=PARAMETERS.yaml` """ - -import os -import datetime import argparse -import yaml +import datetime +import os + import papermill as pm +import yaml def _read_param_file(param_file: str) -> dict: diff --git a/data/data-pipeline/data_pipeline/comparison_tool/src/tract_comparison__template.ipynb b/data/data-pipeline/data_pipeline/comparison_tool/src/tract_comparison__template.ipynb index 10fc8616..915b84fa 100644 --- a/data/data-pipeline/data_pipeline/comparison_tool/src/tract_comparison__template.ipynb +++ b/data/data-pipeline/data_pipeline/comparison_tool/src/tract_comparison__template.ipynb @@ -16,7 +16,7 @@ "import matplotlib.pyplot as plt\n", "\n", "from data_pipeline.score import field_names\n", - "from data_pipeline.comparison_tool.src import utils \n", + "from data_pipeline.comparison_tool.src import utils\n", "\n", "pd.options.display.float_format = \"{:,.3f}\".format\n", "%load_ext lab_black" @@ -128,9 +128,7 @@ "metadata": {}, "outputs": [], "source": [ - "utils.validate_new_data(\n", - " file_path=COMPARATOR_FILE, score_col=COMPARATOR_COLUMN\n", - ")" + "utils.validate_new_data(file_path=COMPARATOR_FILE, score_col=COMPARATOR_COLUMN)" ] }, { @@ -148,20 +146,25 @@ "metadata": {}, "outputs": [], "source": [ - "comparator_cols = [COMPARATOR_COLUMN] + OTHER_COMPARATOR_COLUMNS if OTHER_COMPARATOR_COLUMNS else [COMPARATOR_COLUMN]\n", + "comparator_cols = (\n", + " [COMPARATOR_COLUMN] + OTHER_COMPARATOR_COLUMNS\n", + " if OTHER_COMPARATOR_COLUMNS\n", + " else [COMPARATOR_COLUMN]\n", + ")\n", "\n", - "#papermill_description=Loading_data\n", + "# papermill_description=Loading_data\n", "joined_df = pd.concat(\n", " [\n", " utils.read_file(\n", " file_path=SCORE_FILE,\n", - " columns=[TOTAL_POPULATION_COLUMN, SCORE_COLUMN] + ADDITIONAL_DEMO_COLUMNS,\n", + " columns=[TOTAL_POPULATION_COLUMN, SCORE_COLUMN]\n", + " + ADDITIONAL_DEMO_COLUMNS,\n", " geoid=GEOID_COLUMN,\n", " ),\n", " utils.read_file(\n", " file_path=COMPARATOR_FILE,\n", " columns=comparator_cols,\n", - " geoid=GEOID_COLUMN\n", + " geoid=GEOID_COLUMN,\n", " ),\n", " utils.read_file(\n", " file_path=DEMOGRAPHIC_FILE,\n", @@ -196,13 +199,13 @@ "metadata": {}, "outputs": [], "source": [ - "#papermill_description=Summary_stats\n", + "# papermill_description=Summary_stats\n", "population_df = utils.produce_summary_stats(\n", " joined_df=joined_df,\n", " comparator_column=COMPARATOR_COLUMN,\n", " score_column=SCORE_COLUMN,\n", " population_column=TOTAL_POPULATION_COLUMN,\n", - " geoid_column=GEOID_COLUMN\n", + " geoid_column=GEOID_COLUMN,\n", ")\n", "population_df" ] @@ -224,18 +227,18 @@ "metadata": {}, "outputs": [], "source": [ - "#papermill_description=Tract_stats\n", + "# papermill_description=Tract_stats\n", "tract_level_by_identification_df = pd.concat(\n", " [\n", " utils.get_demo_series(\n", " grouping_column=COMPARATOR_COLUMN,\n", " joined_df=joined_df,\n", - " demo_columns=ADDITIONAL_DEMO_COLUMNS + DEMOGRAPHIC_COLUMNS\n", + " demo_columns=ADDITIONAL_DEMO_COLUMNS + DEMOGRAPHIC_COLUMNS,\n", " ),\n", " utils.get_demo_series(\n", " grouping_column=SCORE_COLUMN,\n", " joined_df=joined_df,\n", - " demo_columns=ADDITIONAL_DEMO_COLUMNS + DEMOGRAPHIC_COLUMNS\n", + " demo_columns=ADDITIONAL_DEMO_COLUMNS + DEMOGRAPHIC_COLUMNS,\n", " ),\n", " ],\n", " axis=1,\n", @@ -256,17 +259,25 @@ " y=\"Variable\",\n", " x=\"Avg in tracts\",\n", " hue=\"Definition\",\n", - " data=tract_level_by_identification_df.sort_values(by=COMPARATOR_COLUMN, ascending=False)\n", + " data=tract_level_by_identification_df.sort_values(\n", + " by=COMPARATOR_COLUMN, ascending=False\n", + " )\n", " .stack()\n", " .reset_index()\n", " .rename(\n", - " columns={\"level_0\": \"Variable\", \"level_1\": \"Definition\", 0: \"Avg in tracts\"}\n", + " columns={\n", + " \"level_0\": \"Variable\",\n", + " \"level_1\": \"Definition\",\n", + " 0: \"Avg in tracts\",\n", + " }\n", " ),\n", " palette=\"Blues\",\n", ")\n", "plt.xlim(0, 1)\n", "plt.title(\"Tract level averages by identification strategy\")\n", - "plt.savefig(os.path.join(OUTPUT_DATA_PATH, \"tract_lvl_avg.jpg\"), bbox_inches='tight')" + "plt.savefig(\n", + " os.path.join(OUTPUT_DATA_PATH, \"tract_lvl_avg.jpg\"), bbox_inches=\"tight\"\n", + ")" ] }, { @@ -276,13 +287,13 @@ "metadata": {}, "outputs": [], "source": [ - "#papermill_description=Tract_stats_grouped\n", + "# papermill_description=Tract_stats_grouped\n", "tract_level_by_grouping_df = utils.get_tract_level_grouping(\n", " joined_df=joined_df,\n", " score_column=SCORE_COLUMN,\n", " comparator_column=COMPARATOR_COLUMN,\n", " demo_columns=ADDITIONAL_DEMO_COLUMNS + DEMOGRAPHIC_COLUMNS,\n", - " keep_missing_values=KEEP_MISSING_VALUES_FOR_SEGMENTATION\n", + " keep_missing_values=KEEP_MISSING_VALUES_FOR_SEGMENTATION,\n", ")\n", "\n", "tract_level_by_grouping_formatted_df = utils.format_multi_index_for_excel(\n", @@ -315,7 +326,7 @@ "metadata": {}, "outputs": [], "source": [ - "#papermill_description=Population_stats\n", + "# papermill_description=Population_stats\n", "population_weighted_stats_df = pd.concat(\n", " [\n", " utils.construct_weighted_statistics(\n", @@ -363,7 +374,7 @@ "comparator_and_cejst_proportion_series, states = utils.get_final_summary_info(\n", " population=population_df,\n", " comparator_file=COMPARATOR_FILE,\n", - " geoid_col=GEOID_COLUMN\n", + " geoid_col=GEOID_COLUMN,\n", ")" ] }, @@ -393,7 +404,7 @@ "metadata": {}, "outputs": [], "source": [ - "#papermill_description=Writing_excel\n", + "# papermill_description=Writing_excel\n", "utils.write_single_comparison_excel(\n", " output_excel=OUTPUT_EXCEL,\n", " population_df=population_df,\n", @@ -401,7 +412,7 @@ " population_weighted_stats_df=population_weighted_stats_df,\n", " tract_level_by_grouping_formatted_df=tract_level_by_grouping_formatted_df,\n", " comparator_and_cejst_proportion_series=comparator_and_cejst_proportion_series,\n", - " states_text=states_text\n", + " states_text=states_text,\n", ")" ] } diff --git a/data/data-pipeline/data_pipeline/comparison_tool/src/utils.py b/data/data-pipeline/data_pipeline/comparison_tool/src/utils.py index 25cb6c8e..ec20fb83 100644 --- a/data/data-pipeline/data_pipeline/comparison_tool/src/utils.py +++ b/data/data-pipeline/data_pipeline/comparison_tool/src/utils.py @@ -1,9 +1,9 @@ import pathlib + import pandas as pd import xlsxwriter - -from data_pipeline.score import field_names from data_pipeline.etl.sources.census.etl_utils import get_state_information +from data_pipeline.score import field_names # Some excel parameters DEFAULT_COLUMN_WIDTH = 18 diff --git a/data/data-pipeline/data_pipeline/config.py b/data/data-pipeline/data_pipeline/config.py index 5dc336c8..ee75e535 100644 --- a/data/data-pipeline/data_pipeline/config.py +++ b/data/data-pipeline/data_pipeline/config.py @@ -1,8 +1,7 @@ import pathlib -from dynaconf import Dynaconf - import data_pipeline +from dynaconf import Dynaconf settings = Dynaconf( envvar_prefix="DYNACONF", diff --git a/data/data-pipeline/data_pipeline/content/config/field_descriptions_for_codebook.yml b/data/data-pipeline/data_pipeline/content/config/field_descriptions_for_codebook.yml index 4214a57a..14eba6c8 100644 --- a/data/data-pipeline/data_pipeline/content/config/field_descriptions_for_codebook.yml +++ b/data/data-pipeline/data_pipeline/content/config/field_descriptions_for_codebook.yml @@ -1,7 +1,7 @@ -# This is a temporary file. We should make sure this *type* of information is maintained when we refactor. +# This is a temporary file. We should make sure this *type* of information is maintained when we refactor. fields: - score_name: Total threshold criteria exceeded - notes: Lists out the total number of criteria (where each category has one or more criteria) exceeded. For example, a tract that exceeds the 90th percentile for linguistic isolation (1) and unemployment (2), and meets the training and workforce development socioeconomic criteria (high school attainment rate and low percentage of higher ed students) would have a 2 in this field. + notes: Lists out the total number of criteria (where each category has one or more criteria) exceeded. For example, a tract that exceeds the 90th percentile for linguistic isolation (1) and unemployment (2), and meets the training and workforce development socioeconomic criteria (high school attainment rate and low percentage of higher ed students) would have a 2 in this field. - score_name: Definition M (communities) notes: True / False variable for whether a tract is a Disadvantaged Community (DAC) - score_name: Is low income and has a low percent of higher ed students? @@ -43,7 +43,7 @@ fields: - score_name: Greater than or equal to the 90th percentile for low median household income as a percent of area median income, has low HS attainment, and has a low percent of higher ed students? category: training and workforce development - score_name: Greater than or equal to the 90th percentile for households in linguistic isolation, has low HS attainment, and has a low percent of higher ed students? - category: training and workforce development + category: training and workforce development - score_name: Greater than or equal to the 90th percentile for unemployment, has low HS attainment, and has a low percent of higher ed students? category: training and workforce development - score_name: Greater than or equal to the 90th percentile for households at or below 100% federal poverty level, has low HS attainment, and has a low percent of higher ed students? diff --git a/data/data-pipeline/data_pipeline/content/config/scratch.ipynb b/data/data-pipeline/data_pipeline/content/config/scratch.ipynb index e2535b7e..2ad828b2 100644 --- a/data/data-pipeline/data_pipeline/content/config/scratch.ipynb +++ b/data/data-pipeline/data_pipeline/content/config/scratch.ipynb @@ -427,7 +427,9 @@ } ], "source": [ - "for col in [col for col in download_codebook.index.to_list() if \"(percentile)\" in col]:\n", + "for col in [\n", + " col for col in download_codebook.index.to_list() if \"(percentile)\" in col\n", + "]:\n", " print(f\" - column_name: {col}\")\n", " if \"Low\" not in col:\n", " print(\n", diff --git a/data/data-pipeline/data_pipeline/content/schemas/download_schemas.py b/data/data-pipeline/data_pipeline/content/schemas/download_schemas.py index 9dc109f1..4c453669 100644 --- a/data/data-pipeline/data_pipeline/content/schemas/download_schemas.py +++ b/data/data-pipeline/data_pipeline/content/schemas/download_schemas.py @@ -1,6 +1,8 @@ -from dataclasses import dataclass, field +from dataclasses import dataclass +from dataclasses import field from enum import Enum -from typing import List, Optional +from typing import List +from typing import Optional class FieldType(Enum): diff --git a/data/data-pipeline/data_pipeline/etl/base.py b/data/data-pipeline/data_pipeline/etl/base.py index 7026c36f..c9f647cd 100644 --- a/data/data-pipeline/data_pipeline/etl/base.py +++ b/data/data-pipeline/data_pipeline/etl/base.py @@ -5,18 +5,15 @@ import typing from typing import Optional import pandas as pd - from data_pipeline.config import settings from data_pipeline.etl.score.etl_utils import ( compare_to_list_of_expected_state_fips_codes, ) from data_pipeline.etl.score.schemas.datasets import DatasetsConfig -from data_pipeline.utils import ( - load_yaml_dict_from_file, - unzip_file_from_url, - remove_all_from_dir, - get_module_logger, -) +from data_pipeline.utils import get_module_logger +from data_pipeline.utils import load_yaml_dict_from_file +from data_pipeline.utils import remove_all_from_dir +from data_pipeline.utils import unzip_file_from_url logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/runner.py b/data/data-pipeline/data_pipeline/etl/runner.py index 0b814159..89663824 100644 --- a/data/data-pipeline/data_pipeline/etl/runner.py +++ b/data/data-pipeline/data_pipeline/etl/runner.py @@ -1,5 +1,5 @@ -import importlib import concurrent.futures +import importlib import typing from data_pipeline.etl.score.etl_score import ScoreETL diff --git a/data/data-pipeline/data_pipeline/etl/score/config/datasets.yml b/data/data-pipeline/data_pipeline/etl/score/config/datasets.yml index bcd72a97..dc6eed9b 100644 --- a/data/data-pipeline/data_pipeline/etl/score/config/datasets.yml +++ b/data/data-pipeline/data_pipeline/etl/score/config/datasets.yml @@ -81,7 +81,7 @@ datasets: load_fields: - short_name: "he_heat" df_field_name: "EXTREME_HEAT_FIELD" - long_name: "Summer days above 90F" + long_name: "Summer days above 90F" field_type: float include_in_downloadable_files: true include_in_tiles: true @@ -92,7 +92,7 @@ datasets: include_in_downloadable_files: true include_in_tiles: true - short_name: "he_green" - long_name: "Percent impenetrable surface areas" + long_name: "Percent impenetrable surface areas" df_field_name: "IMPENETRABLE_SURFACES_FIELD" field_type: float include_in_downloadable_files: true @@ -110,7 +110,7 @@ datasets: load_fields: - short_name: "EBP_PFS" df_field_name: "REVISED_ENERGY_BURDEN_FIELD_NAME" - long_name: "Energy burden" + long_name: "Energy burden" field_type: float include_in_downloadable_files: true include_in_tiles: true @@ -121,7 +121,7 @@ datasets: - short_name: "fuds_count" df_field_name: "ELIGIBLE_FUDS_COUNT_FIELD_NAME" long_name: "Count of eligible Formerly Used Defense Site (FUDS) properties centroids" - description_short: + description_short: "The number of FUDS marked as Eligible and Has Project in the tract." field_type: int64 include_in_tiles: false @@ -129,7 +129,7 @@ datasets: - short_name: "not_fuds_ct" df_field_name: "INELIGIBLE_FUDS_COUNT_FIELD_NAME" long_name: "Count of ineligible Formerly Used Defense Site (FUDS) properties centroids" - description_short: + description_short: "The number of FUDS marked as Ineligible or Project in the tract." field_type: int64 include_in_tiles: false @@ -137,7 +137,7 @@ datasets: - short_name: "has_fuds" df_field_name: "ELIGIBLE_FUDS_BINARY_FIELD_NAME" long_name: "Is there at least one Formerly Used Defense Site (FUDS) in the tract?" - description_short: + description_short: "Whether the tract has a FUDS" field_type: bool include_in_tiles: false @@ -149,7 +149,7 @@ datasets: - short_name: "has_aml" df_field_name: "AML_BOOLEAN" long_name: "Is there at least one abandoned mine in this census tract?" - description_short: + description_short: "Whether the tract has an abandoned mine" field_type: bool include_in_tiles: true @@ -161,7 +161,7 @@ datasets: load_fields: - short_name: "EXAMPLE_FIELD" df_field_name: "Input Field 1" - long_name: "Example Field 1" + long_name: "Example Field 1" field_type: float include_in_tiles: true include_in_downloadable_files: true @@ -172,35 +172,35 @@ datasets: load_fields: - short_name: "flood_eligible_properties" df_field_name: "COUNT_PROPERTIES" - long_name: "Count of properties eligible for flood risk calculation within tract (floor of 250)" + long_name: "Count of properties eligible for flood risk calculation within tract (floor of 250)" field_type: float include_in_tiles: false include_in_downloadable_files: true create_percentile: false - short_name: "flood_risk_properties_today" df_field_name: "PROPERTIES_AT_RISK_FROM_FLOODING_TODAY" - long_name: "Count of properties at risk of flood today" + long_name: "Count of properties at risk of flood today" field_type: float include_in_tiles: false include_in_downloadable_files: true create_percentile: false - short_name: "flood_risk_properties_30yrs" df_field_name: "PROPERTIES_AT_RISK_FROM_FLOODING_IN_30_YEARS" - long_name: "Count of properties at risk of flood in 30 years" + long_name: "Count of properties at risk of flood in 30 years" field_type: float include_in_tiles: false include_in_downloadable_files: true create_percentile: false - short_name: "flood_risk_share_today" df_field_name: "SHARE_OF_PROPERTIES_AT_RISK_FROM_FLOODING_TODAY" - long_name: "Share of properties at risk of flood today" + long_name: "Share of properties at risk of flood today" field_type: float include_in_tiles: false include_in_downloadable_files: true create_percentile: true - short_name: "flood_risk_share_30yrs" df_field_name: "SHARE_OF_PROPERTIES_AT_RISK_FROM_FLOODING_IN_30_YEARS" - long_name: "Share of properties at risk of flood in 30 years" + long_name: "Share of properties at risk of flood in 30 years" field_type: float include_in_tiles: false include_in_downloadable_files: true @@ -212,35 +212,35 @@ datasets: load_fields: - short_name: "fire_eligible_properties" df_field_name: "COUNT_PROPERTIES" - long_name: "Count of properties eligible for wildfire risk calculation within tract (floor of 250)" + long_name: "Count of properties eligible for wildfire risk calculation within tract (floor of 250)" field_type: float include_in_tiles: false include_in_downloadable_files: true create_percentile: false - short_name: "fire_risk_properties_today" df_field_name: "PROPERTIES_AT_RISK_FROM_FIRE_TODAY" - long_name: "Count of properties at risk of wildfire today" + long_name: "Count of properties at risk of wildfire today" field_type: float include_in_tiles: false include_in_downloadable_files: true create_percentile: false - short_name: "fire_risk_properties_30yrs" df_field_name: "PROPERTIES_AT_RISK_FROM_FIRE_IN_30_YEARS" - long_name: "Count of properties at risk of wildfire in 30 years" + long_name: "Count of properties at risk of wildfire in 30 years" field_type: float include_in_tiles: false include_in_downloadable_files: true create_percentile: false - short_name: "fire_risk_share_today" df_field_name: "SHARE_OF_PROPERTIES_AT_RISK_FROM_FIRE_TODAY" - long_name: "Share of properties at risk of fire today" + long_name: "Share of properties at risk of fire today" field_type: float include_in_tiles: false include_in_downloadable_files: true create_percentile: true - short_name: "fire_risk_share_30yrs" df_field_name: "SHARE_OF_PROPERTIES_AT_RISK_FROM_FIRE_IN_30_YEARS" - long_name: "Share of properties at risk of fire in 30 years" + long_name: "Share of properties at risk of fire in 30 years" field_type: float include_in_tiles: false include_in_downloadable_files: true @@ -252,7 +252,7 @@ datasets: load_fields: - short_name: "travel_burden" df_field_name: "TRAVEL_BURDEN_FIELD_NAME" - long_name: "DOT Travel Barriers Score" + long_name: "DOT Travel Barriers Score" field_type: float include_in_tiles: true include_in_downloadable_files: true @@ -264,28 +264,28 @@ datasets: load_fields: - short_name: "ncld_eligible" df_field_name: "ELIGIBLE_FOR_NATURE_DEPRIVED_FIELD_NAME" - long_name: "Does the tract have at least 35 acres in it?" + long_name: "Does the tract have at least 35 acres in it?" field_type: bool include_in_tiles: true include_in_downloadable_files: true create_percentile: false - short_name: "percent_impervious" df_field_name: "TRACT_PERCENT_IMPERVIOUS_FIELD_NAME" - long_name: "Share of the tract's land area that is covered by impervious surface as a percent" + long_name: "Share of the tract's land area that is covered by impervious surface as a percent" field_type: percentage include_in_tiles: true include_in_downloadable_files: true create_percentile: true - short_name: "percent_nonnatural" df_field_name: "TRACT_PERCENT_NON_NATURAL_FIELD_NAME" - long_name: "Share of the tract's land area that is covered by impervious surface or cropland as a percent" + long_name: "Share of the tract's land area that is covered by impervious surface or cropland as a percent" field_type: percentage include_in_tiles: true include_in_downloadable_files: true create_percentile: true - short_name: "percent_cropland" df_field_name: "TRACT_PERCENT_CROPLAND_FIELD_NAME" - long_name: "Share of the tract's land area that is covered by cropland as a percent" + long_name: "Share of the tract's land area that is covered by cropland as a percent" field_type: percentage include_in_tiles: true include_in_downloadable_files: true @@ -328,4 +328,4 @@ datasets: include_in_tiles: false include_in_downloadable_files: true create_percentile: false - create_reverse_percentile: true \ No newline at end of file + create_reverse_percentile: true diff --git a/data/data-pipeline/data_pipeline/etl/score/constants.py b/data/data-pipeline/data_pipeline/etl/score/constants.py index 52adadde..7d218eac 100644 --- a/data/data-pipeline/data_pipeline/etl/score/constants.py +++ b/data/data-pipeline/data_pipeline/etl/score/constants.py @@ -1,9 +1,8 @@ +import datetime import os from pathlib import Path -import datetime from data_pipeline.config import settings - from data_pipeline.score import field_names ## note: to keep map porting "right" fields, keeping descriptors the same. diff --git a/data/data-pipeline/data_pipeline/etl/score/etl_score.py b/data/data-pipeline/data_pipeline/etl/score/etl_score.py index 5f1c65fc..e257ee1f 100644 --- a/data/data-pipeline/data_pipeline/etl/score/etl_score.py +++ b/data/data-pipeline/data_pipeline/etl/score/etl_score.py @@ -1,31 +1,26 @@ import functools -from typing import List - from dataclasses import dataclass +from typing import List import numpy as np import pandas as pd - from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.etl.score import constants from data_pipeline.etl.sources.census_acs.etl import CensusACSETL -from data_pipeline.etl.sources.national_risk_index.etl import ( - NationalRiskIndexETL, -) from data_pipeline.etl.sources.dot_travel_composite.etl import ( TravelCompositeETL, ) -from data_pipeline.etl.sources.fsf_flood_risk.etl import ( - FloodRiskETL, -) from data_pipeline.etl.sources.eamlis.etl import AbandonedMineETL +from data_pipeline.etl.sources.fsf_flood_risk.etl import FloodRiskETL +from data_pipeline.etl.sources.fsf_wildfire_risk.etl import WildfireRiskETL +from data_pipeline.etl.sources.national_risk_index.etl import ( + NationalRiskIndexETL, +) +from data_pipeline.etl.sources.nlcd_nature_deprived.etl import NatureDeprivedETL from data_pipeline.etl.sources.tribal_overlap.etl import TribalOverlapETL from data_pipeline.etl.sources.us_army_fuds.etl import USArmyFUDS -from data_pipeline.etl.sources.nlcd_nature_deprived.etl import NatureDeprivedETL -from data_pipeline.etl.sources.fsf_wildfire_risk.etl import WildfireRiskETL -from data_pipeline.score.score_runner import ScoreRunner from data_pipeline.score import field_names -from data_pipeline.etl.score import constants - +from data_pipeline.score.score_runner import ScoreRunner from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) @@ -699,7 +694,9 @@ class ScoreETL(ExtractTransformLoad): self.df = self._backfill_island_demographics(self.df) def load(self) -> None: - logger.info("Saving Score CSV") + logger.info( + f"Saving Score CSV to {constants.DATA_SCORE_CSV_FULL_FILE_PATH}." + ) constants.DATA_SCORE_CSV_FULL_DIR.mkdir(parents=True, exist_ok=True) self.df.to_csv(constants.DATA_SCORE_CSV_FULL_FILE_PATH, index=False) diff --git a/data/data-pipeline/data_pipeline/etl/score/etl_score_geo.py b/data/data-pipeline/data_pipeline/etl/score/etl_score_geo.py index 48320678..3f28b7ee 100644 --- a/data/data-pipeline/data_pipeline/etl/score/etl_score_geo.py +++ b/data/data-pipeline/data_pipeline/etl/score/etl_score_geo.py @@ -1,24 +1,20 @@ import concurrent.futures import math import os + +import geopandas as gpd import numpy as np import pandas as pd -import geopandas as gpd - +from data_pipeline.content.schemas.download_schemas import CSVConfig from data_pipeline.etl.base import ExtractTransformLoad from data_pipeline.etl.score import constants -from data_pipeline.etl.sources.census.etl_utils import ( - check_census_data_source, -) from data_pipeline.etl.score.etl_utils import check_score_data_source +from data_pipeline.etl.sources.census.etl_utils import check_census_data_source from data_pipeline.score import field_names -from data_pipeline.content.schemas.download_schemas import CSVConfig -from data_pipeline.utils import ( - get_module_logger, - zip_files, - load_yaml_dict_from_file, - load_dict_from_yaml_object_fields, -) +from data_pipeline.utils import get_module_logger +from data_pipeline.utils import load_dict_from_yaml_object_fields +from data_pipeline.utils import load_yaml_dict_from_file +from data_pipeline.utils import zip_files logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/score/etl_score_post.py b/data/data-pipeline/data_pipeline/etl/score/etl_score_post.py index 949da1a1..a896f470 100644 --- a/data/data-pipeline/data_pipeline/etl/score/etl_score_post.py +++ b/data/data-pipeline/data_pipeline/etl/score/etl_score_post.py @@ -1,29 +1,23 @@ -from pathlib import Path import json -from numpy import float64 +from pathlib import Path + import numpy as np import pandas as pd -from data_pipeline.content.schemas.download_schemas import ( - CSVConfig, - CodebookConfig, - ExcelConfig, -) - +from data_pipeline.content.schemas.download_schemas import CodebookConfig +from data_pipeline.content.schemas.download_schemas import CSVConfig +from data_pipeline.content.schemas.download_schemas import ExcelConfig from data_pipeline.etl.base import ExtractTransformLoad -from data_pipeline.etl.score.etl_utils import floor_series, create_codebook -from data_pipeline.utils import ( - get_module_logger, - zip_files, - load_yaml_dict_from_file, - column_list_from_yaml_object_fields, - load_dict_from_yaml_object_fields, -) +from data_pipeline.etl.score.etl_utils import create_codebook +from data_pipeline.etl.score.etl_utils import floor_series +from data_pipeline.etl.sources.census.etl_utils import check_census_data_source from data_pipeline.score import field_names +from data_pipeline.utils import column_list_from_yaml_object_fields +from data_pipeline.utils import get_module_logger +from data_pipeline.utils import load_dict_from_yaml_object_fields +from data_pipeline.utils import load_yaml_dict_from_file +from data_pipeline.utils import zip_files +from numpy import float64 - -from data_pipeline.etl.sources.census.etl_utils import ( - check_census_data_source, -) from . import constants logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/score/etl_utils.py b/data/data-pipeline/data_pipeline/etl/score/etl_utils.py index 998a52ac..66ee7131 100644 --- a/data/data-pipeline/data_pipeline/etl/score/etl_utils.py +++ b/data/data-pipeline/data_pipeline/etl/score/etl_utils.py @@ -1,24 +1,21 @@ import os import sys import typing -from pathlib import Path from collections import namedtuple +from pathlib import Path + import numpy as np import pandas as pd - from data_pipeline.config import settings -from data_pipeline.etl.score.constants import ( - TILES_ISLAND_AREA_FIPS_CODES, - TILES_PUERTO_RICO_FIPS_CODE, - TILES_CONTINENTAL_US_FIPS_CODE, - TILES_ALASKA_AND_HAWAII_FIPS_CODE, -) +from data_pipeline.etl.score.constants import TILES_ALASKA_AND_HAWAII_FIPS_CODE +from data_pipeline.etl.score.constants import TILES_CONTINENTAL_US_FIPS_CODE +from data_pipeline.etl.score.constants import TILES_ISLAND_AREA_FIPS_CODES +from data_pipeline.etl.score.constants import TILES_PUERTO_RICO_FIPS_CODE from data_pipeline.etl.sources.census.etl_utils import get_state_fips_codes -from data_pipeline.utils import ( - download_file_from_url, - get_module_logger, -) from data_pipeline.score import field_names +from data_pipeline.utils import download_file_from_url +from data_pipeline.utils import get_module_logger + from . import constants logger = get_module_logger(__name__) @@ -99,7 +96,7 @@ def floor_series(series: pd.Series, number_of_decimals: int) -> pd.Series: if series.isin(unacceptable_values).any(): series.replace(mapping, regex=False, inplace=True) - multiplication_factor = 10 ** number_of_decimals + multiplication_factor = 10**number_of_decimals # In order to safely cast NaNs # First coerce series to float type: series.astype(float) diff --git a/data/data-pipeline/data_pipeline/etl/score/schemas/datasets.py b/data/data-pipeline/data_pipeline/etl/score/schemas/datasets.py index 85c6b360..d485c214 100644 --- a/data/data-pipeline/data_pipeline/etl/score/schemas/datasets.py +++ b/data/data-pipeline/data_pipeline/etl/score/schemas/datasets.py @@ -1,6 +1,8 @@ -from dataclasses import dataclass, field +from dataclasses import dataclass +from dataclasses import field from enum import Enum -from typing import List, Optional +from typing import List +from typing import Optional class FieldType(Enum): diff --git a/data/data-pipeline/data_pipeline/etl/score/tests/conftest.py b/data/data-pipeline/data_pipeline/etl/score/tests/conftest.py index 75d6a12e..a4aeaa27 100644 --- a/data/data-pipeline/data_pipeline/etl/score/tests/conftest.py +++ b/data/data-pipeline/data_pipeline/etl/score/tests/conftest.py @@ -5,7 +5,8 @@ from pathlib import Path import pandas as pd import pytest from data_pipeline import config -from data_pipeline.etl.score import etl_score_post, tests +from data_pipeline.etl.score import etl_score_post +from data_pipeline.etl.score import tests from data_pipeline.etl.score.etl_score_post import PostScoreETL diff --git a/data/data-pipeline/data_pipeline/etl/score/tests/sample_data/state_data_initial.csv b/data/data-pipeline/data_pipeline/etl/score/tests/sample_data/state_data_initial.csv index 36913abd..41cf4737 100644 --- a/data/data-pipeline/data_pipeline/etl/score/tests/sample_data/state_data_initial.csv +++ b/data/data-pipeline/data_pipeline/etl/score/tests/sample_data/state_data_initial.csv @@ -1,4 +1,4 @@ fips,state_name,state_abbreviation,region,division 01,Alabama,AL,South,East South Central 02,Alaska,AK,West,Pacific -04,Arizona,AZ,West,Mountain \ No newline at end of file +04,Arizona,AZ,West,Mountain diff --git a/data/data-pipeline/data_pipeline/etl/score/tests/test_etl_utils.py b/data/data-pipeline/data_pipeline/etl/score/tests/test_etl_utils.py index 5d0a1e53..2e39b08b 100644 --- a/data/data-pipeline/data_pipeline/etl/score/tests/test_etl_utils.py +++ b/data/data-pipeline/data_pipeline/etl/score/tests/test_etl_utils.py @@ -1,11 +1,10 @@ -import pandas as pd import numpy as np +import pandas as pd import pytest - from data_pipeline.etl.score.etl_utils import ( - floor_series, compare_to_list_of_expected_state_fips_codes, ) +from data_pipeline.etl.score.etl_utils import floor_series def test_floor_series(): diff --git a/data/data-pipeline/data_pipeline/etl/score/tests/test_score_post.py b/data/data-pipeline/data_pipeline/etl/score/tests/test_score_post.py index 1e3a47df..f9c16eff 100644 --- a/data/data-pipeline/data_pipeline/etl/score/tests/test_score_post.py +++ b/data/data-pipeline/data_pipeline/etl/score/tests/test_score_post.py @@ -1,14 +1,11 @@ # pylint: disable=W0212 ## Above disables warning about access to underscore-prefixed methods - from importlib import reload from pathlib import Path + import pandas.api.types as ptypes import pandas.testing as pdt -from data_pipeline.content.schemas.download_schemas import ( - CSVConfig, -) - +from data_pipeline.content.schemas.download_schemas import CSVConfig from data_pipeline.etl.score import constants from data_pipeline.utils import load_yaml_dict_from_file diff --git a/data/data-pipeline/data_pipeline/etl/sources/calenviroscreen/etl.py b/data/data-pipeline/data_pipeline/etl/sources/calenviroscreen/etl.py index 55e94372..5c970062 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/calenviroscreen/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/calenviroscreen/etl.py @@ -1,8 +1,7 @@ import pandas as pd - +from data_pipeline.config import settings from data_pipeline.etl.base import ExtractTransformLoad from data_pipeline.utils import get_module_logger -from data_pipeline.config import settings logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/cdc_life_expectancy/etl.py b/data/data-pipeline/data_pipeline/etl/sources/cdc_life_expectancy/etl.py index f656cea9..6325f972 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/cdc_life_expectancy/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/cdc_life_expectancy/etl.py @@ -1,13 +1,15 @@ import pathlib from pathlib import Path -import pandas as pd -from data_pipeline.etl.base import ExtractTransformLoad, ValidGeoLevel +import pandas as pd +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.etl.base import ValidGeoLevel from data_pipeline.etl.score.etl_utils import ( compare_to_list_of_expected_state_fips_codes, ) from data_pipeline.score import field_names -from data_pipeline.utils import get_module_logger, download_file_from_url +from data_pipeline.utils import download_file_from_url +from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/cdc_places/etl.py b/data/data-pipeline/data_pipeline/etl/sources/cdc_places/etl.py index e35a837e..62c94981 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/cdc_places/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/cdc_places/etl.py @@ -1,9 +1,11 @@ import typing -import pandas as pd -from data_pipeline.etl.base import ExtractTransformLoad, ValidGeoLevel -from data_pipeline.utils import get_module_logger, download_file_from_url +import pandas as pd +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.etl.base import ValidGeoLevel from data_pipeline.score import field_names +from data_pipeline.utils import download_file_from_url +from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/cdc_svi_index/README.md b/data/data-pipeline/data_pipeline/etl/sources/cdc_svi_index/README.md index 7eaf0b77..7901af08 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/cdc_svi_index/README.md +++ b/data/data-pipeline/data_pipeline/etl/sources/cdc_svi_index/README.md @@ -53,7 +53,7 @@ For SVI 2018, the authors also included two adjunct variables, 1) 2014-2018 ACS **Important Notes** -1. Tracts with zero estimates for the total population (N = 645 for the U.S.) were removed during the ranking process. These tracts were added back to the SVI databases after ranking. +1. Tracts with zero estimates for the total population (N = 645 for the U.S.) were removed during the ranking process. These tracts were added back to the SVI databases after ranking. 2. The TOTPOP field value is 0, but the percentile ranking fields (RPL_THEME1, RPL_THEME2, RPL_THEME3, RPL_THEME4, and RPL_THEMES) were set to -999. @@ -66,4 +66,4 @@ here: https://www.census.gov/programs-surveys/acs/data/variance-tables.html. For selected ACS 5-year Detailed Tables, “Users can calculate margins of error for aggregated data by using the variance replicates. Unlike available approximation formulas, this method results in an exact margin of error by using the covariance term.” -MOEs are _not_ included nor considered during this data processing nor for the scoring comparison tool. \ No newline at end of file +MOEs are _not_ included nor considered during this data processing nor for the scoring comparison tool. diff --git a/data/data-pipeline/data_pipeline/etl/sources/cdc_svi_index/etl.py b/data/data-pipeline/data_pipeline/etl/sources/cdc_svi_index/etl.py index 47a3720c..6379ceda 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/cdc_svi_index/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/cdc_svi_index/etl.py @@ -1,9 +1,8 @@ -import pandas as pd import numpy as np - +import pandas as pd from data_pipeline.etl.base import ExtractTransformLoad -from data_pipeline.utils import get_module_logger from data_pipeline.score import field_names +from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/census/etl.py b/data/data-pipeline/data_pipeline/etl/sources/census/etl.py index 79ca321d..103453d1 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/census/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/census/etl.py @@ -3,12 +3,12 @@ import json import subprocess from enum import Enum from pathlib import Path + import geopandas as gpd - from data_pipeline.etl.base import ExtractTransformLoad -from data_pipeline.utils import get_module_logger, unzip_file_from_url - from data_pipeline.etl.sources.census.etl_utils import get_state_fips_codes +from data_pipeline.utils import get_module_logger +from data_pipeline.utils import unzip_file_from_url logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/census/etl_utils.py b/data/data-pipeline/data_pipeline/etl/sources/census/etl_utils.py index 2f61a14a..d172fafb 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/census/etl_utils.py +++ b/data/data-pipeline/data_pipeline/etl/sources/census/etl_utils.py @@ -5,13 +5,11 @@ from pathlib import Path import pandas as pd from data_pipeline.config import settings -from data_pipeline.utils import ( - get_module_logger, - remove_all_dirs_from_dir, - remove_files_from_dir, - unzip_file_from_url, - zip_directory, -) +from data_pipeline.utils import get_module_logger +from data_pipeline.utils import remove_all_dirs_from_dir +from data_pipeline.utils import remove_files_from_dir +from data_pipeline.utils import unzip_file_from_url +from data_pipeline.utils import zip_directory logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/census_acs/etl.py b/data/data-pipeline/data_pipeline/etl/sources/census_acs/etl.py index 60e43391..b3613976 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/census_acs/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/census_acs/etl.py @@ -1,19 +1,19 @@ -from collections import namedtuple import os -import pandas as pd -import geopandas as gpd +from collections import namedtuple +import geopandas as gpd +import pandas as pd from data_pipeline.config import settings from data_pipeline.etl.base import ExtractTransformLoad -from data_pipeline.etl.sources.census_acs.etl_utils import ( - retrieve_census_acs_data, -) from data_pipeline.etl.sources.census_acs.etl_imputations import ( calculate_income_measures, ) - -from data_pipeline.utils import get_module_logger, unzip_file_from_url +from data_pipeline.etl.sources.census_acs.etl_utils import ( + retrieve_census_acs_data, +) from data_pipeline.score import field_names +from data_pipeline.utils import get_module_logger +from data_pipeline.utils import unzip_file_from_url logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/census_acs/etl_imputations.py b/data/data-pipeline/data_pipeline/etl/sources/census_acs/etl_imputations.py index 9805af2c..e9e741d7 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/census_acs/etl_imputations.py +++ b/data/data-pipeline/data_pipeline/etl/sources/census_acs/etl_imputations.py @@ -1,7 +1,10 @@ -from typing import Any, List, NamedTuple, Tuple -import pandas as pd -import geopandas as gpd +from typing import Any +from typing import List +from typing import NamedTuple +from typing import Tuple +import geopandas as gpd +import pandas as pd from data_pipeline.score import field_names from data_pipeline.utils import get_module_logger diff --git a/data/data-pipeline/data_pipeline/etl/sources/census_acs/etl_utils.py b/data/data-pipeline/data_pipeline/etl/sources/census_acs/etl_utils.py index 1e7e2221..633576c7 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/census_acs/etl_utils.py +++ b/data/data-pipeline/data_pipeline/etl/sources/census_acs/etl_utils.py @@ -1,10 +1,9 @@ import os from pathlib import Path from typing import List + import censusdata import pandas as pd - - from data_pipeline.etl.sources.census.etl_utils import get_state_fips_codes from data_pipeline.utils import get_module_logger diff --git a/data/data-pipeline/data_pipeline/etl/sources/census_acs_2010/etl.py b/data/data-pipeline/data_pipeline/etl/sources/census_acs_2010/etl.py index 97b0f16f..49648eae 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/census_acs_2010/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/census_acs_2010/etl.py @@ -1,11 +1,10 @@ import pandas as pd - from data_pipeline.etl.base import ExtractTransformLoad from data_pipeline.etl.sources.census_acs.etl_utils import ( retrieve_census_acs_data, ) -from data_pipeline.utils import get_module_logger from data_pipeline.score import field_names +from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/census_acs_median_income/etl.py b/data/data-pipeline/data_pipeline/etl/sources/census_acs_median_income/etl.py index a39f8891..e0322e4f 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/census_acs_median_income/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/census_acs_median_income/etl.py @@ -1,13 +1,14 @@ import json from pathlib import Path + import numpy as np import pandas as pd import requests - -from data_pipeline.etl.base import ExtractTransformLoad -from data_pipeline.utils import get_module_logger from data_pipeline.config import settings -from data_pipeline.utils import unzip_file_from_url, download_file_from_url +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.utils import download_file_from_url +from data_pipeline.utils import get_module_logger +from data_pipeline.utils import unzip_file_from_url logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/census_decennial/etl.py b/data/data-pipeline/data_pipeline/etl/sources/census_decennial/etl.py index a11c8061..e230fa33 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/census_decennial/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/census_decennial/etl.py @@ -1,14 +1,13 @@ import json from typing import List -import requests import numpy as np import pandas as pd - -from data_pipeline.etl.base import ExtractTransformLoad -from data_pipeline.utils import get_module_logger -from data_pipeline.score import field_names +import requests from data_pipeline.config import settings +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.score import field_names +from data_pipeline.utils import get_module_logger pd.options.mode.chained_assignment = "raise" diff --git a/data/data-pipeline/data_pipeline/etl/sources/child_opportunity_index/etl.py b/data/data-pipeline/data_pipeline/etl/sources/child_opportunity_index/etl.py index 4082fdce..770e4a5e 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/child_opportunity_index/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/child_opportunity_index/etl.py @@ -1,7 +1,8 @@ from pathlib import Path -import pandas as pd -from data_pipeline.etl.base import ExtractTransformLoad, ValidGeoLevel +import pandas as pd +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.etl.base import ValidGeoLevel from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/doe_energy_burden/etl.py b/data/data-pipeline/data_pipeline/etl/sources/doe_energy_burden/etl.py index f50a8b4d..3ce2e5a6 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/doe_energy_burden/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/doe_energy_burden/etl.py @@ -1,8 +1,9 @@ from pathlib import Path -import pandas as pd +import pandas as pd from data_pipeline.config import settings -from data_pipeline.etl.base import ExtractTransformLoad, ValidGeoLevel +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.etl.base import ValidGeoLevel from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/dot_travel_composite/README.md b/data/data-pipeline/data_pipeline/etl/sources/dot_travel_composite/README.md index e3597e12..f369ed4d 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/dot_travel_composite/README.md +++ b/data/data-pipeline/data_pipeline/etl/sources/dot_travel_composite/README.md @@ -1,6 +1,6 @@ # DOT travel barriers -The below description is taken from DOT directly: +The below description is taken from DOT directly: Consistent with OMB’s Interim Guidance for the Justice40 Initiative, DOT’s interim definition of DACs includes (a) certain qualifying census tracts, (b) any Tribal land, or (c) any territory or possession of the United States. DOT has provided a mapping tool to assist applicants in identifying whether a project is located in a Disadvantaged Community, available at Transportation Disadvantaged Census Tracts (arcgis.com). A shapefile of the geospatial data is available Transportation Disadvantaged Census Tracts shapefile (version 2 .0, posted 5/10/22). @@ -13,4 +13,4 @@ The DOT interim definition for DACs was developed by an internal and external co Resilience disadvantage identifies communities vulnerable to hazards caused by climate change. (1) - Equity disadvantage identifies communities with a with a high percentile of persons (age 5+) who speak English "less than well." (1) -The CEJST uses only Transportation Access Disadvantage. \ No newline at end of file +The CEJST uses only Transportation Access Disadvantage. diff --git a/data/data-pipeline/data_pipeline/etl/sources/dot_travel_composite/etl.py b/data/data-pipeline/data_pipeline/etl/sources/dot_travel_composite/etl.py index b683b092..66fe512f 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/dot_travel_composite/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/dot_travel_composite/etl.py @@ -1,10 +1,9 @@ # pylint: disable=unsubscriptable-object # pylint: disable=unsupported-assignment-operation - -import pandas as pd import geopandas as gpd - -from data_pipeline.etl.base import ExtractTransformLoad, ValidGeoLevel +import pandas as pd +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.etl.base import ValidGeoLevel from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/eamlis/README.md b/data/data-pipeline/data_pipeline/etl/sources/eamlis/README.md index 57892526..54ce9c72 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/eamlis/README.md +++ b/data/data-pipeline/data_pipeline/etl/sources/eamlis/README.md @@ -1,4 +1,4 @@ -The following is the description from eAMLIS as of August 16, 2022. +The following is the description from eAMLIS as of August 16, 2022. --- e-AMLIS is not a comprehensive database of all AML features or all AML grant activities. e-AMLIS is a national inventory that provides information about known abandoned mine land (AML) features including polluted waters. The majority of the data in e-AMLIS provides information about known coal AML features for the 25 states and 3 tribal SMCRA-approved AML Programs. e-AMLIS also provides limited information on non-coal AML features, and, non-coal reclamation projects as well as AML features for states and tribes that do not have an approved AML Program. Additionally, e-AMLIS only accounts for the direct construction cost to reclaim each AML feature that has been identified by states and Tribes. Other project costs such as planning, design, permitting, and construction oversight are not tracked in e-AMLIS. diff --git a/data/data-pipeline/data_pipeline/etl/sources/eamlis/etl.py b/data/data-pipeline/data_pipeline/etl/sources/eamlis/etl.py index a17ac429..100c3d6a 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/eamlis/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/eamlis/etl.py @@ -1,9 +1,10 @@ from pathlib import Path + import geopandas as gpd import pandas as pd from data_pipeline.config import settings - -from data_pipeline.etl.base import ExtractTransformLoad, ValidGeoLevel +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.etl.base import ValidGeoLevel from data_pipeline.etl.sources.geo_utils import add_tracts_for_geometries from data_pipeline.utils import get_module_logger diff --git a/data/data-pipeline/data_pipeline/etl/sources/ejscreen/etl.py b/data/data-pipeline/data_pipeline/etl/sources/ejscreen/etl.py index fa52690a..cba408cc 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/ejscreen/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/ejscreen/etl.py @@ -1,6 +1,6 @@ import pandas as pd - -from data_pipeline.etl.base import ExtractTransformLoad, ValidGeoLevel +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.etl.base import ValidGeoLevel from data_pipeline.score import field_names from data_pipeline.utils import get_module_logger diff --git a/data/data-pipeline/data_pipeline/etl/sources/ejscreen_areas_of_concern/etl.py b/data/data-pipeline/data_pipeline/etl/sources/ejscreen_areas_of_concern/etl.py index 57749cc2..366e3738 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/ejscreen_areas_of_concern/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/ejscreen_areas_of_concern/etl.py @@ -1,5 +1,4 @@ import pandas as pd - from data_pipeline.etl.base import ExtractTransformLoad from data_pipeline.utils import get_module_logger @@ -58,7 +57,6 @@ class EJSCREENAreasOfConcernETL(ExtractTransformLoad): # TO DO: As a one off we did all the processing in a separate Notebook # Can add here later for a future PR - pass def load(self) -> None: if self.ejscreen_areas_of_concern_data_exists(): diff --git a/data/data-pipeline/data_pipeline/etl/sources/energy_definition_alternative_draft/etl.py b/data/data-pipeline/data_pipeline/etl/sources/energy_definition_alternative_draft/etl.py index 7007fa52..d83287fa 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/energy_definition_alternative_draft/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/energy_definition_alternative_draft/etl.py @@ -1,10 +1,11 @@ from pathlib import Path -import pandas as pd +import pandas as pd from data_pipeline.config import settings from data_pipeline.etl.base import ExtractTransformLoad from data_pipeline.score import field_names -from data_pipeline.utils import get_module_logger, unzip_file_from_url +from data_pipeline.utils import get_module_logger +from data_pipeline.utils import unzip_file_from_url logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/epa_rsei/etl.py b/data/data-pipeline/data_pipeline/etl/sources/epa_rsei/etl.py index abc2165f..a6294c36 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/epa_rsei/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/epa_rsei/etl.py @@ -1,9 +1,10 @@ from pathlib import Path -import pandas as pd +import pandas as pd from data_pipeline.etl.base import ExtractTransformLoad from data_pipeline.score import field_names -from data_pipeline.utils import get_module_logger, unzip_file_from_url +from data_pipeline.utils import get_module_logger +from data_pipeline.utils import unzip_file_from_url logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/fsf_flood_risk/README.md b/data/data-pipeline/data_pipeline/etl/sources/fsf_flood_risk/README.md index 7b4def2b..c703cded 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/fsf_flood_risk/README.md +++ b/data/data-pipeline/data_pipeline/etl/sources/fsf_flood_risk/README.md @@ -1,3 +1,3 @@ # FSF flood risk data -Flood risk computed as 1 in 100 year flood zone \ No newline at end of file +Flood risk computed as 1 in 100 year flood zone diff --git a/data/data-pipeline/data_pipeline/etl/sources/fsf_flood_risk/etl.py b/data/data-pipeline/data_pipeline/etl/sources/fsf_flood_risk/etl.py index fc440e21..1e829f3d 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/fsf_flood_risk/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/fsf_flood_risk/etl.py @@ -1,10 +1,9 @@ # pylint: disable=unsubscriptable-object # pylint: disable=unsupported-assignment-operation - import pandas as pd from data_pipeline.config import settings - -from data_pipeline.etl.base import ExtractTransformLoad, ValidGeoLevel +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.etl.base import ValidGeoLevel from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/fsf_wildfire_risk/README.md b/data/data-pipeline/data_pipeline/etl/sources/fsf_wildfire_risk/README.md index 40604679..9d2e6706 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/fsf_wildfire_risk/README.md +++ b/data/data-pipeline/data_pipeline/etl/sources/fsf_wildfire_risk/README.md @@ -1,3 +1,3 @@ # FSF wildfire risk data -Fire risk computed as >= 0.003 burn risk probability \ No newline at end of file +Fire risk computed as >= 0.003 burn risk probability diff --git a/data/data-pipeline/data_pipeline/etl/sources/fsf_wildfire_risk/etl.py b/data/data-pipeline/data_pipeline/etl/sources/fsf_wildfire_risk/etl.py index 5989d7e5..38a77f00 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/fsf_wildfire_risk/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/fsf_wildfire_risk/etl.py @@ -1,10 +1,9 @@ # pylint: disable=unsubscriptable-object # pylint: disable=unsupported-assignment-operation - import pandas as pd from data_pipeline.config import settings - -from data_pipeline.etl.base import ExtractTransformLoad, ValidGeoLevel +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.etl.base import ValidGeoLevel from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/geo_utils.py b/data/data-pipeline/data_pipeline/etl/sources/geo_utils.py index 7120aa45..ec0f1b51 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/geo_utils.py +++ b/data/data-pipeline/data_pipeline/etl/sources/geo_utils.py @@ -1,11 +1,12 @@ """Utililities for turning geographies into tracts, using census data""" - +from functools import lru_cache from pathlib import Path from typing import Optional -from functools import lru_cache + import geopandas as gpd from data_pipeline.etl.sources.tribal.etl import TribalETL from data_pipeline.utils import get_module_logger + from .census.etl import CensusETL logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/geocorr/etl.py b/data/data-pipeline/data_pipeline/etl/sources/geocorr/etl.py index c8e30d10..a75845be 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/geocorr/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/geocorr/etl.py @@ -1,11 +1,9 @@ import pandas as pd - from data_pipeline.config import settings -from data_pipeline.etl.base import ExtractTransformLoad, ValidGeoLevel -from data_pipeline.utils import ( - get_module_logger, - unzip_file_from_url, -) +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.etl.base import ValidGeoLevel +from data_pipeline.utils import get_module_logger +from data_pipeline.utils import unzip_file_from_url logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/historic_redlining/etl.py b/data/data-pipeline/data_pipeline/etl/sources/historic_redlining/etl.py index 39467fcd..4a8de315 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/historic_redlining/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/historic_redlining/etl.py @@ -1,8 +1,8 @@ import pandas as pd - -from data_pipeline.etl.base import ExtractTransformLoad, ValidGeoLevel -from data_pipeline.utils import get_module_logger from data_pipeline.config import settings +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.etl.base import ValidGeoLevel +from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/housing_and_transportation/etl.py b/data/data-pipeline/data_pipeline/etl/sources/housing_and_transportation/etl.py index 5a560e26..f6182e33 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/housing_and_transportation/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/housing_and_transportation/etl.py @@ -1,9 +1,9 @@ import pandas as pd -from pandas.errors import EmptyDataError - from data_pipeline.etl.base import ExtractTransformLoad from data_pipeline.etl.sources.census.etl_utils import get_state_fips_codes -from data_pipeline.utils import get_module_logger, unzip_file_from_url +from data_pipeline.utils import get_module_logger +from data_pipeline.utils import unzip_file_from_url +from pandas.errors import EmptyDataError logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/hud_housing/etl.py b/data/data-pipeline/data_pipeline/etl/sources/hud_housing/etl.py index 85406ffc..5c00e24a 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/hud_housing/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/hud_housing/etl.py @@ -1,5 +1,6 @@ import pandas as pd -from data_pipeline.etl.base import ExtractTransformLoad, ValidGeoLevel +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.etl.base import ValidGeoLevel from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/hud_recap/etl.py b/data/data-pipeline/data_pipeline/etl/sources/hud_recap/etl.py index cf611137..9c32c3a8 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/hud_recap/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/hud_recap/etl.py @@ -1,9 +1,8 @@ import pandas as pd import requests - +from data_pipeline.config import settings from data_pipeline.etl.base import ExtractTransformLoad from data_pipeline.utils import get_module_logger -from data_pipeline.config import settings logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/mapping_for_ej/etl.py b/data/data-pipeline/data_pipeline/etl/sources/mapping_for_ej/etl.py index 5b0f2a39..4299dc04 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/mapping_for_ej/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/mapping_for_ej/etl.py @@ -1,10 +1,9 @@ -import pandas as pd import geopandas as gpd - -from data_pipeline.etl.base import ExtractTransformLoad -from data_pipeline.utils import get_module_logger -from data_pipeline.score import field_names +import pandas as pd from data_pipeline.config import settings +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.score import field_names +from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) @@ -96,4 +95,3 @@ class MappingForEJETL(ExtractTransformLoad): def validate(self) -> None: logger.info("Validating Mapping For EJ Data") - pass diff --git a/data/data-pipeline/data_pipeline/etl/sources/mapping_inequality/data/holc_grades_manually_mapped.csv b/data/data-pipeline/data_pipeline/etl/sources/mapping_inequality/data/holc_grades_manually_mapped.csv index b4bbe7d0..bcc24910 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/mapping_inequality/data/holc_grades_manually_mapped.csv +++ b/data/data-pipeline/data_pipeline/etl/sources/mapping_inequality/data/holc_grades_manually_mapped.csv @@ -37,4 +37,4 @@ Oklahoma City,90R,D Milwaukee Co.,S-D1,D Milwaukee Co.,S-D2,D Milwaukee Co.,S-D3,D -Milwaukee Co.,S-D4,D \ No newline at end of file +Milwaukee Co.,S-D4,D diff --git a/data/data-pipeline/data_pipeline/etl/sources/mapping_inequality/etl.py b/data/data-pipeline/data_pipeline/etl/sources/mapping_inequality/etl.py index 7aa7afa2..ee6bc0c6 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/mapping_inequality/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/mapping_inequality/etl.py @@ -1,10 +1,11 @@ import pathlib + import numpy as np import pandas as pd - from data_pipeline.etl.base import ExtractTransformLoad from data_pipeline.score import field_names -from data_pipeline.utils import download_file_from_url, get_module_logger +from data_pipeline.utils import download_file_from_url +from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/maryland_ejscreen/README.md b/data/data-pipeline/data_pipeline/etl/sources/maryland_ejscreen/README.md index e76fc47f..f2949cc3 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/maryland_ejscreen/README.md +++ b/data/data-pipeline/data_pipeline/etl/sources/maryland_ejscreen/README.md @@ -8,7 +8,7 @@ According to the documentation: There exist two data categories: Population Burden and Population Characteristics. -There are two indicators within Population Burden: Exposure, and Socioeconomic. Within Population Characteristics, there exist two indicators: Sensitive, Environmental Effects. Each respective indicator contains several relevant covariates, and an averaged score. +There are two indicators within Population Burden: Exposure, and Socioeconomic. Within Population Characteristics, there exist two indicators: Sensitive, Environmental Effects. Each respective indicator contains several relevant covariates, and an averaged score. The two "Pollution Burden" average scores are then averaged together and the result is multiplied by the average of the "Population Characteristics" categories to get the total EJ Score for each tract. @@ -20,4 +20,4 @@ Furthermore, it was determined that Bladensburg residents are at a higher risk o Source: -Driver, A.; Mehdizadeh, C.; Bara-Garcia, S.; Bodenreider, C.; Lewis, J.; Wilson, S. Utilization of the Maryland Environmental Justice Screening Tool: A Bladensburg, Maryland Case Study. Int. J. Environ. Res. Public Health 2019, 16, 348. \ No newline at end of file +Driver, A.; Mehdizadeh, C.; Bara-Garcia, S.; Bodenreider, C.; Lewis, J.; Wilson, S. Utilization of the Maryland Environmental Justice Screening Tool: A Bladensburg, Maryland Case Study. Int. J. Environ. Res. Public Health 2019, 16, 348. diff --git a/data/data-pipeline/data_pipeline/etl/sources/maryland_ejscreen/etl.py b/data/data-pipeline/data_pipeline/etl/sources/maryland_ejscreen/etl.py index 5f7cff17..fb1679ce 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/maryland_ejscreen/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/maryland_ejscreen/etl.py @@ -1,11 +1,11 @@ from glob import glob + import geopandas as gpd import pandas as pd - -from data_pipeline.etl.base import ExtractTransformLoad -from data_pipeline.utils import get_module_logger -from data_pipeline.score import field_names from data_pipeline.config import settings +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.score import field_names +from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/michigan_ejscreen/README.md b/data/data-pipeline/data_pipeline/etl/sources/michigan_ejscreen/README.md index 579bdc7f..1bab7927 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/michigan_ejscreen/README.md +++ b/data/data-pipeline/data_pipeline/etl/sources/michigan_ejscreen/README.md @@ -29,4 +29,4 @@ Sources: * Minnesota Pollution Control Agency. (2015, December 15). Environmental Justice Framework Report. Retrieved from https://www.pca.state.mn.us/sites/default/files/p-gen5-05.pdf. -* Faust, J., L. August, K. Bangia, V. Galaviz, J. Leichty, S. Prasad… and L. Zeise. (2017, January). Update to the California Communities Environmental Health Screening Tool CalEnviroScreen 3.0. Retrieved from OEHHA website: https://oehha.ca.gov/media/downloads/calenviroscreen/report/ces3report.pdf \ No newline at end of file +* Faust, J., L. August, K. Bangia, V. Galaviz, J. Leichty, S. Prasad… and L. Zeise. (2017, January). Update to the California Communities Environmental Health Screening Tool CalEnviroScreen 3.0. Retrieved from OEHHA website: https://oehha.ca.gov/media/downloads/calenviroscreen/report/ces3report.pdf diff --git a/data/data-pipeline/data_pipeline/etl/sources/michigan_ejscreen/etl.py b/data/data-pipeline/data_pipeline/etl/sources/michigan_ejscreen/etl.py index f73fb89a..cfbad0d3 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/michigan_ejscreen/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/michigan_ejscreen/etl.py @@ -1,9 +1,8 @@ import pandas as pd - -from data_pipeline.etl.base import ExtractTransformLoad -from data_pipeline.utils import get_module_logger -from data_pipeline.score import field_names from data_pipeline.config import settings +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.score import field_names +from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/national_risk_index/etl.py b/data/data-pipeline/data_pipeline/etl/sources/national_risk_index/etl.py index db59973f..d9b87d3d 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/national_risk_index/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/national_risk_index/etl.py @@ -2,10 +2,9 @@ # but it may be a known bug. https://github.com/PyCQA/pylint/issues/1498 # pylint: disable=unsubscriptable-object # pylint: disable=unsupported-assignment-operation - import pandas as pd - -from data_pipeline.etl.base import ExtractTransformLoad, ValidGeoLevel +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.etl.base import ValidGeoLevel from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/nlcd_nature_deprived/README.md b/data/data-pipeline/data_pipeline/etl/sources/nlcd_nature_deprived/README.md index aa1b6e3b..cf1d5014 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/nlcd_nature_deprived/README.md +++ b/data/data-pipeline/data_pipeline/etl/sources/nlcd_nature_deprived/README.md @@ -2,7 +2,7 @@ The following dataset was compiled by TPL (Trust for Public Lands) using NCLD data. We define as: AREA - [CROPLAND] - [IMPERVIOUS SURFACES]. -## Codebook +## Codebook - GEOID10 – Census tract ID - SF – State Name - CF – County Name @@ -13,7 +13,7 @@ The following dataset was compiled by TPL (Trust for Public Lands) using NCLD da - AcresCrops – Acres crops calculated by summing all cells in the NLCD Cropland Data Layer crop classes. - PctCrops – Formula: AcresCrops/TractAcres*100. - PctImperv – Mean imperviousness for each census tract. - - CAVEAT: Where tracts extend into open water, mean imperviousness may be underestimated. + - CAVEAT: Where tracts extend into open water, mean imperviousness may be underestimated. - __TO USE__ PctNatural – Formula: 100 – PctCrops – PctImperv. - PctNat90 – Tract in or below 10th percentile for PctNatural. 1 = True, 0 = False. - PctNatural 10th percentile = 28.6439% @@ -24,7 +24,7 @@ The following dataset was compiled by TPL (Trust for Public Lands) using NCLD da - P200_PFS 65th percentile = 64.0% - NatureDep – ImpOrCrp = 1 AND LowInAndEd = 1. -We added `GEOID10_TRACT` before converting shapefile to csv. +We added `GEOID10_TRACT` before converting shapefile to csv. ## Instructions to recreate diff --git a/data/data-pipeline/data_pipeline/etl/sources/nlcd_nature_deprived/etl.py b/data/data-pipeline/data_pipeline/etl/sources/nlcd_nature_deprived/etl.py index ce2dd66d..ff1fab77 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/nlcd_nature_deprived/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/nlcd_nature_deprived/etl.py @@ -1,10 +1,9 @@ # pylint: disable=unsubscriptable-object # pylint: disable=unsupported-assignment-operation - import pandas as pd from data_pipeline.config import settings - -from data_pipeline.etl.base import ExtractTransformLoad, ValidGeoLevel +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.etl.base import ValidGeoLevel from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/persistent_poverty/etl.py b/data/data-pipeline/data_pipeline/etl/sources/persistent_poverty/etl.py index c35ae9f2..82daf861 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/persistent_poverty/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/persistent_poverty/etl.py @@ -1,12 +1,11 @@ import functools -import pandas as pd +import pandas as pd from data_pipeline.config import settings -from data_pipeline.etl.base import ExtractTransformLoad, ValidGeoLevel -from data_pipeline.utils import ( - get_module_logger, - unzip_file_from_url, -) +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.etl.base import ValidGeoLevel +from data_pipeline.utils import get_module_logger +from data_pipeline.utils import unzip_file_from_url logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/tribal/etl.py b/data/data-pipeline/data_pipeline/etl/sources/tribal/etl.py index 0657dd77..0fdb852c 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/tribal/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/tribal/etl.py @@ -1,11 +1,12 @@ from pathlib import Path + import geopandas as gpd import pandas as pd - from data_pipeline.config import settings from data_pipeline.etl.base import ExtractTransformLoad from data_pipeline.score import field_names -from data_pipeline.utils import get_module_logger, unzip_file_from_url +from data_pipeline.utils import get_module_logger +from data_pipeline.utils import unzip_file_from_url logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/tribal/etl_utils.py b/data/data-pipeline/data_pipeline/etl/sources/tribal/etl_utils.py index 4e122018..ea97db1c 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/tribal/etl_utils.py +++ b/data/data-pipeline/data_pipeline/etl/sources/tribal/etl_utils.py @@ -1,11 +1,8 @@ from pathlib import Path -from data_pipeline.utils import ( - get_module_logger, - remove_all_from_dir, - remove_files_from_dir, -) - +from data_pipeline.utils import get_module_logger +from data_pipeline.utils import remove_all_from_dir +from data_pipeline.utils import remove_files_from_dir logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/etl/sources/tribal_overlap/etl.py b/data/data-pipeline/data_pipeline/etl/sources/tribal_overlap/etl.py index 3ae585a5..b64f2cb2 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/tribal_overlap/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/tribal_overlap/etl.py @@ -1,12 +1,11 @@ import geopandas as gpd import numpy as np import pandas as pd -from data_pipeline.etl.base import ExtractTransformLoad, ValidGeoLevel -from data_pipeline.etl.sources.geo_utils import ( - add_tracts_for_geometries, - get_tribal_geojson, - get_tract_geojson, -) +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.etl.base import ValidGeoLevel +from data_pipeline.etl.sources.geo_utils import add_tracts_for_geometries +from data_pipeline.etl.sources.geo_utils import get_tract_geojson +from data_pipeline.etl.sources.geo_utils import get_tribal_geojson from data_pipeline.score import field_names from data_pipeline.utils import get_module_logger diff --git a/data/data-pipeline/data_pipeline/etl/sources/us_army_fuds/etl.py b/data/data-pipeline/data_pipeline/etl/sources/us_army_fuds/etl.py index 30f2ca39..3b46fcc8 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/us_army_fuds/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/us_army_fuds/etl.py @@ -1,11 +1,13 @@ from pathlib import Path -import geopandas as gpd -import pandas as pd -import numpy as np -from data_pipeline.etl.base import ExtractTransformLoad, ValidGeoLevel -from data_pipeline.utils import get_module_logger, download_file_from_url +import geopandas as gpd +import numpy as np +import pandas as pd +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.etl.base import ValidGeoLevel from data_pipeline.etl.sources.geo_utils import add_tracts_for_geometries +from data_pipeline.utils import download_file_from_url +from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/ipython/agricultural_loss_indicator.ipynb b/data/data-pipeline/data_pipeline/ipython/agricultural_loss_indicator.ipynb index b7a0efb1..0463d27a 100644 --- a/data/data-pipeline/data_pipeline/ipython/agricultural_loss_indicator.ipynb +++ b/data/data-pipeline/data_pipeline/ipython/agricultural_loss_indicator.ipynb @@ -211,7 +211,9 @@ } ], "source": [ - "tmp = sns.FacetGrid(data=score_m, col=\"Urban Heuristic Flag\", col_wrap=2, height=7)\n", + "tmp = sns.FacetGrid(\n", + " data=score_m, col=\"Urban Heuristic Flag\", col_wrap=2, height=7\n", + ")\n", "tmp.map(\n", " sns.distplot,\n", " \"Expected agricultural loss rate (Natural Hazards Risk Index) (percentile)\",\n", @@ -250,7 +252,9 @@ ")\n", "\n", "nri_with_flag[\"total_ag_loss\"] = nri_with_flag.filter(like=\"EALA\").sum(axis=1)\n", - "nri_with_flag[\"total_ag_loss_pctile\"] = nri_with_flag[\"total_ag_loss\"].rank(pct=True)\n", + "nri_with_flag[\"total_ag_loss_pctile\"] = nri_with_flag[\"total_ag_loss\"].rank(\n", + " pct=True\n", + ")\n", "\n", "nri_with_flag.groupby(\"Urban Heuristic Flag\")[\"total_ag_loss_pctile\"].mean()" ] @@ -779,9 +783,9 @@ " \"Greater than or equal to the 90th percentile for expected agriculture loss rate, is low income, and has a low percent of higher ed students?\"\n", "].astype(int)\n", "\n", - "score_m_adjusted_tracts = set(score_m[score_m[\"adjusted\"] > 0][\"GEOID10_TRACT\"]).union(\n", - " all_ag_loss_tracts\n", - ")\n", + "score_m_adjusted_tracts = set(\n", + " score_m[score_m[\"adjusted\"] > 0][\"GEOID10_TRACT\"]\n", + ").union(all_ag_loss_tracts)\n", "display(len(set(all_scorem_tracts).difference(score_m_adjusted_tracts)))" ] }, @@ -832,7 +836,11 @@ " left_clip = nri_with_flag[nri_with_flag[\"Urban Heuristic Flag\"] == 0][\n", " \"AGRIVALUE\"\n", " ].quantile(threshold)\n", - " print(\"At threshold {:.2f}, minimum value is ${:,.0f}\".format(threshold, left_clip))\n", + " print(\n", + " \"At threshold {:.2f}, minimum value is ${:,.0f}\".format(\n", + " threshold, left_clip\n", + " )\n", + " )\n", " tmp_value = nri_with_flag[\"AGRIVALUE\"].clip(lower=left_clip)\n", " nri_with_flag[\"total_ag_loss_pctile_{:.2f}\".format(threshold)] = (\n", " nri_with_flag[\"total_ag_loss\"] / tmp_value\n", @@ -889,7 +897,9 @@ " .set_index(\"Left clip value\")[[\"Rural\", \"Urban\"]]\n", " .stack()\n", " .reset_index()\n", - " .rename(columns={\"level_1\": \"Tract classification\", 0: \"Average percentile\"})\n", + " .rename(\n", + " columns={\"level_1\": \"Tract classification\", 0: \"Average percentile\"}\n", + " )\n", ")" ] }, diff --git a/data/data-pipeline/data_pipeline/ipython/check_tribal_count.ipynb b/data/data-pipeline/data_pipeline/ipython/check_tribal_count.ipynb index 3451f325..7ea4814b 100644 --- a/data/data-pipeline/data_pipeline/ipython/check_tribal_count.ipynb +++ b/data/data-pipeline/data_pipeline/ipython/check_tribal_count.ipynb @@ -21,6 +21,7 @@ "source": [ "import os\n", "import sys\n", + "\n", "module_path = os.path.abspath(os.path.join(\"../..\"))\n", "if module_path not in sys.path:\n", " sys.path.append(module_path)" @@ -94,9 +95,13 @@ "bia_aian_supplemental_geojson = (\n", " GEOJSON_BASE_PATH / \"bia_national_lar\" / \"BIA_AIAN_Supplemental.json\"\n", ")\n", - "bia_tsa_geojson_geojson = GEOJSON_BASE_PATH / \"bia_national_lar\" / \"BIA_TSA.json\"\n", + "bia_tsa_geojson_geojson = (\n", + " GEOJSON_BASE_PATH / \"bia_national_lar\" / \"BIA_TSA.json\"\n", + ")\n", "alaska_native_villages_geojson = (\n", - " GEOJSON_BASE_PATH / \"alaska_native_villages\" / \"AlaskaNativeVillages.gdb.geojson\"\n", + " GEOJSON_BASE_PATH\n", + " / \"alaska_native_villages\"\n", + " / \"AlaskaNativeVillages.gdb.geojson\"\n", ")" ] }, @@ -131,7 +136,9 @@ "len(\n", " sorted(\n", " list(\n", - " bia_national_lar_df.LARName.str.replace(r\"\\(.*\\) \", \"\", regex=True).unique()\n", + " bia_national_lar_df.LARName.str.replace(\n", + " r\"\\(.*\\) \", \"\", regex=True\n", + " ).unique()\n", " )\n", " )\n", ")" diff --git a/data/data-pipeline/data_pipeline/ipython/compare_tiles_and_geoJson_files.ipynb b/data/data-pipeline/data_pipeline/ipython/compare_tiles_and_geoJson_files.ipynb index f3585578..0eabedc0 100644 --- a/data/data-pipeline/data_pipeline/ipython/compare_tiles_and_geoJson_files.ipynb +++ b/data/data-pipeline/data_pipeline/ipython/compare_tiles_and_geoJson_files.ipynb @@ -45,6 +45,7 @@ "source": [ "# Read in the score geojson file\n", "from data_pipeline.etl.score.constants import DATA_SCORE_CSV_TILES_FILE_PATH\n", + "\n", "nation = gpd.read_file(DATA_SCORE_CSV_TILES_FILE_PATH)" ] }, @@ -93,10 +94,14 @@ " random_tile_features = json.loads(f.read())\n", "\n", "# Flatten data around the features key:\n", - "flatten_features = pd.json_normalize(random_tile_features, record_path=[\"features\"])\n", + "flatten_features = pd.json_normalize(\n", + " random_tile_features, record_path=[\"features\"]\n", + ")\n", "\n", "# index into the feature properties, get keys and turn into a sorted list\n", - "random_tile = sorted(list(flatten_features[\"features\"][0][0][\"properties\"].keys()))" + "random_tile = sorted(\n", + " list(flatten_features[\"features\"][0][0][\"properties\"].keys())\n", + ")" ] }, { @@ -291,8 +296,8 @@ } ], "source": [ - "nation_HRS_GEO = nation[['GEOID10', 'SF', 'CF', 'HRS_ET', 'AML_ET', 'FUDS_ET']]\n", - "nation_HRS_GEO.loc[nation_HRS_GEO['FUDS_ET'] == '0']" + "nation_HRS_GEO = nation[[\"GEOID10\", \"SF\", \"CF\", \"HRS_ET\", \"AML_ET\", \"FUDS_ET\"]]\n", + "nation_HRS_GEO.loc[nation_HRS_GEO[\"FUDS_ET\"] == \"0\"]" ] }, { @@ -321,7 +326,7 @@ } ], "source": [ - "nation['HRS_ET'].unique()" + "nation[\"HRS_ET\"].unique()" ] } ], diff --git a/data/data-pipeline/data_pipeline/ipython/county_lookup.ipynb b/data/data-pipeline/data_pipeline/ipython/county_lookup.ipynb index 6140f318..7d733b1f 100644 --- a/data/data-pipeline/data_pipeline/ipython/county_lookup.ipynb +++ b/data/data-pipeline/data_pipeline/ipython/county_lookup.ipynb @@ -163,4 +163,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/data/data-pipeline/data_pipeline/ipython/experiment_4_weighting/health_scores.py b/data/data-pipeline/data_pipeline/ipython/experiment_4_weighting/health_scores.py index de6c2a8f..a0a9fd0a 100644 --- a/data/data-pipeline/data_pipeline/ipython/experiment_4_weighting/health_scores.py +++ b/data/data-pipeline/data_pipeline/ipython/experiment_4_weighting/health_scores.py @@ -1,9 +1,6 @@ #!/usr/bin/env python # coding: utf-8 - # In[ ]: - - import numpy as np import pandas as pd from sklearn.preprocessing import MinMaxScaler diff --git a/data/data-pipeline/data_pipeline/ipython/explore_adjacency.ipynb b/data/data-pipeline/data_pipeline/ipython/explore_adjacency.ipynb index e0e5191c..af099cbc 100644 --- a/data/data-pipeline/data_pipeline/ipython/explore_adjacency.ipynb +++ b/data/data-pipeline/data_pipeline/ipython/explore_adjacency.ipynb @@ -18,7 +18,10 @@ " sys.path.append(module_path)\n", "\n", "from data_pipeline.config import settings\n", - "from data_pipeline.etl.sources.geo_utils import add_tracts_for_geometries, get_tract_geojson\n" + "from data_pipeline.etl.sources.geo_utils import (\n", + " add_tracts_for_geometries,\n", + " get_tract_geojson,\n", + ")" ] }, { @@ -655,9 +658,9 @@ } ], "source": [ - "adjacent_tracts.groupby(\"ORIGINAL_TRACT\")[[\"included\"]].mean().reset_index().rename(\n", - " columns={\"ORIGINAL_TRACT\": \"GEOID10_TRACT\"}\n", - ")" + "adjacent_tracts.groupby(\"ORIGINAL_TRACT\")[\n", + " [\"included\"]\n", + "].mean().reset_index().rename(columns={\"ORIGINAL_TRACT\": \"GEOID10_TRACT\"})" ] }, { diff --git a/data/data-pipeline/data_pipeline/ipython/explore_eamlis.ipynb b/data/data-pipeline/data_pipeline/ipython/explore_eamlis.ipynb index 87107be2..71612a7d 100644 --- a/data/data-pipeline/data_pipeline/ipython/explore_eamlis.ipynb +++ b/data/data-pipeline/data_pipeline/ipython/explore_eamlis.ipynb @@ -65,7 +65,8 @@ "tmp_path.mkdir(parents=True, exist_ok=True)\n", "\n", "eamlis_path_in_s3 = (\n", - " settings.AWS_JUSTICE40_DATASOURCES_URL + \"/eAMLIS export of all data.tsv.zip\"\n", + " settings.AWS_JUSTICE40_DATASOURCES_URL\n", + " + \"/eAMLIS export of all data.tsv.zip\"\n", ")\n", "\n", "unzip_file_from_url(\n", diff --git a/data/data-pipeline/data_pipeline/ipython/generate_fuds_test_data.ipynb b/data/data-pipeline/data_pipeline/ipython/generate_fuds_test_data.ipynb index f14fdd6f..4e1109c3 100644 --- a/data/data-pipeline/data_pipeline/ipython/generate_fuds_test_data.ipynb +++ b/data/data-pipeline/data_pipeline/ipython/generate_fuds_test_data.ipynb @@ -460,7 +460,9 @@ "outputs": [], "source": [ "object_ids_to_keep = set(\n", - " merged_exaple_data[merged_exaple_data[\"_merge\"] == \"both\"].OBJECTID.astype(\"int\")\n", + " merged_exaple_data[merged_exaple_data[\"_merge\"] == \"both\"].OBJECTID.astype(\n", + " \"int\"\n", + " )\n", ")\n", "features = []\n", "for feature in raw_fuds_geojson[\"features\"]:\n", @@ -476,7 +478,11 @@ "outputs": [], "source": [ "def make_fake_feature(\n", - " state: str, has_projects: bool, is_eligible: bool, latitude: float, longitude: float\n", + " state: str,\n", + " has_projects: bool,\n", + " is_eligible: bool,\n", + " latitude: float,\n", + " longitude: float,\n", "):\n", " \"\"\"For tracts where we don't have a FUDS, fake one.\"\"\"\n", " make_fake_feature._object_id += 1\n", @@ -537,7 +543,9 @@ "# Create FUDS in CA for each tract that doesn't have a FUDS\n", "for tract_id, point in points.items():\n", " for bools in [(True, True), (True, False), (False, False)]:\n", - " features.append(make_fake_feature(\"CA\", bools[0], bools[1], point.y, point.x))" + " features.append(\n", + " make_fake_feature(\"CA\", bools[0], bools[1], point.y, point.x)\n", + " )" ] }, { @@ -596,9 +604,9 @@ } ], "source": [ - "test_frame_with_tracts_full = test_frame_with_tracts = add_tracts_for_geometries(\n", - " test_frame\n", - ")" + "test_frame_with_tracts_full = (\n", + " test_frame_with_tracts\n", + ") = add_tracts_for_geometries(test_frame)" ] }, { @@ -680,7 +688,9 @@ } ], "source": [ - "tracts = test_frame_with_tracts_full[[\"GEOID10_TRACT\", \"geometry\"]].drop_duplicates()\n", + "tracts = test_frame_with_tracts_full[\n", + " [\"GEOID10_TRACT\", \"geometry\"]\n", + "].drop_duplicates()\n", "tracts[\"lat_long\"] = test_frame_with_tracts_full.geometry.apply(\n", " lambda point: (point.x, point.y)\n", ")\n", diff --git a/data/data-pipeline/data_pipeline/ipython/geojson_compare_tiles.ipynb b/data/data-pipeline/data_pipeline/ipython/geojson_compare_tiles.ipynb index f134f9a6..79fa3336 100644 --- a/data/data-pipeline/data_pipeline/ipython/geojson_compare_tiles.ipynb +++ b/data/data-pipeline/data_pipeline/ipython/geojson_compare_tiles.ipynb @@ -13,7 +13,7 @@ "import geopandas as gpd\n", "\n", "# Read in the above json file\n", - "nation=gpd.read_file(\"/Users/vims/Downloads/usa-high-1822-637b.json\")" + "nation = gpd.read_file(\"/Users/vims/Downloads/usa-high-1822-637b.json\")" ] }, { @@ -45,7 +45,7 @@ } ], "source": [ - "nation['FUDS_RAW']" + "nation[\"FUDS_RAW\"]" ] }, { @@ -248,7 +248,18 @@ } ], "source": [ - "nation_new_ind = nation[['GEOID10', 'SF', 'CF', 'HRS_ET', 'AML_ET', 'AML_RAW','FUDS_ET', 'FUDS_RAW']]\n", + "nation_new_ind = nation[\n", + " [\n", + " \"GEOID10\",\n", + " \"SF\",\n", + " \"CF\",\n", + " \"HRS_ET\",\n", + " \"AML_ET\",\n", + " \"AML_RAW\",\n", + " \"FUDS_ET\",\n", + " \"FUDS_RAW\",\n", + " ]\n", + "]\n", "nation_new_ind" ] }, @@ -270,7 +281,7 @@ } ], "source": [ - "nation_new_ind['HRS_ET'].unique()" + "nation_new_ind[\"HRS_ET\"].unique()" ] }, { @@ -293,7 +304,7 @@ } ], "source": [ - "nation_new_ind['HRS_ET'].value_counts()" + "nation_new_ind[\"HRS_ET\"].value_counts()" ] }, { @@ -314,7 +325,7 @@ } ], "source": [ - "nation_new_ind['AML_ET'].unique()" + "nation_new_ind[\"AML_ET\"].unique()" ] }, { @@ -337,7 +348,7 @@ } ], "source": [ - "nation_new_ind['AML_ET'].value_counts()" + "nation_new_ind[\"AML_ET\"].value_counts()" ] }, { @@ -358,7 +369,7 @@ } ], "source": [ - "nation_new_ind['AML_RAW'].unique()" + "nation_new_ind[\"AML_RAW\"].unique()" ] }, { @@ -380,7 +391,7 @@ } ], "source": [ - "nation_new_ind['AML_RAW'].value_counts()" + "nation_new_ind[\"AML_RAW\"].value_counts()" ] }, { @@ -401,7 +412,7 @@ } ], "source": [ - "nation_new_ind['FUDS_ET'].unique()" + "nation_new_ind[\"FUDS_ET\"].unique()" ] }, { @@ -424,7 +435,7 @@ } ], "source": [ - "nation_new_ind['FUDS_ET'].value_counts()" + "nation_new_ind[\"FUDS_ET\"].value_counts()" ] }, { @@ -445,7 +456,7 @@ } ], "source": [ - "nation_new_ind['FUDS_RAW'].unique()" + "nation_new_ind[\"FUDS_RAW\"].unique()" ] }, { @@ -468,7 +479,7 @@ } ], "source": [ - "nation_new_ind['FUDS_RAW'].value_counts()" + "nation_new_ind[\"FUDS_RAW\"].value_counts()" ] } ], diff --git a/data/data-pipeline/data_pipeline/ipython/geopandas_speed_test.ipynb b/data/data-pipeline/data_pipeline/ipython/geopandas_speed_test.ipynb index 568e0a49..01e121ef 100644 --- a/data/data-pipeline/data_pipeline/ipython/geopandas_speed_test.ipynb +++ b/data/data-pipeline/data_pipeline/ipython/geopandas_speed_test.ipynb @@ -36,8 +36,8 @@ " engine=\"pyogrio\",\n", ")\n", "end = time.time()\n", - " \n", - "print(\"Time taken to execute the function using pyogrio is\", end-begin)" + "\n", + "print(\"Time taken to execute the function using pyogrio is\", end - begin)" ] }, { @@ -59,11 +59,13 @@ "census_tract_gdf = gpd.read_file(\n", " CensusETL.NATIONAL_TRACT_JSON_PATH,\n", " engine=\"fiona\",\n", - " include_fields=[\"GEOID10\"]\n", + " include_fields=[\"GEOID10\"],\n", ")\n", "end2 = time.time()\n", - " \n", - "print(\"Time taken to execute the function using include fields is\", end2-begin2)" + "\n", + "print(\n", + " \"Time taken to execute the function using include fields is\", end2 - begin2\n", + ")" ] }, { diff --git a/data/data-pipeline/data_pipeline/ipython/tribal_and_tracts_overlap.ipynb b/data/data-pipeline/data_pipeline/ipython/tribal_and_tracts_overlap.ipynb index effeed69..0560b545 100644 --- a/data/data-pipeline/data_pipeline/ipython/tribal_and_tracts_overlap.ipynb +++ b/data/data-pipeline/data_pipeline/ipython/tribal_and_tracts_overlap.ipynb @@ -1369,7 +1369,9 @@ "\n", "results = results.reset_index()\n", "\n", - "results.to_csv(\"~/Downloads/tribal_area_as_a_share_of_tract_area.csv\", index=False)\n", + "results.to_csv(\n", + " \"~/Downloads/tribal_area_as_a_share_of_tract_area.csv\", index=False\n", + ")\n", "\n", "# Printing results\n", "print(results)" diff --git a/data/data-pipeline/data_pipeline/score/adding_variables_to_score.md b/data/data-pipeline/data_pipeline/score/adding_variables_to_score.md index c57e15f4..581cac8e 100644 --- a/data/data-pipeline/data_pipeline/score/adding_variables_to_score.md +++ b/data/data-pipeline/data_pipeline/score/adding_variables_to_score.md @@ -1,9 +1,9 @@ # How to add variables to a score -So, there's a variable you want to add to the score! Once you have the data source created in `etl/sources`, what should you do? There are 6 steps across a minimum of 7 files. +So, there's a variable you want to add to the score! Once you have the data source created in `etl/sources`, what should you do? There are 6 steps across a minimum of 7 files. __Updating `field_names.py`__ -Per indicator, you need to make (usually) three variables to get used in other files. +Per indicator, you need to make (usually) three variables to get used in other files. - raw variable: this is the name of the variable's raw data, not scaled into a percentile - variable with threshold exceeded: this is a boolean for whether the tract meets the threshold for the indicator alone - variable with threshold exceeded and socioeconomic criterion exceeded: this is whether the tract will be a DAC based on the socioeconomic criterion and the indicator @@ -25,4 +25,4 @@ __Updating `csv.yml` and `excel.yml`__ - make sure each column you want to be in the downloadable files is listed here __Update the fixtures__ -Follow the instructions on the repo to modify tiles so that `test_etl_post.py` doesn't fail. Then, confirm results. \ No newline at end of file +Follow the instructions on the repo to modify tiles so that `test_etl_post.py` doesn't fail. Then, confirm results. diff --git a/data/data-pipeline/data_pipeline/score/score_a.py b/data/data-pipeline/data_pipeline/score/score_a.py index 8f0bdde4..c1a21298 100644 --- a/data/data-pipeline/data_pipeline/score/score_a.py +++ b/data/data-pipeline/data_pipeline/score/score_a.py @@ -1,7 +1,6 @@ -import pandas as pd - -from data_pipeline.score.score import Score import data_pipeline.score.field_names as field_names +import pandas as pd +from data_pipeline.score.score import Score from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/score/score_b.py b/data/data-pipeline/data_pipeline/score/score_b.py index 449ccade..12f7048e 100644 --- a/data/data-pipeline/data_pipeline/score/score_b.py +++ b/data/data-pipeline/data_pipeline/score/score_b.py @@ -1,7 +1,6 @@ -import pandas as pd - -from data_pipeline.score.score import Score import data_pipeline.score.field_names as field_names +import pandas as pd +from data_pipeline.score.score import Score from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/score/score_c.py b/data/data-pipeline/data_pipeline/score/score_c.py index 57194b45..ef10d86d 100644 --- a/data/data-pipeline/data_pipeline/score/score_c.py +++ b/data/data-pipeline/data_pipeline/score/score_c.py @@ -1,8 +1,8 @@ from collections import namedtuple -import pandas as pd -from data_pipeline.score.score import Score import data_pipeline.score.field_names as field_names +import pandas as pd +from data_pipeline.score.score import Score from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/score/score_d.py b/data/data-pipeline/data_pipeline/score/score_d.py index 22d7b4aa..55b430a4 100644 --- a/data/data-pipeline/data_pipeline/score/score_d.py +++ b/data/data-pipeline/data_pipeline/score/score_d.py @@ -1,7 +1,6 @@ -import pandas as pd - -from data_pipeline.score.score import Score import data_pipeline.score.field_names as field_names +import pandas as pd +from data_pipeline.score.score import Score from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/score/score_f.py b/data/data-pipeline/data_pipeline/score/score_f.py index fb254776..523f2cf1 100644 --- a/data/data-pipeline/data_pipeline/score/score_f.py +++ b/data/data-pipeline/data_pipeline/score/score_f.py @@ -1,7 +1,6 @@ -import pandas as pd - -from data_pipeline.score.score import Score import data_pipeline.score.field_names as field_names +import pandas as pd +from data_pipeline.score.score import Score from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/score/score_g.py b/data/data-pipeline/data_pipeline/score/score_g.py index f83b8fd4..7cd342de 100644 --- a/data/data-pipeline/data_pipeline/score/score_g.py +++ b/data/data-pipeline/data_pipeline/score/score_g.py @@ -1,7 +1,6 @@ -import pandas as pd - -from data_pipeline.score.score import Score import data_pipeline.score.field_names as field_names +import pandas as pd +from data_pipeline.score.score import Score from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/score/score_h.py b/data/data-pipeline/data_pipeline/score/score_h.py index 67c58d22..efc24ee1 100644 --- a/data/data-pipeline/data_pipeline/score/score_h.py +++ b/data/data-pipeline/data_pipeline/score/score_h.py @@ -1,7 +1,6 @@ -import pandas as pd - -from data_pipeline.score.score import Score import data_pipeline.score.field_names as field_names +import pandas as pd +from data_pipeline.score.score import Score from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/score/score_i.py b/data/data-pipeline/data_pipeline/score/score_i.py index 948669d8..02528ebc 100644 --- a/data/data-pipeline/data_pipeline/score/score_i.py +++ b/data/data-pipeline/data_pipeline/score/score_i.py @@ -1,7 +1,6 @@ -import pandas as pd - -from data_pipeline.score.score import Score import data_pipeline.score.field_names as field_names +import pandas as pd +from data_pipeline.score.score import Score from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/score/score_k.py b/data/data-pipeline/data_pipeline/score/score_k.py index 44452f17..bc6b8057 100644 --- a/data/data-pipeline/data_pipeline/score/score_k.py +++ b/data/data-pipeline/data_pipeline/score/score_k.py @@ -1,7 +1,6 @@ -import pandas as pd - -from data_pipeline.score.score import Score import data_pipeline.score.field_names as field_names +import pandas as pd +from data_pipeline.score.score import Score from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/score/score_l.py b/data/data-pipeline/data_pipeline/score/score_l.py index ca22aef9..ab935b72 100644 --- a/data/data-pipeline/data_pipeline/score/score_l.py +++ b/data/data-pipeline/data_pipeline/score/score_l.py @@ -1,8 +1,7 @@ +import data_pipeline.score.field_names as field_names import numpy as np import pandas as pd - from data_pipeline.score.score import Score -import data_pipeline.score.field_names as field_names from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/score/score_m.py b/data/data-pipeline/data_pipeline/score/score_m.py index ddaa57f5..89eef6fa 100644 --- a/data/data-pipeline/data_pipeline/score/score_m.py +++ b/data/data-pipeline/data_pipeline/score/score_m.py @@ -1,11 +1,11 @@ from typing import Tuple + +import data_pipeline.etl.score.constants as constants +import data_pipeline.score.field_names as field_names import numpy as np import pandas as pd - from data_pipeline.score.score import Score -import data_pipeline.score.field_names as field_names from data_pipeline.utils import get_module_logger -import data_pipeline.etl.score.constants as constants logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/score/score_narwhal.py b/data/data-pipeline/data_pipeline/score/score_narwhal.py index 7e92654b..5abf6053 100644 --- a/data/data-pipeline/data_pipeline/score/score_narwhal.py +++ b/data/data-pipeline/data_pipeline/score/score_narwhal.py @@ -1,12 +1,12 @@ from typing import Tuple + +import data_pipeline.etl.score.constants as constants +import data_pipeline.score.field_names as field_names import numpy as np import pandas as pd - from data_pipeline.score.score import Score -import data_pipeline.score.field_names as field_names -from data_pipeline.utils import get_module_logger -import data_pipeline.etl.score.constants as constants from data_pipeline.score.utils import calculate_tract_adjacency_scores +from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/score/score_runner.py b/data/data-pipeline/data_pipeline/score/score_runner.py index 81343201..e88c3c29 100644 --- a/data/data-pipeline/data_pipeline/score/score_runner.py +++ b/data/data-pipeline/data_pipeline/score/score_runner.py @@ -1,6 +1,5 @@ import pandas as pd from data_pipeline.score.score_narwhal import ScoreNarwhal - from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/score/utils.py b/data/data-pipeline/data_pipeline/score/utils.py index bd0df93d..5450faf6 100644 --- a/data/data-pipeline/data_pipeline/score/utils.py +++ b/data/data-pipeline/data_pipeline/score/utils.py @@ -1,12 +1,12 @@ """Utilities to help generate the score.""" -import pandas as pd -import geopandas as gpd import data_pipeline.score.field_names as field_names +import geopandas as gpd +import pandas as pd +from data_pipeline.etl.sources.geo_utils import get_tract_geojson +from data_pipeline.utils import get_module_logger # XXX: @jorge I am torn about the coupling that importing from # etl.sources vs keeping the code DRY. Thoughts? -from data_pipeline.etl.sources.geo_utils import get_tract_geojson -from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/tests/conftest.py b/data/data-pipeline/data_pipeline/tests/conftest.py index 6fb3d138..8c68375a 100644 --- a/data/data-pipeline/data_pipeline/tests/conftest.py +++ b/data/data-pipeline/data_pipeline/tests/conftest.py @@ -3,7 +3,6 @@ from pathlib import Path from shutil import copyfile import pytest - from data_pipeline.config import settings from data_pipeline.etl.base import ExtractTransformLoad diff --git a/data/data-pipeline/data_pipeline/tests/score/fixtures.py b/data/data-pipeline/data_pipeline/tests/score/fixtures.py index 744ebfa6..d591454f 100644 --- a/data/data-pipeline/data_pipeline/tests/score/fixtures.py +++ b/data/data-pipeline/data_pipeline/tests/score/fixtures.py @@ -1,8 +1,8 @@ import pandas as pd import pytest from data_pipeline.config import settings -from data_pipeline.score.field_names import GEOID_TRACT_FIELD from data_pipeline.etl.score import constants +from data_pipeline.score.field_names import GEOID_TRACT_FIELD @pytest.fixture(scope="session") diff --git a/data/data-pipeline/data_pipeline/tests/score/test_calculation.py b/data/data-pipeline/data_pipeline/tests/score/test_calculation.py index d241918c..f2cb494d 100644 --- a/data/data-pipeline/data_pipeline/tests/score/test_calculation.py +++ b/data/data-pipeline/data_pipeline/tests/score/test_calculation.py @@ -1,9 +1,11 @@ # flake8: noqa: W0613,W0611,F811 from dataclasses import dataclass + import pytest from data_pipeline.score import field_names -from data_pipeline.utils import get_module_logger from data_pipeline.score.score_narwhal import ScoreNarwhal +from data_pipeline.utils import get_module_logger + from .fixtures import final_score_df # pylint: disable=unused-import logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/tests/score/test_output.py b/data/data-pipeline/data_pipeline/tests/score/test_output.py index 75fb144a..cb9f8d5c 100644 --- a/data/data-pipeline/data_pipeline/tests/score/test_output.py +++ b/data/data-pipeline/data_pipeline/tests/score/test_output.py @@ -2,36 +2,35 @@ # pylint: disable=unused-import,too-many-arguments from dataclasses import dataclass from typing import List -import pytest -import pandas as pd + import numpy as np +import pandas as pd +import pytest from data_pipeline.etl.score import constants +from data_pipeline.etl.score.constants import TILES_ISLAND_AREA_FIPS_CODES from data_pipeline.score import field_names from data_pipeline.score.field_names import GEOID_TRACT_FIELD -from data_pipeline.etl.score.constants import TILES_ISLAND_AREA_FIPS_CODES -from .fixtures import ( - final_score_df, - ejscreen_df, - hud_housing_df, - census_acs_df, - cdc_places_df, - census_acs_median_incomes_df, - cdc_life_expectancy_df, - doe_energy_burden_df, - national_risk_index_df, - dot_travel_disadvantage_df, - fsf_fire_df, - nature_deprived_df, - eamlis_df, - fuds_df, - geocorr_urban_rural_df, - census_decennial_df, - census_2010_df, - hrs_df, - national_tract_df, - tribal_overlap, -) +from .fixtures import cdc_life_expectancy_df # noqa +from .fixtures import cdc_places_df # noqa +from .fixtures import census_2010_df # noqa +from .fixtures import census_acs_df # noqa +from .fixtures import census_acs_median_incomes_df # noqa +from .fixtures import census_decennial_df # noqa +from .fixtures import doe_energy_burden_df # noqa +from .fixtures import dot_travel_disadvantage_df # noqa +from .fixtures import eamlis_df # noqa +from .fixtures import ejscreen_df # noqa +from .fixtures import final_score_df # noqa +from .fixtures import fsf_fire_df # noqa +from .fixtures import fuds_df # noqa +from .fixtures import geocorr_urban_rural_df # noqa +from .fixtures import hrs_df # noqa +from .fixtures import hud_housing_df # noqa +from .fixtures import national_risk_index_df # noqa +from .fixtures import national_tract_df # noqa +from .fixtures import nature_deprived_df # noqa +from .fixtures import tribal_overlap # noqa pytestmark = pytest.mark.smoketest UNMATCHED_TRACT_THRESHOLD = 1000 diff --git a/data/data-pipeline/data_pipeline/tests/score/test_score_narwhal_methods.py b/data/data-pipeline/data_pipeline/tests/score/test_score_narwhal_methods.py index 7df3c2e8..df7c1b4b 100644 --- a/data/data-pipeline/data_pipeline/tests/score/test_score_narwhal_methods.py +++ b/data/data-pipeline/data_pipeline/tests/score/test_score_narwhal_methods.py @@ -1,10 +1,9 @@ # pylint: disable=protected-access - import pandas as pd import pytest from data_pipeline.config import settings -from data_pipeline.score import field_names from data_pipeline.etl.score.etl_score import ScoreETL +from data_pipeline.score import field_names from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/tests/score/test_tiles_smoketests.py b/data/data-pipeline/data_pipeline/tests/score/test_tiles_smoketests.py index 3f662f71..d33106bc 100644 --- a/data/data-pipeline/data_pipeline/tests/score/test_tiles_smoketests.py +++ b/data/data-pipeline/data_pipeline/tests/score/test_tiles_smoketests.py @@ -1,18 +1,20 @@ # flake8: noqa: W0613,W0611,F811 from dataclasses import dataclass from typing import Optional -import pandas as pd + import geopandas as gpd import numpy as np +import pandas as pd import pytest from data_pipeline.config import settings from data_pipeline.etl.score import constants -from data_pipeline.score import field_names +from data_pipeline.etl.score.constants import THRESHOLD_COUNT_TO_SHOW_FIELD_NAME +from data_pipeline.etl.score.constants import TILES_SCORE_COLUMNS from data_pipeline.etl.score.constants import ( - TILES_SCORE_COLUMNS, - THRESHOLD_COUNT_TO_SHOW_FIELD_NAME, USER_INTERFACE_EXPERIENCE_FIELD_NAME, ) +from data_pipeline.score import field_names + from .fixtures import final_score_df # pylint: disable=unused-import pytestmark = pytest.mark.smoketest diff --git a/data/data-pipeline/data_pipeline/tests/score/test_utils/test_adjacency.py b/data/data-pipeline/data_pipeline/tests/score/test_utils/test_adjacency.py index 5f80aaee..679a458e 100644 --- a/data/data-pipeline/data_pipeline/tests/score/test_utils/test_adjacency.py +++ b/data/data-pipeline/data_pipeline/tests/score/test_utils/test_adjacency.py @@ -1,17 +1,17 @@ # pylint: disable=protected-access # flake8: noqa=F841 +from contextlib import contextmanager +from functools import partial from pathlib import Path from unittest import mock -from functools import partial -from contextlib import contextmanager -import pytest import pandas as pd +import pytest +from data_pipeline.etl.sources.geo_utils import get_tract_geojson +from data_pipeline.score import field_names from data_pipeline.score.utils import ( calculate_tract_adjacency_scores as original_calculate_tract_adjacency_score, ) -from data_pipeline.etl.sources.geo_utils import get_tract_geojson -from data_pipeline.score import field_names @contextmanager diff --git a/data/data-pipeline/data_pipeline/tests/sources/cdc_life_expectancy/test_etl.py b/data/data-pipeline/data_pipeline/tests/sources/cdc_life_expectancy/test_etl.py index bf8413aa..271ba800 100644 --- a/data/data-pipeline/data_pipeline/tests/sources/cdc_life_expectancy/test_etl.py +++ b/data/data-pipeline/data_pipeline/tests/sources/cdc_life_expectancy/test_etl.py @@ -1,6 +1,7 @@ # pylint: disable=protected-access import pathlib from unittest import mock + import requests from data_pipeline.etl.base import ExtractTransformLoad from data_pipeline.etl.sources.cdc_life_expectancy.etl import CDCLifeExpectancy diff --git a/data/data-pipeline/data_pipeline/tests/sources/cdc_places/test_etl.py b/data/data-pipeline/data_pipeline/tests/sources/cdc_places/test_etl.py index dbffdfa5..133fef31 100644 --- a/data/data-pipeline/data_pipeline/tests/sources/cdc_places/test_etl.py +++ b/data/data-pipeline/data_pipeline/tests/sources/cdc_places/test_etl.py @@ -1,6 +1,7 @@ import pathlib -from data_pipeline.tests.sources.example.test_etl import TestETL + from data_pipeline.etl.sources.cdc_places.etl import CDCPlacesETL +from data_pipeline.tests.sources.example.test_etl import TestETL class TestCDCPlacesETL(TestETL): diff --git a/data/data-pipeline/data_pipeline/tests/sources/doe_energy_burden/test_etl.py b/data/data-pipeline/data_pipeline/tests/sources/doe_energy_burden/test_etl.py index bb24ba3e..dc10cd42 100644 --- a/data/data-pipeline/data_pipeline/tests/sources/doe_energy_burden/test_etl.py +++ b/data/data-pipeline/data_pipeline/tests/sources/doe_energy_burden/test_etl.py @@ -1,9 +1,7 @@ # pylint: disable=protected-access import pathlib -from data_pipeline.etl.sources.doe_energy_burden.etl import ( - DOEEnergyBurden, -) +from data_pipeline.etl.sources.doe_energy_burden.etl import DOEEnergyBurden from data_pipeline.tests.sources.example.test_etl import TestETL from data_pipeline.utils import get_module_logger diff --git a/data/data-pipeline/data_pipeline/tests/sources/dot_travel_composite/test_etl.py b/data/data-pipeline/data_pipeline/tests/sources/dot_travel_composite/test_etl.py index 60064ce2..602be901 100644 --- a/data/data-pipeline/data_pipeline/tests/sources/dot_travel_composite/test_etl.py +++ b/data/data-pipeline/data_pipeline/tests/sources/dot_travel_composite/test_etl.py @@ -1,9 +1,10 @@ import pathlib + import geopandas as gpd -from data_pipeline.tests.sources.example.test_etl import TestETL from data_pipeline.etl.sources.dot_travel_composite.etl import ( TravelCompositeETL, ) +from data_pipeline.tests.sources.example.test_etl import TestETL class TestTravelCompositeETL(TestETL): diff --git a/data/data-pipeline/data_pipeline/tests/sources/eamlis/test_etl.py b/data/data-pipeline/data_pipeline/tests/sources/eamlis/test_etl.py index 09275de2..f9994977 100644 --- a/data/data-pipeline/data_pipeline/tests/sources/eamlis/test_etl.py +++ b/data/data-pipeline/data_pipeline/tests/sources/eamlis/test_etl.py @@ -1,11 +1,9 @@ # pylint: disable=protected-access -from unittest import mock import pathlib -from data_pipeline.etl.base import ValidGeoLevel +from unittest import mock -from data_pipeline.etl.sources.eamlis.etl import ( - AbandonedMineETL, -) +from data_pipeline.etl.base import ValidGeoLevel +from data_pipeline.etl.sources.eamlis.etl import AbandonedMineETL from data_pipeline.tests.sources.example.test_etl import TestETL from data_pipeline.utils import get_module_logger diff --git a/data/data-pipeline/data_pipeline/tests/sources/ejscreen/test_etl.py b/data/data-pipeline/data_pipeline/tests/sources/ejscreen/test_etl.py index 1ab2b6bc..fc069467 100644 --- a/data/data-pipeline/data_pipeline/tests/sources/ejscreen/test_etl.py +++ b/data/data-pipeline/data_pipeline/tests/sources/ejscreen/test_etl.py @@ -1,6 +1,7 @@ import pathlib -from data_pipeline.tests.sources.example.test_etl import TestETL + from data_pipeline.etl.sources.ejscreen.etl import EJSCREENETL +from data_pipeline.tests.sources.example.test_etl import TestETL class TestEJSCREENETL(TestETL): diff --git a/data/data-pipeline/data_pipeline/tests/sources/example/etl.py b/data/data-pipeline/data_pipeline/tests/sources/example/etl.py index 2e578c7a..9aca968a 100644 --- a/data/data-pipeline/data_pipeline/tests/sources/example/etl.py +++ b/data/data-pipeline/data_pipeline/tests/sources/example/etl.py @@ -1,8 +1,9 @@ import zipfile -import pandas as pd +import pandas as pd from data_pipeline.config import settings -from data_pipeline.etl.base import ExtractTransformLoad, ValidGeoLevel +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.etl.base import ValidGeoLevel from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/tests/sources/example/test_etl.py b/data/data-pipeline/data_pipeline/tests/sources/example/test_etl.py index 5c6a1d1a..3e7d9cb0 100644 --- a/data/data-pipeline/data_pipeline/tests/sources/example/test_etl.py +++ b/data/data-pipeline/data_pipeline/tests/sources/example/test_etl.py @@ -2,19 +2,18 @@ import copy import os import pathlib -from typing import Type, Optional +from typing import Optional +from typing import Type from unittest import mock -import pytest -import requests import numpy as np import pandas as pd - -from data_pipeline.etl.base import ExtractTransformLoad, ValidGeoLevel -from data_pipeline.etl.score.constants import ( - TILES_CONTINENTAL_US_FIPS_CODE, - TILES_ALASKA_AND_HAWAII_FIPS_CODE, -) +import pytest +import requests +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.etl.base import ValidGeoLevel +from data_pipeline.etl.score.constants import TILES_ALASKA_AND_HAWAII_FIPS_CODE +from data_pipeline.etl.score.constants import TILES_CONTINENTAL_US_FIPS_CODE from data_pipeline.tests.sources.example.etl import ExampleETL from data_pipeline.utils import get_module_logger diff --git a/data/data-pipeline/data_pipeline/tests/sources/fsf_flood_risk/test_etl.py b/data/data-pipeline/data_pipeline/tests/sources/fsf_flood_risk/test_etl.py index bc7219b5..acc009c2 100644 --- a/data/data-pipeline/data_pipeline/tests/sources/fsf_flood_risk/test_etl.py +++ b/data/data-pipeline/data_pipeline/tests/sources/fsf_flood_risk/test_etl.py @@ -1,6 +1,7 @@ import pathlib -from data_pipeline.tests.sources.example.test_etl import TestETL + from data_pipeline.etl.sources.fsf_flood_risk.etl import FloodRiskETL +from data_pipeline.tests.sources.example.test_etl import TestETL class TestFloodRiskETL(TestETL): diff --git a/data/data-pipeline/data_pipeline/tests/sources/fsf_wildfire_risk/test_etl.py b/data/data-pipeline/data_pipeline/tests/sources/fsf_wildfire_risk/test_etl.py index 8974f6ff..b3438147 100644 --- a/data/data-pipeline/data_pipeline/tests/sources/fsf_wildfire_risk/test_etl.py +++ b/data/data-pipeline/data_pipeline/tests/sources/fsf_wildfire_risk/test_etl.py @@ -1,6 +1,7 @@ import pathlib -from data_pipeline.tests.sources.example.test_etl import TestETL + from data_pipeline.etl.sources.fsf_wildfire_risk.etl import WildfireRiskETL +from data_pipeline.tests.sources.example.test_etl import TestETL class TestWildfireRiskETL(TestETL): diff --git a/data/data-pipeline/data_pipeline/tests/sources/geocorr/test_etl.py b/data/data-pipeline/data_pipeline/tests/sources/geocorr/test_etl.py index bb065aac..95bdf0b7 100644 --- a/data/data-pipeline/data_pipeline/tests/sources/geocorr/test_etl.py +++ b/data/data-pipeline/data_pipeline/tests/sources/geocorr/test_etl.py @@ -1,6 +1,7 @@ import pathlib -from data_pipeline.tests.sources.example.test_etl import TestETL + from data_pipeline.etl.sources.geocorr.etl import GeoCorrETL +from data_pipeline.tests.sources.example.test_etl import TestETL class TestGeoCorrETL(TestETL): diff --git a/data/data-pipeline/data_pipeline/tests/sources/historic_redlining/test_etl.py b/data/data-pipeline/data_pipeline/tests/sources/historic_redlining/test_etl.py index 06dd8b14..de2c7f8f 100644 --- a/data/data-pipeline/data_pipeline/tests/sources/historic_redlining/test_etl.py +++ b/data/data-pipeline/data_pipeline/tests/sources/historic_redlining/test_etl.py @@ -1,10 +1,11 @@ # pylint: disable=protected-access import pathlib + import pandas as pd -from data_pipeline.tests.sources.example.test_etl import TestETL from data_pipeline.etl.sources.historic_redlining.etl import ( HistoricRedliningETL, ) +from data_pipeline.tests.sources.example.test_etl import TestETL class TestHistoricRedliningETL(TestETL): diff --git a/data/data-pipeline/data_pipeline/tests/sources/hud_housing/test_etl.py b/data/data-pipeline/data_pipeline/tests/sources/hud_housing/test_etl.py index 934cd84e..920f4f12 100644 --- a/data/data-pipeline/data_pipeline/tests/sources/hud_housing/test_etl.py +++ b/data/data-pipeline/data_pipeline/tests/sources/hud_housing/test_etl.py @@ -1,6 +1,7 @@ import pathlib -from data_pipeline.tests.sources.example.test_etl import TestETL + from data_pipeline.etl.sources.hud_housing.etl import HudHousingETL +from data_pipeline.tests.sources.example.test_etl import TestETL class TestHudHousingETL(TestETL): diff --git a/data/data-pipeline/data_pipeline/tests/sources/national_risk_index/test_etl.py b/data/data-pipeline/data_pipeline/tests/sources/national_risk_index/test_etl.py index 5839c61d..493c0be2 100644 --- a/data/data-pipeline/data_pipeline/tests/sources/national_risk_index/test_etl.py +++ b/data/data-pipeline/data_pipeline/tests/sources/national_risk_index/test_etl.py @@ -1,7 +1,7 @@ # pylint: disable=protected-access import pathlib -from data_pipeline.etl.base import ValidGeoLevel +from data_pipeline.etl.base import ValidGeoLevel from data_pipeline.etl.sources.national_risk_index.etl import ( NationalRiskIndexETL, ) diff --git a/data/data-pipeline/data_pipeline/tests/sources/nlcd_nature_deprived/test_etl.py b/data/data-pipeline/data_pipeline/tests/sources/nlcd_nature_deprived/test_etl.py index 9a0b2615..86d51496 100644 --- a/data/data-pipeline/data_pipeline/tests/sources/nlcd_nature_deprived/test_etl.py +++ b/data/data-pipeline/data_pipeline/tests/sources/nlcd_nature_deprived/test_etl.py @@ -1,6 +1,7 @@ import pathlib -from data_pipeline.tests.sources.example.test_etl import TestETL + from data_pipeline.etl.sources.nlcd_nature_deprived.etl import NatureDeprivedETL +from data_pipeline.tests.sources.example.test_etl import TestETL class TestNatureDeprivedETL(TestETL): diff --git a/data/data-pipeline/data_pipeline/tests/sources/persistent_poverty/test_etl.py b/data/data-pipeline/data_pipeline/tests/sources/persistent_poverty/test_etl.py index 441683c4..5d4a98d7 100644 --- a/data/data-pipeline/data_pipeline/tests/sources/persistent_poverty/test_etl.py +++ b/data/data-pipeline/data_pipeline/tests/sources/persistent_poverty/test_etl.py @@ -1,8 +1,9 @@ import pathlib -from data_pipeline.tests.sources.example.test_etl import TestETL + from data_pipeline.etl.sources.persistent_poverty.etl import ( PersistentPovertyETL, ) +from data_pipeline.tests.sources.example.test_etl import TestETL class TestPersistentPovertyETL(TestETL): diff --git a/data/data-pipeline/data_pipeline/tests/sources/test_geo_utils.py b/data/data-pipeline/data_pipeline/tests/sources/test_geo_utils.py index dcd42ba0..4f8efa70 100644 --- a/data/data-pipeline/data_pipeline/tests/sources/test_geo_utils.py +++ b/data/data-pipeline/data_pipeline/tests/sources/test_geo_utils.py @@ -1,5 +1,6 @@ -from pathlib import Path from collections import namedtuple +from pathlib import Path + import geopandas as gpd from data_pipeline.etl.sources.geo_utils import add_tracts_for_geometries diff --git a/data/data-pipeline/data_pipeline/tests/sources/us_army_fuds/data/fuds.geojson b/data/data-pipeline/data_pipeline/tests/sources/us_army_fuds/data/fuds.geojson index 78014f33..8a7a1225 100644 --- a/data/data-pipeline/data_pipeline/tests/sources/us_army_fuds/data/fuds.geojson +++ b/data/data-pipeline/data_pipeline/tests/sources/us_army_fuds/data/fuds.geojson @@ -1 +1 @@ -{"type": "FeatureCollection", "name": "FUDS_Property_Point", "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:OGC:1.3:CRS84"}}, "features": [{"type": "Feature", "properties": {"OBJECTID": 684, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "NO CITY", "CONGRESSIONALDISTRICT": "04", "COUNTY": "SACRAMENTO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=60970", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "McClellan AFB Communication Facility Annex", "FUDSINSTALLATIONID": "CA99799F528900", "FUDSUNIQUEPROPERTYNUMBER": "J09CA0082", "HASPROJECTS": "No", "LATITUDE": 38.87444444, "LONGITUDE": -121.39361111, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spk", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "The McClellan Communication Facility Annex was used by the U.S. Air Force. In 1983, part of the site was excessed to the GSA, who leased it to the Lincoln School District, Lincoln, CA for school agricultural instruction. The lease terminated October 1984. This portion of the site had no improvements on it when excessed and remains unimproved. The remaining part of this site remains under DoD control and is actively used by the U.S. Air Force.\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-121.39361572299998, 38.87463378900003]}}, {"type": "Feature", "properties": {"OBJECTID": 1538, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "KUALOA", "CONGRESSIONALDISTRICT": "02", "COUNTY": "HONOLULU", "CURRENTOWNER": "PRIV: PRIVATE KUALOA RANCH IS THE OWNER\n\n ", "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=62331", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "BATTERY AVERY J. COOPER", "FUDSINSTALLATIONID": "HI99799F378500", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0040", "HASPROJECTS": "Yes", "LATITUDE": 21.535999, "LONGITUDE": -157.843002, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "Yes", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties with all projects at site closeout", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "BATTERY AVERY J. COOPER CONSISTED OF 94.09 ACRES AND USED \nFOR A SEACOAST DEFENSE STRUCTURE. THE SITE WAS ACQUIRED \nFROM THE ARMY THROUGH A LEASE AGREEMENT AND IN 1952, THE \nARMY AND KUALOA RANCH TER MINATED THE AGREEMENT.\n ", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-157.84301757799997, 21.53619384800004]}}, {"type": "Feature", "properties": {"OBJECTID": 1629, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "KAAAWA", "CONGRESSIONALDISTRICT": "02", "COUNTY": "HONOLULU", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54603", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "KAAAWA MILITARY RES", "FUDSINSTALLATIONID": "HI99799F387500", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0135", "HASPROJECTS": "No", "LATITUDE": 21.55333333, "LONGITUDE": -157.85166667, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "THIS SITE SERVED AS THE CAMP HEADQUARTES FOR THE UNIT JUNGLE TRAINING CENTER. THE ORIGINAL RESERVASTION WAD CONMPRISED OF TWO NONCONTIGUOUS PARCELS CONTAINING 3.67 ACRES AND .1377 ACRES, TWO RIGHT-OF -WAYS, AND AN AREA DESIGNATED FOR ARMY OBERSATION STATION L. THESE LANDS WERE ACQUIRED BY THE GOVERNMENT BY DEED DATED 14 JANUARY 1925 AND DECLARED A MILITARY RESERVATION BY EXCUTIVE ORDER NO. 4679 D ATED 29 JUNE 1927. ON DEC. 20, 1937, AN ADDITIONAL 1.368 ACRES WAS ACQUIRED BY THE GOVERNMENT.", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-157.85168456999997, 21.553405762000068]}}, {"type": "Feature", "properties": {"OBJECTID": 1719, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "LINCOLN", "CONGRESSIONALDISTRICT": "04", "COUNTY": "PLACER", "CURRENTOWNER": "PRIV: PRIVATE A private resident currently owns the land and uses it for agriculture purposes.", "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=61278", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "Lincoln Radio Beacon Annex", "FUDSINSTALLATIONID": "CA99799F578400", "FUDSUNIQUEPROPERTYNUMBER": "J09CA0854", "HASPROJECTS": "Yes", "LATITUDE": 38.8975, "LONGITUDE": -121.40027778, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "Yes", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with all projects at site closeout", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spk", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "In 1957, the U.S. Government acquired 0.87 fee acre from a private resident for use by the U.S. Air Force as an off base installation to McClellan AFB, CA. A medium power low frequency homer beacon was used to serve as a navigational aid site for McClellan. The site was declared excess in 1965. In 1966, the 0.87 fee acre was returned back to the private resident. Potential hazards related to Department of Defense activities are not currently identified at this site. ", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-121.40020751999998, 38.897583008000026]}}, {"type": "Feature", "properties": {"OBJECTID": 2093, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "KALAHEO", "CONGRESSIONALDISTRICT": "02", "COUNTY": "KAUAI", "CURRENTOWNER": "STATE: STATE STATE OF HAWAII ", "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=58233", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "PAPAPAHOLAHOLA COMM SITE", "FUDSINSTALLATIONID": "HI99799F401000", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0280", "HASPROJECTS": "Yes", "LATITUDE": 21.9764, "LONGITUDE": -159.522003, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "Yes", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties with all projects at site closeout", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "THE SITE WAS AQUIRED AS AN INTERISLAND RAION TELEPHONE AND TELEYPE STATION FROM 1943 TO 1946. IN SEPTEMBER 1953, THE ARMY TRANSFERRED THE SITE TO THE CIVIL AERONAUTICS ADMINISTRATION TO ESTALISH A VF H AIR/GROUND COVERAGE FROM MAKAHUENA POINT TO BARKING SANDS. IN MARCH OF 1967, THE GENERAL SERVICE ADMINISTRATION RELINQUISHED CONTROL OF THE SITE TO THE STATE OF HAWAII VIA QUITCLAIM DEED AND THE ST ATE TURNED IT OVER TO DLNR FOR USE AS A STATE PARK.", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-159.52191162099996, 21.976623535000044]}}, {"type": "Feature", "properties": {"OBJECTID": 2123, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "KALAHEO", "CONGRESSIONALDISTRICT": "02", "COUNTY": "KAUAI", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=62359", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "DIVISION HEADQUARTERS", "FUDSINSTALLATIONID": "HI99799F381400", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0071", "HASPROJECTS": "No", "LATITUDE": 21.9375, "LONGITUDE": -159.53, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "NO EVIDENCE OF HAZARDOUS/TOXIC WASTE, EXPLOSIVE ORDNANCE WASTE, UNSAFE OR HAZARDOUS DEBRIS WAS FOUND. ", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-159.52996826199998, 21.93762207000003]}}, {"type": "Feature", "properties": {"OBJECTID": 2217, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "KEANAE", "CONGRESSIONALDISTRICT": "02", "COUNTY": "MAUI", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=62430", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "MARINE MANEUVER AREA", "FUDSINSTALLATIONID": "HI99799F395400", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0217", "HASPROJECTS": "No", "LATITUDE": 20.84027778, "LONGITUDE": -156.14277778, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "SITE WAS USED FOR MARINE MANEUVERS. NO REMNANTS OF STRUCTURES OR DEBRIS WERE OBSERVED. ", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-156.14270019499997, 20.840393066000047]}}, {"type": "Feature", "properties": {"OBJECTID": 4551, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "UPOLU POINT", "CONGRESSIONALDISTRICT": "02", "COUNTY": "HAWAII", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=62478", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "UPOLU POINT MILITARY RES", "FUDSINSTALLATIONID": "HI99799F406300", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0342", "HASPROJECTS": "No", "LATITUDE": 20.265, "LONGITUDE": -155.85972222, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "THE SITE WAS USED FROM JUNE 25, 1927 TO JUNE 30, 1945. THE \nSITE WAS ALSO NAMED SUITER FIELD AND CONSISTED OF A RUNWAY \n(150'x4,000'), AIRCRAFT PARKING, CATAPULT DECK, \nADMINISTRATION BUILDING, QUART ERS, LATRINES, SUPPLY \nBUILDING, COMMISSARY STORES,A GALLEY AND MESS HALL, RADIO \nTRANSMITTER BUILDING, ROCKET STORAGE MAGAZINE, PUBLIC WORKS \nBUILDINGS, DISPENSARY, AND WEATHER STATION.\n ", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-155.85968017599998, 20.26519775400004]}}, {"type": "Feature", "properties": {"OBJECTID": 4622, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "MAKAWAO", "CONGRESSIONALDISTRICT": "02", "COUNTY": "MAUI", "CURRENTOWNER": "PRIV: PRIVATE ", "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=62368", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "GUNNERY SITE", "FUDSINSTALLATIONID": "HI99799F383800", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0098", "HASPROJECTS": "Yes", "LATITUDE": 20.89916667, "LONGITUDE": -156.26027778, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "Yes", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "The property was a former Marine artillery impact area. A youngster was wounded by unexploded ordnance in the 1940s. The land remains as cattle grazing before and after military use. This property is known or suspected to contain military munitions and unexploded ordnance and therefore may present an explosive hazard.", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-156.26019287099996, 20.899414062000062]}}, {"type": "Feature", "properties": {"OBJECTID": 4669, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "KOLOA", "CONGRESSIONALDISTRICT": "02", "COUNTY": "KAUAI", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=62403", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "KOLOA ICE PLANT", "FUDSINSTALLATIONID": "HI99799F392900", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0191", "HASPROJECTS": "No", "LATITUDE": 21.90444444, "LONGITUDE": -159.465, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "SITE WAS CONSTRUCTED BY US AMRY ENGINEERING DISTRICT IN \nEARLY 1942 FOR THE 72ND QUARTERMASTER DISTRICT. SITE \nCONSISTED OF A CONCRETE ICE PLANT STRUCTURE PAVED PARKING \nLOT AND DRIVEWAY. THE PLANT WAS DEOMLISHED ABOUT 1947/1949. \nNO EVIDENCE OF ANY FORMER USE WAS FOUND DURING THE SITE \nSURVEY ON MARCH 2, 1993.\n ", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-159.46496581999997, 21.90460205100004]}}, {"type": "Feature", "properties": {"OBJECTID": 4694, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "PUNA", "CONGRESSIONALDISTRICT": "02", "COUNTY": "HAWAII", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=62396", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "KAPOHO TARGET AREA", "FUDSINSTALLATIONID": "HI99799F390300", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0165", "HASPROJECTS": "No", "LATITUDE": 19.49166667, "LONGITUDE": -154.82527778, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "THE MILITARY USED THE PROJECT FOR A TARGET AREA; THE ARMY GRANTED THE NAVY PERMISSION TO USE THE TARGET AREA FROM JUNE 13, 1945 - MAY 1956. ", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-154.82519531299997, 19.49182128900003]}}, {"type": "Feature", "properties": {"OBJECTID": 4735, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "POLOLU VALLEY", "CONGRESSIONALDISTRICT": "02", "COUNTY": "HAWAII", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=62459", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "POLOLU", "FUDSINSTALLATIONID": "HI99799F401600", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0286", "HASPROJECTS": "No", "LATITUDE": 20.16666667, "LONGITUDE": -155.73333333, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "SITE WAS USED FOR AMPHIBIOUS AND JUNGLE TRAINING. NO \nEVIDENCE WAS FOUND FOR HAZARDOUS/TOXIC WASTES, OEW, AND \nUNSAFE DEBRIS.\n ", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-155.73327636699997, 20.166809082000043]}}, {"type": "Feature", "properties": {"OBJECTID": 5292, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "WAIPIO", "CONGRESSIONALDISTRICT": "02", "COUNTY": "HAWAII", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=62349", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "WAIPIO BOMBING TARGETS", "FUDSINSTALLATIONID": "HI99799F379600", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0052", "HASPROJECTS": "No", "LATITUDE": 20.91222222, "LONGITUDE": -156.22083333, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "THE APPROXIMATELY 60-ACRE PROJECT SITE WAS USED BY THE ARMY OR NAVY FOR AERIAL BOMBING TARGET PRACTICE DURUNG WORLD WAR II. MILITARY PLANES DROPPED BOMBS AIMED AT TARGETS OF WHITE ROCKS SET IN A CIRCULAR PATTERN IN AN AREA RESIDENTS, IT WAS INDICATED THE MILITARY DID NOT CLEAR THE AREA OF ANY DEBRIS OR ORDNANCE WHEN THE PRACTICE BOMBING ACTIVITIES CEASED. \r\n", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-156.22076415999996, 20.91241455100004]}}, {"type": "Feature", "properties": {"OBJECTID": 5310, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "ISLAND OF HAWAII", "CONGRESSIONALDISTRICT": "02", "COUNTY": "HAWAII", "CURRENTOWNER": "PRIV: Estate of Richard Smart AKA Parker Ranch, Estate of Richard Smart AKA Parker Ranch, WH Shipman", "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=53556", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "BIG ISLAND BOMBING TARGETS", "FUDSINSTALLATIONID": "HI99799FA10000", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0476", "HASPROJECTS": "Yes", "LATITUDE": 20.235, "LONGITUDE": -155.89277778, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "Yes", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "The sites were identified in the History of G-3, Headquarters Army Forces Middle Pacific - Functions and Activities 7 December 1941 to 2 December 1945. No use has been made to the sites since the military occupation. The property is known or suspected to contain military munitions or unexploded ordnance and therefore may present an explosive hazard.", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-155.89270019499997, 20.23522949200003]}}, {"type": "Feature", "properties": {"OBJECTID": 5832, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "NO CITY", "CONGRESSIONALDISTRICT": "02", "COUNTY": "MAUI", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54600", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "KAILUA RADAR STATION", "FUDSINSTALLATIONID": "HI99799F388700", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0147", "HASPROJECTS": "No", "LATITUDE": 20.89083333, "LONGITUDE": -156.2075, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "RECORDS ARE NOT AVAILABLE. PREVIOUS RECORDS SHOW THAT THE KAILUA RADAR STATION FACILITIES WERE CONSTRUCTED BY THE 2ND PLATOON, 581 ST SIGNAL CORPS AIRCRAFT WARNING SYSTEM, HAWAII IN 1942 AND WAS IN US E UNTIL SEPT. 1944 ", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-156.20739746099997, 20.890991211000028]}}, {"type": "Feature", "properties": {"OBJECTID": 6013, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "KOLOA", "CONGRESSIONALDISTRICT": "02", "COUNTY": "KAUAI", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=56908", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "KOLOA BAKERY", "FUDSINSTALLATIONID": "HI99799F392800", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0190", "HASPROJECTS": "No", "LATITUDE": 21.905, "LONGITUDE": -159.46444444, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "KOLOA BAKERY WAS ESTABLISHED BY THE ARMY IN MID-1942 AND WAS \nLOCATED ATTHE SOUTHEAST CORNER OF A 7.518-ACRE PARCEL. THE \nBAKERY WAS CONSUTRCTED BY THE U.S. ENGINEERING DISTRICT FOR \nTHE 72ND QUARTRE MASTER DISTRICT ON THE SITE OF A FORMER BALL \nPARK AND ADJACENT TO A 20-TON ICE PLANT. THE BAKERY \nSUPPLIES BETWEEN 15,000-25,000 LOAVES PER DAY AND CONSISTED \nOF A WOOD BUILDING, 500-LOAF OVEN, STOV ES, AND AN \nABOVEGROUND 500-GALLON DIESEL TANK BAKERY LATER CONVERTED \nTO A MARKET/RESTAURANT.\n", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-159.46441650399998, 21.905212402000075]}}, {"type": "Feature", "properties": {"OBJECTID": 6015, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "KALAHEO", "CONGRESSIONALDISTRICT": "02", "COUNTY": "KAUAI", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=56898", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "1ST STATION HOSPITAL", "FUDSINSTALLATIONID": "HI99799F382500", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0084", "HASPROJECTS": "No", "LATITUDE": 21.9225, "LONGITUDE": -159.52111111, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "SITE WAS COMMANDEERED TWO WEEKS AFATER PEARL HARBOR WAS \nATTAACKED AND LATER A LICENSE WAS GRANTED ON 28 MARCH 1942 \nFROM THE TERRITORY OF HAWAII. A 500-BED HOSPITAL WAS \nESTABLISHED AND THE 165TH DIV ISION WAS ASSIGNED TO OPERATE \nIT. FIVE BUILDINGS WERE CONVERTED IN A MESS HALL, \nAUDITORIUM, SURGICAL WARD, MEDIAL SUPPLIES STORAGE, AND \nPATIENT WARDS. QUARTERS WERE CONSTRCUTRED ALONG THE CAMPUS \n PERIMETER AND SIX-MEN TENTS WERE ERECTED. SITE WAS CLOSED \nIN 6/45 & TERMINATION OF LICENSE WAS 9/3", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-159.52111816399997, 21.922607422000056]}}, {"type": "Feature", "properties": {"OBJECTID": 6062, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "PUNALUU/KAHANA", "CONGRESSIONALDISTRICT": "02", "COUNTY": "HONOLULU", "CURRENTOWNER": "STATE: STATE KAHANA IS A STATE OF HAWAII PARK. PUNALUU IS AN AGRICULTURAL COMMUNITY. PRIV: PRIVATE KAHANA IS A STATE OF HAWAII PARK. PUNALUU IS AN AGRICULTURAL COMMUNITY. ", "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=56893", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "PACIFIC JUNGLE COMBAT", "FUDSINSTALLATIONID": "HI99799F400400", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0274", "HASPROJECTS": "Yes", "LATITUDE": 21.55416667, "LONGITUDE": -157.90694444, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "Yes", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "The property, located in two valleys, began being used as a jungle training center in September 1943. The leases were terminated in August 1946 for Kahana Valley and between April 1945 and November 1950 for Punaluu Valley. Kahana Valley is now a state park and Punaluu is an agricultural community. The property is known or suspected to contain military munitions or unexploded ordnance and therefore may present an explosive hazard.\r\rThe real estate instruments evidencing Department of Defense possession of the property could not be found. However, a Tract Register and Audited Real Estate Map of the Pacific Jungle Combat Training Center was\rfound and is the basis for the property information below. \r\rThe property consisted of 2,209.77 acres which included forty-one tracts of land within the Kahana and Punaluu Valleys (Tax Map Key (TMK) 5-2-02 and 5-2-05:various parcels and TMK 5-3-01, 5-3-02, 5-3-04, 5-3-05, 5-3-07 and 5-3-11: various parcels). The Kahana and Punaluu Valleys are now Ahupuaa O Kahana State Park and an agricultural community, respectively.\r\rThe Army acquired 485.25 acres in Kahana Valley by license in November 1944 retroactive to May 1943. In neighboring Punaluu valley, the Army executed leases, licenses, and informal agreements between October 1943 and March 1947, with several instruments retroactive to October 1943, to acquire 1,724.52 acres. The Army established Pacific Jungle Combat Training Center (also known as the Unit Jungle Training Center/Instructors Jungle Training School) on 6 September 1943 for training in basic and advanced jungle warfare. Subjects taught included jungle first aid and evacuation; hand-to-hand combat; construction and passage of wire entanglements; booby traps and demolitions; patrolling and ambushing; hip shooting and infiltration; stream crossing expedients; assault with bayonets; assault of Japanese fortified areas; combat reaction proficiency; and jungle living.\r\rThe Army terminated the licenses for usage of Kahana Valley parcels on 31 August 1946. The Army terminated the leases, licenses, and informal permits comprising the various Punaluu Valley parcels beginning in April 1945 and concluding on 30 November 1950. Kahana Valley is presently under the purview of the Hawaii Department of Land and Natural Resources and was set aside as a state park in the 1960s. Punaluu Valley is owned by numerous small landowners and Kamehameha Schools/Bernice Pauahi Bishop Estate lessees engaged in the cultivation of diversified agricultural crops.", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-157.90679931599996, 21.554199219000054]}}, {"type": "Feature", "properties": {"OBJECTID": 6974, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "SAN BENITO", "CONGRESSIONALDISTRICT": "20", "COUNTY": "SAN BENITO", "CURRENTOWNER": "OTHER: OTHER Several local agencies use the site as the Call Mountain Mobile Radio Relay Facility.", "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=57284", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "Call Mountain Radio Relay Annex", "FUDSINSTALLATIONID": "CA99799F570500", "FUDSUNIQUEPROPERTYNUMBER": "J09CA0764", "HASPROJECTS": "Yes", "LATITUDE": 36.61472222, "LONGITUDE": -121.06777778, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "Yes", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with all projects at site closeout", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spk", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "Prior to DoD use, the Site was open grazing land for livestock. Former Call Mountain Radio Relay Annex was established on 2 March 1955 as a radio relay station under the operational control of Mill Valley Air Force Station. The Site consisted of a concrete block radio relay and generator building and an antenna farm consisting of four 60-foot antenna poles on 0.84 acre of land. Documents on file at the National Archives and Records Administration in College Park, Maryland, indicated that the primary electrical power was supplied by the Pacific Gas and Electric Company, which installed 3 miles of pole line in order to provide this service at the Site; therefore, no underground storage tanks were installed. On 14 August 1958, the U.S. Air Force terminated its lease with the property owner. The Site is currently privately owned, and new buildings located on-Site are used as a radio relay and transmitter site for public safety agencies in San Benito County.", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-121.06768798799999, 36.61480712900004]}}, {"type": "Feature", "properties": {"OBJECTID": 7018, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "PANAMINT SPRINGS", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=60971", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "PANAMINT DRY LAKE TEST", "FUDSINSTALLATIONID": "CA99799F533000", "FUDSUNIQUEPROPERTYNUMBER": "J09CA0127", "HASPROJECTS": "No", "LATITUDE": 36.33333333, "LONGITUDE": -117.39166667, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "THIS SITE WAS USED AS AN EMERGENCY LANDING AREA ", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-117.391601563, 36.33343505900007]}}, {"type": "Feature", "properties": {"OBJECTID": 7046, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "KEELER", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54232", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "KEELER SODA PLANT", "FUDSINSTALLATIONID": "CA99799FA02200", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7199", "HASPROJECTS": "No", "LATITUDE": 36.46944444, "LONGITUDE": -117.85555556, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "N/A\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-117.85546874999994, 36.46960449200003]}}, {"type": "Feature", "properties": {"OBJECTID": 7428, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "SACRAMENTO", "CONGRESSIONALDISTRICT": "04", "COUNTY": "SACRAMENTO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=53883", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "McClellan AFB Outer Marker", "FUDSINSTALLATIONID": "CA99799F523100", "FUDSUNIQUEPROPERTYNUMBER": "J09CA0010", "HASPROJECTS": "No", "LATITUDE": 38.75138889, "LONGITUDE": -121.40027778, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spk", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "On 14 April 1952, the Department of Defense (DoD) acquired a total of 0.43 acre, including 0.26 acre in fee and 0.17 acre in easement from private interests. The DoD constructed a communications equipment building and an access road, and installed two electric utility poles and 436 linear feet of chain link fence. The site was used as an instrument landing facility in support of McClellan Air Force Base (AFB). On 25 September 1978, the 0.43 acre was reported as excess to the General Services Administration, who conveyed 0.26 acre in fee and 0.17 acre in easement to Jack Garfield on 22 June 1979. No hazards have been identified related to former Department of Defense activities.", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-121.40020751999998, 38.75158691400003]}}, {"type": "Feature", "properties": {"OBJECTID": 7565, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "PINTO PEAK", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=63165", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "PINTO PEAK", "FUDSINSTALLATIONID": "CA99799FA45600", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7429", "HASPROJECTS": "No", "LATITUDE": 36.3875, "LONGITUDE": -117.23527778, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "N/A\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-117.23529052699996, 36.387634277000075]}}, {"type": "Feature", "properties": {"OBJECTID": 7689, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "INDEPENDENCE", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": "OTHER: OTHER CITY OF LOS ANGELES AND THE DEPT OF THE INTERIOR (NATIONAL \nPARKS SERVICE).\n ", "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=62560", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "CAMP MANZANAR", "FUDSINSTALLATIONID": "CA99799F743900", "FUDSUNIQUEPROPERTYNUMBER": "J09CA0137", "HASPROJECTS": "Yes", "LATITUDE": 36.725, "LONGITUDE": -118.15277778, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "Yes", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with all projects at site closeout", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "In March 1942, the Wartime Civilian Control Administration (WAA), under the direction of the Western Defense Command - Fourth Army, requested the South Pacific Division of the United States Engineer Corps to construct suitable facilities at Manzanar to receive voluntary and forced Japanese American internees from the west coast of the United States. Using Army and Japanese American labor, approximately 825 buildings and structures were constructed. These included 445 barracks, 30 recreation halls, 32 mess halls, male and female latrines, and laundry facilities. Other improvements included an administration building, an auditorium, 37 warehouses, 8 observation towers, 2 sentry houses, police headquarters, and maintenance facilities. Hospital facilities and an orphanage were also provided. All of these facilities were constructed of wood, covered with tar paper, and situated on approximately 670 acres of the site. Other facilities on the remainder of the site included a 600,000 gallon reservoir, irrigation improvements, water and sewage treatment facilities, hog pens and chicken houses.", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-118.15270996099997, 36.725219727000024]}}, {"type": "Feature", "properties": {"OBJECTID": 7691, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "LONE PINE", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": "LOCAL: CITY RESIDENTIAL PRIV: PRIVATE RESIDENTIAL ", "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=62589", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "MT. WHITNEY MILITARY RESERVATION", "FUDSINSTALLATIONID": "CA99799F744000", "FUDSUNIQUEPROPERTYNUMBER": "J09CA0138", "HASPROJECTS": "Yes", "LATITUDE": 36.56666667, "LONGITUDE": -118.13888889, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "Yes", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with all projects at site closeout", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "N/A\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-118.13891601599994, 36.56683349600007]}}, {"type": "Feature", "properties": {"OBJECTID": 7831, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "DEATH VALLEY NATIONAL PARK", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=63099", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "DEATH VALLEY NATIONAL PARK", "FUDSINSTALLATIONID": "CA99799FA39000", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7363", "HASPROJECTS": "No", "LATITUDE": 36.78333333, "LONGITUDE": -117.31111111, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "Various aircraft crash sites identified all reside within the boundaries of Death Valley National Park. which consists of 3,336,000 acres of land. \r\rThe Park area ha been used by the U.S. Armed forces for pracice flighs and maneuvers throughout its history. Records indicate that this practice was intensified during WWII and continues today. Information collected identified a total of 20 crash sites and potentially associated with the Department of Defense within the Park boundaries.", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-117.311096191, 36.783386230000076]}}, {"type": "Feature", "properties": {"OBJECTID": 7866, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "OLANCHA", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=63160", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "OLANCHA AIRFIELD", "FUDSINSTALLATIONID": "CA99799FA45100", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7424", "HASPROJECTS": "No", "LATITUDE": 36.28361111, "LONGITUDE": -118.00027778, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": " OLANCHA AIRFIELD WAS ESTABLISHED IN THE EARLY 1930'S ON AN ESTIMATED 100 ACRES OF PRIVATELY OWNED \r\nLAND. THE AIRFIELD , WAS A DIRT LANDING STRIP. FUEL WAS PUMPED BY HAND FROM 55-GALLON DRUMS. THE AIRFIELD SERVED THE \r\nPUBLIC VISITING THE AREA FOR RECREATION THROUGH THE 1930'S AND 1940S. THE AIRFIELD WAS CLOSED IN 1950 FOLLOWING A PERIOD \r\nOF INFREQUENT USE AND THE SITE IS NOW COMMERCIALLY DEVELOPED. THERE IS NO EVIDENCE OF THE FORMER AIRFIELD AT THE SITE.\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-118.00030517599998, 36.283813477000024]}}, {"type": "Feature", "properties": {"OBJECTID": 7977, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "DEATH VALLEY", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=63103", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "FURNANCE CREEK AIRPORT(OLD AIRPORT)", "FUDSINSTALLATIONID": "CA99799FA39400", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7367", "HASPROJECTS": "No", "LATITUDE": 36.46111111, "LONGITUDE": -116.8625, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "N/A\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-116.86248779299996, 36.46124267600004]}}, {"type": "Feature", "properties": {"OBJECTID": 8235, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "STOVEPIPE WELLS", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=63184", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "STOVEPIPE WELLS AIRPORT", "FUDSINSTALLATIONID": "CA99799FA47400", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7448", "HASPROJECTS": "No", "LATITUDE": 36.60666667, "LONGITUDE": -117.16416667, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "Information on Stovepipe Wells Airport is scant. The earliest written reference to the airport is a map of the California Arizona Maneuver Area, Map No 238, titled \"General Map\", December 1942, which shows Stovepipe Wells Airport as an intermediate landing field. Although this 1942 map shows Stovepipe Wells Airport, a later map published in 1944 does not show an airport at Stovepipe Wells. There is no listing for the airport in general aviation directories through 1948. The listing of the airport on a 1942 map and its absence from general airport directories through 1948, suggest that it was an infrequently used dirt strip until 1947, when the Stovepipe Wells Hotel was sold to a Mr. George Putman. Mr. Putman succeeded in constructing two short runways on his property, despite objections from the Director of the Department of the Interior. Since the establishment of Death Valley National Monument in 193 3, the privately owned Stovepipe Wells Hotel has accommodated visitors to the area in competition with Furnace Creek Inn and Ranch, and the airport, for years a dirt landing strip, served to attract visitors who arrived by plane. Stovepipe Wells Airport was privately owned and operated until 1978, when ownership was transferred to the National Park Service, which has since operated the airport. The airport is currently used by the National Park Service and by visitors entering Death Valley National Park at Stovepipe Wells in light planes.\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-117.16418456999997, 36.60681152300003]}}, {"type": "Feature", "properties": {"OBJECTID": 8237, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "TELESCOPE PEAK", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=63186", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "TELESCOPE PEAK", "FUDSINSTALLATIONID": "CA99799FA47600", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7450", "HASPROJECTS": "No", "LATITUDE": 36.15833333, "LONGITUDE": -117.06944444, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "N/A\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-117.06939697299998, 36.158386230000076]}}, {"type": "Feature", "properties": {"OBJECTID": 8499, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "KEELER", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=53990", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "KEELER TALC PLANT", "FUDSINSTALLATIONID": "CA99799FA02100", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7198", "HASPROJECTS": "No", "LATITUDE": 36.4875, "LONGITUDE": -117.87361111, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "N/A\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-117.873596191, 36.487609863000046]}}, {"type": "Feature", "properties": {"OBJECTID": 8500, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "SE OF INDEPENDENCE", "CONGRESSIONALDISTRICT": "08", "COUNTY": "KERN", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=53989", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "DEATH VALLEY SALT PLANT", "FUDSINSTALLATIONID": "CA99799FA02400", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7201", "HASPROJECTS": "No", "LATITUDE": 36.28333333, "LONGITUDE": -116.82972222, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "N/A\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-116.82971191399997, 36.283386230000076]}}, {"type": "Feature", "properties": {"OBJECTID": 8557, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "BALLARAT DRY LAKE", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=53852", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "PANAMINT FLAT DRY LAKE", "FUDSINSTALLATIONID": "CA99799F535900", "FUDSUNIQUEPROPERTYNUMBER": "J09CA0231", "HASPROJECTS": "No", "LATITUDE": 35.95833333, "LONGITUDE": -117.21666667, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "THIS SITE WAS AN EMERGENCY LANDING SITE FOR X-15 AIRCRAFT. ", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-117.21667480499997, 35.95843505900007]}}, {"type": "Feature", "properties": {"OBJECTID": 8624, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "LONE PINE", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54233", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "LONE PINE AIRPORT", "FUDSINSTALLATIONID": "CA99799FA02000", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7197", "HASPROJECTS": "No", "LATITUDE": 36.59472222, "LONGITUDE": -118.05, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "THE DEPARTMENT OF THE DEFENSE (DOD) IS NOT KNOWN TO HAVE ACQUIRED NOR HAVE ANY CONTROLLING INTEREST IN LONE PINE AIRPORT. THE DOD IS NOT KNOW TO HAVE CONSTRUCTED ANY FACILITIES AT EHT AIRPORT.\r\n\r\n\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-118.04998779299996, 36.59478759800004]}}, {"type": "Feature", "properties": {"OBJECTID": 8742, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "PANAMINT MOUNTAINS", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=53467", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "PANAMINT BOMBING & AERIAL GUNNERY RANGE", "FUDSINSTALLATIONID": "CA99799FA33400", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7314", "HASPROJECTS": "No", "LATITUDE": 36.27777778, "LONGITUDE": -117.03583333, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "N/A\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-117.03576660199997, 36.27801513700007]}}, {"type": "Feature", "properties": {"OBJECTID": 9012, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "7 MILES E OF TECOPA", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=53984", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "SHOSHONE LEAD MINES", "FUDSINSTALLATIONID": "CA99799FA03200", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7209", "HASPROJECTS": "No", "LATITUDE": 35.83361111, "LONGITUDE": -116.10027778, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "DEVELOPMENT OF THE SHOSHONE LEAD MINES BEGAN IN THE EARLY 1900S. THE PROPERTY HAS BEEN UNDER PRIVATE CONTROL FROM 1907 TO THE PRESENT DAY THROUGH PATENTED MINING CLAIMS. THE SHOSHONE MINE SITE COMPRISES 18 PATENTED AND 41 UNPATENTED CLAIMS AND SEVERAL MILL SITES ABOUT SEVEN MILES EAST OF TECOPA, INYO COUNTY, CALIFORNIA. THE INDIVIDUAL MINES INCLUDE THE ALEXANDER, APEX CONSTRUCTION, BLACK PRINCE, COLUMBIA NO. 2, GRANT, GUNSIGHT, MABEL, NOONDAY, ORO FINO, RAINBOW, AND WAR EAGLE MINES. TECOPA CONSOLIDATED MINING OWNED AND FIRST OPERATED SHOSHONE MINES FROM 1907 TO 1938. THE PROPERTY WAS PURCHASED BY SHOSHONE MINES INC, IN 1940, BY THE FINLEY COMPANY (SHOSHONE DIVISION) IN MAY 1945, AND BY THE ANACONDA COPPER MINING COMPANY IN JUNE 1947. THE MINES WERE CLOSED AFTER 1956 WHEN EXPLORATION FAILED TO DEVELOP FURTHER HIGH-GRADE RESERVES. THE CURRENT OWNERS OF THE MINES ARE LISTED BY THE INYO COUNTY ASSESSORS OFFICE AS MARSHFIELD DEVELOPMENT INC., BOX 2182, SALEM, OREGON 97308.\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-116.10028076199995, 35.83380127000004]}}, {"type": "Feature", "properties": {"OBJECTID": 9035, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "CHINA LAKE NAVAL WEAPONS CENTER", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=53986", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "NAVAL ORDNANCE TEST STATION", "FUDSINSTALLATIONID": "CA99799FA03300", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7210", "HASPROJECTS": "Yes", "LATITUDE": 36.1441, "LONGITUDE": -117.864998, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "Yes", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with all projects at site closeout", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "N/A\r\n\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-117.86499023399995, 36.14422607400007]}}, {"type": "Feature", "properties": {"OBJECTID": 51, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "Yes", "LATITUDE": 19.497857096442765, "LONGITUDE": -155.10320912843935, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-155.10320912843935, 19.497857096442765]}}, {"type": "Feature", "properties": {"OBJECTID": 52, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "Yes", "LATITUDE": 19.497857096442765, "LONGITUDE": -155.10320912843935, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-155.10320912843935, 19.497857096442765]}}, {"type": "Feature", "properties": {"OBJECTID": 53, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "No", "LATITUDE": 19.497857096442765, "LONGITUDE": -155.10320912843935, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-155.10320912843935, 19.497857096442765]}}, {"type": "Feature", "properties": {"OBJECTID": 54, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "Yes", "LATITUDE": 19.516632121497878, "LONGITUDE": -155.91378674587037, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-155.91378674587037, 19.516632121497878]}}, {"type": "Feature", "properties": {"OBJECTID": 55, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "Yes", "LATITUDE": 19.516632121497878, "LONGITUDE": -155.91378674587037, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-155.91378674587037, 19.516632121497878]}}, {"type": "Feature", "properties": {"OBJECTID": 56, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "No", "LATITUDE": 19.516632121497878, "LONGITUDE": -155.91378674587037, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-155.91378674587037, 19.516632121497878]}}, {"type": "Feature", "properties": {"OBJECTID": 57, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "Yes", "LATITUDE": 20.825377142028497, "LONGITUDE": -156.3306524489697, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-156.3306524489697, 20.825377142028497]}}, {"type": "Feature", "properties": {"OBJECTID": 58, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "Yes", "LATITUDE": 20.825377142028497, "LONGITUDE": -156.3306524489697, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-156.3306524489697, 20.825377142028497]}}, {"type": "Feature", "properties": {"OBJECTID": 59, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "No", "LATITUDE": 20.825377142028497, "LONGITUDE": -156.3306524489697, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-156.3306524489697, 20.825377142028497]}}, {"type": "Feature", "properties": {"OBJECTID": 60, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "Yes", "LATITUDE": 20.917074254751412, "LONGITUDE": -156.5429023670438, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-156.5429023670438, 20.917074254751412]}}, {"type": "Feature", "properties": {"OBJECTID": 61, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "Yes", "LATITUDE": 20.917074254751412, "LONGITUDE": -156.5429023670438, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-156.5429023670438, 20.917074254751412]}}, {"type": "Feature", "properties": {"OBJECTID": 62, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "No", "LATITUDE": 20.917074254751412, "LONGITUDE": -156.5429023670438, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-156.5429023670438, 20.917074254751412]}}, {"type": "Feature", "properties": {"OBJECTID": 63, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "Yes", "LATITUDE": 21.907546119100093, "LONGITUDE": -159.48416820625405, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-159.48416820625405, 21.907546119100093]}}, {"type": "Feature", "properties": {"OBJECTID": 64, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "Yes", "LATITUDE": 21.907546119100093, "LONGITUDE": -159.48416820625405, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-159.48416820625405, 21.907546119100093]}}, {"type": "Feature", "properties": {"OBJECTID": 65, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "No", "LATITUDE": 21.907546119100093, "LONGITUDE": -159.48416820625405, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-159.48416820625405, 21.907546119100093]}}]} \ No newline at end of file +{"type": "FeatureCollection", "name": "FUDS_Property_Point", "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:OGC:1.3:CRS84"}}, "features": [{"type": "Feature", "properties": {"OBJECTID": 684, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "NO CITY", "CONGRESSIONALDISTRICT": "04", "COUNTY": "SACRAMENTO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=60970", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "McClellan AFB Communication Facility Annex", "FUDSINSTALLATIONID": "CA99799F528900", "FUDSUNIQUEPROPERTYNUMBER": "J09CA0082", "HASPROJECTS": "No", "LATITUDE": 38.87444444, "LONGITUDE": -121.39361111, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spk", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "The McClellan Communication Facility Annex was used by the U.S. Air Force. In 1983, part of the site was excessed to the GSA, who leased it to the Lincoln School District, Lincoln, CA for school agricultural instruction. The lease terminated October 1984. This portion of the site had no improvements on it when excessed and remains unimproved. The remaining part of this site remains under DoD control and is actively used by the U.S. Air Force.\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-121.39361572299998, 38.87463378900003]}}, {"type": "Feature", "properties": {"OBJECTID": 1538, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "KUALOA", "CONGRESSIONALDISTRICT": "02", "COUNTY": "HONOLULU", "CURRENTOWNER": "PRIV: PRIVATE KUALOA RANCH IS THE OWNER\n\n ", "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=62331", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "BATTERY AVERY J. COOPER", "FUDSINSTALLATIONID": "HI99799F378500", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0040", "HASPROJECTS": "Yes", "LATITUDE": 21.535999, "LONGITUDE": -157.843002, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "Yes", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties with all projects at site closeout", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "BATTERY AVERY J. COOPER CONSISTED OF 94.09 ACRES AND USED \nFOR A SEACOAST DEFENSE STRUCTURE. THE SITE WAS ACQUIRED \nFROM THE ARMY THROUGH A LEASE AGREEMENT AND IN 1952, THE \nARMY AND KUALOA RANCH TER MINATED THE AGREEMENT.\n ", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-157.84301757799997, 21.53619384800004]}}, {"type": "Feature", "properties": {"OBJECTID": 1629, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "KAAAWA", "CONGRESSIONALDISTRICT": "02", "COUNTY": "HONOLULU", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54603", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "KAAAWA MILITARY RES", "FUDSINSTALLATIONID": "HI99799F387500", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0135", "HASPROJECTS": "No", "LATITUDE": 21.55333333, "LONGITUDE": -157.85166667, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "THIS SITE SERVED AS THE CAMP HEADQUARTES FOR THE UNIT JUNGLE TRAINING CENTER. THE ORIGINAL RESERVASTION WAD CONMPRISED OF TWO NONCONTIGUOUS PARCELS CONTAINING 3.67 ACRES AND .1377 ACRES, TWO RIGHT-OF -WAYS, AND AN AREA DESIGNATED FOR ARMY OBERSATION STATION L. THESE LANDS WERE ACQUIRED BY THE GOVERNMENT BY DEED DATED 14 JANUARY 1925 AND DECLARED A MILITARY RESERVATION BY EXCUTIVE ORDER NO. 4679 D ATED 29 JUNE 1927. ON DEC. 20, 1937, AN ADDITIONAL 1.368 ACRES WAS ACQUIRED BY THE GOVERNMENT.", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-157.85168456999997, 21.553405762000068]}}, {"type": "Feature", "properties": {"OBJECTID": 1719, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "LINCOLN", "CONGRESSIONALDISTRICT": "04", "COUNTY": "PLACER", "CURRENTOWNER": "PRIV: PRIVATE A private resident currently owns the land and uses it for agriculture purposes.", "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=61278", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "Lincoln Radio Beacon Annex", "FUDSINSTALLATIONID": "CA99799F578400", "FUDSUNIQUEPROPERTYNUMBER": "J09CA0854", "HASPROJECTS": "Yes", "LATITUDE": 38.8975, "LONGITUDE": -121.40027778, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "Yes", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with all projects at site closeout", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spk", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "In 1957, the U.S. Government acquired 0.87 fee acre from a private resident for use by the U.S. Air Force as an off base installation to McClellan AFB, CA. A medium power low frequency homer beacon was used to serve as a navigational aid site for McClellan. The site was declared excess in 1965. In 1966, the 0.87 fee acre was returned back to the private resident. Potential hazards related to Department of Defense activities are not currently identified at this site. ", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-121.40020751999998, 38.897583008000026]}}, {"type": "Feature", "properties": {"OBJECTID": 2093, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "KALAHEO", "CONGRESSIONALDISTRICT": "02", "COUNTY": "KAUAI", "CURRENTOWNER": "STATE: STATE STATE OF HAWAII ", "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=58233", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "PAPAPAHOLAHOLA COMM SITE", "FUDSINSTALLATIONID": "HI99799F401000", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0280", "HASPROJECTS": "Yes", "LATITUDE": 21.9764, "LONGITUDE": -159.522003, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "Yes", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties with all projects at site closeout", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "THE SITE WAS AQUIRED AS AN INTERISLAND RAION TELEPHONE AND TELEYPE STATION FROM 1943 TO 1946. IN SEPTEMBER 1953, THE ARMY TRANSFERRED THE SITE TO THE CIVIL AERONAUTICS ADMINISTRATION TO ESTALISH A VF H AIR/GROUND COVERAGE FROM MAKAHUENA POINT TO BARKING SANDS. IN MARCH OF 1967, THE GENERAL SERVICE ADMINISTRATION RELINQUISHED CONTROL OF THE SITE TO THE STATE OF HAWAII VIA QUITCLAIM DEED AND THE ST ATE TURNED IT OVER TO DLNR FOR USE AS A STATE PARK.", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-159.52191162099996, 21.976623535000044]}}, {"type": "Feature", "properties": {"OBJECTID": 2123, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "KALAHEO", "CONGRESSIONALDISTRICT": "02", "COUNTY": "KAUAI", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=62359", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "DIVISION HEADQUARTERS", "FUDSINSTALLATIONID": "HI99799F381400", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0071", "HASPROJECTS": "No", "LATITUDE": 21.9375, "LONGITUDE": -159.53, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "NO EVIDENCE OF HAZARDOUS/TOXIC WASTE, EXPLOSIVE ORDNANCE WASTE, UNSAFE OR HAZARDOUS DEBRIS WAS FOUND. ", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-159.52996826199998, 21.93762207000003]}}, {"type": "Feature", "properties": {"OBJECTID": 2217, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "KEANAE", "CONGRESSIONALDISTRICT": "02", "COUNTY": "MAUI", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=62430", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "MARINE MANEUVER AREA", "FUDSINSTALLATIONID": "HI99799F395400", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0217", "HASPROJECTS": "No", "LATITUDE": 20.84027778, "LONGITUDE": -156.14277778, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "SITE WAS USED FOR MARINE MANEUVERS. NO REMNANTS OF STRUCTURES OR DEBRIS WERE OBSERVED. ", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-156.14270019499997, 20.840393066000047]}}, {"type": "Feature", "properties": {"OBJECTID": 4551, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "UPOLU POINT", "CONGRESSIONALDISTRICT": "02", "COUNTY": "HAWAII", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=62478", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "UPOLU POINT MILITARY RES", "FUDSINSTALLATIONID": "HI99799F406300", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0342", "HASPROJECTS": "No", "LATITUDE": 20.265, "LONGITUDE": -155.85972222, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "THE SITE WAS USED FROM JUNE 25, 1927 TO JUNE 30, 1945. THE \nSITE WAS ALSO NAMED SUITER FIELD AND CONSISTED OF A RUNWAY \n(150'x4,000'), AIRCRAFT PARKING, CATAPULT DECK, \nADMINISTRATION BUILDING, QUART ERS, LATRINES, SUPPLY \nBUILDING, COMMISSARY STORES,A GALLEY AND MESS HALL, RADIO \nTRANSMITTER BUILDING, ROCKET STORAGE MAGAZINE, PUBLIC WORKS \nBUILDINGS, DISPENSARY, AND WEATHER STATION.\n ", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-155.85968017599998, 20.26519775400004]}}, {"type": "Feature", "properties": {"OBJECTID": 4622, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "MAKAWAO", "CONGRESSIONALDISTRICT": "02", "COUNTY": "MAUI", "CURRENTOWNER": "PRIV: PRIVATE ", "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=62368", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "GUNNERY SITE", "FUDSINSTALLATIONID": "HI99799F383800", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0098", "HASPROJECTS": "Yes", "LATITUDE": 20.89916667, "LONGITUDE": -156.26027778, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "Yes", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "The property was a former Marine artillery impact area. A youngster was wounded by unexploded ordnance in the 1940s. The land remains as cattle grazing before and after military use. This property is known or suspected to contain military munitions and unexploded ordnance and therefore may present an explosive hazard.", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-156.26019287099996, 20.899414062000062]}}, {"type": "Feature", "properties": {"OBJECTID": 4669, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "KOLOA", "CONGRESSIONALDISTRICT": "02", "COUNTY": "KAUAI", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=62403", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "KOLOA ICE PLANT", "FUDSINSTALLATIONID": "HI99799F392900", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0191", "HASPROJECTS": "No", "LATITUDE": 21.90444444, "LONGITUDE": -159.465, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "SITE WAS CONSTRUCTED BY US AMRY ENGINEERING DISTRICT IN \nEARLY 1942 FOR THE 72ND QUARTERMASTER DISTRICT. SITE \nCONSISTED OF A CONCRETE ICE PLANT STRUCTURE PAVED PARKING \nLOT AND DRIVEWAY. THE PLANT WAS DEOMLISHED ABOUT 1947/1949. \nNO EVIDENCE OF ANY FORMER USE WAS FOUND DURING THE SITE \nSURVEY ON MARCH 2, 1993.\n ", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-159.46496581999997, 21.90460205100004]}}, {"type": "Feature", "properties": {"OBJECTID": 4694, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "PUNA", "CONGRESSIONALDISTRICT": "02", "COUNTY": "HAWAII", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=62396", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "KAPOHO TARGET AREA", "FUDSINSTALLATIONID": "HI99799F390300", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0165", "HASPROJECTS": "No", "LATITUDE": 19.49166667, "LONGITUDE": -154.82527778, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "THE MILITARY USED THE PROJECT FOR A TARGET AREA; THE ARMY GRANTED THE NAVY PERMISSION TO USE THE TARGET AREA FROM JUNE 13, 1945 - MAY 1956. ", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-154.82519531299997, 19.49182128900003]}}, {"type": "Feature", "properties": {"OBJECTID": 4735, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "POLOLU VALLEY", "CONGRESSIONALDISTRICT": "02", "COUNTY": "HAWAII", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=62459", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "POLOLU", "FUDSINSTALLATIONID": "HI99799F401600", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0286", "HASPROJECTS": "No", "LATITUDE": 20.16666667, "LONGITUDE": -155.73333333, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "SITE WAS USED FOR AMPHIBIOUS AND JUNGLE TRAINING. NO \nEVIDENCE WAS FOUND FOR HAZARDOUS/TOXIC WASTES, OEW, AND \nUNSAFE DEBRIS.\n ", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-155.73327636699997, 20.166809082000043]}}, {"type": "Feature", "properties": {"OBJECTID": 5292, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "WAIPIO", "CONGRESSIONALDISTRICT": "02", "COUNTY": "HAWAII", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=62349", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "WAIPIO BOMBING TARGETS", "FUDSINSTALLATIONID": "HI99799F379600", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0052", "HASPROJECTS": "No", "LATITUDE": 20.91222222, "LONGITUDE": -156.22083333, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "THE APPROXIMATELY 60-ACRE PROJECT SITE WAS USED BY THE ARMY OR NAVY FOR AERIAL BOMBING TARGET PRACTICE DURUNG WORLD WAR II. MILITARY PLANES DROPPED BOMBS AIMED AT TARGETS OF WHITE ROCKS SET IN A CIRCULAR PATTERN IN AN AREA RESIDENTS, IT WAS INDICATED THE MILITARY DID NOT CLEAR THE AREA OF ANY DEBRIS OR ORDNANCE WHEN THE PRACTICE BOMBING ACTIVITIES CEASED. \r\n", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-156.22076415999996, 20.91241455100004]}}, {"type": "Feature", "properties": {"OBJECTID": 5310, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "ISLAND OF HAWAII", "CONGRESSIONALDISTRICT": "02", "COUNTY": "HAWAII", "CURRENTOWNER": "PRIV: Estate of Richard Smart AKA Parker Ranch, Estate of Richard Smart AKA Parker Ranch, WH Shipman", "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=53556", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "BIG ISLAND BOMBING TARGETS", "FUDSINSTALLATIONID": "HI99799FA10000", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0476", "HASPROJECTS": "Yes", "LATITUDE": 20.235, "LONGITUDE": -155.89277778, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "Yes", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "The sites were identified in the History of G-3, Headquarters Army Forces Middle Pacific - Functions and Activities 7 December 1941 to 2 December 1945. No use has been made to the sites since the military occupation. The property is known or suspected to contain military munitions or unexploded ordnance and therefore may present an explosive hazard.", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-155.89270019499997, 20.23522949200003]}}, {"type": "Feature", "properties": {"OBJECTID": 5832, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "NO CITY", "CONGRESSIONALDISTRICT": "02", "COUNTY": "MAUI", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54600", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "KAILUA RADAR STATION", "FUDSINSTALLATIONID": "HI99799F388700", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0147", "HASPROJECTS": "No", "LATITUDE": 20.89083333, "LONGITUDE": -156.2075, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "RECORDS ARE NOT AVAILABLE. PREVIOUS RECORDS SHOW THAT THE KAILUA RADAR STATION FACILITIES WERE CONSTRUCTED BY THE 2ND PLATOON, 581 ST SIGNAL CORPS AIRCRAFT WARNING SYSTEM, HAWAII IN 1942 AND WAS IN US E UNTIL SEPT. 1944 ", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-156.20739746099997, 20.890991211000028]}}, {"type": "Feature", "properties": {"OBJECTID": 6013, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "KOLOA", "CONGRESSIONALDISTRICT": "02", "COUNTY": "KAUAI", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=56908", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "KOLOA BAKERY", "FUDSINSTALLATIONID": "HI99799F392800", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0190", "HASPROJECTS": "No", "LATITUDE": 21.905, "LONGITUDE": -159.46444444, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "KOLOA BAKERY WAS ESTABLISHED BY THE ARMY IN MID-1942 AND WAS \nLOCATED ATTHE SOUTHEAST CORNER OF A 7.518-ACRE PARCEL. THE \nBAKERY WAS CONSUTRCTED BY THE U.S. ENGINEERING DISTRICT FOR \nTHE 72ND QUARTRE MASTER DISTRICT ON THE SITE OF A FORMER BALL \nPARK AND ADJACENT TO A 20-TON ICE PLANT. THE BAKERY \nSUPPLIES BETWEEN 15,000-25,000 LOAVES PER DAY AND CONSISTED \nOF A WOOD BUILDING, 500-LOAF OVEN, STOV ES, AND AN \nABOVEGROUND 500-GALLON DIESEL TANK BAKERY LATER CONVERTED \nTO A MARKET/RESTAURANT.\n", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-159.46441650399998, 21.905212402000075]}}, {"type": "Feature", "properties": {"OBJECTID": 6015, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "KALAHEO", "CONGRESSIONALDISTRICT": "02", "COUNTY": "KAUAI", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=56898", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "1ST STATION HOSPITAL", "FUDSINSTALLATIONID": "HI99799F382500", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0084", "HASPROJECTS": "No", "LATITUDE": 21.9225, "LONGITUDE": -159.52111111, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "SITE WAS COMMANDEERED TWO WEEKS AFATER PEARL HARBOR WAS \nATTAACKED AND LATER A LICENSE WAS GRANTED ON 28 MARCH 1942 \nFROM THE TERRITORY OF HAWAII. A 500-BED HOSPITAL WAS \nESTABLISHED AND THE 165TH DIV ISION WAS ASSIGNED TO OPERATE \nIT. FIVE BUILDINGS WERE CONVERTED IN A MESS HALL, \nAUDITORIUM, SURGICAL WARD, MEDIAL SUPPLIES STORAGE, AND \nPATIENT WARDS. QUARTERS WERE CONSTRCUTRED ALONG THE CAMPUS \n PERIMETER AND SIX-MEN TENTS WERE ERECTED. SITE WAS CLOSED \nIN 6/45 & TERMINATION OF LICENSE WAS 9/3", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-159.52111816399997, 21.922607422000056]}}, {"type": "Feature", "properties": {"OBJECTID": 6062, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "PUNALUU/KAHANA", "CONGRESSIONALDISTRICT": "02", "COUNTY": "HONOLULU", "CURRENTOWNER": "STATE: STATE KAHANA IS A STATE OF HAWAII PARK. PUNALUU IS AN AGRICULTURAL COMMUNITY. PRIV: PRIVATE KAHANA IS A STATE OF HAWAII PARK. PUNALUU IS AN AGRICULTURAL COMMUNITY. ", "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=56893", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "PACIFIC JUNGLE COMBAT", "FUDSINSTALLATIONID": "HI99799F400400", "FUDSUNIQUEPROPERTYNUMBER": "H09HI0274", "HASPROJECTS": "Yes", "LATITUDE": 21.55416667, "LONGITUDE": -157.90694444, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "Yes", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "HI", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "poh", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "The property, located in two valleys, began being used as a jungle training center in September 1943. The leases were terminated in August 1946 for Kahana Valley and between April 1945 and November 1950 for Punaluu Valley. Kahana Valley is now a state park and Punaluu is an agricultural community. The property is known or suspected to contain military munitions or unexploded ordnance and therefore may present an explosive hazard.\r\rThe real estate instruments evidencing Department of Defense possession of the property could not be found. However, a Tract Register and Audited Real Estate Map of the Pacific Jungle Combat Training Center was\rfound and is the basis for the property information below. \r\rThe property consisted of 2,209.77 acres which included forty-one tracts of land within the Kahana and Punaluu Valleys (Tax Map Key (TMK) 5-2-02 and 5-2-05:various parcels and TMK 5-3-01, 5-3-02, 5-3-04, 5-3-05, 5-3-07 and 5-3-11: various parcels). The Kahana and Punaluu Valleys are now Ahupuaa O Kahana State Park and an agricultural community, respectively.\r\rThe Army acquired 485.25 acres in Kahana Valley by license in November 1944 retroactive to May 1943. In neighboring Punaluu valley, the Army executed leases, licenses, and informal agreements between October 1943 and March 1947, with several instruments retroactive to October 1943, to acquire 1,724.52 acres. The Army established Pacific Jungle Combat Training Center (also known as the Unit Jungle Training Center/Instructors Jungle Training School) on 6 September 1943 for training in basic and advanced jungle warfare. Subjects taught included jungle first aid and evacuation; hand-to-hand combat; construction and passage of wire entanglements; booby traps and demolitions; patrolling and ambushing; hip shooting and infiltration; stream crossing expedients; assault with bayonets; assault of Japanese fortified areas; combat reaction proficiency; and jungle living.\r\rThe Army terminated the licenses for usage of Kahana Valley parcels on 31 August 1946. The Army terminated the leases, licenses, and informal permits comprising the various Punaluu Valley parcels beginning in April 1945 and concluding on 30 November 1950. Kahana Valley is presently under the purview of the Hawaii Department of Land and Natural Resources and was set aside as a state park in the 1960s. Punaluu Valley is owned by numerous small landowners and Kamehameha Schools/Bernice Pauahi Bishop Estate lessees engaged in the cultivation of diversified agricultural crops.", "USACEDIVISION": "pod"}, "geometry": {"type": "Point", "coordinates": [-157.90679931599996, 21.554199219000054]}}, {"type": "Feature", "properties": {"OBJECTID": 6974, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "SAN BENITO", "CONGRESSIONALDISTRICT": "20", "COUNTY": "SAN BENITO", "CURRENTOWNER": "OTHER: OTHER Several local agencies use the site as the Call Mountain Mobile Radio Relay Facility.", "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=57284", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "Call Mountain Radio Relay Annex", "FUDSINSTALLATIONID": "CA99799F570500", "FUDSUNIQUEPROPERTYNUMBER": "J09CA0764", "HASPROJECTS": "Yes", "LATITUDE": 36.61472222, "LONGITUDE": -121.06777778, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "Yes", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with all projects at site closeout", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spk", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "Prior to DoD use, the Site was open grazing land for livestock. Former Call Mountain Radio Relay Annex was established on 2 March 1955 as a radio relay station under the operational control of Mill Valley Air Force Station. The Site consisted of a concrete block radio relay and generator building and an antenna farm consisting of four 60-foot antenna poles on 0.84 acre of land. Documents on file at the National Archives and Records Administration in College Park, Maryland, indicated that the primary electrical power was supplied by the Pacific Gas and Electric Company, which installed 3 miles of pole line in order to provide this service at the Site; therefore, no underground storage tanks were installed. On 14 August 1958, the U.S. Air Force terminated its lease with the property owner. The Site is currently privately owned, and new buildings located on-Site are used as a radio relay and transmitter site for public safety agencies in San Benito County.", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-121.06768798799999, 36.61480712900004]}}, {"type": "Feature", "properties": {"OBJECTID": 7018, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "PANAMINT SPRINGS", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=60971", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "PANAMINT DRY LAKE TEST", "FUDSINSTALLATIONID": "CA99799F533000", "FUDSUNIQUEPROPERTYNUMBER": "J09CA0127", "HASPROJECTS": "No", "LATITUDE": 36.33333333, "LONGITUDE": -117.39166667, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "THIS SITE WAS USED AS AN EMERGENCY LANDING AREA ", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-117.391601563, 36.33343505900007]}}, {"type": "Feature", "properties": {"OBJECTID": 7046, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "KEELER", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54232", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "KEELER SODA PLANT", "FUDSINSTALLATIONID": "CA99799FA02200", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7199", "HASPROJECTS": "No", "LATITUDE": 36.46944444, "LONGITUDE": -117.85555556, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "N/A\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-117.85546874999994, 36.46960449200003]}}, {"type": "Feature", "properties": {"OBJECTID": 7428, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "SACRAMENTO", "CONGRESSIONALDISTRICT": "04", "COUNTY": "SACRAMENTO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=53883", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "McClellan AFB Outer Marker", "FUDSINSTALLATIONID": "CA99799F523100", "FUDSUNIQUEPROPERTYNUMBER": "J09CA0010", "HASPROJECTS": "No", "LATITUDE": 38.75138889, "LONGITUDE": -121.40027778, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spk", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "On 14 April 1952, the Department of Defense (DoD) acquired a total of 0.43 acre, including 0.26 acre in fee and 0.17 acre in easement from private interests. The DoD constructed a communications equipment building and an access road, and installed two electric utility poles and 436 linear feet of chain link fence. The site was used as an instrument landing facility in support of McClellan Air Force Base (AFB). On 25 September 1978, the 0.43 acre was reported as excess to the General Services Administration, who conveyed 0.26 acre in fee and 0.17 acre in easement to Jack Garfield on 22 June 1979. No hazards have been identified related to former Department of Defense activities.", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-121.40020751999998, 38.75158691400003]}}, {"type": "Feature", "properties": {"OBJECTID": 7565, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "PINTO PEAK", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=63165", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "PINTO PEAK", "FUDSINSTALLATIONID": "CA99799FA45600", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7429", "HASPROJECTS": "No", "LATITUDE": 36.3875, "LONGITUDE": -117.23527778, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "N/A\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-117.23529052699996, 36.387634277000075]}}, {"type": "Feature", "properties": {"OBJECTID": 7689, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "INDEPENDENCE", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": "OTHER: OTHER CITY OF LOS ANGELES AND THE DEPT OF THE INTERIOR (NATIONAL \nPARKS SERVICE).\n ", "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=62560", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "CAMP MANZANAR", "FUDSINSTALLATIONID": "CA99799F743900", "FUDSUNIQUEPROPERTYNUMBER": "J09CA0137", "HASPROJECTS": "Yes", "LATITUDE": 36.725, "LONGITUDE": -118.15277778, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "Yes", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with all projects at site closeout", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "In March 1942, the Wartime Civilian Control Administration (WAA), under the direction of the Western Defense Command - Fourth Army, requested the South Pacific Division of the United States Engineer Corps to construct suitable facilities at Manzanar to receive voluntary and forced Japanese American internees from the west coast of the United States. Using Army and Japanese American labor, approximately 825 buildings and structures were constructed. These included 445 barracks, 30 recreation halls, 32 mess halls, male and female latrines, and laundry facilities. Other improvements included an administration building, an auditorium, 37 warehouses, 8 observation towers, 2 sentry houses, police headquarters, and maintenance facilities. Hospital facilities and an orphanage were also provided. All of these facilities were constructed of wood, covered with tar paper, and situated on approximately 670 acres of the site. Other facilities on the remainder of the site included a 600,000 gallon reservoir, irrigation improvements, water and sewage treatment facilities, hog pens and chicken houses.", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-118.15270996099997, 36.725219727000024]}}, {"type": "Feature", "properties": {"OBJECTID": 7691, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "LONE PINE", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": "LOCAL: CITY RESIDENTIAL PRIV: PRIVATE RESIDENTIAL ", "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=62589", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "MT. WHITNEY MILITARY RESERVATION", "FUDSINSTALLATIONID": "CA99799F744000", "FUDSUNIQUEPROPERTYNUMBER": "J09CA0138", "HASPROJECTS": "Yes", "LATITUDE": 36.56666667, "LONGITUDE": -118.13888889, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "Yes", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with all projects at site closeout", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "N/A\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-118.13891601599994, 36.56683349600007]}}, {"type": "Feature", "properties": {"OBJECTID": 7831, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "DEATH VALLEY NATIONAL PARK", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=63099", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "DEATH VALLEY NATIONAL PARK", "FUDSINSTALLATIONID": "CA99799FA39000", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7363", "HASPROJECTS": "No", "LATITUDE": 36.78333333, "LONGITUDE": -117.31111111, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "Various aircraft crash sites identified all reside within the boundaries of Death Valley National Park. which consists of 3,336,000 acres of land. \r\rThe Park area ha been used by the U.S. Armed forces for pracice flighs and maneuvers throughout its history. Records indicate that this practice was intensified during WWII and continues today. Information collected identified a total of 20 crash sites and potentially associated with the Department of Defense within the Park boundaries.", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-117.311096191, 36.783386230000076]}}, {"type": "Feature", "properties": {"OBJECTID": 7866, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "OLANCHA", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=63160", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "OLANCHA AIRFIELD", "FUDSINSTALLATIONID": "CA99799FA45100", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7424", "HASPROJECTS": "No", "LATITUDE": 36.28361111, "LONGITUDE": -118.00027778, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": " OLANCHA AIRFIELD WAS ESTABLISHED IN THE EARLY 1930'S ON AN ESTIMATED 100 ACRES OF PRIVATELY OWNED \r\nLAND. THE AIRFIELD , WAS A DIRT LANDING STRIP. FUEL WAS PUMPED BY HAND FROM 55-GALLON DRUMS. THE AIRFIELD SERVED THE \r\nPUBLIC VISITING THE AREA FOR RECREATION THROUGH THE 1930'S AND 1940S. THE AIRFIELD WAS CLOSED IN 1950 FOLLOWING A PERIOD \r\nOF INFREQUENT USE AND THE SITE IS NOW COMMERCIALLY DEVELOPED. THERE IS NO EVIDENCE OF THE FORMER AIRFIELD AT THE SITE.\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-118.00030517599998, 36.283813477000024]}}, {"type": "Feature", "properties": {"OBJECTID": 7977, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "DEATH VALLEY", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=63103", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "FURNANCE CREEK AIRPORT(OLD AIRPORT)", "FUDSINSTALLATIONID": "CA99799FA39400", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7367", "HASPROJECTS": "No", "LATITUDE": 36.46111111, "LONGITUDE": -116.8625, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "N/A\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-116.86248779299996, 36.46124267600004]}}, {"type": "Feature", "properties": {"OBJECTID": 8235, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "STOVEPIPE WELLS", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=63184", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "STOVEPIPE WELLS AIRPORT", "FUDSINSTALLATIONID": "CA99799FA47400", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7448", "HASPROJECTS": "No", "LATITUDE": 36.60666667, "LONGITUDE": -117.16416667, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "Information on Stovepipe Wells Airport is scant. The earliest written reference to the airport is a map of the California Arizona Maneuver Area, Map No 238, titled \"General Map\", December 1942, which shows Stovepipe Wells Airport as an intermediate landing field. Although this 1942 map shows Stovepipe Wells Airport, a later map published in 1944 does not show an airport at Stovepipe Wells. There is no listing for the airport in general aviation directories through 1948. The listing of the airport on a 1942 map and its absence from general airport directories through 1948, suggest that it was an infrequently used dirt strip until 1947, when the Stovepipe Wells Hotel was sold to a Mr. George Putman. Mr. Putman succeeded in constructing two short runways on his property, despite objections from the Director of the Department of the Interior. Since the establishment of Death Valley National Monument in 193 3, the privately owned Stovepipe Wells Hotel has accommodated visitors to the area in competition with Furnace Creek Inn and Ranch, and the airport, for years a dirt landing strip, served to attract visitors who arrived by plane. Stovepipe Wells Airport was privately owned and operated until 1978, when ownership was transferred to the National Park Service, which has since operated the airport. The airport is currently used by the National Park Service and by visitors entering Death Valley National Park at Stovepipe Wells in light planes.\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-117.16418456999997, 36.60681152300003]}}, {"type": "Feature", "properties": {"OBJECTID": 8237, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "TELESCOPE PEAK", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=63186", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "TELESCOPE PEAK", "FUDSINSTALLATIONID": "CA99799FA47600", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7450", "HASPROJECTS": "No", "LATITUDE": 36.15833333, "LONGITUDE": -117.06944444, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "N/A\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-117.06939697299998, 36.158386230000076]}}, {"type": "Feature", "properties": {"OBJECTID": 8499, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "KEELER", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=53990", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "KEELER TALC PLANT", "FUDSINSTALLATIONID": "CA99799FA02100", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7198", "HASPROJECTS": "No", "LATITUDE": 36.4875, "LONGITUDE": -117.87361111, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "N/A\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-117.873596191, 36.487609863000046]}}, {"type": "Feature", "properties": {"OBJECTID": 8500, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "SE OF INDEPENDENCE", "CONGRESSIONALDISTRICT": "08", "COUNTY": "KERN", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=53989", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "DEATH VALLEY SALT PLANT", "FUDSINSTALLATIONID": "CA99799FA02400", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7201", "HASPROJECTS": "No", "LATITUDE": 36.28333333, "LONGITUDE": -116.82972222, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "N/A\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-116.82971191399997, 36.283386230000076]}}, {"type": "Feature", "properties": {"OBJECTID": 8557, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "BALLARAT DRY LAKE", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=53852", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "PANAMINT FLAT DRY LAKE", "FUDSINSTALLATIONID": "CA99799F535900", "FUDSUNIQUEPROPERTYNUMBER": "J09CA0231", "HASPROJECTS": "No", "LATITUDE": 35.95833333, "LONGITUDE": -117.21666667, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "THIS SITE WAS AN EMERGENCY LANDING SITE FOR X-15 AIRCRAFT. ", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-117.21667480499997, 35.95843505900007]}}, {"type": "Feature", "properties": {"OBJECTID": 8624, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "LONE PINE", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54233", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "LONE PINE AIRPORT", "FUDSINSTALLATIONID": "CA99799FA02000", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7197", "HASPROJECTS": "No", "LATITUDE": 36.59472222, "LONGITUDE": -118.05, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "THE DEPARTMENT OF THE DEFENSE (DOD) IS NOT KNOWN TO HAVE ACQUIRED NOR HAVE ANY CONTROLLING INTEREST IN LONE PINE AIRPORT. THE DOD IS NOT KNOW TO HAVE CONSTRUCTED ANY FACILITIES AT EHT AIRPORT.\r\n\r\n\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-118.04998779299996, 36.59478759800004]}}, {"type": "Feature", "properties": {"OBJECTID": 8742, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "PANAMINT MOUNTAINS", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=53467", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "PANAMINT BOMBING & AERIAL GUNNERY RANGE", "FUDSINSTALLATIONID": "CA99799FA33400", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7314", "HASPROJECTS": "No", "LATITUDE": 36.27777778, "LONGITUDE": -117.03583333, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "N/A\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-117.03576660199997, 36.27801513700007]}}, {"type": "Feature", "properties": {"OBJECTID": 9012, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "7 MILES E OF TECOPA", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=53984", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "SHOSHONE LEAD MINES", "FUDSINSTALLATIONID": "CA99799FA03200", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7209", "HASPROJECTS": "No", "LATITUDE": 35.83361111, "LONGITUDE": -116.10027778, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "DEVELOPMENT OF THE SHOSHONE LEAD MINES BEGAN IN THE EARLY 1900S. THE PROPERTY HAS BEEN UNDER PRIVATE CONTROL FROM 1907 TO THE PRESENT DAY THROUGH PATENTED MINING CLAIMS. THE SHOSHONE MINE SITE COMPRISES 18 PATENTED AND 41 UNPATENTED CLAIMS AND SEVERAL MILL SITES ABOUT SEVEN MILES EAST OF TECOPA, INYO COUNTY, CALIFORNIA. THE INDIVIDUAL MINES INCLUDE THE ALEXANDER, APEX CONSTRUCTION, BLACK PRINCE, COLUMBIA NO. 2, GRANT, GUNSIGHT, MABEL, NOONDAY, ORO FINO, RAINBOW, AND WAR EAGLE MINES. TECOPA CONSOLIDATED MINING OWNED AND FIRST OPERATED SHOSHONE MINES FROM 1907 TO 1938. THE PROPERTY WAS PURCHASED BY SHOSHONE MINES INC, IN 1940, BY THE FINLEY COMPANY (SHOSHONE DIVISION) IN MAY 1945, AND BY THE ANACONDA COPPER MINING COMPANY IN JUNE 1947. THE MINES WERE CLOSED AFTER 1956 WHEN EXPLORATION FAILED TO DEVELOP FURTHER HIGH-GRADE RESERVES. THE CURRENT OWNERS OF THE MINES ARE LISTED BY THE INYO COUNTY ASSESSORS OFFICE AS MARSHFIELD DEVELOPMENT INC., BOX 2182, SALEM, OREGON 97308.\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-116.10028076199995, 35.83380127000004]}}, {"type": "Feature", "properties": {"OBJECTID": 9035, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": "CHINA LAKE NAVAL WEAPONS CENTER", "CONGRESSIONALDISTRICT": "08", "COUNTY": "INYO", "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=53986", "EPAREGION": "09", "FEATUREDESCRIPTION": null, "FEATURENAME": "NAVAL ORDNANCE TEST STATION", "FUDSINSTALLATIONID": "CA99799FA03300", "FUDSUNIQUEPROPERTYNUMBER": "J09CA7210", "HASPROJECTS": "Yes", "LATITUDE": 36.1441, "LONGITUDE": -117.864998, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "Yes", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with all projects at site closeout", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "spl", "FISCALYEAR": "2019", "PROPERTY_HISTORY": "N/A\r\n\r\n", "USACEDIVISION": "spd"}, "geometry": {"type": "Point", "coordinates": [-117.86499023399995, 36.14422607400007]}}, {"type": "Feature", "properties": {"OBJECTID": 51, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "Yes", "LATITUDE": 19.497857096442765, "LONGITUDE": -155.10320912843935, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-155.10320912843935, 19.497857096442765]}}, {"type": "Feature", "properties": {"OBJECTID": 52, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "Yes", "LATITUDE": 19.497857096442765, "LONGITUDE": -155.10320912843935, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-155.10320912843935, 19.497857096442765]}}, {"type": "Feature", "properties": {"OBJECTID": 53, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "No", "LATITUDE": 19.497857096442765, "LONGITUDE": -155.10320912843935, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-155.10320912843935, 19.497857096442765]}}, {"type": "Feature", "properties": {"OBJECTID": 54, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "Yes", "LATITUDE": 19.516632121497878, "LONGITUDE": -155.91378674587037, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-155.91378674587037, 19.516632121497878]}}, {"type": "Feature", "properties": {"OBJECTID": 55, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "Yes", "LATITUDE": 19.516632121497878, "LONGITUDE": -155.91378674587037, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-155.91378674587037, 19.516632121497878]}}, {"type": "Feature", "properties": {"OBJECTID": 56, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "No", "LATITUDE": 19.516632121497878, "LONGITUDE": -155.91378674587037, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-155.91378674587037, 19.516632121497878]}}, {"type": "Feature", "properties": {"OBJECTID": 57, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "Yes", "LATITUDE": 20.825377142028497, "LONGITUDE": -156.3306524489697, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-156.3306524489697, 20.825377142028497]}}, {"type": "Feature", "properties": {"OBJECTID": 58, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "Yes", "LATITUDE": 20.825377142028497, "LONGITUDE": -156.3306524489697, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-156.3306524489697, 20.825377142028497]}}, {"type": "Feature", "properties": {"OBJECTID": 59, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "No", "LATITUDE": 20.825377142028497, "LONGITUDE": -156.3306524489697, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-156.3306524489697, 20.825377142028497]}}, {"type": "Feature", "properties": {"OBJECTID": 60, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "Yes", "LATITUDE": 20.917074254751412, "LONGITUDE": -156.5429023670438, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-156.5429023670438, 20.917074254751412]}}, {"type": "Feature", "properties": {"OBJECTID": 61, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "Yes", "LATITUDE": 20.917074254751412, "LONGITUDE": -156.5429023670438, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-156.5429023670438, 20.917074254751412]}}, {"type": "Feature", "properties": {"OBJECTID": 62, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "No", "LATITUDE": 20.917074254751412, "LONGITUDE": -156.5429023670438, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-156.5429023670438, 20.917074254751412]}}, {"type": "Feature", "properties": {"OBJECTID": 63, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Eligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "Yes", "LATITUDE": 21.907546119100093, "LONGITUDE": -159.48416820625405, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-159.48416820625405, 21.907546119100093]}}, {"type": "Feature", "properties": {"OBJECTID": 64, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "Yes", "LATITUDE": 21.907546119100093, "LONGITUDE": -159.48416820625405, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties with projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-159.48416820625405, 21.907546119100093]}}, {"type": "Feature", "properties": {"OBJECTID": 65, "CENTROIDLAT": null, "CENTROIDLONG": null, "CLOSESTCITY": null, "CONGRESSIONALDISTRICT": "15", "COUNTY": null, "CURRENTOWNER": null, "DODFUDSPROPERTYIDPK": " ", "ELIGIBILITY": "Ineligible", "EMSMGMTACTIONPLANLINK": "https://fudsportal.usace.army.mil/ems/inventory/map?id=54113", "EPAREGION": "06", "FEATUREDESCRIPTION": null, "FEATURENAME": "NEIL, ET AL, PROPERTIES", "FUDSINSTALLATIONID": null, "FUDSUNIQUEPROPERTYNUMBER": "K06TX1120", "HASPROJECTS": "No", "LATITUDE": 21.907546119100093, "LONGITUDE": -159.48416820625405, "MEDIAID": null, "METADATAID": null, "NOFURTHERACTION": null, "PROJECTREQUIRED": "No", "SDSID": null, "SITEELIGIBILITY": null, "STATE": "CA", "STATUS": "Properties without projects", "STATUSCODE": "Not on the NPL", "USACEDISTRICT": "swf", "FISCALYEAR": "2019", "PROPERTY_HISTORY": null, "USACEDIVISION": "swd"}, "geometry": {"type": "Point", "coordinates": [-159.48416820625405, 21.907546119100093]}}]} diff --git a/data/data-pipeline/data_pipeline/tests/sources/us_army_fuds/test_etl.py b/data/data-pipeline/data_pipeline/tests/sources/us_army_fuds/test_etl.py index 61e4ed2e..58e75566 100644 --- a/data/data-pipeline/data_pipeline/tests/sources/us_army_fuds/test_etl.py +++ b/data/data-pipeline/data_pipeline/tests/sources/us_army_fuds/test_etl.py @@ -1,11 +1,9 @@ # pylint: disable=protected-access -from unittest import mock import pathlib -from data_pipeline.etl.base import ValidGeoLevel +from unittest import mock -from data_pipeline.etl.sources.us_army_fuds.etl import ( - USArmyFUDS, -) +from data_pipeline.etl.base import ValidGeoLevel +from data_pipeline.etl.sources.us_army_fuds.etl import USArmyFUDS from data_pipeline.tests.sources.example.test_etl import TestETL from data_pipeline.utils import get_module_logger diff --git a/data/data-pipeline/data_pipeline/tests/test_etl.py b/data/data-pipeline/data_pipeline/tests/test_etl.py index 8af3e91c..cbe45cf3 100644 --- a/data/data-pipeline/data_pipeline/tests/test_etl.py +++ b/data/data-pipeline/data_pipeline/tests/test_etl.py @@ -1,6 +1,7 @@ # pylint: disable=protected-access import pytest -from data_pipeline.etl import constants, runner +from data_pipeline.etl import constants +from data_pipeline.etl import runner def test_get_datasets_to_run(): diff --git a/data/data-pipeline/data_pipeline/tile/generate.py b/data/data-pipeline/data_pipeline/tile/generate.py index 82e9404e..83124606 100644 --- a/data/data-pipeline/data_pipeline/tile/generate.py +++ b/data/data-pipeline/data_pipeline/tile/generate.py @@ -2,7 +2,8 @@ import os from pathlib import Path from subprocess import call -from data_pipeline.utils import get_module_logger, remove_all_from_dir +from data_pipeline.utils import get_module_logger +from data_pipeline.utils import remove_all_from_dir logger = get_module_logger(__name__) diff --git a/data/data-pipeline/data_pipeline/utils.py b/data/data-pipeline/data_pipeline/utils.py index 063da627..55289475 100644 --- a/data/data-pipeline/data_pipeline/utils.py +++ b/data/data-pipeline/data_pipeline/utils.py @@ -1,26 +1,24 @@ -from typing import List, Union import datetime import json import logging import os -import sys import shutil +import sys import uuid import zipfile from pathlib import Path -from marshmallow import ValidationError -import urllib3 +from typing import List +from typing import Union + import requests +import urllib3 import yaml -from marshmallow_dataclass import class_schema - from data_pipeline.config import settings -from data_pipeline.content.schemas.download_schemas import ( - CSVConfig, - CodebookConfig, - ExcelConfig, -) - +from data_pipeline.content.schemas.download_schemas import CodebookConfig +from data_pipeline.content.schemas.download_schemas import CSVConfig +from data_pipeline.content.schemas.download_schemas import ExcelConfig +from marshmallow import ValidationError +from marshmallow_dataclass import class_schema ## zlib is not available on all systems try: diff --git a/data/data-pipeline/pyproject.toml b/data/data-pipeline/pyproject.toml index ab7a7110..8e1a40bc 100644 --- a/data/data-pipeline/pyproject.toml +++ b/data/data-pipeline/pyproject.toml @@ -93,6 +93,8 @@ disable = [ "R0801", # Disables duplicate code. There are a couple places we have similar code and # unfortunately you can't disable this rule for individual lines or files, it's a # known bug. https://github.com/PyCQA/pylint/issues/214# + "C0411", # Disables wrong-import-order. Import order is now enforced by isort as a + # pre-commit hook. ] [tool.pylint.FORMAT] diff --git a/docker-compose.yml b/docker-compose.yml index 9e5d6c22..29ad8dd1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,7 +15,7 @@ services: ENV_FOR_DYNACONF: development PYTHONUNBUFFERED: 1 - # The score_server serves the data-pipeline volume as a URL + # The score_server serves the data-pipeline volume as a URL j40_score_server: image: j40_score_server container_name: j40_score_server_1 @@ -24,24 +24,24 @@ services: - ./data/data-pipeline/data_pipeline/data/score:/data/data-pipeline/data_pipeline/data/score ports: - 5000:8080 - + #The j40_website service runs the web app / map / site j40_website: image: j40_website container_name: j40_website_1 build: ./client environment: - # See the client readme for more info on environment variables: + # See the client readme for more info on environment variables: # https://github.com/usds/justice40-tool/blob/main/client/README.md DATA_SOURCE: local - - # If you want the map to render a MapBox base map (as opposed to the - # open source one from CartoDB), please create your own API TOKEN from + + # If you want the map to render a MapBox base map (as opposed to the + # open source one from CartoDB), please create your own API TOKEN from # your MapBox account and add the token here: MAPBOX_STYLES_READ_TOKEN: "" volumes: - ./client/src:/client/src - ports: + ports: - 8000:6000 depends_on: - "j40_score_server" diff --git a/docs/architecture/architecture-mmd.svg b/docs/architecture/architecture-mmd.svg index 52352c63..5fa10e08 100644 --- a/docs/architecture/architecture-mmd.svg +++ b/docs/architecture/architecture-mmd.svg @@ -1 +1 @@ -
Other Clients
Hosted by Geoplatform.gov
Data Pipeline (Justice40 Repo)
Justice40 Client
Data Selection (vision)
Community
ETL
Score Generation
API (S3 Access)
API (S3 Access)
API (S3 Access)
API (S3 Access)
Data Scientists
Third Party Apps
Justice40 Visualization Library (MapLibre)
Justice40 Static Site Frontend (Gatsby)
Approved Datasets
Normalized CSVs
Full CSV with Data and Score
GeoJSON
Uncompressed MVT Tiles
Intake
Evolution
Voting
Community Input
\ No newline at end of file +
Other Clients
Hosted by Geoplatform.gov
Data Pipeline (Justice40 Repo)
Justice40 Client
Data Selection (vision)
Community
ETL
Score Generation
API (S3 Access)
API (S3 Access)
API (S3 Access)
API (S3 Access)
Data Scientists
Third Party Apps
Justice40 Visualization Library (MapLibre)
Justice40 Static Site Frontend (Gatsby)
Approved Datasets
Normalized CSVs
Full CSV with Data and Score
GeoJSON
Uncompressed MVT Tiles
Intake
Evolution
Voting
Community Input
diff --git a/docs/architecture/architecture.mmd b/docs/architecture/architecture.mmd index 123fbd60..2e147bc8 100644 --- a/docs/architecture/architecture.mmd +++ b/docs/architecture/architecture.mmd @@ -9,7 +9,7 @@ graph LR input --> Voting Intake --> Evolution --> Voting end - + subgraph s["Hosted by Geoplatform.gov"] subgraph dp["Data Pipeline (Justice40 Repo)"] Voting --> a["Approved Datasets"] @@ -28,4 +28,4 @@ graph LR ScoreCSV --"API (S3 Access)" --> DS["Data Scientists"] GeoJSON -- "API (S3 Access)" --> 3["Third Party Apps"] MVT -- "API (S3 Access)" --> 3["Third Party Apps"] - end \ No newline at end of file + end diff --git a/docs/architecture/geodata-pipeline-arch-mmd.svg b/docs/architecture/geodata-pipeline-arch-mmd.svg index ba843576..ffcd7f62 100644 --- a/docs/architecture/geodata-pipeline-arch-mmd.svg +++ b/docs/architecture/geodata-pipeline-arch-mmd.svg @@ -1 +1 @@ -
development
production
Census Data ETL
ETL and Score Generation
Option 1
Option 2
XYZ URL
XYZ URL
Tileserver-GL
Locally stored tiles
Compressed high and low .mbtile files (S3)
Uncompressed MVT high and low directories (S3)
TIGER GeoJSON State Files(S3)
Create GeoJSON from Shapefile with ogr2ogr
Combine Census State Files with Geopandas
National Census GeoJSON (S3)
Normalized CSV (S3)
ETL for Dataset 1
Normalized CSV (S3)
ETL for Dataset 2
Generate Score (score-run)
Downloadable zip
Full CSV (S3)
Dataset 1
Dataset 2
Gatsby+MapLibre
Census TIGER Data Shapefiles (hosted by Census)
Combine with ogr2ogr + Create GeoJSON (score-geo)
GeoJSON files (high and low zoom) (S3)
Create and Send Tiles using Tippecanoe
\ No newline at end of file +
development
production
Census Data ETL
ETL and Score Generation
Option 1
Option 2
XYZ URL
XYZ URL
Tileserver-GL
Locally stored tiles
Compressed high and low .mbtile files (S3)
Uncompressed MVT high and low directories (S3)
TIGER GeoJSON State Files(S3)
Create GeoJSON from Shapefile with ogr2ogr
Combine Census State Files with Geopandas
National Census GeoJSON (S3)
Normalized CSV (S3)
ETL for Dataset 1
Normalized CSV (S3)
ETL for Dataset 2
Generate Score (score-run)
Downloadable zip
Full CSV (S3)
Dataset 1
Dataset 2
Gatsby+MapLibre
Census TIGER Data Shapefiles (hosted by Census)
Combine with ogr2ogr + Create GeoJSON (score-geo)
GeoJSON files (high and low zoom) (S3)
Create and Send Tiles using Tippecanoe
diff --git a/docs/architecture/geodata-pipeline-arch.mmd b/docs/architecture/geodata-pipeline-arch.mmd index f7036428..5e347b76 100644 --- a/docs/architecture/geodata-pipeline-arch.mmd +++ b/docs/architecture/geodata-pipeline-arch.mmd @@ -17,7 +17,7 @@ graph TD TS3("TIGER GeoJSON State Files(S3)")-->CombineCensus["Combine Census State Files with Geopandas"] CombineCensus-->NCS3("National Census GeoJSON (S3)") end - + CSV("Full CSV (S3)")-->CGJ NCS3-->CGJ CGJ["Combine with ogr2ogr + Create GeoJSON (score-geo)"]-->GeoJSON @@ -31,6 +31,6 @@ graph TD Local("Locally stored tiles")--"Option 1"-->TS Compressed("Compressed high and low .mbtile files (S3)")--"Option 2"-->TS[/Tileserver-GL/] end - + TS--"XYZ URL"-->Client Uncompressed--"XYZ URL"-->Client["Gatsby+MapLibre"] diff --git a/docs/decisions/0002-files/AccessibilityComparison.tsv b/docs/decisions/0002-files/AccessibilityComparison.tsv index b7df10c8..60f4d102 100644 --- a/docs/decisions/0002-files/AccessibilityComparison.tsv +++ b/docs/decisions/0002-files/AccessibilityComparison.tsv @@ -9,4 +9,4 @@ OpenStreetMap embed 1 0 The zoom controls' disabled state cannot be programmati MapBox GL JS API 1 0 The web map's semantic structure as a distinct piece of content cannot be programmatically determined. 1 0 Control to display attribution and feedback links is not keyboard accessible. [Github PR] 1 1 1 ChromeVox "Map" "MapBox logo link" NVDA "clickable map graphic" "MapBox logo link" 0 1 tab stop without focus indicator. [Github PR] 0 2/2 targets are too small. 0 1 0 Mapbox logo link opens in a new tab without warning. 0 The "map component" (, which acts as a control to both zoom and pan the map display) is missing role. [Github PR] Control to display attribution and feedback links is missing name and role. [Github PR] 6 Leaflet JS API 1 0 The web map's semantic structure as a distinct piece of content cannot be programmatically determined. [Github issue] The zoom controls' disabled state cannot be programmatically determined. [Github issue] 0 Some map labels (i.e. regional/districts) do not meet the minimum contrast ratio (uses OpenStreetMap tiles). 1 1 1 1 ChromeVox "Zoom in zoom out Leaflet map data copyright OpenStreetMap contributors" "Zoom in button" "Zoom out button" "Leaflet link" "OpenStreetMap link" NVDA "clickable Zoom in zoom out Leaflet map data copyright OpenStreetMap contributors zoom in button zoom in zoom out button Zoom out clickable Leaflet link a JS library for interactive maps map data copyright OpenStreetMap link contributors" "Zoom in button zoom in" "Zoom out button zoom out" "clickable Leaflet link a JS library for interactive maps" "OpenStreetMap link" 0 1 tab stop without focus indicator. 4 tab stops where focus indicators aren't persistently visible. [Github issue] 0 2/2 targets are too small. 0 1 1 0 The "map component" (
, which acts as a control to both zoom and pan the map display) is missing name and role. [Github issue] 7 MapBox Studio embed 1 0 The "Zoom out" control's disabled state cannot be programmatically determined. [Github PR] 1 0 Control to display attribution and feedback links is not keyboard accessible. [Github PR] 1 1 1 ChromeVox "Map" "Search edit text" "Zoom in button" "Zoom out button" "Reset bearing to north button" "MapBox logo link" NVDA "MapBox Studio frame clickable map graphic" "Search edit blank" "Zoom in button zoom in" "Zoom out button zoom out" "Reset bearing to north button reset bearing to north" "MapBox logo link" 0 1 tab stop without focus indicator. [Github PR] 0 7/7 targets are too small. 1 1 0 Mapbox logo link opens in a new tab without warning. 0 The "map component" (, which acts as a control to both zoom and pan the map display) is missing role. [Github PR] Control to display attribution and feedback links is missing name and role. [Github PR] 7 -Bing Maps embed 1 0 Scale bars/rulers are missing contextual information (alternatively should be hidden from ATs). 0 Some map labels (i.e. bodies of water, district labels) do not meet the minimum contrast ratio. 1 1 1 1 ChromeVox "Bing Maps interact to see more" "Current level 1 zoom in button" "Bing Maps link" "Terms link" NVDA "Bing Maps frame clickable Bing Maps interact to see more" "Current level 1 zoom in button zoom in" "Bing Maps link" "Terms link terms" 1 0 3/3 targets are too small. 1 1 0 Both the Bing Maps logo and the "Terms" link open in new windows without warning. 0 The "map component" (
, which acts as a control to both zoom and pan the map display) is missing role. 8 \ No newline at end of file +Bing Maps embed 1 0 Scale bars/rulers are missing contextual information (alternatively should be hidden from ATs). 0 Some map labels (i.e. bodies of water, district labels) do not meet the minimum contrast ratio. 1 1 1 1 ChromeVox "Bing Maps interact to see more" "Current level 1 zoom in button" "Bing Maps link" "Terms link" NVDA "Bing Maps frame clickable Bing Maps interact to see more" "Current level 1 zoom in button zoom in" "Bing Maps link" "Terms link terms" 1 0 3/3 targets are too small. 1 1 0 Both the Bing Maps logo and the "Terms" link open in new windows without warning. 0 The "map component" (
, which acts as a control to both zoom and pan the map display) is missing role. 8 diff --git a/docs/decisions/0002-files/Highways.csv b/docs/decisions/0002-files/Highways.csv index 8fd16e44..419b782a 100644 --- a/docs/decisions/0002-files/Highways.csv +++ b/docs/decisions/0002-files/Highways.csv @@ -2,4 +2,4 @@ Style Loaded,300.22,1195.81,331.85,4460.74,225.97,577.28 Map Idle,1039.56,1195.63,1184.71,126.85,3837.53,2146.08 DOM Interactive,126.88,137.59,193.75,131.33,154.01,262.01 -DOM complete,132.70,138.13,193.89,240.13,176.06,353.36 \ No newline at end of file +DOM complete,132.70,138.13,193.89,240.13,176.06,353.36 diff --git a/docs/decisions/0002-files/Maryland.csv b/docs/decisions/0002-files/Maryland.csv index df1b029a..6478ff69 100644 --- a/docs/decisions/0002-files/Maryland.csv +++ b/docs/decisions/0002-files/Maryland.csv @@ -2,4 +2,4 @@ Style Loaded,408.89,383.19,439.83,1782.45,147.41,0.00 Map Idle,207.23,1263.27,1318.54,120.00,1970.86,1659.42 DOM Interactive,146.15,108.78,171.48,124.38,143.74,269.40 -DOM complete,146.45,109.33,171.69,160.65,166.53,374.69 \ No newline at end of file +DOM complete,146.45,109.33,171.69,160.65,166.53,374.69 diff --git a/docs/decisions/0003-files/adr_process-mmd.svg b/docs/decisions/0003-files/adr_process-mmd.svg index 94919c88..d6caf5bf 100644 --- a/docs/decisions/0003-files/adr_process-mmd.svg +++ b/docs/decisions/0003-files/adr_process-mmd.svg @@ -1 +1 @@ -
ADR Pull Request Written
Emailed
Yes
No
Yes
No
Accepted
Rejected
Draft
Proposed
Consensus
Merged
Concerns Addressed?
Discussion
Voting Outcome
Update other Issues
Close
\ No newline at end of file +
ADR Pull Request Written
Emailed
Yes
No
Yes
No
Accepted
Rejected
Draft
Proposed
Consensus
Merged
Concerns Addressed?
Discussion
Voting Outcome
Update other Issues
Close
diff --git a/docs/decisions/0003-files/adr_process.mmd b/docs/decisions/0003-files/adr_process.mmd index 255b14ad..c62728d9 100644 --- a/docs/decisions/0003-files/adr_process.mmd +++ b/docs/decisions/0003-files/adr_process.mmd @@ -5,8 +5,8 @@ graph TB C --> |No| A{Concerns Addressed?} A --> |Yes| Merged A --> |No| Discussion - Discussion --> O{Voting Outcome} + Discussion --> O{Voting Outcome} O --> |Accepted| Merged O --> |Rejected| Merged Merged --> U[Update other Issues] - U-->Close \ No newline at end of file + U-->Close diff --git a/docs/decisions/0004-client-side-framework.md b/docs/decisions/0004-client-side-framework.md index 1491e851..c3f63590 100644 --- a/docs/decisions/0004-client-side-framework.md +++ b/docs/decisions/0004-client-side-framework.md @@ -5,7 +5,7 @@ - Date: 2021-05-19 - Tags: front-end, client -Technical Story: https://github.com/usds/justice40-tool/issues/44 +Technical Story: https://github.com/usds/justice40-tool/issues/44 ## Context and Problem Statement @@ -38,7 +38,7 @@ We need to decide what framework to use for our front end client. ## Decision Outcome -Chosen option: Gatsby, because it seems to hit the balance between being simple and static-site focused and having capabilities for scaling up features and eventually evolving to a full stack application should we need it. +Chosen option: Gatsby, because it seems to hit the balance between being simple and static-site focused and having capabilities for scaling up features and eventually evolving to a full stack application should we need it. ### Positive Consequences diff --git a/docs/decisions/0005-hosting.md b/docs/decisions/0005-hosting.md index 57769489..490d72fe 100644 --- a/docs/decisions/0005-hosting.md +++ b/docs/decisions/0005-hosting.md @@ -5,7 +5,7 @@ - Date: 2021-05-18 - Tags: Hosting, Server, Geoplatform -Technical Story: https://github.com/usds/justice40-tool/issues/18 + https://github.com/usds/justice40-tool/issues/36 +Technical Story: https://github.com/usds/justice40-tool/issues/18 + https://github.com/usds/justice40-tool/issues/36 ## Context and Problem Statement We need a host for our data pipeline and front end website/app. @@ -15,7 +15,7 @@ We need a host for our data pipeline and front end website/app. - **Speed of launch** - We have a mandate to launch an initial version of our tool by July 27, and we want to get an informational site up much sooner. - **Support for continuous integration and delivery** - We need our hosting provider to support a modern software development lifecycle that includes continuous integration and delivery, such as integration with our Github repository and CI/CD tool such as Github Actions. - **Ease of implementation** - Ideally we can choose a platform that some of the team has experience with, that doesn't have a steep learning curve, and/or that has good support. -- **Commitment to open source and process** - Any code used for servers, data processing, or front end hosting must be able to be open source, so there cannot be limitations with regard to where/how code is hosted and shared. +- **Commitment to open source and process** - Any code used for servers, data processing, or front end hosting must be able to be open source, so there cannot be limitations with regard to where/how code is hosted and shared. ## Considered Options @@ -25,7 +25,7 @@ We need a host for our data pipeline and front end website/app. ## Decision Outcome -We will use Geoplatform.gov for hosting our data pipeline, tile server, and front end client. They have a set of shared service offerings that will enable us to have an open data pipeline from data source to tile API, enabling contributions to data processing at any point as well as enabling data access for users at any point (e.g. whether a user wants to access raw data or GeoJSON or tile format). The diagram below illustrates the proposed system architecture and hosting: +We will use Geoplatform.gov for hosting our data pipeline, tile server, and front end client. They have a set of shared service offerings that will enable us to have an open data pipeline from data source to tile API, enabling contributions to data processing at any point as well as enabling data access for users at any point (e.g. whether a user wants to access raw data or GeoJSON or tile format). The diagram below illustrates the proposed system architecture and hosting: ![diagram](https://raw.githubusercontent.com/usds/justice40-tool/main/docs/architecture/architecture-mmd.svg) @@ -34,11 +34,11 @@ We will use Geoplatform.gov for hosting our data pipeline, tile server, and fron - No need to stand up our own servers for data processing or vending tiles - No need to find separate static site hosting for our front end - Help advance shared geo services for government -- Code for data transformations can live on an open Github repo and be collaborated on by the community +- Code for data transformations can live on an open Github repo and be collaborated on by the community ### Negative Consequences -- Possible delays or additional work: Some features and offerings we may want to use are still a work in progress on Geoplatform's side, so we may have to help build these out or wait for their release. +- Possible delays or additional work: Some features and offerings we may want to use are still a work in progress on Geoplatform's side, so we may have to help build these out or wait for their release. ## Pros and Cons of Other Options @@ -56,4 +56,3 @@ Cons: - Would not have the flexibility to easily run serverless functions if we needed to ## Links - diff --git a/docs/decisions/0006-files/adr_diagram-mmd.svg b/docs/decisions/0006-files/adr_diagram-mmd.svg index a5a66f45..0b957603 100644 --- a/docs/decisions/0006-files/adr_diagram-mmd.svg +++ b/docs/decisions/0006-files/adr_diagram-mmd.svg @@ -1 +1 @@ -
Create Issue with ADR Template
Yes - Maintainer Adds Ready for Discussion label
No - Iterate
Discuss in Ticket + wait for comment period to expire
Yes
No
Yes
No
Accepted - add label
Rejected - add label
Start
Draft
Ready for Discussion?
In Discussion
Consensus
Pull Request
Concerns Addressed?
In Person Discussion
Voting Outcome
Standard PR Process
Close
\ No newline at end of file +
Create Issue with ADR Template
Yes - Maintainer Adds Ready for Discussion label
No - Iterate
Discuss in Ticket + wait for comment period to expire
Yes
No
Yes
No
Accepted - add label
Rejected - add label
Start
Draft
Ready for Discussion?
In Discussion
Consensus
Pull Request
Concerns Addressed?
In Person Discussion
Voting Outcome
Standard PR Process
Close
diff --git a/docs/decisions/0006-files/adr_diagram.mmd b/docs/decisions/0006-files/adr_diagram.mmd index 66d810a8..2288d7fb 100644 --- a/docs/decisions/0006-files/adr_diagram.mmd +++ b/docs/decisions/0006-files/adr_diagram.mmd @@ -8,8 +8,8 @@ graph TB C --> |No| A{Concerns Addressed?} A --> |Yes| PR A --> |No| IP["In Person Discussion"] - IP --> O{Voting Outcome} + IP --> O{Voting Outcome} O --> |Accepted - add label | PR O --> |Rejected - add label | PR PR --> PRP["Standard PR Process"] - PRP --> Close \ No newline at end of file + PRP --> Close diff --git a/docs/glossary.md b/docs/glossary.md index 37d41d88..176bcf73 100644 --- a/docs/glossary.md +++ b/docs/glossary.md @@ -1,8 +1,8 @@ # Glossary -This glossary is intended to be a helpful guide to terms and acronyms we use across the Justice40 project and in our open source community. We'll try to keep this list update to date and in alphabetical order for ease of use. If you see an error, please help leave this repo better than you found it by submitting a pull request with the fix :) +This glossary is intended to be a helpful guide to terms and acronyms we use across the Justice40 project and in our open source community. We'll try to keep this list update to date and in alphabetical order for ease of use. If you see an error, please help leave this repo better than you found it by submitting a pull request with the fix :) -If you don't see the term you're looking for here, please submit an issue to this repo with the term in question and why you think it should be added. +If you don't see the term you're looking for here, please submit an issue to this repo with the term in question and why you think it should be added. Know a term and its definition that you don't see here? Make a pull request with the term, definition, and reason for inclusion and a team member will review shortly. diff --git a/docs/operations/METHODOLOGY_CHANGE_PROCESS.md b/docs/operations/METHODOLOGY_CHANGE_PROCESS.md index aa57f31c..5b229c9e 100644 --- a/docs/operations/METHODOLOGY_CHANGE_PROCESS.md +++ b/docs/operations/METHODOLOGY_CHANGE_PROCESS.md @@ -19,4 +19,4 @@ The methodology for Justice40 will continue to evolve. The steps outlined below 16. In the frontend, display new indicators in sidepanel 17. Update copy on methodology page 18. Update copy on .pdf in download package -19. Update technical support document (if necessary - TSD will include the final .pdf from download package) \ No newline at end of file +19. Update technical support document (if necessary - TSD will include the final .pdf from download package)