diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index c7b23bb0d..b4ace2f3d 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 68941d3a1..95e4236bf 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 55e0e4c5d..2b1251c9d 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/create-score-version.yml b/.github/workflows/create-score-version.yml index 49e09e1c4..103da8439 100644 --- a/.github/workflows/create-score-version.yml +++ b/.github/workflows/create-score-version.yml @@ -5,11 +5,12 @@ on: score_version: description: "Which version of the score are you generating?" required: true - default: 'beta' + default: '1.0' type: choice options: - beta - 1.0 + - test env: CENSUS_API_KEY: ${{ secrets.CENSUS_API_KEY }} @@ -54,7 +55,6 @@ jobs: aws-region: us-east-1 - name: Install GDAL/ogr2ogr run: | - sudo add-apt-repository ppa:ubuntugis/ppa sudo apt-get update sudo apt-get -y install gdal-bin ogrinfo --version @@ -64,15 +64,40 @@ jobs: - name: Generate Score Post run: | poetry run python3 data_pipeline/application.py generate-score-post -s aws + - name: Confirm we generated the version of the score we think we did + if: ${{ env.J40_VERSION_LABEL_STRING == '1.0' || env.J40_VERSION_LABEL_STRING == 'test' }} + run: | + grep "Identified as disadvantaged due to tribal overlap" data_pipeline/data/score/downloadable/* > /dev/null + - name: Confirm we generated the version of the score we think we did + if: ${{ env.J40_VERSION_LABEL_STRING == 'beta' }} + run: | + grep -v "Identified as disadvantaged due to tribal overlap" data_pipeline/data/score/downloadable/* > /dev/null - name: Generate Score Geo run: | poetry run python3 data_pipeline/application.py geo-score + - name: Run smoketest for 1.0 + if: ${{ env.J40_VERSION_LABEL_STRING == '1.0' || env.J40_VERSION_LABEL_STRING == 'test' }} + run: | + poetry run pytest data_pipeline/ -m smoketest - name: Deploy Score to Geoplatform AWS run: | poetry run s4cmd put ./data_pipeline/data/score/csv/ s3://justice40-data/data-versions/${{env.J40_VERSION_LABEL_STRING}}/data/score/csv --recursive --force --API-ACL=public-read poetry run s4cmd put ./data_pipeline/files/ s3://justice40-data/data-versions/${{env.J40_VERSION_LABEL_STRING}}/data/score/downloadable --recursive --force --API-ACL=public-read poetry run s4cmd put ./data_pipeline/data/score/downloadable/ s3://justice40-data/data-versions/${{env.J40_VERSION_LABEL_STRING}}/data/score/downloadable --recursive --force --API-ACL=public-read - + - name: Confirm we generated the version of the score we think we did + if: ${{ env.J40_VERSION_LABEL_STRING == '1.0' || env.J40_VERSION_LABEL_STRING == 'test' }} + run: | + curl "https://static-data-screeningtool.geoplatform.gov/data-versions/1.0/data/score/downloadable/1.0-shapefile-codebook.zip" -s -f -I -o /dev/null && \ + curl "https://static-data-screeningtool.geoplatform.gov/data-versions/1.0/data/score/downloadable/1.0-communities.xlsx" -s -f -I -o /dev/null && \ + curl "https://static-data-screeningtool.geoplatform.gov/data-versions/1.0/data/score/downloadable/1.0-communities.csv" -s -f -I -o /dev/null && \ + curl "https://static-data-screeningtool.geoplatform.gov/data-versions/1.0/data/score/downloadable/1.0-shapefile-codebook.zip" -s -f -I -o /dev/null && \ + curl "https://static-data-screeningtool.geoplatform.gov/data-versions/1.0/data/score/downloadable/cejst-technical-support-document.pdf" -s -f -I -o /dev/null && \ + curl "https://static-data-screeningtool.geoplatform.gov/data-versions/1.0/data/score/downloadable/draft-communities-list.pdf" -s -f -I -o /dev/null + - name: Confirm we generated the version of the score we think we did + if: ${{ env.J40_VERSION_LABEL_STRING == 'beta' }} + run: | + curl "https://static-data-screeningtool.geoplatform.gov/data-versions/beta/data/score/downloadable/beta-data-documentation.zip" -s -f -I -o /dev/null && \ + curl "https://static-data-screeningtool.geoplatform.gov/data-versions/beta/data/score/downloadable/beta-shapefile-codebook.zip" -s -f -I -o /dev/null - name: Set timezone for tippecanoe uses: szenius/set-timezone@v1.0 with: diff --git a/.github/workflows/data-checks.yml b/.github/workflows/data-checks.yml index 41438384b..280a6e2a0 100644 --- a/.github/workflows/data-checks.yml +++ b/.github/workflows/data-checks.yml @@ -22,9 +22,11 @@ jobs: # one execution of the tests per version listed above - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} + - name: Upgrade wheel + run: pip install -U wheel - name: Print variables to help debug uses: hmarr/debug-action@v2 - name: Load cached Poetry installation @@ -39,6 +41,7 @@ jobs: run: poetry show -v - name: Install dependencies run: poetry install - if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' + # TODO: investigate why caching layer started failing. + # if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' - name: Run tox run: poetry run tox diff --git a/.github/workflows/deploy_be_staging.yml b/.github/workflows/deploy_be_staging.yml index 0abfa2334..f2ed1d977 100644 --- a/.github/workflows/deploy_be_staging.yml +++ b/.github/workflows/deploy_be_staging.yml @@ -25,9 +25,10 @@ jobs: - name: Print variables to help debug uses: hmarr/debug-action@v2 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} + - run: pip install -U wheel - name: Load cached Poetry installation id: cached-poetry-dependencies uses: actions/cache@v2 @@ -35,9 +36,14 @@ jobs: path: ~/.cache/pypoetry/virtualenvs key: env-${{ runner.os }}-${{ matrix.python-version }}-${{ hashFiles('**/poetry.lock') }}-${{ hashFiles('.github/workflows/deploy_be_staging.yml') }} - name: Install poetry - uses: snok/install-poetry@v1 + uses: snok/install-poetry@v1.3.3 - name: Print Poetry settings run: poetry show -v + - name: Install GDAL/ogr2ogr + run: | + sudo apt-get update + sudo apt-get -y install gdal-bin + ogrinfo --version - name: Install dependencies run: poetry add s4cmd && poetry install if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' @@ -47,12 +53,21 @@ jobs: aws-access-key-id: ${{ secrets.DATA_DEV_AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.DATA_DEV_AWS_SECRET_ACCESS_KEY }} aws-region: us-east-1 + - name: Download census geo data for later user + run: | + poetry run python3 data_pipeline/application.py pull-census-data -s aws - name: Generate Score run: | poetry run python3 data_pipeline/application.py score-full-run - name: Generate Score Post run: | - poetry run python3 data_pipeline/application.py generate-score-post -s aws + poetry run python3 data_pipeline/application.py generate-score-post + - name: Generate Score Geo + run: | + poetry run python3 data_pipeline/application.py geo-score + - name: Run Smoketests + run: | + poetry run pytest data_pipeline/ -m smoketest - name: Deploy Score to Geoplatform AWS run: | poetry run s4cmd put ./data_pipeline/data/score/csv/ s3://justice40-data/data-pipeline-staging/${{env.PR_NUMBER}}/${{env.SHA_NUMBER}}/data/score/csv --recursive --force --API-ACL=public-read @@ -63,19 +78,13 @@ 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 }} repo-token-user-login: "github-actions[bot]" allow-repeats: false - - name: Install GDAL/ogr2ogr - run: | - sudo add-apt-repository ppa:ubuntugis/ppa - sudo apt-get update - sudo apt-get -y install gdal-bin - ogrinfo --version - name: Set timezone for tippecanoe uses: szenius/set-timezone@v1.0 with: @@ -93,9 +102,6 @@ jobs: mkdir -p /usr/local/bin cp tippecanoe /usr/local/bin/tippecanoe tippecanoe -v - - name: Generate Score Geo - run: | - poetry run python3 data_pipeline/application.py geo-score - name: Generate Tiles run: | poetry run python3 data_pipeline/application.py generate-map-tiles @@ -110,8 +116,8 @@ jobs: with: # Deploy to S3 for the staging URL message: | - ** Map Deployed! ** - Map with Staging Backend: https://screeningtool.geoplatform.gov/en/?flags=stage_hash=${{env.PR_NUMBER}}/${{env.SHA_NUMBER}} + ** 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 }} repo-token-user-login: "github-actions[bot]" diff --git a/.github/workflows/deploy_fe_staging.yml b/.github/workflows/deploy_fe_staging.yml index 24a78e4dd..9b2164c42 100644 --- a/.github/workflows/deploy_fe_staging.yml +++ b/.github/workflows/deploy_fe_staging.yml @@ -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 cd5aafea6..cceff8ee1 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 4820c3e74..a15240bea 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 c07be4418..05a3146e9 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 e2f8da54b..a1585082d 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 aeb28c989..31e75075d 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 4b398c817..a4b3cfc5f 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 989fa384f..f7a4ec59e 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 4e1279e58..c1c8a9930 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 64a26f3f3..413b3d744 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 b35f25ffe..0e845b4a4 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 bd62dc274..ff62780ad 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 000000000..022b1f76b --- /dev/null +++ b/data/data-pipeline/.pre-commit-config.yaml @@ -0,0 +1,38 @@ +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 + args: [--config=./data/data-pipeline/pyproject.toml] diff --git a/data/data-pipeline/Dockerfile b/data/data-pipeline/Dockerfile index 6005629dc..04bbca22e 100644 --- a/data/data-pipeline/Dockerfile +++ b/data/data-pipeline/Dockerfile @@ -1,7 +1,9 @@ FROM ubuntu:20.04 +ENV TZ=America/Los_Angeles + # Install packages -RUN apt-get update && apt-get install -y \ +RUN apt-get update && TZ=America/Los_Angeles DEBIAN_FRONTEND=noninteractive apt-get install -y \ build-essential \ make \ gcc \ @@ -9,10 +11,10 @@ RUN apt-get update && apt-get install -y \ unzip \ wget \ python3-dev \ - python3-pip + python3-pip \ + gdal-bin # tippeanoe -ENV TZ=America/Los_Angeles RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone RUN apt-get install -y software-properties-common libsqlite3-dev zlib1g-dev RUN apt-add-repository -y ppa:git-core/ppa @@ -35,7 +37,7 @@ ENV PYTHONFAULTHANDLER=1 \ POETRY_VERSION=1.1.12 WORKDIR /data-pipeline -COPY pyproject.toml /data-pipeline/ +COPY . /data-pipeline RUN pip install "poetry==$POETRY_VERSION" RUN poetry config virtualenvs.create false \ @@ -43,6 +45,5 @@ RUN poetry config virtualenvs.create false \ && poetry install --no-dev --no-interaction --no-ansi # Copy all project files into the container -COPY . /data-pipeline CMD python3 -m data_pipeline.application data-full-run --check -s aws diff --git a/data/data-pipeline/README.md b/data/data-pipeline/README.md index 5b843dbd5..e47a5a641 100644 --- a/data/data-pipeline/README.md +++ b/data/data-pipeline/README.md @@ -12,11 +12,14 @@ - [2. Extract-Transform-Load (ETL) the data](#2-extract-transform-load-etl-the-data) - [3. Combined dataset](#3-combined-dataset) - [4. Tileset](#4-tileset) + - [5. Shapefiles](#5-shapefiles) - [Score generation and comparison workflow](#score-generation-and-comparison-workflow) - [Workflow Diagram](#workflow-diagram) - [Step 0: Set up your environment](#step-0-set-up-your-environment) - [Step 1: Run the script to download census data or download from the Justice40 S3 URL](#step-1-run-the-script-to-download-census-data-or-download-from-the-justice40-s3-url) - [Step 2: Run the ETL script for each data source](#step-2-run-the-etl-script-for-each-data-source) + - [Table of commands](#table-of-commands) + - [ETL steps](#etl-steps) - [Step 3: Calculate the Justice40 score experiments](#step-3-calculate-the-justice40-score-experiments) - [Step 4: Compare the Justice40 score experiments to other indices](#step-4-compare-the-justice40-score-experiments-to-other-indices) - [Data Sources](#data-sources) @@ -26,21 +29,27 @@ - [MacOS](#macos) - [Windows Users](#windows-users) - [Setting up Poetry](#setting-up-poetry) - - [Downloading Census Block Groups GeoJSON and Generating CBG CSVs](#downloading-census-block-groups-geojson-and-generating-cbg-csvs) + - [Running tox](#running-tox) + - [The Application entrypoint](#the-application-entrypoint) + - [Downloading Census Block Groups GeoJSON and Generating CBG CSVs (not normally required)](#downloading-census-block-groups-geojson-and-generating-cbg-csvs-not-normally-required) + - [Run all ETL, score and map generation processes](#run-all-etl-score-and-map-generation-processes) + - [Run both ETL and score generation processes](#run-both-etl-and-score-generation-processes) + - [Run all ETL processes](#run-all-etl-processes) - [Generating Map Tiles](#generating-map-tiles) - [Serve the map locally](#serve-the-map-locally) - [Running Jupyter notebooks](#running-jupyter-notebooks) - [Activating variable-enabled Markdown for Jupyter notebooks](#activating-variable-enabled-markdown-for-jupyter-notebooks) - - [Miscellaneous](#miscellaneous) - [Testing](#testing) - [Background](#background) - - [Configuration / Fixtures](#configuration--fixtures) + - [Score and post-processing tests](#score-and-post-processing-tests) - [Updating Pickles](#updating-pickles) - - [Future Enchancements](#future-enchancements) - - [ETL Unit Tests](#etl-unit-tests) + - [Future Enhancements](#future-enhancements) + - [Fixtures used in ETL "snapshot tests"](#fixtures-used-in-etl-snapshot-tests) + - [Other ETL Unit Tests](#other-etl-unit-tests) - [Extract Tests](#extract-tests) - [Transform Tests](#transform-tests) - [Load Tests](#load-tests) + - [Smoketests](#smoketests) @@ -196,7 +205,7 @@ Here's a list of commands: ## Local development -You can run the Python code locally without Docker to develop, using Poetry. However, to generate the census data you will need the [GDAL library](https://github.com/OSGeo/gdal) installed locally. Also to generate tiles for a local map, you will need [Mapbox tippecanoe](https://github.com/mapbox/tippecanoe). Please refer to the repos for specific instructions for your OS. +You can run the Python code locally without Docker to develop, using Poetry. However, to generate the census data you will need the [GDAL library](https://github.com/OSGeo/gdal) installed locally. For score generation, you will need [libspatialindex](https://libspatialindex.org/en/latest/). And to generate tiles for a local map, you will need [Mapbox tippecanoe](https://github.com/mapbox/tippecanoe). Please refer to the repos for specific instructions for your OS. ### VSCode @@ -218,6 +227,7 @@ To install the above-named executables: - gdal: `brew install gdal` - Tippecanoe: `brew install tippecanoe` +- spatialindex: `brew install spatialindex` Note: For MacOS Monterey or M1 Macs, [you might need to follow these steps](https://stackoverflow.com/a/70880741) to install Scipy. @@ -229,10 +239,71 @@ If you want to run tile generation, please install TippeCanoe [following these i - Start a terminal - Change to this directory (`/data/data-pipeline/`) -- Make sure you have at least Python 3.7 installed: `python -V` or `python3 -V` +- Make sure you have at least Python 3.8 installed: `python -V` or `python3 -V` - 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 + +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 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 After installing the poetry dependencies, you can see a list of commands with the following steps: @@ -303,7 +374,11 @@ 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. To run tests, simply run `poetry run pytest` in this directory (i.e., `justice40-tool/data/data-pipeline`). + +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`). Test data is configured via [fixtures](https://docs.pytest.org/en/latest/explanation/fixtures.html). @@ -350,7 +425,8 @@ We have four pickle files that correspond to expected files: To update the pickles, let's go one by one: -For the `score_transformed_expected.pkl`, put a breakpoint on [this line](https://github.com/usds/justice40-tool/blob/main/data/data-pipeline/data_pipeline/etl/score/tests/test_score_post.py#L58), before the `pdt.assert_frame_equal` and run: +For the `score_transformed_expected.pkl`, put a breakpoint on [this line] +(https://github.com/usds/justice40-tool/blob/main/data/data-pipeline/data_pipeline/etl/score/tests/test_score_post.py#L62), before the `pdt.assert_frame_equal` and run: `pytest data_pipeline/etl/score/tests/test_score_post.py::test_transform_score` Once on the breakpoint, capture the df to a pickle as follows: @@ -378,7 +454,7 @@ score_data_actual.to_pickle(data_path / "data_pipeline" / "etl" / "score" / "tes Then take out the breakpoint and re-run the test: `pytest data_pipeline/etl/score/tests/test_score_post.py::test_create_score_data` -For the `tile_data_expected.pkl`, put a breakpoint on [this line](https://github.com/usds/justice40-tool/blob/main/data/data-pipeline/data_pipeline/etl/score/tests/test_score_post.py#L86), before the `pdt.assert_frame_equal` and run: +For the `tile_data_expected.pkl`, put a breakpoint on [this line](https://github.com/usds/justice40-tool/blob/main/data/data-pipeline/data_pipeline/etl/score/tests/test_score_post.py#L90), before the `pdt.assert_frame_equal` and run: `pytest data_pipeline/etl/score/tests/test_score_post.py::test_create_tile_data` Once on the breakpoint, capture the df to a pickle as follows: @@ -418,7 +494,9 @@ In the future, we could adopt any of the below strategies to work around this: 1. We could use [pytest-snapshot](https://pypi.org/project/pytest-snapshot/) to automatically store the output of each test as data changes. This would make it so that you could avoid having to generate a pickle for each method - instead, you would only need to call `generate` once , and only when the dataframe had changed. + Additionally, you could use a pandas type schema annotation such as [pandera](https://pandera.readthedocs.io/en/stable/schema_models.html?highlight=inputschema#basic-usage) to annotate input/output schemas for given functions, and your unit tests could use these to validate explicitly. This could be of very high value for annotating expectations. + Alternatively, or in conjunction, you could move toward using a more strictly-typed container format for read/writes such as SQL/SQLite, and use something like [SQLModel](https://github.com/tiangolo/sqlmodel) to handle more explicit type guarantees. @@ -440,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 @@ -485,3 +563,13 @@ See above [Fixtures](#configuration--fixtures) section for information about whe These make use of [tmp_path_factory](https://docs.pytest.org/en/latest/how-to/tmp_path.html) to create a file-system located under `temp_dir`, and validate whether the correct files are written to the correct locations. Additional future modifications could include the use of Pandera and/or other schema validation tools, and or a more explicit test that the data written to file can be read back in and yield the same dataframe. + +### Smoketests + +To ensure the score and tiles process correctly, there is a suite of "smoke tests" that can be run after the ETL and score data have been run, and outputs like the frontend GEOJSON have been created. +These tests are implemented as pytest test, but are skipped by default. To run them. + +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` diff --git a/data/data-pipeline/data_pipeline/application.py b/data/data-pipeline/data_pipeline/application.py index 630d7ea8d..680f72a18 100644 --- a/data/data-pipeline/data_pipeline/application.py +++ b/data/data-pipeline/data_pipeline/application.py @@ -1,30 +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 ( 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__) @@ -35,8 +32,6 @@ def cli(): """Defines a click group for the commands below""" - pass - @cli.command(help="Clean up all census data folders") def census_cleanup(): @@ -96,6 +91,23 @@ def census_data_download(zip_compress): sys.exit() +@cli.command(help="Retrieve census data from source") +@click.option( + "-s", + "--data-source", + default="local", + required=False, + type=str, + help=dataset_cli_help, +) +def pull_census_data(data_source: str): + logger.info("Pulling census data from %s", data_source) + data_path = settings.APP_ROOT / "data" / "census" + check_census_data_source(data_path, data_source) + logger.info("Finished pulling census data") + sys.exit() + + @cli.command( help="Run all ETL processes or a specific one", ) diff --git a/data/data-pipeline/data_pipeline/comparison_tool/README.md b/data/data-pipeline/data_pipeline/comparison_tool/README.md index 27be1430f..ea0172e48 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/output/cre/cre__2022-03-30.xlsx b/data/data-pipeline/data_pipeline/comparison_tool/output/cre/cre__2022-03-30.xlsx new file mode 100644 index 000000000..265075dff Binary files /dev/null and b/data/data-pipeline/data_pipeline/comparison_tool/output/cre/cre__2022-03-30.xlsx differ 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 9c9a2474e..379ef29a1 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 d01210d12..a329cb589 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 3372e31ed..a63bd5e15 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 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 10fc8616e..915b84fa5 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 0d67dc1b4..ec20fb838 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 @@ -40,7 +40,7 @@ def validate_new_data( assert ( checking_df[score_col].nunique() <= 3 ), f"Error: there are too many values possible in {score_col}" - assert (True in checking_df[score_col].unique()) & ( + assert (True in checking_df[score_col].unique()) | ( False in checking_df[score_col].unique() ), f"Error: {score_col} should be a boolean" diff --git a/data/data-pipeline/data_pipeline/config.py b/data/data-pipeline/data_pipeline/config.py index c32389ca3..ee75e535f 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", @@ -12,7 +11,8 @@ # set root dir settings.APP_ROOT = pathlib.Path(data_pipeline.__file__).resolve().parent - +settings.DATA_PATH = settings.APP_ROOT / "data" +settings.REQUESTS_DEFAULT_TIMOUT = 3600 # To set an environment use: # Linux/OSX: export ENV_FOR_DYNACONF=staging # Windows: set ENV_FOR_DYNACONF=staging diff --git a/data/data-pipeline/data_pipeline/content/config/csv.yml b/data/data-pipeline/data_pipeline/content/config/csv.yml index 9a9ce9876..c25e8ff34 100644 --- a/data/data-pipeline/data_pipeline/content/config/csv.yml +++ b/data/data-pipeline/data_pipeline/content/config/csv.yml @@ -1,256 +1,406 @@ --- global_config: - sort_by_label: Census tract ID + sort_by_label: Census tract 2010 ID rounding_num: float: 2 loss_rate_percentage: 4 fields: - - score_name: GEOID10_TRACT - label: Census tract ID - format: string - - score_name: County Name - label: County Name - format: string - - score_name: State/Territory - label: State/Territory - format: string - - score_name: Total threshold criteria exceeded - label: Total threshold criteria exceeded - format: int64 - - score_name: Total categories exceeded - label: Total categories exceeded - format: int64 - - score_name: Definition M (communities) - label: Identified as disadvantaged - format: bool - - score_name: Total population - label: Total population - format: float - - score_name: Is low income and has a low percent of higher ed students? - label: Is low income and high percent of residents that are not higher ed students? - format: bool - - score_name: 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? - label: Greater than or equal to the 90th percentile for expected agriculture loss rate, is low income, and high percent of residents that are not higher ed students? - format: bool - - score_name: Expected agricultural loss rate (Natural Hazards Risk Index) (percentile) - label: Expected agricultural loss rate (Natural Hazards Risk Index) (percentile) - format: percentage - - score_name: Expected agricultural loss rate (Natural Hazards Risk Index) - label: Expected agricultural loss rate (Natural Hazards Risk Index) - format: loss_rate_percentage - - score_name: Greater than or equal to the 90th percentile for expected building loss rate, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for expected building loss rate, is low income, and high percent of residents that are not higher ed students? - format: bool - - score_name: Expected building loss rate (Natural Hazards Risk Index) (percentile) - label: Expected building loss rate (Natural Hazards Risk Index) (percentile) - format: percentage - - score_name: Expected building loss rate (Natural Hazards Risk Index) - label: Expected building loss rate (Natural Hazards Risk Index) - format: loss_rate_percentage - - score_name: Greater than or equal to the 90th percentile for expected population loss rate, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for expected population loss rate, is low income, and high percent of residents that are not higher ed students? - format: bool - - score_name: Expected population loss rate (Natural Hazards Risk Index) (percentile) - label: Expected population loss rate (Natural Hazards Risk Index) (percentile) - format: percentage - - score_name: Expected population loss rate (Natural Hazards Risk Index) - label: Expected population loss rate (Natural Hazards Risk Index) - format: loss_rate_percentage - - score_name: Greater than or equal to the 90th percentile for energy burden, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for energy burden, is low income, and high percent of residents that are not higher ed students? - format: bool - - score_name: Energy burden (percentile) - label: Energy burden (percentile) - format: percentage - - score_name: Energy burden - label: Energy burden - format: percentage - - score_name: Greater than or equal to the 90th percentile for PM2.5 exposure, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for PM2.5 exposure, is low income, and high percent of residents that are not higher ed students? - format: bool - - score_name: PM2.5 in the air (percentile) - label: PM2.5 in the air (percentile) - format: percentage - - score_name: PM2.5 in the air - label: PM2.5 in the air - format: float - - score_name: Greater than or equal to the 90th percentile for diesel particulate matter, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for diesel particulate matter, is low income, and high percent of residents that are not higher ed students? - format: bool - - score_name: Diesel particulate matter exposure (percentile) - label: Diesel particulate matter exposure (percentile) - format: percentage - - score_name: Diesel particulate matter exposure - label: Diesel particulate matter exposure - format: float - - score_name: Greater than or equal to the 90th percentile for traffic proximity, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for traffic proximity, is low income, and high percent of residents that are not higher ed students? - format: bool - - score_name: Traffic proximity and volume (percentile) - label: Traffic proximity and volume (percentile) - format: percentage - - score_name: Traffic proximity and volume - label: Traffic proximity and volume - format: float - - score_name: Greater than or equal to the 90th percentile for housing burden, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for housing burden, is low income, and high percent of residents that are not higher ed students? - format: bool - - score_name: Housing burden (percent) (percentile) - label: Housing burden (percent) (percentile) - format: percentage - - score_name: Housing burden (percent) - label: Housing burden (percent) - format: percentage - - score_name: Greater than or equal to the 90th percentile for lead paint, the median house value is less than 90th percentile, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for lead paint, the median house value is less than 90th percentile, is low income, and high percent of residents that are not higher ed students? - format: bool - - score_name: Percent pre-1960s housing (lead paint indicator) (percentile) - label: Percent pre-1960s housing (lead paint indicator) (percentile) - format: percentage - - score_name: Percent pre-1960s housing (lead paint indicator) - label: Percent pre-1960s housing (lead paint indicator) - format: percentage - - score_name: Median value ($) of owner-occupied housing units (percentile) - label: Median value ($) of owner-occupied housing units (percentile) - format: percentage - - score_name: Median value ($) of owner-occupied housing units - label: Median value ($) of owner-occupied housing units - format: float - - score_name: Greater than or equal to the 90th percentile for proximity to hazardous waste facilities, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for proximity to hazardous waste facilities, is low income, and high percent of residents that are not higher ed students? - format: bool - - score_name: Proximity to hazardous waste sites (percentile) - label: Proximity to hazardous waste sites (percentile) - format: percentage - - score_name: Proximity to hazardous waste sites - label: Proximity to hazardous waste sites - format: float - - score_name: Greater than or equal to the 90th percentile for proximity to superfund sites, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for proximity to superfund sites, is low income, and high percent of residents that are not higher ed students? - format: bool - - score_name: Proximity to NPL sites (percentile) - label: Proximity to NPL (Superfund) sites (percentile) - format: percentage - - score_name: Proximity to NPL sites - label: Proximity to NPL (Superfund) sites - format: float - - score_name: Greater than or equal to the 90th percentile for proximity to RMP sites, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for proximity to RMP sites, is low income, and high percent of residents that are not higher ed students? - format: bool - - score_name: Proximity to Risk Management Plan (RMP) facilities (percentile) - label: Proximity to Risk Management Plan (RMP) facilities (percentile) - format: percentage - - score_name: Proximity to Risk Management Plan (RMP) facilities - label: Proximity to Risk Management Plan (RMP) facilities - format: float - - score_name: Greater than or equal to the 90th percentile for wastewater discharge, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for wastewater discharge, is low income, and high percent of residents that are not higher ed students? - format: bool - - score_name: Wastewater discharge (percentile) - label: Wastewater discharge (percentile) - format: percentage - - score_name: Wastewater discharge - label: Wastewater discharge - format: float - - score_name: Greater than or equal to the 90th percentile for asthma, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for asthma, is low income, and high percent of residents that are not higher ed students? - format: bool - - score_name: Current asthma among adults aged greater than or equal to 18 years (percentile) - label: Current asthma among adults aged greater than or equal to 18 years (percentile) - format: percentage - - score_name: Current asthma among adults aged greater than or equal to 18 years - label: Current asthma among adults aged greater than or equal to 18 years - format: percentage - - score_name: Greater than or equal to the 90th percentile for diabetes, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for diabetes, is low income, and high percent of residents that are not higher ed students? - format: bool - - score_name: Diagnosed diabetes among adults aged greater than or equal to 18 years (percentile) - label: Diagnosed diabetes among adults aged greater than or equal to 18 years (percentile) - format: percentage - - score_name: Diagnosed diabetes among adults aged greater than or equal to 18 years - label: Diagnosed diabetes among adults aged greater than or equal to 18 years - format: percentage - - score_name: Greater than or equal to the 90th percentile for heart disease, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for heart disease, is low income, and high percent of residents that are not higher ed students? - format: bool - - score_name: Coronary heart disease among adults aged greater than or equal to 18 years (percentile) - label: Coronary heart disease among adults aged greater than or equal to 18 years (percentile) - format: percentage - - score_name: Coronary heart disease among adults aged greater than or equal to 18 years - label: Coronary heart disease among adults aged greater than or equal to 18 years - format: percentage - - score_name: Greater than or equal to the 90th percentile for low life expectancy, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for low life expectancy, is low income, and high percent of residents that are not higher ed students? - format: bool - - score_name: Low life expectancy (percentile) - label: Low life expectancy (percentile) - format: percentage - - score_name: Life expectancy (years) - label: Life expectancy (years) - format: float - - 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? - label: 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 high percent of residents that are not higher ed students? - format: bool - - score_name: Low median household income as a percent of area median income (percentile) - label: Low median household income as a percent of area median income (percentile) - format: percentage - - score_name: Median household income as a percent of area median income - label: Median household income as a percent of area median income - format: percentage - - 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? - label: Greater than or equal to the 90th percentile for households in linguistic isolation, has low HS attainment, and high percent of residents that are not higher ed students? - format: bool - - score_name: Linguistic isolation (percent) (percentile) - label: Linguistic isolation (percent) (percentile) - format: percentage - - score_name: Linguistic isolation (percent) - label: Linguistic isolation (percent) - format: percentage - - 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? - label: Greater than or equal to the 90th percentile for unemployment, has low HS attainment, and high percent of residents that are not higher ed students? - format: bool - - score_name: Unemployment (percent) (percentile) - label: Unemployment (percent) (percentile) - format: percentage - - score_name: Unemployment (percent) - label: Unemployment (percent) - format: percentage - - 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? - label: Greater than or equal to the 90th percentile for households at or below 100% federal poverty level, has low HS attainment, and high percent of residents that are not higher ed students? - format: bool - - score_name: Percent of individuals below 200% Federal Poverty Line (percentile) - label: Percent of individuals below 200% Federal Poverty Line (percentile) - format: percentage - - score_name: Percent of individuals below 200% Federal Poverty Line - label: Percent of individuals below 200% Federal Poverty Line - format: percentage - - score_name: Percent of individuals < 100% Federal Poverty Line (percentile) - label: Percent of individuals < 100% Federal Poverty Line (percentile) - format: percentage - - score_name: Percent of individuals < 100% Federal Poverty Line - label: Percent of individuals < 100% Federal Poverty Line - format: percentage - - score_name: Percent individuals age 25 or over with less than high school degree (percentile) - label: Percent individuals age 25 or over with less than high school degree (percentile) - format: percentage - - score_name: Percent individuals age 25 or over with less than high school degree - label: Percent individuals age 25 or over with less than high school degree - format: percentage - - score_name: Unemployment (percent) in 2009 (island areas) and 2010 (states and PR) - label: Unemployment (percent) in 2009 (island areas) and 2010 (states and PR) - format: percentage - - score_name: Percentage households below 100% of federal poverty line in 2009 (island areas) and 2010 (states and PR) - label: Percentage households below 100% of federal poverty line in 2009 (island areas) and 2010 (states and PR) - format: percentage - - score_name: Greater than or equal to the 90th percentile for unemployment and has low HS education in 2009 (island areas)? - label: Greater than or equal to the 90th percentile for unemployment and has low HS education in 2009 (island areas)? - format: bool - - score_name: Greater than or equal to the 90th percentile for households at or below 100% federal poverty level and has low HS education in 2009 (island areas)? - label: Greater than or equal to the 90th percentile for households at or below 100% federal poverty level and has low HS education in 2009 (island areas)? - format: bool - - score_name: Greater than or equal to the 90th percentile for low median household income as a percent of area median income and has low HS education in 2009 (island areas)? - label: Greater than or equal to the 90th percentile for low median household income as a percent of area median income and has low HS education in 2009 (island areas)? - format: bool - - score_name: Percent of population not currently enrolled in college or graduate school - label: Percent of residents who are not currently enrolled in higher ed - format: percentage +- score_name: GEOID10_TRACT + label: Census tract 2010 ID + format: string +- score_name: County Name + label: County Name + format: string +- score_name: State/Territory + label: State/Territory + format: string +- score_name: Percent Black or African American + label: Percent Black or African American alone + format: float +- score_name: Percent American Indian / Alaska Native + label: Percent American Indian / Alaska Native + format: float +- score_name: Percent Asian + label: Percent Asian + format: float +- score_name: Percent Native Hawaiian or Pacific + label: Percent Native Hawaiian or Pacific + format: float +- score_name: Percent two or more races + label: Percent two or more races + format: float +- score_name: Percent White + label: Percent White + format: float +- score_name: Percent Hispanic or Latino + label: Percent Hispanic or Latino + format: float +- score_name: Percent other races + label: Percent other races + format: float +- score_name: Percent age under 10 + label: Percent age under 10 + format: float +- score_name: Percent age 10 to 64 + label: Percent age 10 to 64 + format: float +- score_name: Percent age over 64 + label: Percent age over 64 + format: float +- score_name: Total threshold criteria exceeded + label: Total threshold criteria exceeded + format: int64 +- score_name: Total categories exceeded + label: Total categories exceeded + format: int64 +- score_name: Definition N (communities) + label: Identified as disadvantaged without considering neighbors + format: bool +- score_name: Definition N (communities) (based on adjacency index and low income alone) + label: Identified as disadvantaged based on neighbors and relaxed low income threshold only + format: bool +- score_name: Identified as disadvantaged due to tribal overlap + label: Identified as disadvantaged due to tribal overlap + format: bool +- score_name: Definition N community, including adjacency index tracts + label: Identified as disadvantaged + format: bool +- score_name: Percentage of tract that is disadvantaged + label: Percentage of tract that is disadvantaged by area + format: percentage +- score_name: Definition N (communities) (average of neighbors) + label: Share of neighbors that are identified as disadvantaged + format: percentage +- score_name: Total population + label: Total population + format: float +- score_name: Percent of individuals below 200% Federal Poverty Line, imputed and adjusted (percentile) + label: Adjusted percent of individuals below 200% Federal Poverty Line (percentile) + format: float +- score_name: Percent of individuals below 200% Federal Poverty Line, imputed and adjusted + label: Adjusted percent of individuals below 200% Federal Poverty Line + format: float +- score_name: Is low income (imputed and adjusted)? + label: Is low income? + format: bool +- score_name: Income data has been estimated based on neighbor income + label: Income data has been estimated based on geographic neighbor income + format: bool +- score_name: Greater than or equal to the 90th percentile for expected agriculture loss rate and is low income? + label: Greater than or equal to the 90th percentile for expected agriculture loss rate and is low income? + format: bool +- score_name: Expected agricultural loss rate (Natural Hazards Risk Index) (percentile) + label: Expected agricultural loss rate (Natural Hazards Risk Index) (percentile) + format: percentage +- score_name: Expected agricultural loss rate (Natural Hazards Risk Index) + label: Expected agricultural loss rate (Natural Hazards Risk Index) + format: loss_rate_percentage +- score_name: Greater than or equal to the 90th percentile for expected building loss rate and is low income? + label: Greater than or equal to the 90th percentile for expected building loss rate and is low income? + format: bool +- score_name: Expected building loss rate (Natural Hazards Risk Index) (percentile) + label: Expected building loss rate (Natural Hazards Risk Index) (percentile) + format: percentage +- score_name: Expected building loss rate (Natural Hazards Risk Index) + label: Expected building loss rate (Natural Hazards Risk Index) + format: loss_rate_percentage +- score_name: Greater than or equal to the 90th percentile for expected population loss rate and is low income? + label: Greater than or equal to the 90th percentile for expected population loss rate and is low income? + format: bool +- score_name: Expected population loss rate (Natural Hazards Risk Index) (percentile) + label: Expected population loss rate (Natural Hazards Risk Index) (percentile) + format: percentage +- score_name: Expected population loss rate (Natural Hazards Risk Index) + label: Expected population loss rate (Natural Hazards Risk Index) + format: loss_rate_percentage +- score_name: Share of properties at risk of flood in 30 years (percentile) + label: Share of properties at risk of flood in 30 years (percentile) + format: percentage +- score_name: Share of properties at risk of flood in 30 years + label: Share of properties at risk of flood in 30 years + format: percentage +- score_name: Greater than or equal to the 90th percentile for share of properties at risk of flood in 30 years + label: Greater than or equal to the 90th percentile for share of properties at risk of flood in 30 years + format: bool +- score_name: Greater than or equal to the 90th percentile for share of properties at risk of flood in 30 years and is low income? + label: Greater than or equal to the 90th percentile for share of properties at risk of flood in 30 years and is low income? + format: bool +- score_name: Share of properties at risk of fire in 30 years (percentile) + label: Share of properties at risk of fire in 30 years (percentile) + format: percentage +- score_name: Share of properties at risk of fire in 30 years + label: Share of properties at risk of fire in 30 years + format: percentage +- score_name: Greater than or equal to the 90th percentile for share of properties at risk of fire in 30 years + label: Greater than or equal to the 90th percentile for share of properties at risk of fire in 30 years + format: bool +- score_name: Greater than or equal to the 90th percentile for share of properties at risk of fire in 30 years and is low income? + label: Greater than or equal to the 90th percentile for share of properties at risk of fire in 30 years and is low income? + format: bool +- score_name: Greater than or equal to the 90th percentile for energy burden and is low income? + label: Greater than or equal to the 90th percentile for energy burden and is low income? + format: bool +- score_name: Energy burden (percentile) + label: Energy burden (percentile) + format: percentage +- score_name: Energy burden + label: Energy burden + format: percentage +- score_name: Greater than or equal to the 90th percentile for PM2.5 exposure and is low income? + label: Greater than or equal to the 90th percentile for PM2.5 exposure and is low income? + format: bool +- score_name: PM2.5 in the air (percentile) + label: PM2.5 in the air (percentile) + format: percentage +- score_name: PM2.5 in the air + label: PM2.5 in the air + format: float +- score_name: Greater than or equal to the 90th percentile for diesel particulate matter and is low income? + label: Greater than or equal to the 90th percentile for diesel particulate matter and is low income? + format: bool +- score_name: Diesel particulate matter exposure (percentile) + label: Diesel particulate matter exposure (percentile) + format: percentage +- score_name: Diesel particulate matter exposure + label: Diesel particulate matter exposure + format: float +- score_name: Greater than or equal to the 90th percentile for traffic proximity and is low income? + label: Greater than or equal to the 90th percentile for traffic proximity and is low income? + format: bool +- score_name: Traffic proximity and volume (percentile) + label: Traffic proximity and volume (percentile) + format: percentage +- score_name: Traffic proximity and volume + label: Traffic proximity and volume + format: float +- score_name: Greater than or equal to the 90th percentile for DOT transit barriers and is low income? + label: Greater than or equal to the 90th percentile for DOT transit barriers and is low income? + format: bool +- score_name: DOT Travel Barriers Score (percentile) + label: DOT Travel Barriers Score (percentile) + format: percentage +- score_name: Greater than or equal to the 90th percentile for housing burden and is low income? + label: Greater than or equal to the 90th percentile for housing burden and is low income? + format: bool +- score_name: Housing burden (percent) (percentile) + label: Housing burden (percent) (percentile) + format: percentage +- score_name: Housing burden (percent) + label: Housing burden (percent) + format: percentage +- score_name: Greater than or equal to the 90th percentile for lead paint and the median house value is less than 90th percentile and is low income? + label: Greater than or equal to the 90th percentile for lead paint, the median house value is less than 90th percentile and is low income? + format: bool +- score_name: Percent pre-1960s housing (lead paint indicator) (percentile) + label: Percent pre-1960s housing (lead paint indicator) (percentile) + format: percentage +- score_name: Percent pre-1960s housing (lead paint indicator) + label: Percent pre-1960s housing (lead paint indicator) + format: percentage +- score_name: Median value ($) of owner-occupied housing units (percentile) + label: Median value ($) of owner-occupied housing units (percentile) + format: percentage +- score_name: Median value ($) of owner-occupied housing units + label: Median value ($) of owner-occupied housing units + format: float +- score_name: Greater than or equal to the 90th percentile for share of the tract's land area that is covered by impervious surface or cropland as a percent and is low income? + label: Greater than or equal to the 90th percentile for share of the tract's land area that is covered by impervious surface or cropland as a percent and is low income? + format: bool +- score_name: Greater than or equal to the 90th percentile for share of the tract's land area that is covered by impervious surface or cropland as a percent + label: Greater than or equal to the 90th percentile for share of the tract's land area that is covered by impervious surface or cropland as a percent + format: bool +- score_name: Share of the tract's land area that is covered by impervious surface or cropland as a percent + label: Share of the tract's land area that is covered by impervious surface or cropland as a percent + format: percentage +- score_name: Share of the tract's land area that is covered by impervious surface or cropland as a percent (percentile) + label: Share of the tract's land area that is covered by impervious surface or cropland as a percent (percentile) + format: percentage +- score_name: Does the tract have at least 35 acres in it? + label: Does the tract have at least 35 acres in it? + format: bool +- score_name: Tract-level redlining score meets or exceeds 3.25 and is low income + label: Tract experienced historic underinvestment and remains low income + format: bool +- score_name: Tract-level redlining score meets or exceeds 3.25 + label: Tract experienced historic underinvestment + format: bool +- score_name: Share of homes with no kitchen or indoor plumbing (percent) (percentile) + label: Share of homes with no kitchen or indoor plumbing (percentile) + format: float +- score_name: Share of homes with no kitchen or indoor plumbing (percent) + label: Share of homes with no kitchen or indoor plumbing (percent) + format: float +- score_name: Greater than or equal to the 90th percentile for proximity to hazardous waste facilities and is low income? + label: Greater than or equal to the 90th percentile for proximity to hazardous waste facilities and is low income? + format: bool +- score_name: Proximity to hazardous waste sites (percentile) + label: Proximity to hazardous waste sites (percentile) + format: percentage +- score_name: Proximity to hazardous waste sites + label: Proximity to hazardous waste sites + format: float +- score_name: Greater than or equal to the 90th percentile for proximity to superfund sites and is low income? + label: Greater than or equal to the 90th percentile for proximity to superfund sites and is low income? + format: bool +- score_name: Proximity to NPL sites (percentile) + label: Proximity to NPL (Superfund) sites (percentile) + format: percentage +- score_name: Proximity to NPL sites + label: Proximity to NPL (Superfund) sites + format: float +- score_name: Greater than or equal to the 90th percentile for proximity to RMP sites and is low income? + label: Greater than or equal to the 90th percentile for proximity to RMP sites and is low income? + format: bool +- score_name: Proximity to Risk Management Plan (RMP) facilities (percentile) + label: Proximity to Risk Management Plan (RMP) facilities (percentile) + format: percentage +- score_name: Proximity to Risk Management Plan (RMP) facilities + label: Proximity to Risk Management Plan (RMP) facilities + format: float +- score_name: Is there at least one Formerly Used Defense Site (FUDS) in the tract? + label: Is there at least one Formerly Used Defense Site (FUDS) in the tract? + format: bool +- score_name: Is there at least one abandoned mine in this census tract? + label: Is there at least one abandoned mine in this census tract? + format: bool +- score_name: There is at least one abandoned mine in this census tract and the tract is low income. + label: There is at least one abandoned mine in this census tract and the tract is low income. + format: bool +- score_name: There is at least one Formerly Used Defense Site (FUDS) in the tract and the tract is low income. + label: There is at least one Formerly Used Defense Site (FUDS) in the tract and the tract is low income. + format: bool +- score_name: Is there at least one Formerly Used Defense Site (FUDS) in the tract, where missing data is treated as False? + label: Is there at least one Formerly Used Defense Site (FUDS) in the tract, where missing data is treated as False? + format: bool +- score_name: Is there at least one abandoned mine in this census tract, where missing data is treated as False? + label: Is there at least one abandoned mine in this census tract, where missing data is treated as False? + format: bool +- score_name: Greater than or equal to the 90th percentile for wastewater discharge and is low income? + label: Greater than or equal to the 90th percentile for wastewater discharge and is low income? + format: bool +- score_name: Wastewater discharge (percentile) + label: Wastewater discharge (percentile) + format: percentage +- score_name: Wastewater discharge + label: Wastewater discharge + format: float +- score_name: Greater than or equal to the 90th percentile for leaky underground storage tanks and is low income? + label: Greater than or equal to the 90th percentile for leaky underground storage tanks and is low income? + format: bool +- score_name: Leaky underground storage tanks (percentile) + label: Leaky underground storage tanks (percentile) + format: percentage +- score_name: Leaky underground storage tanks + label: Leaky underground storage tanks + format: float +- score_name: Greater than or equal to the 90th percentile for asthma and is low income? + label: Greater than or equal to the 90th percentile for asthma and is low income? + format: bool +- score_name: Current asthma among adults aged greater than or equal to 18 years (percentile) + label: Current asthma among adults aged greater than or equal to 18 years (percentile) + format: percentage +- score_name: Current asthma among adults aged greater than or equal to 18 years + label: Current asthma among adults aged greater than or equal to 18 years + format: percentage +- score_name: Greater than or equal to the 90th percentile for diabetes and is low income? + label: Greater than or equal to the 90th percentile for diabetes and is low income? + format: bool +- score_name: Diagnosed diabetes among adults aged greater than or equal to 18 years (percentile) + label: Diagnosed diabetes among adults aged greater than or equal to 18 years (percentile) + format: percentage +- score_name: Diagnosed diabetes among adults aged greater than or equal to 18 years + label: Diagnosed diabetes among adults aged greater than or equal to 18 years + format: percentage +- score_name: Greater than or equal to the 90th percentile for heart disease and is low income? + label: Greater than or equal to the 90th percentile for heart disease and is low income? + format: bool +- score_name: Coronary heart disease among adults aged greater than or equal to 18 years (percentile) + label: Coronary heart disease among adults aged greater than or equal to 18 years (percentile) + format: percentage +- score_name: Coronary heart disease among adults aged greater than or equal to 18 years + label: Coronary heart disease among adults aged greater than or equal to 18 years + format: percentage +- score_name: Greater than or equal to the 90th percentile for low life expectancy and is low income? + label: Greater than or equal to the 90th percentile for low life expectancy and is low income? + format: bool +- score_name: Low life expectancy (percentile) + label: Low life expectancy (percentile) + format: percentage +- score_name: Life expectancy (years) + label: Life expectancy (years) + format: float +- score_name: Greater than or equal to the 90th percentile for low median household income as a percent of area median income and has low HS attainment? + label: Greater than or equal to the 90th percentile for low median household income as a percent of area median income and has low HS attainment? + format: bool +- score_name: Low median household income as a percent of area median income (percentile) + label: Low median household income as a percent of area median income (percentile) + format: percentage +- score_name: Median household income as a percent of area median income + label: Median household income as a percent of area median income + format: percentage +- score_name: Greater than or equal to the 90th percentile for households in linguistic isolation and has low HS attainment? + label: Greater than or equal to the 90th percentile for households in linguistic isolation and has low HS attainment? + format: bool +- score_name: Linguistic isolation (percent) (percentile) + label: Linguistic isolation (percent) (percentile) + format: percentage +- score_name: Linguistic isolation (percent) + label: Linguistic isolation (percent) + format: percentage +- score_name: Greater than or equal to the 90th percentile for unemployment and has low HS attainment? + label: Greater than or equal to the 90th percentile for unemployment and has low HS attainment? + format: bool +- score_name: Unemployment (percent) (percentile) + label: Unemployment (percent) (percentile) + format: percentage +- score_name: Unemployment (percent) + label: Unemployment (percent) + format: percentage +- score_name: Greater than or equal to the 90th percentile for households at or below 100% federal poverty level and has low HS attainment? + label: Greater than or equal to the 90th percentile for households at or below 100% federal poverty level and has low HS attainment? + format: bool +- score_name: Percent of individuals below 200% Federal Poverty Line (percentile) + label: Percent of individuals below 200% Federal Poverty Line (percentile) + format: percentage +- score_name: Percent of individuals below 200% Federal Poverty Line + label: Percent of individuals below 200% Federal Poverty Line + format: percentage +- score_name: Percent of individuals < 100% Federal Poverty Line (percentile) + label: Percent of individuals < 100% Federal Poverty Line (percentile) + format: percentage +- score_name: Percent of individuals < 100% Federal Poverty Line + label: Percent of individuals < 100% Federal Poverty Line + format: percentage +- score_name: Percent individuals age 25 or over with less than high school degree (percentile) + label: Percent individuals age 25 or over with less than high school degree (percentile) + format: percentage +- score_name: Percent individuals age 25 or over with less than high school degree + label: Percent individuals age 25 or over with less than high school degree + format: percentage +- score_name: Percent of population not currently enrolled in college or graduate school + label: Percent of residents who are not currently enrolled in higher ed + format: percentage +- score_name: Unemployment (percent) in 2009 (island areas) and 2010 (states and PR) + label: Unemployment (percent) in 2009 (island areas) and 2010 (states and PR) + format: percentage +- score_name: Percentage households below 100% of federal poverty line in 2009 (island areas) and 2010 (states and PR) + label: Percentage households below 100% of federal poverty line in 2009 (island areas) and 2010 (states and PR) + format: percentage +- score_name: Greater than or equal to the 90th percentile for unemployment and has low HS education in 2009 (island areas)? + label: Greater than or equal to the 90th percentile for unemployment and has low HS education in 2009 (island areas)? + format: bool +- score_name: Greater than or equal to the 90th percentile for households at or below 100% federal poverty level and has low HS education in 2009 (island areas)? + label: Greater than or equal to the 90th percentile for households at or below 100% federal poverty level and has low HS education in 2009 (island areas)? + format: bool +- score_name: Greater than or equal to the 90th percentile for low median household income as a percent of area median income and has low HS education in 2009 (island areas)? + label: Greater than or equal to the 90th percentile for low median household income as a percent of area median income and has low HS education in 2009 (island areas)? + format: bool +- score_name: Number of Tribal areas within Census tract for Alaska + label: Number of Tribal areas within Census tract for Alaska + format: int64 +- score_name: Names of Tribal areas within Census tract + label: Names of Tribal areas within Census tract + format: string +- score_name: Percent of the Census tract that is within Tribal areas + label: Percent of the Census tract that is within Tribal areas + format: percentage diff --git a/data/data-pipeline/data_pipeline/content/config/excel.yml b/data/data-pipeline/data_pipeline/content/config/excel.yml index c4634c7bd..757477102 100644 --- a/data/data-pipeline/data_pipeline/content/config/excel.yml +++ b/data/data-pipeline/data_pipeline/content/config/excel.yml @@ -1,6 +1,6 @@ --- global_config: - sort_by_label: Census tract ID + sort_by_label: Census tract 2010 ID rounding_num: float: 2 loss_rate_percentage: 4 @@ -10,7 +10,7 @@ sheets: - label: "Data" fields: - score_name: GEOID10_TRACT - label: Census tract ID + label: Census tract 2010 ID format: string - score_name: County Name label: County Name @@ -18,23 +18,80 @@ sheets: - score_name: State/Territory label: State/Territory format: string + - score_name: Percent Black or African American + label: Percent Black or African American alone + format: float + - score_name: Percent American Indian / Alaska Native + label: Percent American Indian / Alaska Native + format: float + - score_name: Percent Asian + label: Percent Asian + format: float + - score_name: Percent Native Hawaiian or Pacific + label: Percent Native Hawaiian or Pacific + format: float + - score_name: Percent two or more races + label: Percent two or more races + format: float + - score_name: Percent White + label: Percent White + format: float + - score_name: Percent Hispanic or Latino + label: Percent Hispanic or Latino + format: float + - score_name: Percent other races + label: Percent other races + format: float + - score_name: Percent age under 10 + label: Percent age under 10 + format: float + - score_name: Percent age 10 to 64 + label: Percent age 10 to 64 + format: float + - score_name: Percent age over 64 + label: Percent age over 64 + format: float - score_name: Total threshold criteria exceeded label: Total threshold criteria exceeded format: int64 - score_name: Total categories exceeded label: Total categories exceeded format: int64 - - score_name: Definition M (communities) + - score_name: Definition N (communities) + label: Identified as disadvantaged without considering neighbors + format: bool + - score_name: Definition N (communities) (based on adjacency index and low income alone) + label: Identified as disadvantaged based on neighbors and relaxed low income threshold only + format: bool + - score_name: Identified as disadvantaged due to tribal overlap + label: Identified as disadvantaged due to tribal overlap + format: bool + - score_name: Definition N community, including adjacency index tracts label: Identified as disadvantaged format: bool + - score_name: Percentage of tract that is disadvantaged + label: Percentage of tract that is disadvantaged by area + format: percentage + - score_name: Definition N (communities) (average of neighbors) + label: Share of neighbors that are identified as disadvantaged + format: percentage - score_name: Total population label: Total population format: float - - score_name: Is low income and has a low percent of higher ed students? - label: Is low income and high percent of residents that are not higher ed students? + - score_name: Percent of individuals below 200% Federal Poverty Line, imputed and adjusted (percentile) + label: Adjusted percent of individuals below 200% Federal Poverty Line (percentile) + format: float + - score_name: Percent of individuals below 200% Federal Poverty Line, imputed and adjusted + label: Adjusted percent of individuals below 200% Federal Poverty Line + format: float + - score_name: Is low income (imputed and adjusted)? + label: Is low income? + format: bool + - score_name: Income data has been estimated based on neighbor income + label: Income data has been estimated based on geographic neighbor income format: bool - - score_name: 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? - label: Greater than or equal to the 90th percentile for expected agriculture loss rate, is low income, and high percent of residents that are not higher ed students? + - score_name: Greater than or equal to the 90th percentile for expected agriculture loss rate and is low income? + label: Greater than or equal to the 90th percentile for expected agriculture loss rate and is low income? format: bool - score_name: Expected agricultural loss rate (Natural Hazards Risk Index) (percentile) label: Expected agricultural loss rate (Natural Hazards Risk Index) (percentile) @@ -42,8 +99,8 @@ sheets: - score_name: Expected agricultural loss rate (Natural Hazards Risk Index) label: Expected agricultural loss rate (Natural Hazards Risk Index) format: loss_rate_percentage - - score_name: Greater than or equal to the 90th percentile for expected building loss rate, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for expected building loss rate, is low income, and high percent of residents that are not higher ed students? + - score_name: Greater than or equal to the 90th percentile for expected building loss rate and is low income? + label: Greater than or equal to the 90th percentile for expected building loss rate and is low income? format: bool - score_name: Expected building loss rate (Natural Hazards Risk Index) (percentile) label: Expected building loss rate (Natural Hazards Risk Index) (percentile) @@ -51,8 +108,8 @@ sheets: - score_name: Expected building loss rate (Natural Hazards Risk Index) label: Expected building loss rate (Natural Hazards Risk Index) format: loss_rate_percentage - - score_name: Greater than or equal to the 90th percentile for expected population loss rate, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for expected population loss rate, is low income, and high percent of residents that are not higher ed students? + - score_name: Greater than or equal to the 90th percentile for expected population loss rate and is low income? + label: Greater than or equal to the 90th percentile for expected population loss rate and is low income? format: bool - score_name: Expected population loss rate (Natural Hazards Risk Index) (percentile) label: Expected population loss rate (Natural Hazards Risk Index) (percentile) @@ -60,8 +117,32 @@ sheets: - score_name: Expected population loss rate (Natural Hazards Risk Index) label: Expected population loss rate (Natural Hazards Risk Index) format: loss_rate_percentage - - score_name: Greater than or equal to the 90th percentile for energy burden, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for energy burden, is low income, and high percent of residents that are not higher ed students? + - score_name: Share of properties at risk of flood in 30 years (percentile) + label: Share of properties at risk of flood in 30 years (percentile) + format: percentage + - score_name: Share of properties at risk of flood in 30 years + label: Share of properties at risk of flood in 30 years + format: percentage + - score_name: Greater than or equal to the 90th percentile for share of properties at risk of flood in 30 years + label: Greater than or equal to the 90th percentile for share of properties at risk of flood in 30 years + format: bool + - score_name: Greater than or equal to the 90th percentile for share of properties at risk of flood in 30 years and is low income? + label: Greater than or equal to the 90th percentile for share of properties at risk of flood in 30 years and is low income? + format: bool + - score_name: Share of properties at risk of fire in 30 years (percentile) + label: Share of properties at risk of fire in 30 years (percentile) + format: percentage + - score_name: Share of properties at risk of fire in 30 years + label: Share of properties at risk of fire in 30 years + format: percentage + - score_name: Greater than or equal to the 90th percentile for share of properties at risk of fire in 30 years + label: Greater than or equal to the 90th percentile for share of properties at risk of fire in 30 years + format: bool + - score_name: Greater than or equal to the 90th percentile for share of properties at risk of fire in 30 years and is low income? + label: Greater than or equal to the 90th percentile for share of properties at risk of fire in 30 years and is low income? + format: bool + - score_name: Greater than or equal to the 90th percentile for energy burden and is low income? + label: Greater than or equal to the 90th percentile for energy burden and is low income? format: bool - score_name: Energy burden (percentile) label: Energy burden (percentile) @@ -69,8 +150,8 @@ sheets: - score_name: Energy burden label: Energy burden format: percentage - - score_name: Greater than or equal to the 90th percentile for PM2.5 exposure, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for PM2.5 exposure, is low income, and high percent of residents that are not higher ed students? + - score_name: Greater than or equal to the 90th percentile for PM2.5 exposure and is low income? + label: Greater than or equal to the 90th percentile for PM2.5 exposure and is low income? format: bool - score_name: PM2.5 in the air (percentile) label: PM2.5 in the air (percentile) @@ -78,8 +159,8 @@ sheets: - score_name: PM2.5 in the air label: PM2.5 in the air format: float - - score_name: Greater than or equal to the 90th percentile for diesel particulate matter, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for diesel particulate matter, is low income, and high percent of residents that are not higher ed students? + - score_name: Greater than or equal to the 90th percentile for diesel particulate matter and is low income? + label: Greater than or equal to the 90th percentile for diesel particulate matter and is low income? format: bool - score_name: Diesel particulate matter exposure (percentile) label: Diesel particulate matter exposure (percentile) @@ -87,8 +168,8 @@ sheets: - score_name: Diesel particulate matter exposure label: Diesel particulate matter exposure format: float - - score_name: Greater than or equal to the 90th percentile for traffic proximity, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for traffic proximity, is low income, and high percent of residents that are not higher ed students? + - score_name: Greater than or equal to the 90th percentile for traffic proximity and is low income? + label: Greater than or equal to the 90th percentile for traffic proximity and is low income? format: bool - score_name: Traffic proximity and volume (percentile) label: Traffic proximity and volume (percentile) @@ -96,8 +177,14 @@ sheets: - score_name: Traffic proximity and volume label: Traffic proximity and volume format: float - - score_name: Greater than or equal to the 90th percentile for housing burden, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for housing burden, is low income, and high percent of residents that are not higher ed students? + - score_name: Greater than or equal to the 90th percentile for DOT transit barriers and is low income? + label: Greater than or equal to the 90th percentile for DOT transit barriers and is low income? + format: bool + - score_name: DOT Travel Barriers Score (percentile) + label: DOT Travel Barriers Score (percentile) + format: percentage + - score_name: Greater than or equal to the 90th percentile for housing burden and is low income? + label: Greater than or equal to the 90th percentile for housing burden and is low income? format: bool - score_name: Housing burden (percent) (percentile) label: Housing burden (percent) (percentile) @@ -105,8 +192,8 @@ sheets: - score_name: Housing burden (percent) label: Housing burden (percent) format: percentage - - score_name: Greater than or equal to the 90th percentile for lead paint, the median house value is less than 90th percentile, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for lead paint, the median house value is less than 90th percentile, is low income, and high percent of residents that are not higher ed students? + - score_name: Greater than or equal to the 90th percentile for lead paint and the median house value is less than 90th percentile and is low income? + label: Greater than or equal to the 90th percentile for lead paint, the median house value is less than 90th percentile and is low income? format: bool - score_name: Percent pre-1960s housing (lead paint indicator) (percentile) label: Percent pre-1960s housing (lead paint indicator) (percentile) @@ -120,8 +207,35 @@ sheets: - score_name: Median value ($) of owner-occupied housing units label: Median value ($) of owner-occupied housing units format: float - - score_name: Greater than or equal to the 90th percentile for proximity to hazardous waste facilities, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for proximity to hazardous waste facilities, is low income, and high percent of residents that are not higher ed students? + - score_name: Greater than or equal to the 90th percentile for share of the tract's land area that is covered by impervious surface or cropland as a percent and is low income? + label: Greater than or equal to the 90th percentile for share of the tract's land area that is covered by impervious surface or cropland as a percent and is low income? + format: bool + - score_name: Greater than or equal to the 90th percentile for share of the tract's land area that is covered by impervious surface or cropland as a percent + label: Greater than or equal to the 90th percentile for share of the tract's land area that is covered by impervious surface or cropland as a percent + format: bool + - score_name: Share of the tract's land area that is covered by impervious surface or cropland as a percent + label: Share of the tract's land area that is covered by impervious surface or cropland as a percent + format: percentage + - score_name: Share of the tract's land area that is covered by impervious surface or cropland as a percent (percentile) + label: Share of the tract's land area that is covered by impervious surface or cropland as a percent (percentile) + format: percentage + - score_name: Does the tract have at least 35 acres in it? + label: Does the tract have at least 35 acres in it? + format: bool + - score_name: Tract-level redlining score meets or exceeds 3.25 and is low income + label: Tract experienced historic underinvestment and remains low income + format: bool + - score_name: Tract-level redlining score meets or exceeds 3.25 + label: Tract experienced historic underinvestment + format: bool + - score_name: Share of homes with no kitchen or indoor plumbing (percent) (percentile) + label: Share of homes with no kitchen or indoor plumbing (percentile) + format: float + - score_name: Share of homes with no kitchen or indoor plumbing (percent) + label: Share of homes with no kitchen or indoor plumbing (percent) + format: float + - score_name: Greater than or equal to the 90th percentile for proximity to hazardous waste facilities and is low income? + label: Greater than or equal to the 90th percentile for proximity to hazardous waste facilities and is low income? format: bool - score_name: Proximity to hazardous waste sites (percentile) label: Proximity to hazardous waste sites (percentile) @@ -129,8 +243,8 @@ sheets: - score_name: Proximity to hazardous waste sites label: Proximity to hazardous waste sites format: float - - score_name: Greater than or equal to the 90th percentile for proximity to superfund sites, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for proximity to superfund sites, is low income, and high percent of residents that are not higher ed students? + - score_name: Greater than or equal to the 90th percentile for proximity to superfund sites and is low income? + label: Greater than or equal to the 90th percentile for proximity to superfund sites and is low income? format: bool - score_name: Proximity to NPL sites (percentile) label: Proximity to NPL (Superfund) sites (percentile) @@ -138,8 +252,8 @@ sheets: - score_name: Proximity to NPL sites label: Proximity to NPL (Superfund) sites format: float - - score_name: Greater than or equal to the 90th percentile for proximity to RMP sites, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for proximity to RMP sites, is low income, and high percent of residents that are not higher ed students? + - score_name: Greater than or equal to the 90th percentile for proximity to RMP sites and is low income? + label: Greater than or equal to the 90th percentile for proximity to RMP sites and is low income? format: bool - score_name: Proximity to Risk Management Plan (RMP) facilities (percentile) label: Proximity to Risk Management Plan (RMP) facilities (percentile) @@ -147,8 +261,26 @@ sheets: - score_name: Proximity to Risk Management Plan (RMP) facilities label: Proximity to Risk Management Plan (RMP) facilities format: float - - score_name: Greater than or equal to the 90th percentile for wastewater discharge, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for wastewater discharge, is low income, and high percent of residents that are not higher ed students? + - score_name: Is there at least one Formerly Used Defense Site (FUDS) in the tract? + label: Is there at least one Formerly Used Defense Site (FUDS) in the tract? + format: bool + - score_name: Is there at least one abandoned mine in this census tract? + label: Is there at least one abandoned mine in this census tract? + format: bool + - score_name: There is at least one abandoned mine in this census tract and the tract is low income. + label: There is at least one abandoned mine in this census tract and the tract is low income. + format: bool + - score_name: There is at least one Formerly Used Defense Site (FUDS) in the tract and the tract is low income. + label: There is at least one Formerly Used Defense Site (FUDS) in the tract and the tract is low income. + format: bool + - score_name: Is there at least one Formerly Used Defense Site (FUDS) in the tract, where missing data is treated as False? + label: Is there at least one Formerly Used Defense Site (FUDS) in the tract, where missing data is treated as False? + format: bool + - score_name: Is there at least one abandoned mine in this census tract, where missing data is treated as False? + label: Is there at least one abandoned mine in this census tract, where missing data is treated as False? + format: bool + - score_name: Greater than or equal to the 90th percentile for wastewater discharge and is low income? + label: Greater than or equal to the 90th percentile for wastewater discharge and is low income? format: bool - score_name: Wastewater discharge (percentile) label: Wastewater discharge (percentile) @@ -156,8 +288,17 @@ sheets: - score_name: Wastewater discharge label: Wastewater discharge format: float - - score_name: Greater than or equal to the 90th percentile for asthma, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for asthma, is low income, and high percent of residents that are not higher ed students? + - score_name: Greater than or equal to the 90th percentile for leaky underground storage tanks and is low income? + label: Greater than or equal to the 90th percentile for leaky underground storage tanks and is low income? + format: bool + - score_name: Leaky underground storage tanks (percentile) + label: Leaky underground storage tanks (percentile) + format: percentage + - score_name: Leaky underground storage tanks + label: Leaky underground storage tanks + format: float + - score_name: Greater than or equal to the 90th percentile for asthma and is low income? + label: Greater than or equal to the 90th percentile for asthma and is low income? format: bool - score_name: Current asthma among adults aged greater than or equal to 18 years (percentile) label: Current asthma among adults aged greater than or equal to 18 years (percentile) @@ -165,8 +306,8 @@ sheets: - score_name: Current asthma among adults aged greater than or equal to 18 years label: Current asthma among adults aged greater than or equal to 18 years format: percentage - - score_name: Greater than or equal to the 90th percentile for diabetes, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for diabetes, is low income, and high percent of residents that are not higher ed students? + - score_name: Greater than or equal to the 90th percentile for diabetes and is low income? + label: Greater than or equal to the 90th percentile for diabetes and is low income? format: bool - score_name: Diagnosed diabetes among adults aged greater than or equal to 18 years (percentile) label: Diagnosed diabetes among adults aged greater than or equal to 18 years (percentile) @@ -174,8 +315,8 @@ sheets: - score_name: Diagnosed diabetes among adults aged greater than or equal to 18 years label: Diagnosed diabetes among adults aged greater than or equal to 18 years format: percentage - - score_name: Greater than or equal to the 90th percentile for heart disease, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for heart disease, is low income, and high percent of residents that are not higher ed students? + - score_name: Greater than or equal to the 90th percentile for heart disease and is low income? + label: Greater than or equal to the 90th percentile for heart disease and is low income? format: bool - score_name: Coronary heart disease among adults aged greater than or equal to 18 years (percentile) label: Coronary heart disease among adults aged greater than or equal to 18 years (percentile) @@ -183,8 +324,8 @@ sheets: - score_name: Coronary heart disease among adults aged greater than or equal to 18 years label: Coronary heart disease among adults aged greater than or equal to 18 years format: percentage - - score_name: Greater than or equal to the 90th percentile for low life expectancy, is low income, and has a low percent of higher ed students? - label: Greater than or equal to the 90th percentile for low life expectancy, is low income, and high percent of residents that are not higher ed students? + - score_name: Greater than or equal to the 90th percentile for low life expectancy and is low income? + label: Greater than or equal to the 90th percentile for low life expectancy and is low income? format: bool - score_name: Low life expectancy (percentile) label: Low life expectancy (percentile) @@ -192,8 +333,8 @@ sheets: - score_name: Life expectancy (years) label: Life expectancy (years) format: float - - 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? - label: 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 high percent of residents that are not higher ed students? + - score_name: Greater than or equal to the 90th percentile for low median household income as a percent of area median income and has low HS attainment? + label: Greater than or equal to the 90th percentile for low median household income as a percent of area median income and has low HS attainment? format: bool - score_name: Low median household income as a percent of area median income (percentile) label: Low median household income as a percent of area median income (percentile) @@ -201,8 +342,8 @@ sheets: - score_name: Median household income as a percent of area median income label: Median household income as a percent of area median income format: percentage - - 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? - label: Greater than or equal to the 90th percentile for households in linguistic isolation, has low HS attainment, and high percent of residents that are not higher ed students? + - score_name: Greater than or equal to the 90th percentile for households in linguistic isolation and has low HS attainment? + label: Greater than or equal to the 90th percentile for households in linguistic isolation and has low HS attainment? format: bool - score_name: Linguistic isolation (percent) (percentile) label: Linguistic isolation (percent) (percentile) @@ -210,8 +351,8 @@ sheets: - score_name: Linguistic isolation (percent) label: Linguistic isolation (percent) format: percentage - - 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? - label: Greater than or equal to the 90th percentile for unemployment, has low HS attainment, and high percent of residents that are not higher ed students? + - score_name: Greater than or equal to the 90th percentile for unemployment and has low HS attainment? + label: Greater than or equal to the 90th percentile for unemployment and has low HS attainment? format: bool - score_name: Unemployment (percent) (percentile) label: Unemployment (percent) (percentile) @@ -219,8 +360,8 @@ sheets: - score_name: Unemployment (percent) label: Unemployment (percent) format: percentage - - 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? - label: Greater than or equal to the 90th percentile for households at or below 100% federal poverty level, has low HS attainment, and high percent of residents that are not higher ed students? + - score_name: Greater than or equal to the 90th percentile for households at or below 100% federal poverty level and has low HS attainment? + label: Greater than or equal to the 90th percentile for households at or below 100% federal poverty level and has low HS attainment? format: bool - score_name: Percent of individuals below 200% Federal Poverty Line (percentile) label: Percent of individuals below 200% Federal Poverty Line (percentile) @@ -258,3 +399,12 @@ sheets: - score_name: Greater than or equal to the 90th percentile for low median household income as a percent of area median income and has low HS education in 2009 (island areas)? label: Greater than or equal to the 90th percentile for low median household income as a percent of area median income and has low HS education in 2009 (island areas)? format: bool + - score_name: Number of Tribal areas within Census tract for Alaska + label: Number of Tribal areas within Census tract for Alaska + format: int64 + - score_name: Names of Tribal areas within Census tract + label: Names of Tribal areas within Census tract + format: string + - score_name: Percent of the Census tract that is within Tribal areas + label: Percent of the Census tract that is within Tribal areas + format: percentage 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 4214a57a0..14eba6c8b 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 new file mode 100644 index 000000000..2ad828b23 --- /dev/null +++ b/data/data-pipeline/data_pipeline/content/config/scratch.ipynb @@ -0,0 +1,800 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "cf8f39b0-7735-4f7c-9178-61bbf2257951", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "%load_ext lab_black" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "66639c20-be5e-4bf6-9b58-98338874f7cc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Median value ($) of owner-occupied housing units (percentile)'" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "check = pd.read_csv(\n", + " \"/Users/emmausds/j40/data_pipeline/data/score/downloadable/codebook.csv\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "5e525e4e-6764-4d4d-9119-b4d400ba022f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
score_namecsv_field_typecsv_labelexcel_labelcalculation_notesthreshold_categorynotes
0GEOID10_TRACTstringCensus tract IDCensus tract IDNaNNaNNaN
1County NamestringCounty NameCounty NameNaNNaNNaN
2State/TerritorystringState/TerritoryState/TerritoryNaNNaNNaN
3Total threshold criteria exceededint64Total threshold criteria exceededTotal threshold criteria exceededNaNNaNLists out the total number of criteria (where ...
4Definition M (communities)boolIdentified as disadvantagedIdentified as disadvantagedNaNNaNTrue / False variable for whether a tract is a...
........................
77Percentage households below 100% of federal po...percentagePercentage households below 100% of federal po...Percentage households below 100% of federal po...Because not all data is available for the Nati...NaNNaN
78Greater than or equal to the 90th percentile f...boolGreater than or equal to the 90th percentile f...Greater than or equal to the 90th percentile f...Because not all data is available for the Nati...training and workforce developmentNaN
79Greater than or equal to the 90th percentile f...boolGreater than or equal to the 90th percentile f...Greater than or equal to the 90th percentile f...Because not all data is available for the Nati...training and workforce developmentNaN
80Greater than or equal to the 90th percentile f...boolGreater than or equal to the 90th percentile f...Greater than or equal to the 90th percentile f...Because not all data is available for the Nati...training and workforce developmentNaN
81Percent of population not currently enrolled i...percentagePercent of residents who are not currently enr...Percent of residents who are not currently enr...NaNNaNNaN
\n", + "

82 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " score_name csv_field_type \\\n", + "0 GEOID10_TRACT string \n", + "1 County Name string \n", + "2 State/Territory string \n", + "3 Total threshold criteria exceeded int64 \n", + "4 Definition M (communities) bool \n", + ".. ... ... \n", + "77 Percentage households below 100% of federal po... percentage \n", + "78 Greater than or equal to the 90th percentile f... bool \n", + "79 Greater than or equal to the 90th percentile f... bool \n", + "80 Greater than or equal to the 90th percentile f... bool \n", + "81 Percent of population not currently enrolled i... percentage \n", + "\n", + " csv_label \\\n", + "0 Census tract ID \n", + "1 County Name \n", + "2 State/Territory \n", + "3 Total threshold criteria exceeded \n", + "4 Identified as disadvantaged \n", + ".. ... \n", + "77 Percentage households below 100% of federal po... \n", + "78 Greater than or equal to the 90th percentile f... \n", + "79 Greater than or equal to the 90th percentile f... \n", + "80 Greater than or equal to the 90th percentile f... \n", + "81 Percent of residents who are not currently enr... \n", + "\n", + " excel_label \\\n", + "0 Census tract ID \n", + "1 County Name \n", + "2 State/Territory \n", + "3 Total threshold criteria exceeded \n", + "4 Identified as disadvantaged \n", + ".. ... \n", + "77 Percentage households below 100% of federal po... \n", + "78 Greater than or equal to the 90th percentile f... \n", + "79 Greater than or equal to the 90th percentile f... \n", + "80 Greater than or equal to the 90th percentile f... \n", + "81 Percent of residents who are not currently enr... \n", + "\n", + " calculation_notes \\\n", + "0 NaN \n", + "1 NaN \n", + "2 NaN \n", + "3 NaN \n", + "4 NaN \n", + ".. ... \n", + "77 Because not all data is available for the Nati... \n", + "78 Because not all data is available for the Nati... \n", + "79 Because not all data is available for the Nati... \n", + "80 Because not all data is available for the Nati... \n", + "81 NaN \n", + "\n", + " threshold_category \\\n", + "0 NaN \n", + "1 NaN \n", + "2 NaN \n", + "3 NaN \n", + "4 NaN \n", + ".. ... \n", + "77 NaN \n", + "78 training and workforce development \n", + "79 training and workforce development \n", + "80 training and workforce development \n", + "81 NaN \n", + "\n", + " notes \n", + "0 NaN \n", + "1 NaN \n", + "2 NaN \n", + "3 Lists out the total number of criteria (where ... \n", + "4 True / False variable for whether a tract is a... \n", + ".. ... \n", + "77 NaN \n", + "78 NaN \n", + "79 NaN \n", + "80 NaN \n", + "81 NaN \n", + "\n", + "[82 rows x 7 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "check" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "d86c867a-1a55-4ec0-82a6-040841406236", + "metadata": {}, + "outputs": [], + "source": [ + "codebook = pd.DataFrame(to_frame_dict)" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "6215deaf-b004-4da0-a70b-bc54f636601a", + "metadata": {}, + "outputs": [], + "source": [ + "details_to_merge = pd.DataFrame(mapping_dictionary)" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "id": "ac4e65c2-09e6-4978-9440-37b3be057f65", + "metadata": {}, + "outputs": [], + "source": [ + "shapefile_codes = pd.read_csv(\n", + " \"/Users/emmausds/j40/data_pipeline/data/score/shapefile/columns.csv\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 153, + "id": "31cfd9ec-5f5f-4642-a51f-6875c2c279a4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Expected agricultural loss rate (Natural Hazards Risk Index) (percentile)',\n", + " 'Expected building loss rate (Natural Hazards Risk Index) (percentile)',\n", + " 'Expected population loss rate (Natural Hazards Risk Index) (percentile)',\n", + " 'Energy burden (percentile)',\n", + " 'PM2.5 in the air (percentile)',\n", + " 'Diesel particulate matter exposure (percentile)',\n", + " 'Traffic proximity and volume (percentile)',\n", + " 'Housing burden (percent) (percentile)',\n", + " 'Percent pre-1960s housing (lead paint indicator) (percentile)',\n", + " 'Median value ($) of owner-occupied housing units (percentile)',\n", + " 'Proximity to hazardous waste sites (percentile)',\n", + " 'Proximity to NPL sites (percentile)',\n", + " 'Proximity to Risk Management Plan (RMP) facilities (percentile)',\n", + " 'Wastewater discharge (percentile)',\n", + " 'Current asthma among adults aged greater than or equal to 18 years (percentile)',\n", + " 'Diagnosed diabetes among adults aged greater than or equal to 18 years (percentile)',\n", + " 'Coronary heart disease among adults aged greater than or equal to 18 years (percentile)',\n", + " 'Low life expectancy (percentile)',\n", + " 'Low median household income as a percent of area median income (percentile)',\n", + " 'Linguistic isolation (percent) (percentile)',\n", + " 'Unemployment (percent) (percentile)',\n", + " 'Percent of individuals below 200% Federal Poverty Line (percentile)',\n", + " 'Percent of individuals < 100% Federal Poverty Line (percentile)',\n", + " 'Percent individuals age 25 or over with less than high school degree (percentile)',\n", + " 'Definition M (percentile)',\n", + " 'Low median household income as a percent of territory median income in 2009 (percentile)',\n", + " 'Percentage households below 100% of federal poverty line in 2009 for island areas (percentile)',\n", + " 'Unemployment (percent) in 2009 for island areas (percentile)']" + ] + }, + "execution_count": 153, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 154, + "id": "66dde4fc-48e6-4bdf-b3a6-16c766e94d8a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " - column_name: Expected agricultural loss rate (Natural Hazards Risk Index) (percentile)\n", + " notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Expected building loss rate (Natural Hazards Risk Index) (percentile)\n", + " notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Expected population loss rate (Natural Hazards Risk Index) (percentile)\n", + " notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Energy burden (percentile)\n", + " notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: PM2.5 in the air (percentile)\n", + " notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Diesel particulate matter exposure (percentile)\n", + " notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Traffic proximity and volume (percentile)\n", + " notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Housing burden (percent) (percentile)\n", + " notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Percent pre-1960s housing (lead paint indicator) (percentile)\n", + " notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Median value ($) of owner-occupied housing units (percentile)\n", + " notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Proximity to hazardous waste sites (percentile)\n", + " notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Proximity to NPL sites (percentile)\n", + " notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Proximity to Risk Management Plan (RMP) facilities (percentile)\n", + " notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Wastewater discharge (percentile)\n", + " notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Current asthma among adults aged greater than or equal to 18 years (percentile)\n", + " notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Diagnosed diabetes among adults aged greater than or equal to 18 years (percentile)\n", + " notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Coronary heart disease among adults aged greater than or equal to 18 years (percentile)\n", + " notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Low life expectancy (percentile)\n", + " notes: (1) this percentile is reversed, meaning the lowest raw numbers become the highest percentiles, and (2) all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Low median household income as a percent of area median income (percentile)\n", + " notes: (1) this percentile is reversed, meaning the lowest raw numbers become the highest percentiles, and (2) all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Linguistic isolation (percent) (percentile)\n", + " notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Unemployment (percent) (percentile)\n", + " notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Percent of individuals below 200% Federal Poverty Line (percentile)\n", + " notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Percent of individuals < 100% Federal Poverty Line (percentile)\n", + " notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Percent individuals age 25 or over with less than high school degree (percentile)\n", + " notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Definition M (percentile)\n", + " notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Low median household income as a percent of territory median income in 2009 (percentile)\n", + " notes: (1) this percentile is reversed, meaning the lowest raw numbers become the highest percentiles, and (2) all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Percentage households below 100% of federal poverty line in 2009 for island areas (percentile)\n", + " notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n", + " - column_name: Unemployment (percent) in 2009 for island areas (percentile)\n", + " notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\n" + ] + } + ], + "source": [ + "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", + " f\" notes: all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\"\n", + " )\n", + " else:\n", + " print(\n", + " f\" notes: (1) this percentile is reversed, meaning the lowest raw numbers become the highest percentiles, and (2) all percentiles are floored (rounded down to the nearest percentile). For example, 89.7th percentile is rounded down to 89 for this field.\"\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 143, + "id": "5c08708e-4ebf-4cfe-8efb-7ee6c7930427", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
excel_labelformatshapefile_columnnotescategory
score_name
GEOID10_TRACTCensus tract IDstringNaNNaNNaN
County NameCounty NamestringCFNaNNaN
State/TerritoryState/TerritorystringSFNaNNaN
Total threshold criteria exceededTotal threshold criteria exceededint64TCLists out the total number of criteria (where ...NaN
Definition M (communities)Identified as disadvantagedboolSM_CTrue / False variable for whether a tract is a...NaN
..................
Unemployment (percent) in 2009 (island areas) and 2010 (states and PR)Unemployment (percent) in 2009 (island areas) ...percentageNaNNaNNaN
Percentage households below 100% of federal poverty line in 2009 (island areas) and 2010 (states and PR)Percentage households below 100% of federal po...percentageNaNNaNNaN
Greater than or equal to the 90th percentile for unemployment and has low HS education in 2009 (island areas)?Greater than or equal to the 90th percentile f...boolIAULHSEisland area information comes from the dicenni...training and workforce development
Greater than or equal to the 90th percentile for households at or below 100% federal poverty level and has low HS education in 2009 (island areas)?Greater than or equal to the 90th percentile f...boolIAPLHSEisland area information comes from the dicenni...training and workforce development
Greater than or equal to the 90th percentile for low median household income as a percent of area median income and has low HS education in 2009 (island areas)?Greater than or equal to the 90th percentile f...boolIALMILHSEisland area information comes from the dicenni...training and workforce development
\n", + "

82 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " excel_label \\\n", + "score_name \n", + "GEOID10_TRACT Census tract ID \n", + "County Name County Name \n", + "State/Territory State/Territory \n", + "Total threshold criteria exceeded Total threshold criteria exceeded \n", + "Definition M (communities) Identified as disadvantaged \n", + "... ... \n", + "Unemployment (percent) in 2009 (island areas) a... Unemployment (percent) in 2009 (island areas) ... \n", + "Percentage households below 100% of federal pov... Percentage households below 100% of federal po... \n", + "Greater than or equal to the 90th percentile fo... Greater than or equal to the 90th percentile f... \n", + "Greater than or equal to the 90th percentile fo... Greater than or equal to the 90th percentile f... \n", + "Greater than or equal to the 90th percentile fo... Greater than or equal to the 90th percentile f... \n", + "\n", + " format \\\n", + "score_name \n", + "GEOID10_TRACT string \n", + "County Name string \n", + "State/Territory string \n", + "Total threshold criteria exceeded int64 \n", + "Definition M (communities) bool \n", + "... ... \n", + "Unemployment (percent) in 2009 (island areas) a... percentage \n", + "Percentage households below 100% of federal pov... percentage \n", + "Greater than or equal to the 90th percentile fo... bool \n", + "Greater than or equal to the 90th percentile fo... bool \n", + "Greater than or equal to the 90th percentile fo... bool \n", + "\n", + " shapefile_column \\\n", + "score_name \n", + "GEOID10_TRACT NaN \n", + "County Name CF \n", + "State/Territory SF \n", + "Total threshold criteria exceeded TC \n", + "Definition M (communities) SM_C \n", + "... ... \n", + "Unemployment (percent) in 2009 (island areas) a... NaN \n", + "Percentage households below 100% of federal pov... NaN \n", + "Greater than or equal to the 90th percentile fo... IAULHSE \n", + "Greater than or equal to the 90th percentile fo... IAPLHSE \n", + "Greater than or equal to the 90th percentile fo... IALMILHSE \n", + "\n", + " notes \\\n", + "score_name \n", + "GEOID10_TRACT NaN \n", + "County Name NaN \n", + "State/Territory NaN \n", + "Total threshold criteria exceeded Lists out the total number of criteria (where ... \n", + "Definition M (communities) True / False variable for whether a tract is a... \n", + "... ... \n", + "Unemployment (percent) in 2009 (island areas) a... NaN \n", + "Percentage households below 100% of federal pov... NaN \n", + "Greater than or equal to the 90th percentile fo... island area information comes from the dicenni... \n", + "Greater than or equal to the 90th percentile fo... island area information comes from the dicenni... \n", + "Greater than or equal to the 90th percentile fo... island area information comes from the dicenni... \n", + "\n", + " category \n", + "score_name \n", + "GEOID10_TRACT NaN \n", + "County Name NaN \n", + "State/Territory NaN \n", + "Total threshold criteria exceeded NaN \n", + "Definition M (communities) NaN \n", + "... ... \n", + "Unemployment (percent) in 2009 (island areas) a... NaN \n", + "Percentage households below 100% of federal pov... NaN \n", + "Greater than or equal to the 90th percentile fo... training and workforce development \n", + "Greater than or equal to the 90th percentile fo... training and workforce development \n", + "Greater than or equal to the 90th percentile fo... training and workforce development \n", + "\n", + "[82 rows x 5 columns]" + ] + }, + "execution_count": 143, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "download_codebook.dropna(subset=[\"format\"]).reset_index()[\"score_name\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 137, + "id": "7139ce5d-db5e-49dd-8bb3-122c7b73b395", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
excel_labelformatshapefile_columnnotescategory
score_name
\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: [excel_label, format, shapefile_column, notes, category]\n", + "Index: []" + ] + }, + "execution_count": 137, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "download_codebook.loc[\n", + " sum([download_codebook[col] == \"percentile\" for col in [\"format\"]]) > 0\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "id": "e31ef01c-b225-48f0-bdf5-1efb8d4ed95c", + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "Cannot index with multidimensional key", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [134]\u001b[0m, in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mdownload_codebook\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mloc\u001b[49m\u001b[43m[\u001b[49m\u001b[43mdownload_codebook\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfilter\u001b[49m\u001b[43m(\u001b[49m\u001b[43mlike\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mformat\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m==\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mpercentile\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\n", + "File \u001b[0;32m/usr/local/lib/python3.9/site-packages/pandas/core/indexing.py:931\u001b[0m, in \u001b[0;36m_LocationIndexer.__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 928\u001b[0m axis \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maxis \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;241m0\u001b[39m\n\u001b[1;32m 930\u001b[0m maybe_callable \u001b[38;5;241m=\u001b[39m com\u001b[38;5;241m.\u001b[39mapply_if_callable(key, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mobj)\n\u001b[0;32m--> 931\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_getitem_axis\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmaybe_callable\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maxis\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43maxis\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/usr/local/lib/python3.9/site-packages/pandas/core/indexing.py:1151\u001b[0m, in \u001b[0;36m_LocIndexer._getitem_axis\u001b[0;34m(self, key, axis)\u001b[0m\n\u001b[1;32m 1148\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28misinstance\u001b[39m(key, \u001b[38;5;28mtuple\u001b[39m) \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(labels, MultiIndex)):\n\u001b[1;32m 1150\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(key, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mndim\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;129;01mand\u001b[39;00m key\u001b[38;5;241m.\u001b[39mndim \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m1\u001b[39m:\n\u001b[0;32m-> 1151\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCannot index with multidimensional key\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 1153\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_getitem_iterable(key, axis\u001b[38;5;241m=\u001b[39maxis)\n\u001b[1;32m 1155\u001b[0m \u001b[38;5;66;03m# nested tuple slicing\u001b[39;00m\n", + "\u001b[0;31mValueError\u001b[0m: Cannot index with multidimensional key" + ] + } + ], + "source": [ + "download_codebook.loc[download_codebook.filter(like=\"format\") == \"percentile\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "id": "73268de4-3378-4ac7-bf85-f483a78c3966", + "metadata": {}, + "outputs": [], + "source": [ + "download_codebook = pd.concat(\n", + " [\n", + " codebook.set_index(\"score_name\"),\n", + " shapefile_codes.rename(\n", + " columns={\"meaning\": \"shapefile_column\", \"column\": \"score_name\"}\n", + " ).set_index(\"score_name\"),\n", + " details_to_merge.set_index(\"score_name\"),\n", + " ],\n", + " axis=1,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6321ed42-aee6-40fc-8bf8-2a4ce4276eca", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} 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 9dc109f1b..4c4536698 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 873aa74c5..c9f647cd1 100644 --- a/data/data-pipeline/data_pipeline/etl/base.py +++ b/data/data-pipeline/data_pipeline/etl/base.py @@ -5,15 +5,15 @@ from typing import Optional import pandas as pd - from data_pipeline.config import settings -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.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 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__) @@ -43,10 +43,11 @@ class ExtractTransformLoad: APP_ROOT: pathlib.Path = settings.APP_ROOT # Directories - DATA_PATH: pathlib.Path = APP_ROOT / "data" + DATA_PATH: pathlib.Path = settings.DATA_PATH TMP_PATH: pathlib.Path = DATA_PATH / "tmp" CONTENT_CONFIG: pathlib.Path = APP_ROOT / "content" / "config" - DATASET_CONFIG: pathlib.Path = APP_ROOT / "etl" / "score" / "config" + DATASET_CONFIG_PATH: pathlib.Path = APP_ROOT / "etl" / "score" / "config" + DATASET_CONFIG: Optional[dict] = None # Parameters GEOID_FIELD_NAME: str = "GEOID10" @@ -81,6 +82,23 @@ class ExtractTransformLoad: # NULL_REPRESENTATION is how nulls are represented on the input field NULL_REPRESENTATION: str = None + # Whether this ETL contains data for the continental nation (DC & the US states + # except for Alaska and Hawaii) + CONTINENTAL_US_EXPECTED_IN_DATA: bool = True + + # Whether this ETL contains data for Alaska and Hawaii + ALASKA_AND_HAWAII_EXPECTED_IN_DATA: bool = True + + # Whether this ETL contains data for Puerto Rico + PUERTO_RICO_EXPECTED_IN_DATA: bool = True + + # Whether this ETL contains data for the island areas + ISLAND_AREAS_EXPECTED_IN_DATA: bool = False + + # Whether this ETL contains known missing data for any additional + # states/territories + EXPECTED_MISSING_STATES: typing.List[str] = [] + # Thirteen digits in a census block group ID. EXPECTED_CENSUS_BLOCK_GROUPS_CHARACTER_LENGTH: int = 13 # TODO: investigate. Census says there are only 217,740 CBGs in the US. This might @@ -94,17 +112,24 @@ class ExtractTransformLoad: # periods. https://github.com/usds/justice40-tool/issues/964 EXPECTED_MAX_CENSUS_TRACTS: int = 74160 + # Should this dataset load its configuration from + # the YAML files? + LOAD_YAML_CONFIG: bool = False + # We use output_df as the final dataframe to use to write to the CSV # It is used on the "load" base class method output_df: pd.DataFrame = None + def __init_subclass__(cls) -> None: + if cls.LOAD_YAML_CONFIG: + cls.DATASET_CONFIG = cls.yaml_config_load() + @classmethod def yaml_config_load(cls) -> dict: """Generate config dictionary and set instance variables from YAML dataset.""" - # check if the class instance has score YAML definitions datasets_config = load_yaml_dict_from_file( - cls.DATASET_CONFIG / "datasets.yml", + cls.DATASET_CONFIG_PATH / "datasets.yml", DatasetsConfig, ) @@ -123,9 +148,10 @@ def yaml_config_load(cls) -> dict: sys.exit() # set some of the basic fields - cls.INPUT_GEOID_TRACT_FIELD_NAME = dataset_config[ - "input_geoid_tract_field_name" - ] + if "input_geoid_tract_field_name" in dataset_config: + cls.INPUT_GEOID_TRACT_FIELD_NAME = dataset_config[ + "input_geoid_tract_field_name" + ] # get the columns to write on the CSV # and set the constants @@ -134,11 +160,7 @@ def yaml_config_load(cls) -> dict: ] for field in dataset_config["load_fields"]: cls.COLUMNS_TO_KEEP.append(field["long_name"]) - - # set the constants for the class setattr(cls, field["df_field_name"], field["long_name"]) - - # return the config dict return dataset_config # This is a classmethod so it can be used by `get_data_frame` without @@ -176,14 +198,18 @@ def extract( to get the file from a source url, unzips it and stores it on an extract_path.""" - # this can be accessed via super().extract() - if source_url and extract_path: - unzip_file_from_url( - file_url=source_url, - download_path=self.get_tmp_path(), - unzipped_file_path=extract_path, - verify=verify, - ) + if source_url is None: + source_url = self.SOURCE_URL + + if extract_path is None: + extract_path = self.get_tmp_path() + + unzip_file_from_url( + file_url=source_url, + download_path=self.get_tmp_path(), + unzipped_file_path=extract_path, + verify=verify, + ) def transform(self) -> None: """Transform the data extracted into a format that can be consumed by the @@ -280,6 +306,24 @@ def validate(self) -> None: f"`{geo_field}`." ) + # Check whether data contains expected states + states_in_output_df = ( + self.output_df[self.GEOID_TRACT_FIELD_NAME] + .str[0:2] + .unique() + .tolist() + ) + + compare_to_list_of_expected_state_fips_codes( + actual_state_fips_codes=states_in_output_df, + continental_us_expected=self.CONTINENTAL_US_EXPECTED_IN_DATA, + alaska_and_hawaii_expected=self.ALASKA_AND_HAWAII_EXPECTED_IN_DATA, + puerto_rico_expected=self.PUERTO_RICO_EXPECTED_IN_DATA, + island_areas_expected=self.ISLAND_AREAS_EXPECTED_IN_DATA, + additional_fips_codes_not_expected=self.EXPECTED_MISSING_STATES, + dataset_name=self.NAME, + ) + def load(self, float_format=None) -> None: """Saves the transformed data. @@ -318,6 +362,9 @@ def get_data_frame(cls) -> pd.DataFrame: f"No file found at `{output_file_path}`." ) + logger.info( + f"Reading in CSV `{output_file_path}` for ETL of class `{cls}`." + ) output_df = pd.read_csv( output_file_path, dtype={ diff --git a/data/data-pipeline/data_pipeline/etl/constants.py b/data/data-pipeline/data_pipeline/etl/constants.py index 8d9fef2b2..00f3e0eb0 100644 --- a/data/data-pipeline/data_pipeline/etl/constants.py +++ b/data/data-pipeline/data_pipeline/etl/constants.py @@ -3,121 +3,188 @@ "name": "cdc_places", "module_dir": "cdc_places", "class_name": "CDCPlacesETL", + "is_memory_intensive": False, }, { "name": "national_risk_index", "module_dir": "national_risk_index", "class_name": "NationalRiskIndexETL", + "is_memory_intensive": False, + }, + { + "name": "travel_composite", + "module_dir": "dot_travel_composite", + "class_name": "TravelCompositeETL", + "is_memory_intensive": False, }, { "name": "tree_equity_score", "module_dir": "tree_equity_score", "class_name": "TreeEquityScoreETL", - }, - { - "name": "census_acs", - "module_dir": "census_acs", - "class_name": "CensusACSETL", - }, - { - "name": "census_acs_2010", - "module_dir": "census_acs_2010", - "class_name": "CensusACS2010ETL", + "is_memory_intensive": False, }, { "name": "census_decennial", "module_dir": "census_decennial", "class_name": "CensusDecennialETL", + "is_memory_intensive": False, }, { "name": "mapping_for_ej", "module_dir": "mapping_for_ej", "class_name": "MappingForEJETL", + "is_memory_intensive": False, + }, + { + "name": "fsf_flood_risk", + "module_dir": "fsf_flood_risk", + "class_name": "FloodRiskETL", + "is_memory_intensive": False, + }, + { + "name": "fsf_wildfire_risk", + "module_dir": "fsf_wildfire_risk", + "class_name": "WildfireRiskETL", + "is_memory_intensive": False, }, { "name": "ejscreen", "module_dir": "ejscreen", "class_name": "EJSCREENETL", + "is_memory_intensive": False, }, { "name": "hud_housing", "module_dir": "hud_housing", "class_name": "HudHousingETL", + "is_memory_intensive": False, + }, + { + "name": "nlcd_nature_deprived", + "module_dir": "nlcd_nature_deprived", + "class_name": "NatureDeprivedETL", + "is_memory_intensive": False, }, { "name": "census_acs_median_income", "module_dir": "census_acs_median_income", "class_name": "CensusACSMedianIncomeETL", + "is_memory_intensive": False, }, { "name": "cdc_life_expectancy", "module_dir": "cdc_life_expectancy", "class_name": "CDCLifeExpectancy", + "is_memory_intensive": False, }, { "name": "doe_energy_burden", "module_dir": "doe_energy_burden", "class_name": "DOEEnergyBurden", + "is_memory_intensive": False, }, { "name": "geocorr", "module_dir": "geocorr", "class_name": "GeoCorrETL", - }, - { - "name": "child_opportunity_index", - "module_dir": "child_opportunity_index", - "class_name": "ChildOpportunityIndex", + "is_memory_intensive": False, }, { "name": "mapping_inequality", "module_dir": "mapping_inequality", "class_name": "MappingInequalityETL", + "is_memory_intensive": False, }, { "name": "persistent_poverty", "module_dir": "persistent_poverty", "class_name": "PersistentPovertyETL", + "is_memory_intensive": False, }, { "name": "ejscreen_areas_of_concern", "module_dir": "ejscreen_areas_of_concern", "class_name": "EJSCREENAreasOfConcernETL", + "is_memory_intensive": False, }, { "name": "calenviroscreen", "module_dir": "calenviroscreen", "class_name": "CalEnviroScreenETL", + "is_memory_intensive": False, }, { "name": "hud_recap", "module_dir": "hud_recap", "class_name": "HudRecapETL", + "is_memory_intensive": False, }, { "name": "epa_rsei", "module_dir": "epa_rsei", "class_name": "EPARiskScreeningEnvironmentalIndicatorsETL", + "is_memory_intensive": False, }, { "name": "energy_definition_alternative_draft", "module_dir": "energy_definition_alternative_draft", "class_name": "EnergyDefinitionAlternativeDraft", + "is_memory_intensive": False, }, { "name": "michigan_ejscreen", "module_dir": "michigan_ejscreen", "class_name": "MichiganEnviroScreenETL", + "is_memory_intensive": False, }, { "name": "cdc_svi_index", "module_dir": "cdc_svi_index", "class_name": "CDCSVIIndex", + "is_memory_intensive": False, }, { "name": "maryland_ejscreen", "module_dir": "maryland_ejscreen", "class_name": "MarylandEJScreenETL", + "is_memory_intensive": False, + }, + { + "name": "historic_redlining", + "module_dir": "historic_redlining", + "class_name": "HistoricRedliningETL", + "is_memory_intensive": False, + }, + # This has to come after us.json exists + { + "name": "census_acs", + "module_dir": "census_acs", + "class_name": "CensusACSETL", + "is_memory_intensive": False, + }, + { + "name": "census_acs_2010", + "module_dir": "census_acs_2010", + "class_name": "CensusACS2010ETL", + "is_memory_intensive": False, + }, + { + "name": "us_army_fuds", + "module_dir": "us_army_fuds", + "class_name": "USArmyFUDS", + "is_memory_intensive": True, + }, + { + "name": "eamlis", + "module_dir": "eamlis", + "class_name": "AbandonedMineETL", + "is_memory_intensive": True, + }, + { + "name": "tribal_overlap", + "module_dir": "tribal_overlap", + "class_name": "TribalOverlapETL", + "is_memory_intensive": True, }, ] @@ -125,10 +192,12 @@ "name": "census", "module_dir": "census", "class_name": "CensusETL", + "is_memory_intensive": False, } TRIBAL_INFO = { "name": "tribal", "module_dir": "tribal", "class_name": "TribalETL", + "is_memory_intensive": False, } diff --git a/data/data-pipeline/data_pipeline/etl/runner.py b/data/data-pipeline/data_pipeline/etl/runner.py index 5e9230bb3..896638249 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 @@ -77,16 +77,41 @@ def etl_runner(dataset_to_run: str = None) -> None: """ dataset_list = _get_datasets_to_run(dataset_to_run) - with concurrent.futures.ThreadPoolExecutor() as executor: - futures = { - executor.submit(_run_one_dataset, dataset=dataset) - for dataset in dataset_list - } - - for fut in concurrent.futures.as_completed(futures): - # Calling result will raise an exception if one occurred. - # Otherwise, the exceptions are silently ignored. - fut.result() + # Because we are memory constrained on our infrastructure, + # we split datasets into those that are not memory intensive + # (is_memory_intensive == False) and thereby can be safely + # run in parallel, and those that require more RAM and thus + # should be run sequentially. The is_memory_intensive_flag is + # set manually in constants.py based on experience running + # the pipeline + concurrent_datasets = [ + dataset + for dataset in dataset_list + if not dataset["is_memory_intensive"] + ] + high_memory_datasets = [ + dataset for dataset in dataset_list if dataset["is_memory_intensive"] + ] + + if concurrent_datasets: + logger.info("Running concurrent jobs") + with concurrent.futures.ThreadPoolExecutor() as executor: + futures = { + executor.submit(_run_one_dataset, dataset=dataset) + for dataset in concurrent_datasets + } + + for fut in concurrent.futures.as_completed(futures): + # Calling result will raise an exception if one occurred. + # Otherwise, the exceptions are silently ignored. + fut.result() + + # Note: these high-memory datasets also usually require the Census geojson to be + # generated, and one of them requires the Tribal geojson to be generated. + if high_memory_datasets: + logger.info("Running high-memory jobs") + for dataset in high_memory_datasets: + _run_one_dataset(dataset=dataset) def score_generate() -> None: 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 8bcf72eaf..dc6eed9bd 100644 --- a/data/data-pipeline/data_pipeline/etl/score/config/datasets.yml +++ b/data/data-pipeline/data_pipeline/etl/score/config/datasets.yml @@ -35,7 +35,6 @@ datasets: include_in_tiles: true include_in_downloadable_files: true create_percentile: true - - short_name: "ex_ag_loss" df_field_name: "EXPECTED_AGRICULTURE_LOSS_RATE_FIELD_NAME" long_name: "Expected agricultural loss rate (Natural Hazards Risk Index)" @@ -54,7 +53,6 @@ datasets: include_in_tiles: true include_in_downloadable_files: true create_percentile: true - - short_name: "ex_bldg_loss" df_field_name: "EXPECTED_BUILDING_LOSS_RATE_FIELD_NAME" long_name: "Expected building loss rate (Natural Hazards Risk Index)" @@ -72,8 +70,262 @@ datasets: include_in_tiles: true include_in_downloadable_files: true create_percentile: true - - short_name: "has_ag_val" df_field_name: "CONTAINS_AGRIVALUE" long_name: "Contains agricultural value" field_type: bool + - long_name: "Child Opportunity Index 2.0 database" + short_name: "coi" + module_name: "child_opportunity_index" + input_geoid_tract_field_name: "geoid" + load_fields: + - short_name: "he_heat" + df_field_name: "EXTREME_HEAT_FIELD" + long_name: "Summer days above 90F" + field_type: float + include_in_downloadable_files: true + include_in_tiles: true + - short_name: "he_food" + long_name: "Percent low access to healthy food" + df_field_name: "HEALTHY_FOOD_FIELD" + field_type: float + include_in_downloadable_files: true + include_in_tiles: true + - short_name: "he_green" + long_name: "Percent impenetrable surface areas" + df_field_name: "IMPENETRABLE_SURFACES_FIELD" + field_type: float + include_in_downloadable_files: true + include_in_tiles: true + - short_name: "ed_reading" + df_field_name: "READING_FIELD" + long_name: "Third grade reading proficiency" + field_type: float + include_in_downloadable_files: true + include_in_tiles: true + - long_name: "Low-Income Energy Affordabililty Data" + short_name: "LEAD" + module_name: "doe_energy_burden" + input_geoid_tract_field_name: "FIP" + load_fields: + - short_name: "EBP_PFS" + df_field_name: "REVISED_ENERGY_BURDEN_FIELD_NAME" + long_name: "Energy burden" + field_type: float + include_in_downloadable_files: true + include_in_tiles: true + - long_name: "Formerly Used Defense Sites" + short_name: "FUDS" + module_name: "us_army_fuds" + load_fields: + - 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: + "The number of FUDS marked as Eligible and Has Project in the tract." + field_type: int64 + include_in_tiles: false + include_in_downloadable_files: false + - 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: + "The number of FUDS marked as Ineligible or Project in the tract." + field_type: int64 + include_in_tiles: false + include_in_downloadable_files: false + - 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: + "Whether the tract has a FUDS" + field_type: bool + include_in_tiles: false + include_in_downloadable_files: false + - long_name: "Abandoned Mine Land Inventory System" + short_name: "eAMLIS" + module_name: "eamlis" + load_fields: + - short_name: "has_aml" + df_field_name: "AML_BOOLEAN" + long_name: "Is there at least one abandoned mine in this census tract?" + description_short: + "Whether the tract has an abandoned mine" + field_type: bool + include_in_tiles: true + include_in_downloadable_files: true + - long_name: "Example ETL" + short_name: "Example" + module_name: "example_dataset" + input_geoid_tract_field_name: "GEOID10_TRACT" + load_fields: + - short_name: "EXAMPLE_FIELD" + df_field_name: "Input Field 1" + long_name: "Example Field 1" + field_type: float + include_in_tiles: true + include_in_downloadable_files: true + - long_name: "First Street Foundation Flood Risk" + short_name: "FSF Flood Risk" + module_name: fsf_flood_risk + input_geoid_tract_field_name: "GEOID" + 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)" + 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" + 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" + 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" + 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" + field_type: float + include_in_tiles: false + include_in_downloadable_files: true + create_percentile: true + - long_name: "First Street Foundation Wildfire Risk" + short_name: "FSF Wildfire Risk" + module_name: fsf_wildfire_risk + input_geoid_tract_field_name: "GEOID" + 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)" + 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" + 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" + 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" + 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" + field_type: float + include_in_tiles: false + include_in_downloadable_files: true + create_percentile: true + - long_name: "DOT Travel Disadvantage Index" + short_name: "DOT" + module_name: "travel_composite" + input_geoid_tract_field_name: "GEOID10_TRACT" + load_fields: + - short_name: "travel_burden" + df_field_name: "TRAVEL_BURDEN_FIELD_NAME" + long_name: "DOT Travel Barriers Score" + field_type: float + include_in_tiles: true + include_in_downloadable_files: true + create_percentile: true + - long_name: "National Land Cover Database (NLCD) Lack of Green Space / Nature-Deprived Communities dataset, as compiled by TPL" + short_name: "nlcd_nature_deprived" + module_name: "nlcd_nature_deprived" + input_geoid_tract_field_name: "GEOID10_TRACT" + 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?" + 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" + 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" + 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" + field_type: percentage + include_in_tiles: true + include_in_downloadable_files: true + create_percentile: true + - long_name: "Overlap between Census tract boundaries and Tribal area boundaries." + short_name: "tribal_overlap" + module_name: "tribal_overlap" + input_geoid_tract_field_name: "GEOID10_TRACT" + load_fields: + - short_name: "tribal_count" + df_field_name: "COUNT_OF_TRIBAL_AREAS_IN_TRACT" + long_name: "Number of Tribal areas within Census tract" + field_type: int64 + include_in_tiles: true + include_in_downloadable_files: true + create_percentile: false + - short_name: "tribal_percent" + df_field_name: "PERCENT_OF_TRIBAL_AREA_IN_TRACT" + long_name: "Percent of the Census tract that is within Tribal areas" + field_type: float + include_in_tiles: true + include_in_downloadable_files: true + create_percentile: false + number_of_decimals_in_output: 6 + - short_name: "tribal_names" + df_field_name: "NAMES_OF_TRIBAL_AREAS_IN_TRACT" + long_name: "Names of Tribal areas within Census tract" + field_type: string + include_in_tiles: true + include_in_downloadable_files: true + - long_name: "CDC Life Expeectancy" + short_name: "cdc_life_expectancy" + module_name: "cdc_life_expectancy" + input_geoid_tract_field_name: "Tract ID" + load_fields: + - short_name: "LLEF" + df_field_name: "LIFE_EXPECTANCY_FIELD_NAME" + long_name: "Life expectancy (years)" + field_type: float + include_in_tiles: false + include_in_downloadable_files: true + create_percentile: false + 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 8d5371e89..199285c9c 100644 --- a/data/data-pipeline/data_pipeline/etl/score/constants.py +++ b/data/data-pipeline/data_pipeline/etl/score/constants.py @@ -2,9 +2,11 @@ from pathlib import Path from data_pipeline.config import settings - from data_pipeline.score import field_names +## note: to keep map porting "right" fields, keeping descriptors the same. + + # Base Paths DATA_PATH = Path(settings.APP_ROOT) / "data" TMP_PATH = DATA_PATH / "tmp" @@ -115,7 +117,7 @@ CENSUS_COUNTIES_COLUMNS = ["USPS", "GEOID", "NAME"] # Drop FIPS codes from map -DROP_FIPS_CODES = ["66", "78"] +DROP_FIPS_CODES = [] # Drop FIPS codes from incrementing DROP_FIPS_FROM_NON_WTD_THRESHOLDS = "72" @@ -138,7 +140,7 @@ # Controlling Tile user experience columns THRESHOLD_COUNT_TO_SHOW_FIELD_NAME = "THRHLD" TILES_ISLAND_AREAS_THRESHOLD_COUNT = 3 -TILES_PUERTO_RICO_THRESHOLD_COUNT = 4 +TILES_PUERTO_RICO_THRESHOLD_COUNT = 10 TILES_NATION_THRESHOLD_COUNT = 21 # Note that the FIPS code is a string @@ -146,6 +148,58 @@ # 60: American Samoa, 66: Guam, 69: N. Mariana Islands, 78: US Virgin Islands TILES_ISLAND_AREA_FIPS_CODES = ["60", "66", "69", "78"] TILES_PUERTO_RICO_FIPS_CODE = ["72"] +TILES_ALASKA_AND_HAWAII_FIPS_CODE = ["02", "15"] +TILES_CONTINENTAL_US_FIPS_CODE = [ + "01", + "04", + "05", + "06", + "08", + "09", + "10", + "11", + "12", + "13", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23", + "24", + "25", + "26", + "27", + "28", + "29", + "30", + "31", + "32", + "33", + "34", + "35", + "36", + "37", + "38", + "39", + "40", + "41", + "42", + "44", + "45", + "46", + "47", + "48", + "49", + "50", + "51", + "53", + "54", + "55", + "56", +] # Constant to reflect UI Experience version # "Nation" referring to 50 states and DC is from Census @@ -189,16 +243,17 @@ + field_names.PERCENTILE_FIELD_SUFFIX: "LIF_PFS", field_names.LOW_MEDIAN_INCOME_AS_PERCENT_OF_AMI_FIELD + field_names.PERCENTILE_FIELD_SUFFIX: "LMI_PFS", - field_names.MEDIAN_HOUSE_VALUE_FIELD - + field_names.PERCENTILE_FIELD_SUFFIX: "MHVF_PFS", field_names.PM25_FIELD + field_names.PERCENTILE_FIELD_SUFFIX: "PM25F_PFS", field_names.HIGH_SCHOOL_ED_FIELD: "HSEF", field_names.POVERTY_LESS_THAN_100_FPL_FIELD + field_names.PERCENTILE_FIELD_SUFFIX: "P100_PFS", - field_names.POVERTY_LESS_THAN_200_FPL_FIELD - + field_names.PERCENTILE_FIELD_SUFFIX: "P200_PFS", + field_names.POVERTY_LESS_THAN_200_FPL_IMPUTED_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX: "P200_I_PFS", + field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED_DONUTS: "AJDLI_ET", field_names.LEAD_PAINT_FIELD + field_names.PERCENTILE_FIELD_SUFFIX: "LPF_PFS", + field_names.NO_KITCHEN_OR_INDOOR_PLUMBING_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX: "KP_PFS", field_names.NPL_FIELD + field_names.PERCENTILE_FIELD_SUFFIX: "NPL_PFS", field_names.RMP_FIELD + field_names.PERCENTILE_FIELD_SUFFIX: "RMP_PFS", field_names.TSDF_FIELD + field_names.PERCENTILE_FIELD_SUFFIX: "TSDF_PFS", @@ -208,37 +263,24 @@ + field_names.PERCENTILE_FIELD_SUFFIX: "UF_PFS", field_names.WASTEWATER_FIELD + field_names.PERCENTILE_FIELD_SUFFIX: "WF_PFS", - field_names.M_WATER: "M_WTR", - field_names.M_WORKFORCE: "M_WKFC", - field_names.M_CLIMATE: "M_CLT", - field_names.M_ENERGY: "M_ENY", - field_names.M_TRANSPORTATION: "M_TRN", - field_names.M_HOUSING: "M_HSG", - field_names.M_POLLUTION: "M_PLN", - field_names.M_HEALTH: "M_HLTH", - field_names.SCORE_M_COMMUNITIES: "SM_C", - field_names.SCORE_M + field_names.PERCENTILE_FIELD_SUFFIX: "SM_PFS", - field_names.EXPECTED_POPULATION_LOSS_RATE_LOW_INCOME_LOW_HIGHER_ED_FIELD: "EPLRLI", - field_names.EXPECTED_AGRICULTURE_LOSS_RATE_LOW_INCOME_LOW_HIGHER_ED_FIELD: "EALRLI", - field_names.EXPECTED_BUILDING_LOSS_RATE_LOW_INCOME_LOW_HIGHER_ED_FIELD: "EBLRLI", - field_names.PM25_EXPOSURE_LOW_INCOME_LOW_HIGHER_ED_FIELD: "PM25LI", - field_names.ENERGY_BURDEN_LOW_INCOME_LOW_HIGHER_ED_FIELD: "EBLI", - field_names.DIESEL_PARTICULATE_MATTER_LOW_INCOME_LOW_HIGHER_ED_FIELD: "DPMLI", - field_names.TRAFFIC_PROXIMITY_LOW_INCOME_LOW_HIGHER_ED_FIELD: "TPLI", - field_names.LEAD_PAINT_MEDIAN_HOUSE_VALUE_LOW_INCOME_LOW_HIGHER_ED_FIELD: "LPMHVLI", - field_names.HOUSING_BURDEN_LOW_INCOME_LOW_HIGHER_ED_FIELD: "HBLI", - field_names.RMP_LOW_INCOME_LOW_HIGHER_ED_FIELD: "RMPLI", - field_names.SUPERFUND_LOW_INCOME_LOW_HIGHER_ED_FIELD: "SFLI", - field_names.HAZARDOUS_WASTE_LOW_INCOME_LOW_HIGHER_ED_FIELD: "HWLI", - field_names.WASTEWATER_DISCHARGE_LOW_INCOME_LOW_HIGHER_ED_FIELD: "WDLI", - field_names.DIABETES_LOW_INCOME_LOW_HIGHER_ED_FIELD: "DLI", - field_names.ASTHMA_LOW_INCOME_LOW_HIGHER_ED_FIELD: "ALI", - field_names.HEART_DISEASE_LOW_INCOME_LOW_HIGHER_ED_FIELD: "HDLI", - field_names.LOW_LIFE_EXPECTANCY_LOW_INCOME_LOW_HIGHER_ED_FIELD: "LLELI", - field_names.LINGUISTIC_ISOLATION_LOW_HS_LOW_HIGHER_ED_FIELD: "LILHSE", - field_names.POVERTY_LOW_HS_LOW_HIGHER_ED_FIELD: "PLHSE", - field_names.LOW_MEDIAN_INCOME_LOW_HS_LOW_HIGHER_ED_FIELD: "LMILHSE", - field_names.UNEMPLOYMENT_LOW_HS_LOW_HIGHER_ED_FIELD: "ULHSE", + field_names.UST_FIELD + field_names.PERCENTILE_FIELD_SUFFIX: "UST_PFS", + field_names.N_WATER: "N_WTR", + field_names.N_WORKFORCE: "N_WKFC", + field_names.N_CLIMATE: "N_CLT", + field_names.N_ENERGY: "N_ENY", + field_names.N_TRANSPORTATION: "N_TRN", + field_names.N_HOUSING: "N_HSG", + field_names.N_POLLUTION: "N_PLN", + field_names.N_HEALTH: "N_HLTH", + # temporarily update this so that it's the Narwhal score that gets visualized on the map + # The NEW final score value INCLUDES the adjacency index. + field_names.FINAL_SCORE_N_BOOLEAN: "SN_C", + field_names.IS_TRIBAL_DAC: "SN_T", + field_names.DIABETES_LOW_INCOME_FIELD: "DLI", + field_names.ASTHMA_LOW_INCOME_FIELD: "ALI", + field_names.POVERTY_LOW_HS_EDUCATION_FIELD: "PLHSE", + field_names.LOW_MEDIAN_INCOME_LOW_HS_EDUCATION_FIELD: "LMILHSE", + field_names.UNEMPLOYMENT_LOW_HS_EDUCATION_FIELD: "ULHSE", # new booleans only for the environmental factors field_names.EXPECTED_POPULATION_LOSS_EXCEEDS_PCTILE_THRESHOLD: "EPL_ET", field_names.EXPECTED_AGRICULTURAL_LOSS_EXCEEDS_PCTILE_THRESHOLD: "EAL_ET", @@ -248,11 +290,14 @@ field_names.DIESEL_EXCEEDS_PCTILE_THRESHOLD: "DS_ET", field_names.TRAFFIC_PROXIMITY_PCTILE_THRESHOLD: "TP_ET", field_names.LEAD_PAINT_PROXY_PCTILE_THRESHOLD: "LPP_ET", + field_names.HISTORIC_REDLINING_SCORE_EXCEEDED: "HRS_ET", + field_names.NO_KITCHEN_OR_INDOOR_PLUMBING_PCTILE_THRESHOLD: "KP_ET", field_names.HOUSING_BURDEN_PCTILE_THRESHOLD: "HB_ET", field_names.RMP_PCTILE_THRESHOLD: "RMP_ET", field_names.NPL_PCTILE_THRESHOLD: "NPL_ET", field_names.TSDF_PCTILE_THRESHOLD: "TSDF_ET", field_names.WASTEWATER_PCTILE_THRESHOLD: "WD_ET", + field_names.UST_PCTILE_THRESHOLD: "UST_ET", field_names.DIABETES_PCTILE_THRESHOLD: "DB_ET", field_names.ASTHMA_PCTILE_THRESHOLD: "A_ET", field_names.HEART_DISEASE_PCTILE_THRESHOLD: "HD_ET", @@ -278,79 +323,56 @@ field_names.CENSUS_DECENNIAL_UNEMPLOYMENT_FIELD_2009 + field_names.ISLAND_AREAS_PERCENTILE_ADJUSTMENT_FIELD + field_names.PERCENTILE_FIELD_SUFFIX: "IAULHSE_PFS", - field_names.LOW_HS_EDUCATION_LOW_HIGHER_ED_FIELD: "LHE", + field_names.LOW_HS_EDUCATION_FIELD: "LHE", field_names.ISLAND_AREAS_LOW_HS_EDUCATION_FIELD: "IALHE", # Percentage of HS Degree completion for Islands field_names.CENSUS_DECENNIAL_HIGH_SCHOOL_ED_FIELD_2009: "IAHSEF", - field_names.COLLEGE_ATTENDANCE_FIELD: "CA", - field_names.COLLEGE_NON_ATTENDANCE_FIELD: "NCA", - # This is logically equivalent to "non-college greater than 80%" - field_names.COLLEGE_ATTENDANCE_LESS_THAN_20_FIELD: "CA_LT20", # Booleans for the front end about the types of thresholds exceeded - field_names.CLIMATE_THRESHOLD_EXCEEDED: "M_CLT_EOMI", - field_names.ENERGY_THRESHOLD_EXCEEDED: "M_ENY_EOMI", - field_names.TRAFFIC_THRESHOLD_EXCEEDED: "M_TRN_EOMI", - field_names.HOUSING_THREHSOLD_EXCEEDED: "M_HSG_EOMI", - field_names.POLLUTION_THRESHOLD_EXCEEDED: "M_PLN_EOMI", - field_names.WATER_THRESHOLD_EXCEEDED: "M_WTR_EOMI", - field_names.HEALTH_THRESHOLD_EXCEEDED: "M_HLTH_EOMI", - field_names.WORKFORCE_THRESHOLD_EXCEEDED: "M_WKFC_EOMI", + field_names.CLIMATE_THRESHOLD_EXCEEDED: "N_CLT_EOMI", + field_names.ENERGY_THRESHOLD_EXCEEDED: "N_ENY_EOMI", + field_names.TRAFFIC_THRESHOLD_EXCEEDED: "N_TRN_EOMI", + field_names.HOUSING_THREHSOLD_EXCEEDED: "N_HSG_EOMI", + field_names.POLLUTION_THRESHOLD_EXCEEDED: "N_PLN_EOMI", + field_names.WATER_THRESHOLD_EXCEEDED: "N_WTR_EOMI", + field_names.HEALTH_THRESHOLD_EXCEEDED: "N_HLTH_EOMI", + field_names.WORKFORCE_THRESHOLD_EXCEEDED: "N_WKFC_EOMI", # These are the booleans for socioeconomic indicators ## this measures low income boolean - field_names.FPL_200_SERIES: "FPL200S", - ## Low high school and low higher ed for t&wd - field_names.WORKFORCE_SOCIO_INDICATORS_EXCEEDED: "M_WKFC_EBSI", - ## FPL 200 and low higher ed for all others - field_names.FPL_200_AND_COLLEGE_ATTENDANCE_SERIES: "M_EBSI", + field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED: "FPL200S", + ## Low high school for t&wd + field_names.WORKFORCE_SOCIO_INDICATORS_EXCEEDED: "N_WKFC_EBSI", + field_names.DOT_BURDEN_PCTILE_THRESHOLD: "TD_ET", + field_names.DOT_TRAVEL_BURDEN_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX: "TD_PFS", + field_names.FUTURE_FLOOD_RISK_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX: "FLD_PFS", + field_names.FUTURE_WILDFIRE_RISK_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX: "WFR_PFS", + field_names.HIGH_FUTURE_FLOOD_RISK_FIELD: "FLD_ET", + field_names.HIGH_FUTURE_WILDFIRE_RISK_FIELD: "WFR_ET", + field_names.ADJACENT_TRACT_SCORE_ABOVE_DONUT_THRESHOLD: "ADJ_ET", + field_names.TRACT_PERCENT_NON_NATURAL_FIELD_NAME + + field_names.PERCENTILE_FIELD_SUFFIX: "IS_PFS", + field_names.NON_NATURAL_LOW_INCOME_FIELD_NAME: "IS_ET", + field_names.AML_BOOLEAN_FILLED_IN: "AML_ET", + field_names.ELIGIBLE_FUDS_BINARY_FIELD_NAME: "FUDS_RAW", + field_names.ELIGIBLE_FUDS_FILLED_IN_FIELD_NAME: "FUDS_ET", + field_names.IMPUTED_INCOME_FLAG_FIELD_NAME: "IMP_FLG", + ## FPL 200 and low higher ed for all others should no longer be M_EBSI, but rather + ## FPL_200 (there is no higher ed in narwhal) + field_names.PERCENT_BLACK_FIELD_NAME: "DM_B", + field_names.PERCENT_AMERICAN_INDIAN_FIELD_NAME: "DM_AI", + field_names.PERCENT_ASIAN_FIELD_NAME: "DM_A", + field_names.PERCENT_HAWAIIAN_FIELD_NAME: "DM_HI", + field_names.PERCENT_TWO_OR_MORE_RACES_FIELD_NAME: "DM_T", + field_names.PERCENT_NON_HISPANIC_WHITE_FIELD_NAME: "DM_W", + field_names.PERCENT_HISPANIC_FIELD_NAME: "DM_H", + field_names.PERCENT_OTHER_RACE_FIELD_NAME: "DM_O", + field_names.PERCENT_AGE_UNDER_10: "AGE_10", + field_names.PERCENT_AGE_10_TO_64: "AGE_MIDDLE", + field_names.PERCENT_AGE_OVER_64: "AGE_OLD", + field_names.COUNT_OF_TRIBAL_AREAS_IN_TRACT_AK: "TA_COUNT_AK", + field_names.COUNT_OF_TRIBAL_AREAS_IN_TRACT_CONUS: "TA_COUNT_C", + field_names.PERCENT_OF_TRIBAL_AREA_IN_TRACT: "TA_PERC", + field_names.PERCENT_OF_TRIBAL_AREA_IN_TRACT_DISPLAY: "TA_PERC_FE", } - -# columns to round floats to 2 decimals -# TODO refactor to use much smaller subset of fields we DON'T want to round -TILES_SCORE_FLOAT_COLUMNS = [ - field_names.DIABETES_FIELD + field_names.PERCENTILE_FIELD_SUFFIX, - field_names.ASTHMA_FIELD + field_names.PERCENTILE_FIELD_SUFFIX, - field_names.HEART_DISEASE_FIELD + field_names.PERCENTILE_FIELD_SUFFIX, - field_names.DIESEL_FIELD + field_names.PERCENTILE_FIELD_SUFFIX, - field_names.ENERGY_BURDEN_FIELD + field_names.PERCENTILE_FIELD_SUFFIX, - field_names.EXPECTED_AGRICULTURE_LOSS_RATE_FIELD - + field_names.PERCENTILE_FIELD_SUFFIX, - field_names.EXPECTED_BUILDING_LOSS_RATE_FIELD - + field_names.PERCENTILE_FIELD_SUFFIX, - field_names.EXPECTED_POPULATION_LOSS_RATE_FIELD - + field_names.PERCENTILE_FIELD_SUFFIX, - field_names.HOUSING_BURDEN_FIELD + field_names.PERCENTILE_FIELD_SUFFIX, - field_names.LOW_LIFE_EXPECTANCY_FIELD + field_names.PERCENTILE_FIELD_SUFFIX, - field_names.LINGUISTIC_ISO_FIELD + field_names.PERCENTILE_FIELD_SUFFIX, - field_names.LOW_MEDIAN_INCOME_AS_PERCENT_OF_AMI_FIELD - + field_names.PERCENTILE_FIELD_SUFFIX, - field_names.MEDIAN_HOUSE_VALUE_FIELD + field_names.PERCENTILE_FIELD_SUFFIX, - field_names.PM25_FIELD + field_names.PERCENTILE_FIELD_SUFFIX, - field_names.POVERTY_LESS_THAN_100_FPL_FIELD - + field_names.PERCENTILE_FIELD_SUFFIX, - field_names.POVERTY_LESS_THAN_200_FPL_FIELD - + field_names.PERCENTILE_FIELD_SUFFIX, - field_names.LEAD_PAINT_FIELD + field_names.PERCENTILE_FIELD_SUFFIX, - field_names.NPL_FIELD + field_names.PERCENTILE_FIELD_SUFFIX, - field_names.RMP_FIELD + field_names.PERCENTILE_FIELD_SUFFIX, - field_names.TSDF_FIELD + field_names.PERCENTILE_FIELD_SUFFIX, - field_names.TRAFFIC_FIELD + field_names.PERCENTILE_FIELD_SUFFIX, - field_names.UNEMPLOYMENT_FIELD + field_names.PERCENTILE_FIELD_SUFFIX, - # Percentiles for Island areas' workforce columns - # To be clear: the island areas pull from 2009 census. PR does not. - field_names.LOW_CENSUS_DECENNIAL_AREA_MEDIAN_INCOME_PERCENT_FIELD_2009 - + field_names.PERCENTILE_FIELD_SUFFIX, - field_names.CENSUS_DECENNIAL_POVERTY_LESS_THAN_100_FPL_FIELD_2009 - + field_names.ISLAND_AREAS_PERCENTILE_ADJUSTMENT_FIELD - + field_names.PERCENTILE_FIELD_SUFFIX, - field_names.CENSUS_DECENNIAL_UNEMPLOYMENT_FIELD_2009 - + field_names.ISLAND_AREAS_PERCENTILE_ADJUSTMENT_FIELD - + field_names.PERCENTILE_FIELD_SUFFIX, - # Island areas HS degree attainment rate - field_names.CENSUS_DECENNIAL_HIGH_SCHOOL_ED_FIELD_2009, - field_names.LOW_HS_EDUCATION_LOW_HIGHER_ED_FIELD, - field_names.ISLAND_AREAS_LOW_HS_EDUCATION_FIELD, - field_names.WASTEWATER_FIELD + field_names.PERCENTILE_FIELD_SUFFIX, - field_names.SCORE_M + field_names.PERCENTILE_FIELD_SUFFIX, - field_names.COLLEGE_NON_ATTENDANCE_FIELD, - field_names.COLLEGE_ATTENDANCE_FIELD, -] 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 6d952d0d5..b6c8c4079 100644 --- a/data/data-pipeline/data_pipeline/etl/score/etl_score.py +++ b/data/data-pipeline/data_pipeline/etl/score/etl_score.py @@ -1,17 +1,26 @@ import functools -from collections import namedtuple +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.dot_travel_composite.etl import ( + TravelCompositeETL, +) +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.score.score_runner import ScoreRunner +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.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__) @@ -24,7 +33,7 @@ def __init__(self): # dataframes self.df: pd.DataFrame self.ejscreen_df: pd.DataFrame - self.census_df: pd.DataFrame + self.census_acs_df: pd.DataFrame self.hud_housing_df: pd.DataFrame self.cdc_places_df: pd.DataFrame self.census_acs_median_incomes_df: pd.DataFrame @@ -32,18 +41,25 @@ def __init__(self): self.doe_energy_burden_df: pd.DataFrame self.national_risk_index_df: pd.DataFrame self.geocorr_urban_rural_df: pd.DataFrame - self.persistent_poverty_df: pd.DataFrame self.census_decennial_df: pd.DataFrame self.census_2010_df: pd.DataFrame - self.child_opportunity_index_df: pd.DataFrame + self.national_tract_df: pd.DataFrame + self.hrs_df: pd.DataFrame + self.dot_travel_disadvantage_df: pd.DataFrame + self.fsf_flood_df: pd.DataFrame + self.fsf_fire_df: pd.DataFrame + self.nature_deprived_df: pd.DataFrame + self.eamlis_df: pd.DataFrame + self.fuds_df: pd.DataFrame + self.tribal_overlap_df: pd.DataFrame + + self.ISLAND_DEMOGRAPHIC_BACKFILL_FIELDS: List[str] = [] def extract(self) -> None: logger.info("Loading data sets from disk.") # EJSCreen csv Load - ejscreen_csv = ( - constants.DATA_PATH / "dataset" / "ejscreen_2019" / "usa.csv" - ) + ejscreen_csv = constants.DATA_PATH / "dataset" / "ejscreen" / "usa.csv" self.ejscreen_df = pd.read_csv( ejscreen_csv, dtype={self.GEOID_TRACT_FIELD_NAME: "string"}, @@ -51,14 +67,7 @@ def extract(self) -> None: ) # Load census data - census_csv = ( - constants.DATA_PATH / "dataset" / "census_acs_2019" / "usa.csv" - ) - self.census_df = pd.read_csv( - census_csv, - dtype={self.GEOID_TRACT_FIELD_NAME: "string"}, - low_memory=False, - ) + self.census_acs_df = CensusACSETL.get_data_frame() # Load HUD housing data hud_housing_csv = ( @@ -116,6 +125,27 @@ def extract(self) -> None: # Load FEMA national risk index data self.national_risk_index_df = NationalRiskIndexETL.get_data_frame() + # Load DOT Travel Disadvantage + self.dot_travel_disadvantage_df = TravelCompositeETL.get_data_frame() + + # Load fire risk data + self.fsf_fire_df = WildfireRiskETL.get_data_frame() + + # Load flood risk data + self.fsf_flood_df = FloodRiskETL.get_data_frame() + + # Load NLCD Nature-Deprived Communities data + self.nature_deprived_df = NatureDeprivedETL.get_data_frame() + + # Load eAMLIS dataset + self.eamlis_df = AbandonedMineETL.get_data_frame() + + # Load FUDS dataset + self.fuds_df = USArmyFUDS.get_data_frame() + + # Load Tribal overlap dataset + self.tribal_overlap_df = TribalOverlapETL.get_data_frame() + # Load GeoCorr Urban Rural Map geocorr_urban_rural_csv = ( constants.DATA_PATH / "dataset" / "geocorr" / "usa.csv" @@ -126,16 +156,6 @@ def extract(self) -> None: low_memory=False, ) - # Load persistent poverty - persistent_poverty_csv = ( - constants.DATA_PATH / "dataset" / "persistent_poverty" / "usa.csv" - ) - self.persistent_poverty_df = pd.read_csv( - persistent_poverty_csv, - dtype={self.GEOID_TRACT_FIELD_NAME: "string"}, - low_memory=False, - ) - # Load decennial census data census_decennial_csv = ( constants.DATA_PATH @@ -159,19 +179,26 @@ def extract(self) -> None: low_memory=False, ) - # Load COI data - child_opportunity_index_csv = ( - constants.DATA_PATH - / "dataset" - / "child_opportunity_index" - / "usa.csv" + # Load HRS data + hrs_csv = ( + constants.DATA_PATH / "dataset" / "historic_redlining" / "usa.csv" ) - self.child_opportunity_index_df = pd.read_csv( - child_opportunity_index_csv, + + self.hrs_df = pd.read_csv( + hrs_csv, dtype={self.GEOID_TRACT_FIELD_NAME: "string"}, low_memory=False, ) + national_tract_csv = constants.DATA_CENSUS_CSV_FILE_PATH + self.national_tract_df = pd.read_csv( + national_tract_csv, + names=[self.GEOID_TRACT_FIELD_NAME], + dtype={self.GEOID_TRACT_FIELD_NAME: "string"}, + low_memory=False, + header=None, + ) + def _join_tract_dfs(self, census_tract_dfs: list) -> pd.DataFrame: logger.info("Joining Census Tract dataframes") @@ -253,6 +280,7 @@ def _add_percentiles_to_df( df: pd.DataFrame, input_column_name: str, output_column_name_root: str, + drop_tracts: list = None, ascending: bool = True, ) -> pd.DataFrame: """Creates percentiles. @@ -262,98 +290,46 @@ def _add_percentiles_to_df( E.g., "PM2.5 exposure (percentile)". This will be for the entire country. - For an "apples-to-apples" comparison of urban tracts to other urban tracts, - and compare rural tracts to other rural tracts. - - This percentile will be created and returned as - f"{output_column_name_root}{field_names.PERCENTILE_URBAN_RURAL_FIELD_SUFFIX}". - E.g., "PM2.5 exposure (percentile urban/rural)". - This field exists for every tract, but for urban tracts this value will be the - percentile compared to other urban tracts, and for rural tracts this value - will be the percentile compared to other rural tracts. - - Specific methdology: - 1. Decide a methodology for confirming whether a tract counts as urban or - rural. Currently in the codebase, we use Geocorr to identify the % rural of - a tract, and mark the tract as rural if the percentage is >50% and urban - otherwise. This may or may not be the right methodology. - 2. Once tracts are marked as urban or rural, create one percentile rank - that only ranks urban tracts, and one percentile rank that only ranks rural - tracts. - 3. Combine into a single field. - `output_column_name_root` is different from `input_column_name` to enable the reverse percentile use case. In that use case, `input_column_name` may be something like "3rd grade reading proficiency" and `output_column_name_root` may be something like "Low 3rd grade reading proficiency". """ - if ( - output_column_name_root - != field_names.EXPECTED_AGRICULTURE_LOSS_RATE_FIELD - ): + + # We have two potential options for assessing how to calculate percentiles. + # For the vast majority of columns, we will simply calculate percentiles overall. + # However, for Linguistic Isolation and Agricultural Value Loss, there exist conditions + # for which we drop out tracts from consideration in the percentile. More details on those + # are below, for them, we provide a list of tracts to not include. + # Because of the fancy transformations below, I have removed the urban / rural percentiles, + # which are now deprecated. + if not drop_tracts: # Create the "basic" percentile. + ## note: I believe this is less performant than if we made a bunch of these PFS columns + ## and then concatenated the list. For the refactor! df[ f"{output_column_name_root}" f"{field_names.PERCENTILE_FIELD_SUFFIX}" ] = df[input_column_name].rank(pct=True, ascending=ascending) else: - # For agricultural loss, we are using whether there is value at all to determine percentile and then - # filling places where the value is False with 0 + tmp_series = df[input_column_name].where( + ~df[field_names.GEOID_TRACT_FIELD].isin(drop_tracts), + np.nan, + ) + logger.info( + f"Creating special case column for percentiles from {input_column_name}" + ) df[ f"{output_column_name_root}" f"{field_names.PERCENTILE_FIELD_SUFFIX}" - ] = ( - df.where( - df[field_names.AGRICULTURAL_VALUE_BOOL_FIELD].astype(float) - == 1.0 - )[input_column_name] - .rank(ascending=ascending, pct=True) - .fillna( - df[field_names.AGRICULTURAL_VALUE_BOOL_FIELD].astype(float) - ) - ) - - # Create the urban/rural percentiles. - urban_rural_percentile_fields_to_combine = [] - for (urban_or_rural_string, urban_heuristic_bool) in [ - ("urban", True), - ("rural", False), - ]: - # Create a field with only those values - this_category_only_value_field = ( - f"{input_column_name} (value {urban_or_rural_string} only)" - ) - df[this_category_only_value_field] = np.where( - df[field_names.URBAN_HEURISTIC_FIELD] == urban_heuristic_bool, - df[input_column_name], - None, - ) + ] = tmp_series.rank(ascending=ascending, pct=True) - # Calculate the percentile for only this category - this_category_only_percentile_field = ( - f"{output_column_name_root} " - f"(percentile {urban_or_rural_string} only)" - ) - df[this_category_only_percentile_field] = df[ - this_category_only_value_field - ].rank( - pct=True, - # Set ascending to the parameter value. - ascending=ascending, - ) - - # Add the field name to this list. Later, we'll combine this list. - urban_rural_percentile_fields_to_combine.append( - this_category_only_percentile_field - ) - - # Combine both urban and rural into one field: - df[ - f"{output_column_name_root}{field_names.PERCENTILE_URBAN_RURAL_FIELD_SUFFIX}" - ] = df[urban_rural_percentile_fields_to_combine].mean( - axis=1, skipna=True - ) + # Check that "drop tracts" were dropped (quicker than creating a fixture?) + assert df[df[field_names.GEOID_TRACT_FIELD].isin(drop_tracts)][ + f"{output_column_name_root}" + f"{field_names.PERCENTILE_FIELD_SUFFIX}" + ].isna().sum() == len(drop_tracts), "Not all tracts were dropped" return df @@ -363,19 +339,25 @@ def _prepare_initial_df(self) -> pd.DataFrame: # Join all the data sources that use census tracts census_tract_dfs = [ - self.census_df, + self.census_acs_df, self.hud_housing_df, self.cdc_places_df, self.cdc_life_expectancy_df, self.doe_energy_burden_df, self.ejscreen_df, self.geocorr_urban_rural_df, - self.persistent_poverty_df, self.national_risk_index_df, self.census_acs_median_incomes_df, self.census_decennial_df, self.census_2010_df, - self.child_opportunity_index_df, + self.hrs_df, + self.dot_travel_disadvantage_df, + self.fsf_flood_df, + self.fsf_fire_df, + self.nature_deprived_df, + self.eamlis_df, + self.fuds_df, + self.tribal_overlap_df, ] # Sanity check each data frame before merging. @@ -384,8 +366,22 @@ def _prepare_initial_df(self) -> pd.DataFrame: census_tract_df = self._join_tract_dfs(census_tract_dfs) - # If GEOID10s are read as numbers instead of strings, the initial 0 is dropped, - # and then we get too many CBG rows (one for 012345 and one for 12345). + # Drop tracts that don't exist in the 2010 tracts + pre_join_len = census_tract_df[field_names.GEOID_TRACT_FIELD].nunique() + + census_tract_df = census_tract_df.merge( + self.national_tract_df, + on="GEOID10_TRACT", + how="inner", + ) + assert ( + census_tract_df.shape[0] <= pre_join_len + ), "Join against national tract list ADDED rows" + logger.info( + "Dropped %s tracts not in the 2010 tract data", + pre_join_len + - census_tract_df[field_names.GEOID_TRACT_FIELD].nunique(), + ) # Now sanity-check the merged df. self._census_tract_df_sanity_check( @@ -405,8 +401,29 @@ def _prepare_initial_df(self) -> pd.DataFrame: df[field_names.MEDIAN_INCOME_FIELD] / df[field_names.AMI_FIELD] ) + self.ISLAND_DEMOGRAPHIC_BACKFILL_FIELDS = [ + field_names.PERCENT_BLACK_FIELD_NAME + + field_names.ISLAND_AREA_BACKFILL_SUFFIX, + field_names.PERCENT_AMERICAN_INDIAN_FIELD_NAME + + field_names.ISLAND_AREA_BACKFILL_SUFFIX, + field_names.PERCENT_ASIAN_FIELD_NAME + + field_names.ISLAND_AREA_BACKFILL_SUFFIX, + field_names.PERCENT_HAWAIIAN_FIELD_NAME + + field_names.ISLAND_AREA_BACKFILL_SUFFIX, + field_names.PERCENT_TWO_OR_MORE_RACES_FIELD_NAME + + field_names.ISLAND_AREA_BACKFILL_SUFFIX, + field_names.PERCENT_NON_HISPANIC_WHITE_FIELD_NAME + + field_names.ISLAND_AREA_BACKFILL_SUFFIX, + field_names.PERCENT_HISPANIC_FIELD_NAME + + field_names.ISLAND_AREA_BACKFILL_SUFFIX, + field_names.PERCENT_OTHER_RACE_FIELD_NAME + + field_names.ISLAND_AREA_BACKFILL_SUFFIX, + ] + + # Donut columns get added later numeric_columns = [ field_names.HOUSING_BURDEN_FIELD, + field_names.NO_KITCHEN_OR_INDOOR_PLUMBING_FIELD, field_names.TOTAL_POP_FIELD, field_names.MEDIAN_INCOME_AS_PERCENT_OF_STATE_FIELD, field_names.ASTHMA_FIELD, @@ -453,27 +470,55 @@ def _prepare_initial_df(self) -> pd.DataFrame: field_names.CENSUS_UNEMPLOYMENT_FIELD_2010, field_names.CENSUS_POVERTY_LESS_THAN_100_FPL_FIELD_2010, field_names.CENSUS_DECENNIAL_TOTAL_POPULATION_FIELD_2009, - field_names.EXTREME_HEAT_FIELD, - field_names.HEALTHY_FOOD_FIELD, - field_names.IMPENETRABLE_SURFACES_FIELD, - # We have to pass this boolean here in order to include it in ag value loss percentiles. - field_names.AGRICULTURAL_VALUE_BOOL_FIELD, - ] + field_names.UST_FIELD, + field_names.DOT_TRAVEL_BURDEN_FIELD, + field_names.FUTURE_FLOOD_RISK_FIELD, + field_names.FUTURE_WILDFIRE_RISK_FIELD, + field_names.TRACT_PERCENT_NON_NATURAL_FIELD_NAME, + field_names.POVERTY_LESS_THAN_200_FPL_IMPUTED_FIELD, + field_names.PERCENT_BLACK_FIELD_NAME, + field_names.PERCENT_AMERICAN_INDIAN_FIELD_NAME, + field_names.PERCENT_ASIAN_FIELD_NAME, + field_names.PERCENT_HAWAIIAN_FIELD_NAME, + field_names.PERCENT_TWO_OR_MORE_RACES_FIELD_NAME, + field_names.PERCENT_NON_HISPANIC_WHITE_FIELD_NAME, + field_names.PERCENT_HISPANIC_FIELD_NAME, + field_names.PERCENT_OTHER_RACE_FIELD_NAME, + field_names.PERCENT_AGE_UNDER_10, + field_names.PERCENT_AGE_10_TO_64, + field_names.PERCENT_AGE_OVER_64, + field_names.PERCENT_OF_TRIBAL_AREA_IN_TRACT, + field_names.COUNT_OF_TRIBAL_AREAS_IN_TRACT_AK, + field_names.COUNT_OF_TRIBAL_AREAS_IN_TRACT_CONUS, + field_names.PERCENT_OF_TRIBAL_AREA_IN_TRACT_DISPLAY, + ] + self.ISLAND_DEMOGRAPHIC_BACKFILL_FIELDS non_numeric_columns = [ self.GEOID_TRACT_FIELD_NAME, - field_names.PERSISTENT_POVERTY_FIELD, + field_names.TRACT_ELIGIBLE_FOR_NONNATURAL_THRESHOLD, + field_names.AGRICULTURAL_VALUE_BOOL_FIELD, + field_names.NAMES_OF_TRIBAL_AREAS_IN_TRACT, + ] + + boolean_columns = [ + field_names.AML_BOOLEAN, + field_names.IMPUTED_INCOME_FLAG_FIELD_NAME, + field_names.ELIGIBLE_FUDS_BINARY_FIELD_NAME, + field_names.HISTORIC_REDLINING_SCORE_EXCEEDED, + field_names.IS_TRIBAL_DAC, ] # For some columns, high values are "good", so we want to reverse the percentile # so that high values are "bad" and any scoring logic can still check if it's # >= some threshold. + # Note that we must use dataclass here instead of namedtuples on account of pylint # TODO: Add more fields here. # https://github.com/usds/justice40-tool/issues/970 - ReversePercentile = namedtuple( - typename="ReversePercentile", - field_names=["field_name", "low_field_name"], - ) + @dataclass + class ReversePercentile: + field_name: str + low_field_name: str + reverse_percentiles = [ # This dictionary follows the format: # : @@ -481,10 +526,6 @@ def _prepare_initial_df(self) -> pd.DataFrame: # This low field will not exist yet, it is only calculated for the # percentile. # TODO: This will come from the YAML dataset config - ReversePercentile( - field_name=field_names.READING_FIELD, - low_field_name=field_names.LOW_READING_FIELD, - ), ReversePercentile( field_name=field_names.MEDIAN_INCOME_AS_PERCENT_OF_AMI_FIELD, low_field_name=field_names.LOW_MEDIAN_INCOME_AS_PERCENT_OF_AMI_FIELD, @@ -503,40 +544,90 @@ def _prepare_initial_df(self) -> pd.DataFrame: non_numeric_columns + numeric_columns + [rp.field_name for rp in reverse_percentiles] + + boolean_columns ) df_copy = df[columns_to_keep].copy() + assert len(numeric_columns) == len( + set(numeric_columns) + ), "You have a double-entered column in the numeric columns list" + df_copy[numeric_columns] = df_copy[numeric_columns].apply(pd.to_numeric) + # coerce all booleans to bools preserving nan character + # since this is a boolean, need to use `None` + for col in boolean_columns: + tmp = df_copy[col].copy() + df_copy[col] = np.where(tmp.notna(), tmp.astype(bool), None) + logger.info(f"{col} contains {df_copy[col].isna().sum()} nulls.") + # Convert all columns to numeric and do math + # Note that we have a few special conditions here and we handle them explicitly. + # For *Linguistic Isolation*, we do NOT want to include Puerto Rico in the percentile + # calculation. This is because linguistic isolation as a category doesn't make much sense + # in Puerto Rico, where Spanish is a recognized language. Thus, we construct a list + # of tracts to drop from the percentile calculation. + # + # For *Expected Agricultural Loss*, we only want to include in the percentile tracts + # in which there is some agricultural value. This helps us adjust the data such that we have + # the ability to discern which tracts truly are at the 90th percentile, since many tracts have 0 value. + # + # For *Non-Natural Space*, we may only want to include tracts that have at least 35 acreas, I think. This will + # get rid of tracts that we think are aberrations statistically. Right now, we have left this out + # pending ground-truthing. + # + # For *Traffic Barriers*, we want to exclude low population tracts, which may have high burden because they are + # low population alone. We set this low population constant in the if statement. + for numeric_column in numeric_columns: + drop_tracts = [] + if ( + numeric_column + == field_names.EXPECTED_AGRICULTURE_LOSS_RATE_FIELD + ): + drop_tracts = df_copy[ + ~df_copy[field_names.AGRICULTURAL_VALUE_BOOL_FIELD] + .astype(bool) + .fillna(False) + ][field_names.GEOID_TRACT_FIELD].to_list() + logger.info( + f"Dropping {len(drop_tracts)} tracts from Agricultural Value Loss" + ) + elif numeric_column == field_names.LINGUISTIC_ISO_FIELD: + drop_tracts = df_copy[ + # 72 is the FIPS code for Puerto Rico + df_copy[field_names.GEOID_TRACT_FIELD].str.startswith("72") + ][field_names.GEOID_TRACT_FIELD].to_list() + logger.info( + f"Dropping {len(drop_tracts)} tracts from Linguistic Isolation" + ) + + elif numeric_column in [ + field_names.DOT_TRAVEL_BURDEN_FIELD, + field_names.EXPECTED_POPULATION_LOSS_RATE_FIELD, + ]: + # Not having any people appears to be correlated with transit burden, but also doesn't represent + # on the ground need. For now, we remove these tracts from the percentile calculation.ß + # Similarly, we want to exclude low population tracts from FEMA's index + low_population = 20 + drop_tracts = df_copy[ + df_copy[field_names.TOTAL_POP_FIELD].fillna(0) + <= low_population + ][field_names.GEOID_TRACT_FIELD].to_list() + logger.info( + f"Dropping {len(drop_tracts)} tracts from DOT traffic burden" + ) + df_copy = self._add_percentiles_to_df( df=df_copy, input_column_name=numeric_column, # For this use case, the input name and output name root are the same. output_column_name_root=numeric_column, ascending=True, + drop_tracts=drop_tracts, ) - # Min-max normalization: - # ( - # Observed value - # - minimum of all values - # ) - # divided by - # ( - # Maximum of all values - # - minimum of all values - # ) - min_value = df_copy[numeric_column].min(skipna=True) - - max_value = df_copy[numeric_column].max(skipna=True) - - df_copy[f"{numeric_column}{field_names.MIN_MAX_FIELD_SUFFIX}"] = ( - df_copy[numeric_column] - min_value - ) / (max_value - min_value) - # Create reversed percentiles for these fields for reverse_percentile in reverse_percentiles: # Calculate reverse percentiles @@ -566,6 +657,32 @@ def _prepare_initial_df(self) -> pd.DataFrame: return df_copy + @staticmethod + def _get_island_areas(df: pd.DataFrame) -> pd.Series: + return ( + df[field_names.GEOID_TRACT_FIELD] + .str[:2] + .isin(constants.TILES_ISLAND_AREA_FIPS_CODES) + ) + + def _backfill_island_demographics(self, df: pd.DataFrame) -> pd.DataFrame: + logger.info("Backfilling island demographic data") + island_index = self._get_island_areas(df) + for backfill_field_name in self.ISLAND_DEMOGRAPHIC_BACKFILL_FIELDS: + actual_field_name = backfill_field_name.replace( + field_names.ISLAND_AREA_BACKFILL_SUFFIX, "" + ) + df.loc[island_index, actual_field_name] = df.loc[ + island_index, backfill_field_name + ] + df = df.drop(columns=self.ISLAND_DEMOGRAPHIC_BACKFILL_FIELDS) + + df.loc[island_index, field_names.TOTAL_POP_FIELD] = df.loc[ + island_index, field_names.COMBINED_CENSUS_TOTAL_POPULATION_2010 + ] + + return df + def transform(self) -> None: logger.info("Transforming Score Data") @@ -575,8 +692,13 @@ def transform(self) -> None: # calculate scores self.df = ScoreRunner(df=self.df).calculate_scores() + # We add island demographic data since it doesn't matter to the score anyway + 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 d7aa53b29..047ae80d6 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__) @@ -41,23 +37,25 @@ def __init__(self, data_source: str = None): self.SCORE_CSV_PATH = self.DATA_PATH / "score" / "csv" self.TILE_SCORE_CSV = self.SCORE_CSV_PATH / "tiles" / "usa.csv" - self.DATA_SOURCE = data_source self.CENSUS_USA_GEOJSON = ( self.DATA_PATH / "census" / "geojson" / "us.json" ) - # Import the shortened name for Score M percentile ("SM_PFS") that's used on the - # tiles. + # Import the shortened name for Score N to be used on tiles. + # We should no longer be using PFS + + ## TODO: We really should not have this any longer changing self.TARGET_SCORE_SHORT_FIELD = constants.TILES_SCORE_COLUMNS[ - field_names.SCORE_M + field_names.PERCENTILE_FIELD_SUFFIX + field_names.FINAL_SCORE_N_BOOLEAN ] - self.TARGET_SCORE_RENAME_TO = "M_SCORE" + self.TARGET_SCORE_RENAME_TO = "SCORE" # Import the shortened name for tract ("GTF") that's used on the tiles. self.TRACT_SHORT_FIELD = constants.TILES_SCORE_COLUMNS[ field_names.GEOID_TRACT_FIELD ] self.GEOMETRY_FIELD_NAME = "geometry" + self.LAND_FIELD_NAME = "ALAND10" # We will adjust this upwards while there is some fractional value # in the score. This is a starting value. @@ -84,17 +82,28 @@ def extract(self) -> None: ) logger.info("Reading US GeoJSON (~6 minutes)") - self.geojson_usa_df = gpd.read_file( + full_geojson_usa_df = gpd.read_file( self.CENSUS_USA_GEOJSON, dtype={self.GEOID_FIELD_NAME: "string"}, - usecols=[self.GEOID_FIELD_NAME, self.GEOMETRY_FIELD_NAME], + usecols=[ + self.GEOID_FIELD_NAME, + self.GEOMETRY_FIELD_NAME, + self.LAND_FIELD_NAME, + ], low_memory=False, ) + # We only want to keep tracts to visualize that have non-0 land + self.geojson_usa_df = full_geojson_usa_df[ + full_geojson_usa_df[self.LAND_FIELD_NAME] > 0 + ] + logger.info("Reading score CSV") self.score_usa_df = pd.read_csv( self.TILE_SCORE_CSV, - dtype={self.TRACT_SHORT_FIELD: "string"}, + dtype={ + self.TRACT_SHORT_FIELD: str, + }, low_memory=False, ) @@ -134,7 +143,7 @@ def transform(self) -> None: columns={self.TARGET_SCORE_SHORT_FIELD: self.TARGET_SCORE_RENAME_TO} ) - logger.info("Converting to geojson into tracts") + logger.info("Converting geojson into geodf with tracts") usa_tracts = gpd.GeoDataFrame( usa_tracts, columns=[ @@ -270,8 +279,10 @@ def load(self) -> None: # Create separate threads to run each write to disk. def write_high_to_file(): logger.info("Writing usa-high (~9 minutes)") + self.geojson_score_usa_high.to_file( - filename=self.SCORE_HIGH_GEOJSON, driver="GeoJSON" + filename=self.SCORE_HIGH_GEOJSON, + driver="GeoJSON", ) logger.info("Completed writing usa-high") @@ -294,7 +305,6 @@ def create_esri_codebook(codebook): pd.Series(codebook) .reset_index() .rename( - # kept as strings because no downstream impacts columns={ 0: internal_column_name_field, "index": shapefile_column_field, 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 c88ae8a86..87fbecda2 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,35 +1,29 @@ -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__) # Define the DAC variable -DISADVANTAGED_COMMUNITIES_FIELD = field_names.SCORE_M_COMMUNITIES +DISADVANTAGED_COMMUNITIES_FIELD = field_names.SCORE_N_COMMUNITIES class PostScoreETL(ExtractTransformLoad): @@ -45,7 +39,6 @@ def __init__(self, data_source: str = None): self.input_counties_df: pd.DataFrame self.input_states_df: pd.DataFrame self.input_score_df: pd.DataFrame - self.input_national_tract_df: pd.DataFrame self.output_score_county_state_merged_df: pd.DataFrame self.output_score_tiles_df: pd.DataFrame @@ -92,7 +85,9 @@ def _extract_states(self, state_path: Path) -> pd.DataFrame: def _extract_score(self, score_path: Path) -> pd.DataFrame: logger.info("Reading Score CSV") df = pd.read_csv( - score_path, dtype={self.GEOID_TRACT_FIELD_NAME: "string"} + score_path, + dtype={self.GEOID_TRACT_FIELD_NAME: "string"}, + low_memory=False, ) # Convert total population to an int @@ -102,18 +97,6 @@ def _extract_score(self, score_path: Path) -> pd.DataFrame: return df - def _extract_national_tract( - self, national_tract_path: Path - ) -> pd.DataFrame: - logger.info("Reading national tract file") - return pd.read_csv( - national_tract_path, - names=[self.GEOID_TRACT_FIELD_NAME], - dtype={self.GEOID_TRACT_FIELD_NAME: "string"}, - low_memory=False, - header=None, - ) - def extract(self) -> None: logger.info("Starting Extraction") @@ -136,9 +119,6 @@ def extract(self) -> None: self.input_score_df = self._extract_score( constants.DATA_SCORE_CSV_FULL_FILE_PATH ) - self.input_national_tract_df = self._extract_national_tract( - constants.DATA_CENSUS_CSV_FILE_PATH - ) def _transform_counties( self, initial_counties_df: pd.DataFrame @@ -185,7 +165,6 @@ def _transform_score(self, initial_score_df: pd.DataFrame) -> pd.DataFrame: def _create_score_data( self, - national_tract_df: pd.DataFrame, counties_df: pd.DataFrame, states_df: pd.DataFrame, score_df: pd.DataFrame, @@ -217,28 +196,11 @@ def _create_score_data( right_on=self.STATE_CODE_COLUMN, how="left", ) - - # check if there are census tracts without score - logger.info("Removing tract rows without score") - - # merge census tracts with score - merged_df = national_tract_df.merge( - score_county_state_merged, - on=self.GEOID_TRACT_FIELD_NAME, - how="left", - ) - - # recast population to integer - score_county_state_merged["Total population"] = ( - merged_df["Total population"].fillna(0).astype(int) - ) - - de_duplicated_df = merged_df.dropna( - subset=[DISADVANTAGED_COMMUNITIES_FIELD] - ) - + assert score_county_merged[ + self.GEOID_TRACT_FIELD_NAME + ].is_unique, "Merging state/county data introduced duplicate rows" # set the score to the new df - return de_duplicated_df + return score_county_state_merged def _create_tile_data( self, @@ -254,8 +216,8 @@ def _create_tile_data( tiles_score_column_titles ].copy() - # Currently, we do not want USVI or Guam on the map, so this will drop all - # rows with the FIPS codes (first two digits of the census tract) + # We may not want some states/territories on the map, so this will drop all + # rows with those FIPS codes (first two digits of the census tract) logger.info( f"Dropping specified FIPS codes from tile data: {constants.DROP_FIPS_CODES}" ) @@ -269,16 +231,15 @@ def _create_tile_data( score_tiles = score_tiles[ ~score_tiles[field_names.GEOID_TRACT_FIELD].isin(tracts_to_drop) ] - - score_tiles[constants.TILES_SCORE_FLOAT_COLUMNS] = score_tiles[ - constants.TILES_SCORE_FLOAT_COLUMNS - ].apply( - func=lambda series: floor_series( - series=series, - number_of_decimals=constants.TILES_ROUND_NUM_DECIMALS, - ), - axis=0, - ) + float_cols = [ + col + for col, col_dtype in score_tiles.dtypes.items() + if col_dtype == np.dtype("float64") + ] + scale_factor = 10**constants.TILES_ROUND_NUM_DECIMALS + score_tiles[float_cols] = ( + score_tiles[float_cols] * scale_factor + ).apply(np.floor) / scale_factor logger.info("Adding fields for island areas and Puerto Rico") # The below operation constructs variables for the front end. @@ -427,7 +388,6 @@ def transform(self) -> None: transformed_score = self._transform_score(self.input_score_df) output_score_county_state_merged_df = self._create_score_data( - self.input_national_tract_df, transformed_counties, transformed_states, transformed_score, @@ -521,8 +481,6 @@ def _load_tile_csv( score_tiles_df.to_csv(tile_score_path, index=False, encoding="utf-8") def _load_downloadable_zip(self, downloadable_info_path: Path) -> None: - logger.info("Saving Downloadable CSV") - downloadable_info_path.mkdir(parents=True, exist_ok=True) csv_path = constants.SCORE_DOWNLOADABLE_CSV_FILE_PATH excel_path = constants.SCORE_DOWNLOADABLE_EXCEL_FILE_PATH @@ -583,6 +541,22 @@ def _load_downloadable_zip(self, downloadable_info_path: Path) -> None: "fields" ], ) + assert codebook_df["csv_label"].equals(codebook_df["excel_label"]), ( + "CSV and Excel differ. If that's intentional, " + "remove this assertion. Otherwise, fix it." + ) + # Check the codebook to make sure it matches the download files + assert not set(codebook_df["csv_label"].dropna()).difference( + downloadable_df.columns + ), "Codebook is missing columns from downloadable files" + assert ( + len( + downloadable_df.columns.difference( + set(codebook_df["csv_label"]) + ) + ) + == 0 + ), "Codebook has columns the downloadable files do not" # load codebook to disk codebook_df.to_csv(codebook_path, index=False) 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 f52226204..66ee71316 100644 --- a/data/data-pipeline/data_pipeline/etl/score/etl_utils.py +++ b/data/data-pipeline/data_pipeline/etl/score/etl_utils.py @@ -1,16 +1,21 @@ import os import sys -from pathlib import Path +import typing 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.utils import ( - download_file_from_url, - get_module_logger, -) +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.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__) @@ -91,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) @@ -305,3 +310,106 @@ def create_codebook( return merged_codebook_df[constants.CODEBOOK_COLUMNS].rename( columns={constants.CEJST_SCORE_COLUMN_NAME: "Description"} ) + + +# pylint: disable=too-many-arguments +def compare_to_list_of_expected_state_fips_codes( + actual_state_fips_codes: typing.List[str], + continental_us_expected: bool = True, + alaska_and_hawaii_expected: bool = True, + puerto_rico_expected: bool = True, + island_areas_expected: bool = True, + additional_fips_codes_not_expected: typing.List[str] = None, + dataset_name: str = None, +) -> None: + """Check whether a list of state/territory FIPS codes match expectations. + + Args: + actual_state_fips_codes (List of str): Actual state codes observed in data + continental_us_expected (bool, optional): Do you expect the continental nation + (DC & states except for Alaska and Hawaii) to be represented in data? + alaska_and_hawaii_expected (bool, optional): Do you expect Alaska and Hawaii + to be represented in the data? Note: if only *1* of Alaska and Hawaii are + not expected to be included, do not use this argument -- instead, + use `additional_fips_codes_not_expected` for the 1 state you expected to + be missing. + puerto_rico_expected (bool, optional): Do you expect PR to be represented in data? + island_areas_expected (bool, optional): Do you expect Island Areas to be represented in + data? + additional_fips_codes_not_expected (List of str, optional): Additional state codes + not expected in the data. For example, the data may be known to be missing + data from Maine and Wisconsin. + dataset_name (str, optional): The name of the data set, used only in printing an + error message. (This is helpful for debugging during parallel etl runs.) + + Returns: + None: Does not return any values. + + Raises: + ValueError: if lists do not match expectations. + """ + # Setting default argument of [] here to avoid mutability problems. + if additional_fips_codes_not_expected is None: + additional_fips_codes_not_expected = [] + + # Cast input to a set. + actual_state_fips_codes_set = set(actual_state_fips_codes) + + # Start with the list of all FIPS codes for all states and territories. + expected_states_set = set(get_state_fips_codes(settings.DATA_PATH)) + + # If continental US is not expected to be included, remove it from the + # expected states set. + if not continental_us_expected: + expected_states_set = expected_states_set.difference( + TILES_CONTINENTAL_US_FIPS_CODE + ) + + # If both Alaska and Hawaii are not expected to be included, remove them from the + # expected states set. + # Note: if only *1* of Alaska and Hawaii are not expected to be included, + # do not use this argument -- instead, use `additional_fips_codes_not_expected` + # for the 1 state you expected to be missing. + if not alaska_and_hawaii_expected: + expected_states_set = expected_states_set.difference( + TILES_ALASKA_AND_HAWAII_FIPS_CODE + ) + + # If Puerto Rico is not expected to be included, remove it from the expected + # states set. + if not puerto_rico_expected: + expected_states_set = expected_states_set.difference( + TILES_PUERTO_RICO_FIPS_CODE + ) + + # If island areas are not expected to be included, remove them from the expected + # states set. + if not island_areas_expected: + expected_states_set = expected_states_set.difference( + TILES_ISLAND_AREA_FIPS_CODES + ) + + # If additional FIPS codes are not expected to be included, remove them from the + # expected states set. + expected_states_set = expected_states_set.difference( + additional_fips_codes_not_expected + ) + + dataset_name_phrase = ( + f" for dataset `{dataset_name}`" if dataset_name is not None else "" + ) + + if expected_states_set != actual_state_fips_codes_set: + raise ValueError( + f"The states and territories in the data{dataset_name_phrase} are not " + f"as expected.\n" + "FIPS state codes expected that are not present in the data:\n" + f"{sorted(list(expected_states_set - actual_state_fips_codes_set))}\n" + "FIPS state codes in the data that were not expected:\n" + f"{sorted(list(actual_state_fips_codes_set - expected_states_set))}\n" + ) + else: + logger.info( + "Data matches expected state and territory representation" + f"{dataset_name_phrase}." + ) 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 0e80bc5b1..d485c2140 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): @@ -77,7 +79,7 @@ class LoadField: long_name: str short_name: str module_name: str - input_geoid_tract_field_name: str load_fields: List[LoadField] + input_geoid_tract_field_name: Optional[str] = None datasets: List[Dataset] 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 8baa56fb4..8353869d2 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 @@ 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/score_data_initial.csv b/data/data-pipeline/data_pipeline/etl/score/tests/sample_data/score_data_initial.csv index 039230944..e8b6c06a2 100644 --- a/data/data-pipeline/data_pipeline/etl/score/tests/sample_data/score_data_initial.csv +++ b/data/data-pipeline/data_pipeline/etl/score/tests/sample_data/score_data_initial.csv @@ -1,3 +1,3 @@ -GEOID10_TRACT,Persistent Poverty Census Tract,Housing burden (percent),Total population,Median household income (% of state median household income),Current asthma among adults aged greater than or equal to 18 years,Coronary heart disease among adults aged greater than or equal to 18 years,Cancer (excluding skin cancer) among adults aged greater than or equal to 18 years,Current lack of health insurance among adults aged 18-64 years,Diagnosed diabetes among adults aged greater than or equal to 18 years,Physical health not good for greater than or equal to 14 days among adults aged greater than or equal to 18 years,Percent of individuals < 100% Federal Poverty Line,Percent of individuals < 150% Federal Poverty Line,Percent of individuals below 200% Federal Poverty Line,Area Median Income (State or metropolitan),Median household income in the past 12 months,Energy burden,FEMA Risk Index Expected Annual Loss Score,Urban Heuristic Flag,Air toxics cancer risk,Respiratory hazard index,Diesel particulate matter exposure,PM2.5 in the air,Ozone,Traffic proximity and volume,Proximity to Risk Management Plan (RMP) facilities,Proximity to hazardous waste sites,Proximity to NPL sites,Wastewater discharge,Percent pre-1960s housing (lead paint indicator),Individuals under 5 years old,Individuals over 64 years old,Linguistic isolation (percent),Percent of households in linguistic isolation,Poverty (Less than 200% of federal poverty line),Percent individuals age 25 or over with less than high school degree,Unemployment (percent),Median value ($) of owner-occupied housing units,Percent enrollment in college or graduate school,Percent of population not currently enrolled in college or graduate school,Expected building loss rate (Natural Hazards Risk Index),Expected agricultural loss rate (Natural Hazards Risk Index),Expected population loss rate (Natural Hazards Risk Index),Percent individuals age 25 or over with less than high school degree in 2009,Percentage households below 100% of federal poverty line in 2009,Unemployment (percent) in 2009,Unemployment (percent) in 2010,Percent of individuals less than 100% Federal Poverty Line in 2010,Total population in 2009,Summer days above 90F,Percent low access to healthy food,Percent impenetrable surface areas,Contains agricultural value,Third grade reading proficiency,Median household income as a percent of area median income,Life expectancy (years),Median household income as a percent of territory median income in 2009,Housing burden (percent) (percentile),Housing burden (percent) (value urban only),Housing burden (percent) (percentile urban only),Housing burden (percent) (value rural only),Housing burden (percent) (percentile rural only),Housing burden (percent) (percentile urban/rural),Housing burden (percent) (min-max normalized),Total population (percentile),Total population (value urban only),Total population (percentile urban only),Total population (value rural only),Total population (percentile rural only),Total population (percentile urban/rural),Total population (min-max normalized),Median household income (% of state median household income) (percentile),Median household income (% of state median household income) (value urban only),Median household income (% of state median household income) (percentile urban only),Median household income (% of state median household income) (value rural only),Median household income (% of state median household income) (percentile rural only),Median household income (% of state median household income) (percentile urban/rural),Median household income (% of state median household income) (min-max normalized),Current asthma among adults aged greater than or equal to 18 years (percentile),Current asthma among adults aged greater than or equal to 18 years (value urban only),Current asthma among adults aged greater than or equal to 18 years (percentile urban only),Current asthma among adults aged greater than or equal to 18 years (value rural only),Current asthma among adults aged greater than or equal to 18 years (percentile rural only),Current asthma among adults aged greater than or equal to 18 years (percentile urban/rural),Current asthma among adults aged greater than or equal to 18 years (min-max normalized),Coronary heart disease among adults aged greater than or equal to 18 years (percentile),Coronary heart disease among adults aged greater than or equal to 18 years (value urban only),Coronary heart disease among adults aged greater than or equal to 18 years (percentile urban only),Coronary heart disease among adults aged greater than or equal to 18 years (value rural only),Coronary heart disease among adults aged greater than or equal to 18 years (percentile rural only),Coronary heart disease among adults aged greater than or equal to 18 years (percentile urban/rural),Coronary heart disease among adults aged greater than or equal to 18 years (min-max normalized),Cancer (excluding skin cancer) among adults aged greater than or equal to 18 years (percentile),Cancer (excluding skin cancer) among adults aged greater than or equal to 18 years (value urban only),Cancer (excluding skin cancer) among adults aged greater than or equal to 18 years (percentile urban only),Cancer (excluding skin cancer) among adults aged greater than or equal to 18 years (value rural only),Cancer (excluding skin cancer) among adults aged greater than or equal to 18 years (percentile rural only),Cancer (excluding skin cancer) among adults aged greater than or equal to 18 years (percentile urban/rural),Cancer (excluding skin cancer) among adults aged greater than or equal to 18 years (min-max normalized),Current lack of health insurance among adults aged 18-64 years (percentile),Current lack of health insurance among adults aged 18-64 years (value urban only),Current lack of health insurance among adults aged 18-64 years (percentile urban only),Current lack of health insurance among adults aged 18-64 years (value rural only),Current lack of health insurance among adults aged 18-64 years (percentile rural only),Current lack of health insurance among adults aged 18-64 years (percentile urban/rural),Current lack of health insurance among adults aged 18-64 years (min-max normalized),Diagnosed diabetes among adults aged greater than or equal to 18 years (percentile),Diagnosed diabetes among adults aged greater than or equal to 18 years (value urban only),Diagnosed diabetes among adults aged greater than or equal to 18 years (percentile urban only),Diagnosed diabetes among adults aged greater than or equal to 18 years (value rural only),Diagnosed diabetes among adults aged greater than or equal to 18 years (percentile rural only),Diagnosed diabetes among adults aged greater than or equal to 18 years (percentile urban/rural),Diagnosed diabetes among adults aged greater than or equal to 18 years (min-max normalized),Physical health not good for greater than or equal to 14 days among adults aged greater than or equal to 18 years (percentile),Physical health not good for greater than or equal to 14 days among adults aged greater than or equal to 18 years (value urban only),Physical health not good for greater than or equal to 14 days among adults aged greater than or equal to 18 years (percentile urban only),Physical health not good for greater than or equal to 14 days among adults aged greater than or equal to 18 years (value rural only),Physical health not good for greater than or equal to 14 days among adults aged greater than or equal to 18 years (percentile rural only),Physical health not good for greater than or equal to 14 days among adults aged greater than or equal to 18 years (percentile urban/rural),Physical health not good for greater than or equal to 14 days among adults aged greater than or equal to 18 years (min-max normalized),Percent of individuals < 100% Federal Poverty Line (percentile),Percent of individuals < 100% Federal Poverty Line (value urban only),Percent of individuals < 100% Federal Poverty Line (percentile urban only),Percent of individuals < 100% Federal Poverty Line (value rural only),Percent of individuals < 100% Federal Poverty Line (percentile rural only),Percent of individuals < 100% Federal Poverty Line (percentile urban/rural),Percent of individuals < 100% Federal Poverty Line (min-max normalized),Percent of individuals < 150% Federal Poverty Line (percentile),Percent of individuals < 150% Federal Poverty Line (value urban only),Percent of individuals < 150% Federal Poverty Line (percentile urban only),Percent of individuals < 150% Federal Poverty Line (value rural only),Percent of individuals < 150% Federal Poverty Line (percentile rural only),Percent of individuals < 150% Federal Poverty Line (percentile urban/rural),Percent of individuals < 150% Federal Poverty Line (min-max normalized),Percent of individuals below 200% Federal Poverty Line (percentile),Percent of individuals below 200% Federal Poverty Line (value urban only),Percent of individuals below 200% Federal Poverty Line (percentile urban only),Percent of individuals below 200% Federal Poverty Line (value rural only),Percent of individuals below 200% Federal Poverty Line (percentile rural only),Percent of individuals below 200% Federal Poverty Line (percentile urban/rural),Percent of individuals below 200% Federal Poverty Line (min-max normalized),Area Median Income (State or metropolitan) (percentile),Area Median Income (State or metropolitan) (value urban only),Area Median Income (State or metropolitan) (percentile urban only),Area Median Income (State or metropolitan) (value rural only),Area Median Income (State or metropolitan) (percentile rural only),Area Median Income (State or metropolitan) (percentile urban/rural),Area Median Income (State or metropolitan) (min-max normalized),Median household income in the past 12 months (percentile),Median household income in the past 12 months (value urban only),Median household income in the past 12 months (percentile urban only),Median household income in the past 12 months (value rural only),Median household income in the past 12 months (percentile rural only),Median household income in the past 12 months (percentile urban/rural),Median household income in the past 12 months (min-max normalized),Energy burden (percentile),Energy burden (value urban only),Energy burden (percentile urban only),Energy burden (value rural only),Energy burden (percentile rural only),Energy burden (percentile urban/rural),Energy burden (min-max normalized),FEMA Risk Index Expected Annual Loss Score (percentile),FEMA Risk Index Expected Annual Loss Score (value urban only),FEMA Risk Index Expected Annual Loss Score (percentile urban only),FEMA Risk Index Expected Annual Loss Score (value rural only),FEMA Risk Index Expected Annual Loss Score (percentile rural only),FEMA Risk Index Expected Annual Loss Score (percentile urban/rural),FEMA Risk Index Expected Annual Loss Score (min-max normalized),Urban Heuristic Flag (percentile),Urban Heuristic Flag (value urban only),Urban Heuristic Flag (percentile urban only),Urban Heuristic Flag (value rural only),Urban Heuristic Flag (percentile rural only),Urban Heuristic Flag (percentile urban/rural),Urban Heuristic Flag (min-max normalized),Air toxics cancer risk (percentile),Air toxics cancer risk (value urban only),Air toxics cancer risk (percentile urban only),Air toxics cancer risk (value rural only),Air toxics cancer risk (percentile rural only),Air toxics cancer risk (percentile urban/rural),Air toxics cancer risk (min-max normalized),Respiratory hazard index (percentile),Respiratory hazard index (value urban only),Respiratory hazard index (percentile urban only),Respiratory hazard index (value rural only),Respiratory hazard index (percentile rural only),Respiratory hazard index (percentile urban/rural),Respiratory hazard index (min-max normalized),Diesel particulate matter exposure (percentile),Diesel particulate matter exposure (value urban only),Diesel particulate matter exposure (percentile urban only),Diesel particulate matter exposure (value rural only),Diesel particulate matter exposure (percentile rural only),Diesel particulate matter exposure (percentile urban/rural),Diesel particulate matter exposure (min-max normalized),PM2.5 in the air (percentile),PM2.5 in the air (value urban only),PM2.5 in the air (percentile urban only),PM2.5 in the air (value rural only),PM2.5 in the air (percentile rural only),PM2.5 in the air (percentile urban/rural),PM2.5 in the air (min-max normalized),Ozone (percentile),Ozone (value urban only),Ozone (percentile urban only),Ozone (value rural only),Ozone (percentile rural only),Ozone (percentile urban/rural),Ozone (min-max normalized),Traffic proximity and volume (percentile),Traffic proximity and volume (value urban only),Traffic proximity and volume (percentile urban only),Traffic proximity and volume (value rural only),Traffic proximity and volume (percentile rural only),Traffic proximity and volume (percentile urban/rural),Traffic proximity and volume (min-max normalized),Proximity to Risk Management Plan (RMP) facilities (percentile),Proximity to Risk Management Plan (RMP) facilities (value urban only),Proximity to Risk Management Plan (RMP) facilities (percentile urban only),Proximity to Risk Management Plan (RMP) facilities (value rural only),Proximity to Risk Management Plan (RMP) facilities (percentile rural only),Proximity to Risk Management Plan (RMP) facilities (percentile urban/rural),Proximity to Risk Management Plan (RMP) facilities (min-max normalized),Proximity to hazardous waste sites (percentile),Proximity to hazardous waste sites (value urban only),Proximity to hazardous waste sites (percentile urban only),Proximity to hazardous waste sites (value rural only),Proximity to hazardous waste sites (percentile rural only),Proximity to hazardous waste sites (percentile urban/rural),Proximity to hazardous waste sites (min-max normalized),Proximity to NPL sites (percentile),Proximity to NPL sites (value urban only),Proximity to NPL sites (percentile urban only),Proximity to NPL sites (value rural only),Proximity to NPL sites (percentile rural only),Proximity to NPL sites (percentile urban/rural),Proximity to NPL sites (min-max normalized),Wastewater discharge (percentile),Wastewater discharge (value urban only),Wastewater discharge (percentile urban only),Wastewater discharge (value rural only),Wastewater discharge (percentile rural only),Wastewater discharge (percentile urban/rural),Wastewater discharge (min-max normalized),Percent pre-1960s housing (lead paint indicator) (percentile),Percent pre-1960s housing (lead paint indicator) (value urban only),Percent pre-1960s housing (lead paint indicator) (percentile urban only),Percent pre-1960s housing (lead paint indicator) (value rural only),Percent pre-1960s housing (lead paint indicator) (percentile rural only),Percent pre-1960s housing (lead paint indicator) (percentile urban/rural),Percent pre-1960s housing (lead paint indicator) (min-max normalized),Individuals under 5 years old (percentile),Individuals under 5 years old (value urban only),Individuals under 5 years old (percentile urban only),Individuals under 5 years old (value rural only),Individuals under 5 years old (percentile rural only),Individuals under 5 years old (percentile urban/rural),Individuals under 5 years old (min-max normalized),Individuals over 64 years old (percentile),Individuals over 64 years old (value urban only),Individuals over 64 years old (percentile urban only),Individuals over 64 years old (value rural only),Individuals over 64 years old (percentile rural only),Individuals over 64 years old (percentile urban/rural),Individuals over 64 years old (min-max normalized),Linguistic isolation (percent) (percentile),Linguistic isolation (percent) (value urban only),Linguistic isolation (percent) (percentile urban only),Linguistic isolation (percent) (value rural only),Linguistic isolation (percent) (percentile rural only),Linguistic isolation (percent) (percentile urban/rural),Linguistic isolation (percent) (min-max normalized),Percent of households in linguistic isolation (percentile),Percent of households in linguistic isolation (value urban only),Percent of households in linguistic isolation (percentile urban only),Percent of households in linguistic isolation (value rural only),Percent of households in linguistic isolation (percentile rural only),Percent of households in linguistic isolation (percentile urban/rural),Percent of households in linguistic isolation (min-max normalized),Poverty (Less than 200% of federal poverty line) (percentile),Poverty (Less than 200% of federal poverty line) (value urban only),Poverty (Less than 200% of federal poverty line) (percentile urban only),Poverty (Less than 200% of federal poverty line) (value rural only),Poverty (Less than 200% of federal poverty line) (percentile rural only),Poverty (Less than 200% of federal poverty line) (percentile urban/rural),Poverty (Less than 200% of federal poverty line) (min-max normalized),Percent individuals age 25 or over with less than high school degree (percentile),Percent individuals age 25 or over with less than high school degree (value urban only),Percent individuals age 25 or over with less than high school degree (percentile urban only),Percent individuals age 25 or over with less than high school degree (value rural only),Percent individuals age 25 or over with less than high school degree (percentile rural only),Percent individuals age 25 or over with less than high school degree (percentile urban/rural),Percent individuals age 25 or over with less than high school degree (min-max normalized),Unemployment (percent) (percentile),Unemployment (percent) (value urban only),Unemployment (percent) (percentile urban only),Unemployment (percent) (value rural only),Unemployment (percent) (percentile rural only),Unemployment (percent) (percentile urban/rural),Unemployment (percent) (min-max normalized),Median value ($) of owner-occupied housing units (percentile),Median value ($) of owner-occupied housing units (value urban only),Median value ($) of owner-occupied housing units (percentile urban only),Median value ($) of owner-occupied housing units (value rural only),Median value ($) of owner-occupied housing units (percentile rural only),Median value ($) of owner-occupied housing units (percentile urban/rural),Median value ($) of owner-occupied housing units (min-max normalized),Percent enrollment in college or graduate school (percentile),Percent enrollment in college or graduate school (value urban only),Percent enrollment in college or graduate school (percentile urban only),Percent enrollment in college or graduate school (value rural only),Percent enrollment in college or graduate school (percentile rural only),Percent enrollment in college or graduate school (percentile urban/rural),Percent enrollment in college or graduate school (min-max normalized),Percent of population not currently enrolled in college or graduate school (percentile),Percent of population not currently enrolled in college or graduate school (value urban only),Percent of population not currently enrolled in college or graduate school (percentile urban only),Percent of population not currently enrolled in college or graduate school (value rural only),Percent of population not currently enrolled in college or graduate school (percentile rural only),Percent of population not currently enrolled in college or graduate school (percentile urban/rural),Percent of population not currently enrolled in college or graduate school (min-max normalized),Expected building loss rate (Natural Hazards Risk Index) (percentile),Expected building loss rate (Natural Hazards Risk Index) (value urban only),Expected building loss rate (Natural Hazards Risk Index) (percentile urban only),Expected building loss rate (Natural Hazards Risk Index) (value rural only),Expected building loss rate (Natural Hazards Risk Index) (percentile rural only),Expected building loss rate (Natural Hazards Risk Index) (percentile urban/rural),Expected building loss rate (Natural Hazards Risk Index) (min-max normalized),Expected agricultural loss rate (Natural Hazards Risk Index) (percentile),Expected agricultural loss rate (Natural Hazards Risk Index) (value urban only),Expected agricultural loss rate (Natural Hazards Risk Index) (percentile urban only),Expected agricultural loss rate (Natural Hazards Risk Index) (value rural only),Expected agricultural loss rate (Natural Hazards Risk Index) (percentile rural only),Expected agricultural loss rate (Natural Hazards Risk Index) (percentile urban/rural),Expected agricultural loss rate (Natural Hazards Risk Index) (min-max normalized),Expected population loss rate (Natural Hazards Risk Index) (percentile),Expected population loss rate (Natural Hazards Risk Index) (value urban only),Expected population loss rate (Natural Hazards Risk Index) (percentile urban only),Expected population loss rate (Natural Hazards Risk Index) (value rural only),Expected population loss rate (Natural Hazards Risk Index) (percentile rural only),Expected population loss rate (Natural Hazards Risk Index) (percentile urban/rural),Expected population loss rate (Natural Hazards Risk Index) (min-max normalized),Percent individuals age 25 or over with less than high school degree in 2009 (percentile),Percent individuals age 25 or over with less than high school degree in 2009 (value urban only),Percent individuals age 25 or over with less than high school degree in 2009 (percentile urban only),Percent individuals age 25 or over with less than high school degree in 2009 (value rural only),Percent individuals age 25 or over with less than high school degree in 2009 (percentile rural only),Percent individuals age 25 or over with less than high school degree in 2009 (percentile urban/rural),Percent individuals age 25 or over with less than high school degree in 2009 (min-max normalized),Percentage households below 100% of federal poverty line in 2009 (percentile),Percentage households below 100% of federal poverty line in 2009 (value urban only),Percentage households below 100% of federal poverty line in 2009 (percentile urban only),Percentage households below 100% of federal poverty line in 2009 (value rural only),Percentage households below 100% of federal poverty line in 2009 (percentile rural only),Percentage households below 100% of federal poverty line in 2009 (percentile urban/rural),Percentage households below 100% of federal poverty line in 2009 (min-max normalized),Unemployment (percent) in 2009 (percentile),Unemployment (percent) in 2009 (value urban only),Unemployment (percent) in 2009 (percentile urban only),Unemployment (percent) in 2009 (value rural only),Unemployment (percent) in 2009 (percentile rural only),Unemployment (percent) in 2009 (percentile urban/rural),Unemployment (percent) in 2009 (min-max normalized),Unemployment (percent) in 2010 (percentile),Unemployment (percent) in 2010 (value urban only),Unemployment (percent) in 2010 (percentile urban only),Unemployment (percent) in 2010 (value rural only),Unemployment (percent) in 2010 (percentile rural only),Unemployment (percent) in 2010 (percentile urban/rural),Unemployment (percent) in 2010 (min-max normalized),Percent of individuals less than 100% Federal Poverty Line in 2010 (percentile),Percent of individuals less than 100% Federal Poverty Line in 2010 (value urban only),Percent of individuals less than 100% Federal Poverty Line in 2010 (percentile urban only),Percent of individuals less than 100% Federal Poverty Line in 2010 (value rural only),Percent of individuals less than 100% Federal Poverty Line in 2010 (percentile rural only),Percent of individuals less than 100% Federal Poverty Line in 2010 (percentile urban/rural),Percent of individuals less than 100% Federal Poverty Line in 2010 (min-max normalized),Total population in 2009 (percentile),Total population in 2009 (value urban only),Total population in 2009 (percentile urban only),Total population in 2009 (value rural only),Total population in 2009 (percentile rural only),Total population in 2009 (percentile urban/rural),Total population in 2009 (min-max normalized),Summer days above 90F (percentile),Summer days above 90F (value urban only),Summer days above 90F (percentile urban only),Summer days above 90F (value rural only),Summer days above 90F (percentile rural only),Summer days above 90F (percentile urban/rural),Summer days above 90F (min-max normalized),Percent low access to healthy food (percentile),Percent low access to healthy food (value urban only),Percent low access to healthy food (percentile urban only),Percent low access to healthy food (value rural only),Percent low access to healthy food (percentile rural only),Percent low access to healthy food (percentile urban/rural),Percent low access to healthy food (min-max normalized),Percent impenetrable surface areas (percentile),Percent impenetrable surface areas (value urban only),Percent impenetrable surface areas (percentile urban only),Percent impenetrable surface areas (value rural only),Percent impenetrable surface areas (percentile rural only),Percent impenetrable surface areas (percentile urban/rural),Percent impenetrable surface areas (min-max normalized),Contains agricultural value (percentile),Contains agricultural value (value urban only),Contains agricultural value (percentile urban only),Contains agricultural value (value rural only),Contains agricultural value (percentile rural only),Contains agricultural value (percentile urban/rural),Contains agricultural value (min-max normalized),Low third grade reading proficiency (percentile),Third grade reading proficiency (value urban only),Low third grade reading proficiency (percentile urban only),Third grade reading proficiency (value rural only),Low third grade reading proficiency (percentile rural only),Low third grade reading proficiency (percentile urban/rural),Low median household income as a percent of area median income (percentile),Median household income as a percent of area median income (value urban only),Low median household income as a percent of area median income (percentile urban only),Median household income as a percent of area median income (value rural only),Low median household income as a percent of area median income (percentile rural only),Low median household income as a percent of area median income (percentile urban/rural),Low life expectancy (percentile),Life expectancy (years) (value urban only),Low life expectancy (percentile urban only),Life expectancy (years) (value rural only),Low life expectancy (percentile rural only),Low life expectancy (percentile urban/rural),Low median household income as a percent of territory median income in 2009 (percentile),Median household income as a percent of territory median income in 2009 (value urban only),Low median household income as a percent of territory median income in 2009 (percentile urban only),Median household income as a percent of territory median income in 2009 (value rural only),Low median household income as a percent of territory median income in 2009 (percentile rural only),Low median household income as a percent of territory median income in 2009 (percentile urban/rural),Total population in 2009 (island areas) and 2019 (states and PR),Score A,Score B,Socioeconomic Factors,Sensitive populations,Environmental effects,Exposures,Pollution Burden,Population Characteristics,Score C,Score D,Score E,"Low AMI, Low HS graduation",Meets socioeconomic criteria,Meets burden criteria,Score F (communities),Score G (communities),Score G,Score G (percentile),Score H (communities),Score H,Score I (communities),Score I,Score I (percentile),NMTC (communities),Score K (communities),Total threshold criteria exceeded,Is low income?,Greater than or equal to the 90th percentile for expected population loss rate and is low income?,Greater than or equal to the 90th percentile for expected agriculture loss rate and is low income?,Greater than or equal to the 90th percentile for expected building loss rate and is low income?,Climate Factor (Definition L),Greater than or equal to the 90th percentile for PM2.5 exposure and is low income?,Greater than or equal to the 90th percentile for energy burden and is low income?,Energy Factor (Definition L),Greater than or equal to the 90th percentile for diesel particulate matter and is low income?,Greater than or equal to the 90th percentile for traffic proximity and is low income?,Transportation Factor (Definition L),Greater than or equal to the 90th percentile for lead paint and the median house value is less than 90th percentile and is low income?,Greater than or equal to the 90th percentile for housing burden and is low income?,Housing Factor (Definition L),Greater than or equal to the 90th percentile for proximity to RMP sites and is low income?,Greater than or equal to the 90th percentile for proximity to superfund sites and is low income?,Greater than or equal to the 90th percentile for proximity to hazardous waste facilities and is low income?,Pollution Factor (Definition L),Greater than or equal to the 90th percentile for wastewater discharge and is low income?,Water Factor (Definition L),Greater than or equal to the 90th percentile for diabetes and is low income?,Greater than or equal to the 90th percentile for asthma and is low income?,Greater than or equal to the 90th percentile for heart disease and is low income?,Greater than or equal to the 90th percentile for low life expectancy and is low income?,Health Factor (Definition L),Low high school education,Greater than or equal to the 90th percentile for households in linguistic isolation and has low HS education?,Greater than or equal to the 90th percentile for households at or below 100% federal poverty level and has low HS education?,Greater than or equal to the 90th percentile for low median household income as a percent of area median income and has low HS education?,Greater than or equal to the 90th percentile for unemployment and has low HS education?,Unemployment (percent) in 2009 (island areas) and 2010 (states and PR),Unemployment (percent) in 2009 exceeds 90th percentile,Percentage households below 100% of federal poverty line in 2009 (island areas) and 2010 (states and PR),Percentage households below 100% of federal poverty line in 2009 exceeds 90th percentile,Low median household income as a percent of territory median income in 2009 exceeds 90th percentile,Low high school education in 2009 (island areas),Greater than or equal to the 90th percentile for unemployment and has low HS education in 2009 (island areas)?,Greater than or equal to the 90th percentile for households at or below 100% federal poverty level and has low HS education in 2009 (island areas)?,Greater than or equal to the 90th percentile for low median household income as a percent of area median income and has low HS education in 2009 (island areas)?,Workforce Factor (Definition L),Definition L (communities),Any Non-Workforce Factor (Definition L),Definition L (percentile),Exceeds FPL200 threshold,Percent higher ed enrollment rate is less than 20%,Is low income and has a low percent of higher ed students?,Greater than or equal to the 90th percentile for expected population loss,Greater than or equal to the 90th percentile for expected agricultural loss,Greater than or equal to the 90th percentile for expected building loss,At least one climate threshold exceeded,"Greater than or equal to the 90th percentile for expected population loss rate, is low income, and has a low percent of higher ed students?","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?","Greater than or equal to the 90th percentile for expected building loss rate, is low income, and has a low percent of higher ed students?",Climate Factor (Definition M),Greater than or equal to the 90th percentile for energy burden,Greater than or equal to the 90th percentile for pm2.5 exposure,At least one energy threshold exceeded,"Greater than or equal to the 90th percentile for PM2.5 exposure, is low income, and has a low percent of higher ed students?","Greater than or equal to the 90th percentile for energy burden, is low income, and has a low percent of higher ed students?",Energy Factor (Definition M),Greater than or equal to the 90th percentile for diesel particulate matter,Greater than or equal to the 90th percentile for traffic proximity,At least one traffic threshold exceeded,"Greater than or equal to the 90th percentile for diesel particulate matter, is low income, and has a low percent of higher ed students?","Greater than or equal to the 90th percentile for traffic proximity, is low income, and has a low percent of higher ed students?",Transportation Factor (Definition M),Greater than or equal to the 90th percentile for lead paint and the median house value is less than 90th percentile,Greater than or equal to the 90th percentile for housing burden,At least one housing threshold exceeded,"Greater than or equal to the 90th percentile for lead paint, the median house value is less than 90th percentile, is low income, and has a low percent of higher ed students?","Greater than or equal to the 90th percentile for housing burden, is low income, and has a low percent of higher ed students?",Housing Factor (Definition M),Greater than or equal to the 90th percentile for RMP proximity,Greater than or equal to the 90th percentile for NPL (superfund sites) proximity,Greater than or equal to the 90th percentile for proximity to hazardous waste sites,At least one pollution threshold exceeded,"Greater than or equal to the 90th percentile for proximity to RMP sites, is low income, and has a low percent of higher ed students?","Greater than or equal to the 90th percentile for proximity to superfund sites, is low income, and has a low percent of higher ed students?","Greater than or equal to the 90th percentile for proximity to hazardous waste facilities, is low income, and has a low percent of higher ed students?",Pollution Factor (Definition M),Greater than or equal to the 90th percentile for wastewater discharge,At least one water threshold exceeded,"Greater than or equal to the 90th percentile for wastewater discharge, is low income, and has a low percent of higher ed students?",Water Factor (Definition M),Greater than or equal to the 90th percentile for diabetes,Greater than or equal to the 90th percentile for asthma,Greater than or equal to the 90th percentile for heart disease,Greater than or equal to the 90th percentile for low life expectancy,At least one health threshold exceeded,"Greater than or equal to the 90th percentile for diabetes, is low income, and has a low percent of higher ed students?","Greater than or equal to the 90th percentile for asthma, is low income, and has a low percent of higher ed students?","Greater than or equal to the 90th percentile for heart disease, is low income, and has a low percent of higher ed students?","Greater than or equal to the 90th percentile for low life expectancy, is low income, and has a low percent of higher ed students?",Health Factor (Definition M),Low high school education and low percent of higher ed students,Greater than or equal to the 90th percentile for unemployment,Greater than or equal to the 90th percentile for low median household income as a percent of area median income,Greater than or equal to the 90th percentile for households in linguistic isolation,Greater than or equal to the 90th percentile for households at or below 100% federal poverty level,"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?","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?","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?","Greater than or equal to the 90th percentile for unemployment, has low HS attainment, and has a low percent of higher ed students?",Unemployment (percent) in 2009 for island areas (percentile),Percentage households below 100% of federal poverty line in 2009 for island areas (percentile),At least one workforce threshold exceeded,Both workforce socioeconomic indicators exceeded,Workforce Factor (Definition M),Total categories exceeded,Definition M (communities),Any Non-Workforce Factor (Definition M),Definition M (percentile),Score A (percentile),Score A (top 25th percentile),Score A (top 30th percentile),Score A (top 35th percentile),Score A (top 40th percentile),Score B (percentile),Score B (top 25th percentile),Score B (top 30th percentile),Score B (top 35th percentile),Score B (top 40th percentile),Score C (percentile),Score C (top 25th percentile),Score C (top 30th percentile),Score C (top 35th percentile),Score C (top 40th percentile),Score D (percentile),Score D (top 25th percentile),Score D (top 30th percentile),Score D (top 35th percentile),Score D (top 40th percentile),Score E (percentile),Score E (top 25th percentile),Score E (top 30th percentile),Score E (top 35th percentile),Score E (top 40th percentile) -01073001100,True,0.2752043596730245,4897.0,0.7327449738800064,11.2,7.2,6.7,16.6,19.3,15.1,0.150375939849624,0.318796992481203,0.3744360902255639,57447.0,37030.0,0.049,18.7674524286,1.0,51.1530304943,0.735568574566,0.63998588,10.3951975342,39.404630719,253.995131498,2.03499777769,0.708723792992,0.134193041308,1.0556674669,0.205868653936,0.0308352052277,0.185011231366,0.0,0.0,0.407205697528,0.0821917808219178,0.0092071611253196,85500.0,0.0890751899397432,0.9109248100602568,0.0004047858,5.6328e-05,2.8039e-06,,,,0.1536983669548511,0.3189099613330878,,62.666668,0.068036923,0.171,1.0,58.143433,0.6445941476491375,70.3,,0.6466760729305078,0.2752043596730245,0.5700318443928049,,,0.5700318443928049,0.2752043596730245,0.6512411994432508,4897.0,0.6248587667340021,,,0.6248587667340021,0.0696873532467162,0.2601978513507951,0.7327449738800064,0.2827993864924948,,,0.2827993864924948,0.1434712737274766,0.8509696039125366,11.2,0.835724928163468,,,0.835724928163468,0.3795180722891565,0.7264920810941454,7.2,0.7844637979353648,,,0.7844637979353648,0.1875,0.4789587420739856,6.7,0.5678012699989358,,,0.5678012699989358,0.303921568627451,0.6191105803406409,16.6,0.6018127638440527,,,0.6018127638440527,0.2094488188976378,0.965388552418323,19.3,0.9599666536592288,,,0.9599666536592288,0.4275862068965517,0.697012994398476,15.1,0.7279967363155841,,,0.7279967363155841,0.3440233236151603,0.62043226838371,0.150375939849624,0.6145691950863328,,,0.6145691950863328,0.150375939849624,0.7319580582099551,0.318796992481203,0.7209861695730607,,,0.7209861695730607,0.318796992481203,0.6304939233619051,0.3744360902255639,0.6277982991151962,,,0.6277982991151962,0.3744360902255639,0.3145069836211475,57447.0,0.2657396925099514,,,0.2657396925099514,0.362059663131873,0.1524419513666973,37030.0,0.1569958812277043,,,0.1569958812277043,0.1395180645004889,0.864954517474865,0.049,0.9005173954895489,,,0.9005173954895489,0.0037065052950075,0.6038301323911519,18.7674524286,0.6383816255626487,,,0.6383816255626487,0.1876745242859999,0.5972204988211937,1.0,0.5000085573944445,,,0.5000085573944445,1.0,0.9847958474680182,51.1530304943,0.9819551446670092,,,0.9819551446670092,0.0300384933188293,0.968365553602812,0.735568574566,0.962352336928608,,,0.962352336928608,0.1696726613313424,0.7632321085543794,0.63998588,0.70386920047937,,,0.70386920047937,0.1053235274194042,0.928945948563286,10.3951975342,0.914819538763832,,,0.914819538763832,0.5130755332417333,0.2507228532296667,39.404630719,0.2360646695853011,,,0.2360646695853011,0.2834163202031902,0.4608804184722397,253.995131498,0.3487028727629068,,,0.3487028727629068,0.0081194347824311,0.9022445642626452,2.03499777769,0.8805423357414318,,,0.8805423357414318,0.1192079731904979,0.4244672369292306,0.708723792992,0.2870715924264731,,,0.2870715924264731,0.0016327034632494,0.753733057661383,0.134193041308,0.7050707022289178,,,0.7050707022289178,0.0172289593763426,0.9223869977156124,1.0556674669,0.9078447963253958,,,0.9078447963253958,9.412822248180045e-06,0.4454669531492817,0.205868653936,0.4334577327353032,,,0.4334577327353032,0.205868653936,0.1202416183565086,0.0308352052277,0.108484267470127,,,0.108484267470127,0.0793595720750642,0.695774381427278,0.185011231366,0.7452494265073442,,,0.7452494265073442,0.185011231366,0.1272208772721677,0.0,0.0997988895955446,,,0.0997988895955446,0.0,0.1284712368751773,0.0,0.0986150580340329,,,0.0986150580340329,0.0,0.668247726382076,0.407205697528,0.6576848015886603,,,0.6576848015886603,0.407205697528,0.4189274017467249,0.0821917808219178,0.4443872826422471,,,0.4443872826422471,0.0821917808219178,0.0297871177547618,0.0092071611253196,0.0285699569046924,,,0.0285699569046924,0.0092071611253196,0.1130659551404986,85500.0,0.1076951366876236,,,0.1076951366876236,0.0379401628742081,0.7459685121012851,0.0890751899397432,0.6989610478672336,,,0.6989610478672336,0.0890751899397432,0.2540451308357663,0.9109248100602568,0.3010560965573995,,,0.3010560965573995,0.9109248100602568,0.7846412062513758,0.0004047858,0.82138883658833,,,0.82138883658833,0.01597287904858,0.2153147384849333,5.6328e-05,0.5639836382618221,,,0.5639836382618221,0.0001189507553306,0.6143028498159407,2.8039e-06,0.6689315237296548,,,0.6689315237296548,0.0013204531501148,,,,,,,,,,,,,,,,,,,,,,0.9349594607528132,0.1536983669548511,0.9315960352498582,,,0.9315960352498582,0.1536983669548511,0.8950599559730369,0.3189099613330878,0.8870754376621368,,,0.8870754376621368,0.3189099613330878,,,,,,,,0.7537922665342821,62.666668,0.7585193484443679,,,0.7585193484443679,0.4423529401799308,0.8019598155467721,0.068036923,0.7905320987865615,,,0.7905320987865615,0.068036923,0.4126953421856217,0.171,0.2701910981682835,,,0.2701910981682835,0.1775700879261655,0.6564635202573585,1.0,0.6917369799243527,,,0.6917369799243527,1.0,0.990724418702258,58.143433,0.9890918535191758,,,0.9890918535191758,0.8218135517196475,0.6445941476491375,0.7952314423324387,,,0.7952314423324387,0.97046998263836,70.3,0.9652438793658,,,0.9652438793658,,,,,,,4897.0,0.5435875640644005,0.2799472837363994,0.3784219111378495,0.3144122923519848,0.6896597619436307,0.7261571216484003,0.7139913350801438,0.3464171017449171,0.2473388089694474,0.1547617998296523,0.3781718392172476,False,True,True,True,True,1,1,True,1,True,1,1,True,True,0,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,0.1536983669548511,False,0.3189099613330878,False,False,False,False,False,False,False,False,False,0,False,True,False,False,False,False,False,False,False,False,False,False,True,True,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,True,False,False,True,False,False,False,False,True,True,False,False,True,False,False,True,True,False,False,False,False,False,False,False,False,False,False,False,False,False,False,,,False,False,False,0,False,False,0,0.5532898204078324,False,False,False,False,0.5490856986899564,False,False,False,False,0.5480683083104825,False,False,False,False,0.5438440021080796,False,False,False,False,0.3320495668977446,False,False,False,False -01073001400,True,0.1823529411764705,1906.0,0.7136694633528574,11.1,9.1,7.3,21.4,22.4,17.4,0.2816032887975334,0.3679342240493319,0.4835560123329907,57447.0,36066.0,0.07,17.3011023381,1.0,54.6950518653,0.76056054321,0.9098084377,10.498270137,39.3676601307,3015.87969265,1.81382525188,3.24085850684,0.214095348703,0.365101735929,0.628839590444,0.0582371458552,0.178908709339,0.0245098039215686,0.0165289256198,0.425498426023,0.1742543171114599,0.1150121065375302,67800.0,0.0771549125979505,0.9228450874020494,0.0008951111,5.1282e-06,2.3791e-06,,,,0.0804953560371517,0.2950894905920146,,61.666668,0.087159691,0.34900002,1.0,93.77919,0.6278134628440127,71.0,,0.3421186011150532,0.1823529411764705,0.2730613650055943,,,0.2730613650055943,0.1823529411764705,0.0867961243766976,1906.0,0.0702656897319135,,,0.0702656897319135,0.0271235644860611,0.240302951305517,0.7136694633528574,0.2631705929998104,,,0.2631705929998104,0.1395725756430245,0.8385794307486707,11.1,0.8242488204618823,,,0.8242488204618823,0.3734939759036144,0.9217563763541756,9.1,0.934238532761006,,,0.934238532761006,0.2391304347826086,0.6048579715089994,7.3,0.6840345524850119,,,0.6840345524850119,0.3333333333333333,0.7894025988796952,21.4,0.765821774451027,,,0.765821774451027,0.2850393700787401,0.9878088657624612,22.4,0.9854641881585016,,,0.9854641881585016,0.4988505747126436,0.8447283118655634,17.4,0.8547216999538827,,,0.8547216999538827,0.411078717201166,0.8689250707460116,0.2816032887975334,0.8593419809294734,,,0.8593419809294734,0.2816032887975334,0.8013233263612626,0.3679342240493319,0.7879907224465252,,,0.7879907224465252,0.3679342240493319,0.7892247330790578,0.4835560123329907,0.7755862898376428,,,0.7755862898376428,0.4835560123329907,0.3145069836211475,57447.0,0.2657396925099514,,,0.2657396925099514,0.362059663131873,0.1404413479077805,36066.0,0.1452254984748479,,,0.1452254984748479,0.1356231464796244,0.970802270706518,0.07,0.9745685506050604,,,0.9745685506050604,0.0052950075642965,0.5282998116553705,17.3011023381,0.565061869961834,,,0.565061869961834,0.173011023381,0.5972204988211937,1.0,0.5000085573944445,,,0.5000085573944445,1.0,0.9895233034972276,54.6950518653,0.98758774182503,,,0.98758774182503,0.0324014302096176,0.9765534529502324,0.76056054321,0.9720766991953432,,,0.9720766991953432,0.1759137053158734,0.9016362174902248,0.9098084377,0.8766135935627462,,,0.8766135935627462,0.1497290027189099,0.9329441224077584,10.498270137,0.9196283911889414,,,0.9196283911889414,0.5213510451938572,0.2492010569566841,39.3676601307,0.2346340790789065,,,0.2346340790789065,0.2826912370192468,0.941127799514774,3015.87969265,0.9280004126050854,,,0.9280004126050854,0.0964083008791804,0.8815556546533155,1.81382525188,0.8555140890882322,,,0.8555140890882322,0.1062519253676046,0.7527465845056148,3.24085850684,0.6879172801040846,,,0.6879172801040846,0.0074660410167418,0.8655558708666099,0.214095348703,0.8377272571643783,,,0.8377272571643783,0.027487565893985,0.8882148073250197,0.365101735929,0.8688263024295902,,,0.8688263024295902,3.255416928678718e-06,0.8313806570181485,0.628839590444,0.7904954291779368,,,0.7904954291779368,0.628839590444,0.5164051837137336,0.0582371458552,0.4798079227582429,,,0.4798079227582429,0.1498830619032175,0.6618964608586371,0.178908709339,0.715890026363543,,,0.715890026363543,0.178908709339,0.5796575164471435,0.0245098039215686,0.5161060212798873,,,0.5161060212798873,0.0245098039215686,0.5008648531776597,0.0165289256198,0.424872462081008,,,0.424872462081008,0.0165289256198,0.6964500479723247,0.425498426023,0.6838429143698428,,,0.6838429143698428,0.425498426023,0.751664847161572,0.1742543171114599,0.7508831498439483,,,0.7508831498439483,0.1742543171114599,0.9067171316918536,0.1150121065375302,0.9060831344539256,,,0.9060831344539256,0.1150121065375302,0.0522874454542927,67800.0,0.0556119857795835,,,0.0556119857795835,0.0290456994515583,0.6434691260334525,0.0771549125979505,0.5807502400219449,,,0.5807502400219449,0.0771549125979505,0.356544516903599,0.9228450874020494,0.4192669044026882,,,0.4192669044026882,0.9228450874020494,0.9166162227602904,0.0008951111,0.9302158396521918,,,0.9302158396521918,0.0353246959378835,0.0865380767537716,5.1282e-06,0.4567081415050745,,,0.4567081415050745,1.0829485575316856e-05,0.558933421571466,2.3791e-06,0.6145407246401615,,,0.6145407246401615,0.0011202645354936,,,,,,,,,,,,,,,,,,,,,,0.6917513228236646,0.0804953560371517,0.6841770738494838,,,0.6841770738494838,0.0804953560371517,0.8737301229199994,0.2950894905920146,0.8632982287353754,,,0.8632982287353754,0.2950894905920146,,,,,,,,0.7501654807214959,61.666668,0.7551581487546324,,,0.7551581487546324,0.435294116816609,0.8647617479139218,0.087159691,0.8519741908983552,,,0.8519741908983552,0.087159691,0.6268497920495212,0.34900002,0.5359536815260283,,,0.5359536815260283,0.3624091475885,0.6564635202573585,1.0,0.6917369799243527,,,0.6917369799243527,1.0,0.9537899773356836,93.77919,0.9454938966323262,,,0.9454938966323262,0.8364273002184828,0.6278134628440127,0.81067318651421,,,0.81067318651421,0.959938777375042,71.0,0.9533526317781056,,,0.9533526317781056,,,,,,,1906.0,0.7240574475669483,0.523497018864787,0.6395630962236926,0.5859863870065047,0.8438907148737418,0.8318309921361502,0.8358508997153473,0.6127747416150986,0.5121883191018196,0.1843255189540058,0.6553216288775894,False,True,True,True,True,1,1,True,1,True,1,1,True,True,9,True,False,False,True,True,True,True,True,True,True,True,False,False,False,False,False,False,False,False,False,True,False,True,True,True,True,False,False,False,True,0.0804953560371517,False,0.2950894905920146,False,False,False,False,False,False,True,True,True,1,True,True,True,False,False,True,True,False,False,True,True,True,True,True,True,True,True,True,True,True,True,True,True,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,True,False,True,True,True,True,False,True,True,True,True,True,False,False,False,False,False,False,True,,,True,True,True,5,True,True,1,0.7460439723787516,False,True,True,True,0.7500818777292576,True,True,True,True,0.9394564656693726,True,True,True,True,0.6605181011067418,False,False,True,True,0.7347062877528682,False,True,True,True +GEOID10_TRACT,Does the tract have at least 35 acres in it?,Contains agricultural value,Names of Tribal areas within Census tract,Housing burden (percent),Share of homes with no kitchen or indoor plumbing (percent),Total population,Median household income (% of state median household income),Current asthma among adults aged greater than or equal to 18 years,Coronary heart disease among adults aged greater than or equal to 18 years,Cancer (excluding skin cancer) among adults aged greater than or equal to 18 years,Current lack of health insurance among adults aged 18-64 years,Diagnosed diabetes among adults aged greater than or equal to 18 years,Physical health not good for greater than or equal to 14 days among adults aged greater than or equal to 18 years,Percent of individuals < 100% Federal Poverty Line,Percent of individuals < 150% Federal Poverty Line,Percent of individuals below 200% Federal Poverty Line,Area Median Income (State or metropolitan),Median household income in the past 12 months,Energy burden,FEMA Risk Index Expected Annual Loss Score,Urban Heuristic Flag,Air toxics cancer risk,Respiratory hazard index,Diesel particulate matter exposure,PM2.5 in the air,Ozone,Traffic proximity and volume,Proximity to Risk Management Plan (RMP) facilities,Proximity to hazardous waste sites,Proximity to NPL sites,Wastewater discharge,Percent pre-1960s housing (lead paint indicator),Individuals under 5 years old,Individuals over 64 years old,Linguistic isolation (percent),Percent of households in linguistic isolation,Poverty (Less than 200% of federal poverty line),Percent individuals age 25 or over with less than high school degree,Unemployment (percent),Median value ($) of owner-occupied housing units,Percent enrollment in college or graduate school,Percent of population not currently enrolled in college or graduate school,Expected building loss rate (Natural Hazards Risk Index),Expected agricultural loss rate (Natural Hazards Risk Index),Expected population loss rate (Natural Hazards Risk Index),Percent individuals age 25 or over with less than high school degree in 2009,Percentage households below 100% of federal poverty line in 2009,Unemployment (percent) in 2009,Unemployment (percent) in 2010,Percent of individuals less than 100% Federal Poverty Line in 2010,Total population in 2009,Leaky underground storage tanks,DOT Travel Barriers Score,Share of properties at risk of flood in 30 years,Share of properties at risk of fire in 30 years,Share of the tract's land area that is covered by impervious surface or cropland as a percent,"Percent of individuals below 200% Federal Poverty Line, imputed and adjusted",Percent Black or African American,Percent American Indian / Alaska Native,Percent Asian,Percent Native Hawaiian or Pacific,Percent two or more races,Percent White,Percent Hispanic or Latino,Percent other races,Percent age under 10,Percent age 10 to 64,Percent age over 64,Percent of the Census tract that is within Tribal areas,Number of Tribal areas within Census tract for Alaska,Number of Tribal areas within Census tract,"Percent of the Census tract that is within Tribal areas, for display",Median household income as a percent of area median income,Life expectancy (years),Median household income as a percent of territory median income in 2009,Is there at least one abandoned mine in this census tract?,Income data has been estimated based on neighbor income,Is there at least one Formerly Used Defense Site (FUDS) in the tract?,Tract-level redlining score meets or exceeds 3.25,Identified as disadvantaged due to tribal overlap,Housing burden (percent) (percentile),Share of homes with no kitchen or indoor plumbing (percent) (percentile),Total population (percentile),Median household income (% of state median household income) (percentile),Current asthma among adults aged greater than or equal to 18 years (percentile),Coronary heart disease among adults aged greater than or equal to 18 years (percentile),Cancer (excluding skin cancer) among adults aged greater than or equal to 18 years (percentile),Current lack of health insurance among adults aged 18-64 years (percentile),Diagnosed diabetes among adults aged greater than or equal to 18 years (percentile),Physical health not good for greater than or equal to 14 days among adults aged greater than or equal to 18 years (percentile),Percent of individuals < 100% Federal Poverty Line (percentile),Percent of individuals < 150% Federal Poverty Line (percentile),Percent of individuals below 200% Federal Poverty Line (percentile),Area Median Income (State or metropolitan) (percentile),Median household income in the past 12 months (percentile),Energy burden (percentile),FEMA Risk Index Expected Annual Loss Score (percentile),Urban Heuristic Flag (percentile),Air toxics cancer risk (percentile),Respiratory hazard index (percentile),Diesel particulate matter exposure (percentile),PM2.5 in the air (percentile),Ozone (percentile),Traffic proximity and volume (percentile),Proximity to Risk Management Plan (RMP) facilities (percentile),Proximity to hazardous waste sites (percentile),Proximity to NPL sites (percentile),Wastewater discharge (percentile),Percent pre-1960s housing (lead paint indicator) (percentile),Individuals under 5 years old (percentile),Individuals over 64 years old (percentile),Linguistic isolation (percent) (percentile),Percent of households in linguistic isolation (percentile),Poverty (Less than 200% of federal poverty line) (percentile),Percent individuals age 25 or over with less than high school degree (percentile),Unemployment (percent) (percentile),Median value ($) of owner-occupied housing units (percentile),Percent enrollment in college or graduate school (percentile),Percent of population not currently enrolled in college or graduate school (percentile),Expected building loss rate (Natural Hazards Risk Index) (percentile),Expected agricultural loss rate (Natural Hazards Risk Index) (percentile),Expected population loss rate (Natural Hazards Risk Index) (percentile),Percent individuals age 25 or over with less than high school degree in 2009 (percentile),Percentage households below 100% of federal poverty line in 2009 (percentile),Unemployment (percent) in 2009 (percentile),Unemployment (percent) in 2010 (percentile),Percent of individuals less than 100% Federal Poverty Line in 2010 (percentile),Total population in 2009 (percentile),Leaky underground storage tanks (percentile),DOT Travel Barriers Score (percentile),Share of properties at risk of flood in 30 years (percentile),Share of properties at risk of fire in 30 years (percentile),Share of the tract's land area that is covered by impervious surface or cropland as a percent (percentile),"Percent of individuals below 200% Federal Poverty Line, imputed and adjusted (percentile)",Percent Black or African American (percentile),Percent American Indian / Alaska Native (percentile),Percent Asian (percentile),Percent Native Hawaiian or Pacific (percentile),Percent two or more races (percentile),Percent White (percentile),Percent Hispanic or Latino (percentile),Percent other races (percentile),Percent age under 10 (percentile),Percent age 10 to 64 (percentile),Percent age over 64 (percentile),Percent of the Census tract that is within Tribal areas (percentile),Number of Tribal areas within Census tract for Alaska (percentile),Number of Tribal areas within Census tract (percentile),"Percent of the Census tract that is within Tribal areas, for display (percentile)",Percent Black or African American in 2009 (percentile),Percent American Indian / Alaska Native in 2009 (percentile),Percent Asian in 2009 (percentile),Percent Native Hawaiian or Pacific in 2009 (percentile),Percent two or more races in 2009 (percentile),Percent White in 2009 (percentile),Percent Hispanic or Latino in 2009 (percentile),Percent other races in 2009 (percentile),Low median household income as a percent of area median income (percentile),Low life expectancy (percentile),Low median household income as a percent of territory median income in 2009 (percentile),Total population in 2009 (island areas) and 2019 (states and PR),Total threshold criteria exceeded,Is low income (imputed and adjusted)?,Greater than or equal to the 90th percentile for expected population loss,Greater than or equal to the 90th percentile for expected agricultural loss,Greater than or equal to the 90th percentile for expected building loss,Greater than or equal to the 90th percentile for share of properties at risk of flood in 30 years,Greater than or equal to the 90th percentile for share of properties at risk of fire in 30 years,At least one climate threshold exceeded,Greater than or equal to the 90th percentile for expected population loss rate and is low income?,Greater than or equal to the 90th percentile for expected agriculture loss rate and is low income?,Greater than or equal to the 90th percentile for expected building loss rate and is low income?,Greater than or equal to the 90th percentile for share of properties at risk of flood in 30 years and is low income?,Greater than or equal to the 90th percentile for share of properties at risk of fire in 30 years and is low income?,Climate Factor (Definition N),Greater than or equal to the 90th percentile for energy burden,Greater than or equal to the 90th percentile for pm2.5 exposure,At least one energy threshold exceeded,Greater than or equal to the 90th percentile for PM2.5 exposure and is low income?,Greater than or equal to the 90th percentile for energy burden and is low income?,Energy Factor (Definition N),Greater than or equal to the 90th percentile for diesel particulate matter,Greater than or equal to the 90th percentile for DOT travel barriers,Greater than or equal to the 90th percentile for traffic proximity,At least one traffic threshold exceeded,Greater than or equal to the 90th percentile for diesel particulate matter and is low income?,Greater than or equal to the 90th percentile for traffic proximity and is low income?,Greater than or equal to the 90th percentile for DOT transit barriers and is low income?,Transportation Factor (Definition N),Tract-level redlining score meets or exceeds 3.25 and is low income,Greater than or equal to the 90th percentile for share of homes without indoor plumbing or a kitchen,Greater than or equal to the 90th percentile for share of homes with no kitchen or indoor plumbing and is low income?,Greater than or equal to the 90th percentile for lead paint and the median house value is less than 90th percentile,Greater than or equal to the 90th percentile for lead paint and the median house value is less than 90th percentile and is low income?,Greater than or equal to the 90th percentile for housing burden,Greater than or equal to the 90th percentile for housing burden and is low income?,Greater than or equal to the 90th percentile for share of the tract's land area that is covered by impervious surface or cropland as a percent,Greater than or equal to the 90th percentile for share of the tract's land area that is covered by impervious surface or cropland as a percent and is low income?,At least one housing threshold exceeded,Housing Factor (Definition N),Greater than or equal to the 90th percentile for RMP proximity,Greater than or equal to the 90th percentile for NPL (superfund sites) proximity,Greater than or equal to the 90th percentile for proximity to hazardous waste sites,"Is there at least one Formerly Used Defense Site (FUDS) in the tract, where missing data is treated as False?","Is there at least one abandoned mine in this census tract, where missing data is treated as False?",At least one pollution threshold exceeded,Greater than or equal to the 90th percentile for proximity to RMP sites and is low income?,Greater than or equal to the 90th percentile for proximity to superfund sites and is low income?,Greater than or equal to the 90th percentile for proximity to hazardous waste facilities and is low income?,There is at least one abandoned mine in this census tract and the tract is low income.,There is at least one Formerly Used Defense Site (FUDS) in the tract and the tract is low income.,Pollution Factor (Definition N),Greater than or equal to the 90th percentile for wastewater discharge,Greater than or equal to the 90th percentile for leaky underwater storage tanks,Greater than or equal to the 90th percentile for wastewater discharge and is low income?,Greater than or equal to the 90th percentile for leaky underground storage tanks and is low income?,At least one water threshold exceeded,Water Factor (Definition N),Greater than or equal to the 90th percentile for diabetes,Greater than or equal to the 90th percentile for asthma,Greater than or equal to the 90th percentile for heart disease,Greater than or equal to the 90th percentile for low life expectancy,At least one health threshold exceeded,Greater than or equal to the 90th percentile for diabetes and is low income?,Greater than or equal to the 90th percentile for asthma and is low income?,Greater than or equal to the 90th percentile for heart disease and is low income?,Greater than or equal to the 90th percentile for low life expectancy and is low income?,Health Factor (Definition N),Low high school education,Greater than or equal to the 90th percentile for unemployment,Greater than or equal to the 90th percentile for low median household income as a percent of area median income,Greater than or equal to the 90th percentile for households in linguistic isolation,Greater than or equal to the 90th percentile for households at or below 100% federal poverty level,Greater than or equal to the 90th percentile for households in linguistic isolation and has low HS attainment?,Greater than or equal to the 90th percentile for households at or below 100% federal poverty level and has low HS attainment?,Greater than or equal to the 90th percentile for low median household income as a percent of area median income and has low HS attainment?,Greater than or equal to the 90th percentile for unemployment and has low HS attainment?,At least one workforce threshold exceeded,Unemployment (percent) in 2009 (island areas) and 2010 (states and PR),Unemployment (percent) in 2009 for island areas (percentile),Unemployment (percent) in 2009 exceeds 90th percentile,Percentage households below 100% of federal poverty line in 2009 (island areas) and 2010 (states and PR),Percentage households below 100% of federal poverty line in 2009 for island areas (percentile),Percentage households below 100% of federal poverty line in 2009 exceeds 90th percentile,Low median household income as a percent of territory median income in 2009 exceeds 90th percentile,Low high school education in 2009 (island areas),Greater than or equal to the 90th percentile for unemployment and has low HS education in 2009 (island areas)?,Greater than or equal to the 90th percentile for households at or below 100% federal poverty level and has low HS education in 2009 (island areas)?,Greater than or equal to the 90th percentile for low median household income as a percent of area median income and has low HS education in 2009 (island areas)?,Both workforce socioeconomic indicators exceeded,Workforce Factor (Definition N),Total categories exceeded,Definition N (communities),Definition N (communities) (percentile),Meets the less stringent low income criterion for the adjacency index?,Definition N (communities) (average of neighbors),Is the tract surrounded by disadvantaged communities?,Definition N (communities) (based on adjacency index and low income alone),"Definition N community, including adjacency index tracts",Percentage of tract that is disadvantaged +01073001100,True,True,,0.2752043596730245,0.0,4781.0,0.7327449738800064,11.2,7.2,6.7,16.6,19.3,15.1,0.150375939849624,0.318796992481203,0.3744360902255639,57447.0,37030.0,0.049,18.7674524286,1.0,40.0,0.5,0.467489734286576,9.8735797260274,43.056760130719,181.621925132718,2.0427358988323,0.702342755246247,0.134193041307899,4.45238981883771,0.168806466951973,0.035557414766785,0.203932231750679,0.0,0.0,0.374436090225563,0.0821917808219178,0.0092071611253196,85500.0,0.0890751899397432,0.9109248100602568,0.0004047858,5.6328e-05,2.8039e-06,,,,0.1536983669548511,0.3189099613330878,,1.96440511031451,47.695227725,0.0754274220583305,0.6620851491786792,21.2475,0.2853609002858206,0.9682074879732272,0.0121313532733737,0.0,0.0,0.0,0.0161054172767203,0.0035557414766785,0.0,0.1344906923237816,0.6615770759255386,0.2039322317506798,,,,,0.6445941476491375,70.3,,,False,,True,,0.646637250602938,0.2159888182416136,0.6290959230020547,0.2601978513507951,0.8509877263095018,0.726480167252144,0.4790223713964701,0.6190889309231579,0.9653762462133604,0.6970048212990485,0.6204255784694491,0.7319894972922707,0.6305043487774192,0.3145069836211475,0.1524256393370651,0.8649904214559387,0.6038246858588359,0.5972204988211937,0.907050889025138,0.8818107500510934,0.8407248450166905,0.8256687748238973,0.5755269239817877,0.3919915848527349,0.9007380772142316,0.4819400886774089,0.7531091164702065,0.9619657803125694,0.3979128365956526,0.1737455390937601,0.7659646371796258,0.1287706711725437,0.1316846004109441,0.6347599221369092,0.4189065592792301,0.029797296373751,0.1130218397675614,0.7459773722926589,0.2540362752992234,0.7846382434272978,0.2153147384849333,0.6144741572412268,,,,0.9349594607528132,0.8950599559730369,,0.5210203309181356,0.4533200613827713,0.4974774332542475,0.8411474612766549,0.2685589820648203,0.6076863237481747,0.9950049813710372,0.8553628212301939,0.0982626615533689,0.4219630696163662,0.0261283146588784,0.0311301570837825,0.0475755053020894,0.0977645244496608,0.6708610265718614,0.1578889904876284,0.763719241739795,,,,,,,,,,,,,0.8218135517196475,0.970728837791148,,4781.0,0,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,True,False,False,False,False,True,False,False,False,False,False,False,True,False,False,False,False,False,True,False,False,True,True,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,0.1536983669548511,,False,0.3189099613330878,,False,False,False,False,False,False,False,False,0.0,False,0,True,0.8571428571428571,False,False,False,0.0 +01073001400,True,True,,0.1823529411764705,0.0047058823529411,1946.0,0.7136694633528574,11.1,9.1,7.3,21.4,22.4,17.4,0.2816032887975334,0.3679342240493319,0.4835560123329907,57447.0,36066.0,0.07,17.3011023381,1.0,40.0,0.6,0.655319095139786,9.945103013698628,43.1266823529412,3260.33374354854,1.81915896353987,3.34035680534013,0.214095348702766,0.103297800913177,0.647212543554006,0.054984583761562,0.189105858170606,0.0245098039215686,0.024509803921569,0.48355601233299,0.1742543171114599,0.1150121065375302,67800.0,0.0771549125979505,0.9228450874020494,0.0008951111,5.1282e-06,2.3791e-06,,,,0.0804953560371517,0.2950894905920146,,3.16184976454882,44.7571359825,0.2384615384615384,0.0,42.1254,0.4064010997350401,0.9167523124357656,0.0,0.0,0.0,0.0035971223021582,0.0,0.0683453237410072,0.0775950668036999,0.0853031860226104,0.7255909558067831,0.1891058581706063,,,,,0.6278134628440127,71.0,,,False,,True,,0.3420576627932471,0.5051386757290068,0.0916310695360657,0.240302951305517,0.8385931477820602,0.9217996672023666,0.6049521425625418,0.7893561645783852,0.9878045311677784,0.8447513262127914,0.8689486351950112,0.8013648049887862,0.7892483999781194,0.3145069836211475,0.1404620788058391,0.9708470169677066,0.5282933267343067,0.5972204988211937,0.907050889025138,0.9704748279855576,0.9380475509230874,0.8390650299616657,0.5827647767060159,0.9563253856942496,0.8799475505569374,0.800191954147291,0.8653347031469666,0.8431412487963854,0.8462609494971342,0.4711122526224721,0.6930355791067373,0.5867081244286861,0.5846423164269493,0.7916756785984643,0.7516347007030237,0.9067399297439892,0.0522639122516786,0.6434566620719774,0.356556985519905,0.9166150755981124,0.0865380767537716,0.5590415088078317,,,,0.6917513228236646,0.8737301229199994,,0.6417351573483292,0.3727897363582321,0.885039133873299,0.3366465235813016,0.5569693544162451,0.7880665456580186,0.9840732602732248,0.2486523003016117,0.0982626615533689,0.4219630696163662,0.0924351398195788,0.0038486209108402,0.4634108061632525,0.8246557394947661,0.1930997775442523,0.5561393692083032,0.6900904835341803,,,,,,,,,,,,,0.8364273002184828,0.9602892118901531,,1946.0,9,True,False,False,True,False,False,True,False,False,True,False,False,True,True,False,True,False,True,True,True,False,True,True,True,True,False,True,True,False,False,False,False,False,False,False,False,True,True,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,True,False,True,True,True,True,False,True,True,True,True,True,False,False,False,False,False,False,True,True,0.0804953560371517,,False,0.2950894905920146,,False,False,False,False,False,False,True,True,6.0,True,1,True,1.0,True,True,True,1.0 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 36913abd5..41cf47372 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/snapshots/downloadable_data_expected.pkl b/data/data-pipeline/data_pipeline/etl/score/tests/snapshots/downloadable_data_expected.pkl index 56450cef6..4b50fff98 100644 Binary files a/data/data-pipeline/data_pipeline/etl/score/tests/snapshots/downloadable_data_expected.pkl and b/data/data-pipeline/data_pipeline/etl/score/tests/snapshots/downloadable_data_expected.pkl differ diff --git a/data/data-pipeline/data_pipeline/etl/score/tests/snapshots/score_data_expected.pkl b/data/data-pipeline/data_pipeline/etl/score/tests/snapshots/score_data_expected.pkl index 1c5518ad0..3ab649cb1 100644 Binary files a/data/data-pipeline/data_pipeline/etl/score/tests/snapshots/score_data_expected.pkl and b/data/data-pipeline/data_pipeline/etl/score/tests/snapshots/score_data_expected.pkl differ diff --git a/data/data-pipeline/data_pipeline/etl/score/tests/snapshots/score_transformed_expected.pkl b/data/data-pipeline/data_pipeline/etl/score/tests/snapshots/score_transformed_expected.pkl index f0696bdf5..5d0cfb947 100644 Binary files a/data/data-pipeline/data_pipeline/etl/score/tests/snapshots/score_transformed_expected.pkl and b/data/data-pipeline/data_pipeline/etl/score/tests/snapshots/score_transformed_expected.pkl differ diff --git a/data/data-pipeline/data_pipeline/etl/score/tests/snapshots/tile_data_expected.pkl b/data/data-pipeline/data_pipeline/etl/score/tests/snapshots/tile_data_expected.pkl index c458baf26..2666b1512 100644 Binary files a/data/data-pipeline/data_pipeline/etl/score/tests/snapshots/tile_data_expected.pkl and b/data/data-pipeline/data_pipeline/etl/score/tests/snapshots/tile_data_expected.pkl differ 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 594f48561..2e39b08b1 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,7 +1,9 @@ -import pandas as pd import numpy as np +import pandas as pd import pytest - +from data_pipeline.etl.score.etl_utils import ( + compare_to_list_of_expected_state_fips_codes, +) from data_pipeline.etl.score.etl_utils import floor_series @@ -70,3 +72,181 @@ def test_floor_series(): match="Argument series must be of type pandas series, not of type list.", ): floor_series(invalid_type, number_of_decimals=3) + + +def test_compare_to_list_of_expected_state_fips_codes(): + # Has every state/territory/DC code + fips_codes_test_1 = [ + "01", + "02", + "04", + "05", + "06", + "08", + "09", + "10", + "11", + "12", + "13", + "15", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23", + "24", + "25", + "26", + "27", + "28", + "29", + "30", + "31", + "32", + "33", + "34", + "35", + "36", + "37", + "38", + "39", + "40", + "41", + "42", + "44", + "45", + "46", + "47", + "48", + "49", + "50", + "51", + "53", + "54", + "55", + "56", + "60", + "66", + "69", + "72", + "78", + ] + + # Should not raise any errors + compare_to_list_of_expected_state_fips_codes( + actual_state_fips_codes=fips_codes_test_1 + ) + + # Should raise error because Puerto Rico is not expected + with pytest.raises(ValueError) as exception_info: + compare_to_list_of_expected_state_fips_codes( + actual_state_fips_codes=fips_codes_test_1, + puerto_rico_expected=False, + ) + partial_expected_error_message = ( + "FIPS state codes in the data that were not expected:\n['72']\n" + ) + assert partial_expected_error_message in str(exception_info.value) + + # Should raise error because Island Areas are not expected + with pytest.raises(ValueError) as exception_info: + compare_to_list_of_expected_state_fips_codes( + actual_state_fips_codes=fips_codes_test_1, + island_areas_expected=False, + ) + partial_expected_error_message = ( + "FIPS state codes in the data that were not expected:\n" + "['60', '66', '69', '78']\n" + ) + assert partial_expected_error_message in str(exception_info.value) + + # List missing PR and Guam + fips_codes_test_2 = [x for x in fips_codes_test_1 if x not in ["66", "72"]] + + # Should raise error because all Island Areas and PR are expected + with pytest.raises(ValueError) as exception_info: + compare_to_list_of_expected_state_fips_codes( + actual_state_fips_codes=fips_codes_test_2, + ) + partial_expected_error_message = ( + "FIPS state codes expected that are not present in the data:\n" + "['66', '72']\n" + ) + assert partial_expected_error_message in str(exception_info.value) + + # Missing Maine and Wisconsin + fips_codes_test_3 = [x for x in fips_codes_test_1 if x not in ["23", "55"]] + + # Should raise error because Maine and Wisconsin are expected + with pytest.raises(ValueError) as exception_info: + compare_to_list_of_expected_state_fips_codes( + actual_state_fips_codes=fips_codes_test_3, + ) + partial_expected_error_message = ( + "FIPS state codes expected that are not present in the data:\n" + "['23', '55']\n" + ) + assert partial_expected_error_message in str(exception_info.value) + + # Should not raise error because Maine and Wisconsin are expected to be missing + compare_to_list_of_expected_state_fips_codes( + actual_state_fips_codes=fips_codes_test_3, + additional_fips_codes_not_expected=["23", "55"], + ) + + # Missing the continental & AK/HI nation + fips_codes_test_4 = [ + "60", + "66", + "69", + "72", + "78", + ] + + # Should raise error because the nation is expected + with pytest.raises(ValueError) as exception_info: + compare_to_list_of_expected_state_fips_codes( + actual_state_fips_codes=fips_codes_test_4, + ) + + partial_expected_error_message = ( + "FIPS state codes expected that are not present in the data:\n" + "['01', '02', '04', '05', '06', '08', '09', '10', '11', '12', '13', '15', '16', " + "'17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', " + "'30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', " + "'44', '45', '46', '47', '48', '49', '50', '51', '53', '54', '55', '56']" + ) + + assert partial_expected_error_message in str(exception_info.value) + + # Should not raise error because continental US and AK/HI is not to be missing + compare_to_list_of_expected_state_fips_codes( + actual_state_fips_codes=fips_codes_test_4, + continental_us_expected=False, + alaska_and_hawaii_expected=False, + ) + + # Missing Hawaii but not Alaska + fips_codes_test_5 = [x for x in fips_codes_test_1 if x not in ["15"]] + + # Should raise error because both Hawaii and Alaska are expected + with pytest.raises(ValueError) as exception_info: + compare_to_list_of_expected_state_fips_codes( + actual_state_fips_codes=fips_codes_test_5, + alaska_and_hawaii_expected=True, + ) + partial_expected_error_message = ( + "FIPS state codes expected that are not present in the data:\n" + "['15']\n" + ) + assert partial_expected_error_message in str(exception_info.value) + + # Should work as expected + compare_to_list_of_expected_state_fips_codes( + actual_state_fips_codes=fips_codes_test_5, + alaska_and_hawaii_expected=True, + additional_fips_codes_not_expected=["15"], + ) 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 e1b96193b..9fc51a669 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 @@ -67,14 +64,12 @@ def test_transform_score(etl, score_data_initial, score_transformed_expected): # pylint: disable=too-many-arguments def test_create_score_data( etl, - national_tract_df, counties_transformed_expected, states_transformed_expected, score_transformed_expected, score_data_expected, ): score_data_actual = etl._create_score_data( - national_tract_df, counties_transformed_expected, states_transformed_expected, score_transformed_expected, 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 55e943720..5c9700623 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 2aac7412e..e0d519529 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,58 +1,148 @@ +import pathlib from pathlib import Path -import pandas as pd +import pandas as pd from data_pipeline.etl.base import ExtractTransformLoad -from data_pipeline.utils import get_module_logger, download_file_from_url +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 download_file_from_url +from data_pipeline.utils import get_module_logger +from data_pipeline.config import settings + logger = get_module_logger(__name__) class CDCLifeExpectancy(ExtractTransformLoad): + GEO_LEVEL = ValidGeoLevel.CENSUS_TRACT + PUERTO_RICO_EXPECTED_IN_DATA = False + + NAME = "cdc_life_expectancy" + + if settings.DATASOURCE_RETRIEVAL_FROM_AWS: + USA_FILE_URL = f"{settings.AWS_JUSTICE40_DATASOURCES_URL}/raw-data-sources/cdc_file_expectancy/US_A.CSV" + else: + USA_FILE_URL: str = "https://ftp.cdc.gov/pub/Health_Statistics/NCHS/Datasets/NVSS/USALEEP/CSV/US_A.CSV" + + LOAD_YAML_CONFIG: bool = False + LIFE_EXPECTANCY_FIELD_NAME = "Life expectancy (years)" + INPUT_GEOID_TRACT_FIELD_NAME = "Tract ID" + + STATES_MISSING_FROM_USA_FILE = ["23", "55"] + + # For some reason, LEEP does not include Maine or Wisconsin in its "All of + # USA" file. Load these separately. + if settings.DATASOURCE_RETRIEVAL_FROM_AWS: + WISCONSIN_FILE_URL: str = f"{settings.AWS_JUSTICE40_DATASOURCES_URL}/raw-data-sources/cdc_file_expectancy/WI_A.CSV" + MAINE_FILE_URL: str = f"{settings.AWS_JUSTICE40_DATASOURCES_URL}/raw-data-sources/cdc_file_expectancy/ME_A.CSV" + else: + WISCONSIN_FILE_URL: str = "https://ftp.cdc.gov/pub/Health_Statistics/NCHS/Datasets/NVSS/USALEEP/CSV/WI_A.CSV" + MAINE_FILE_URL: str = "https://ftp.cdc.gov/pub/Health_Statistics/NCHS/Datasets/NVSS/USALEEP/CSV/ME_A.CSV" + + TRACT_INPUT_COLUMN_NAME = "Tract ID" + STATE_INPUT_COLUMN_NAME = "STATE2KX" + + raw_df: pd.DataFrame + output_df: pd.DataFrame + def __init__(self): - self.FILE_URL: str = "https://ftp.cdc.gov/pub/Health_Statistics/NCHS/Datasets/NVSS/USALEEP/CSV/US_A.CSV" self.OUTPUT_PATH: Path = ( self.DATA_PATH / "dataset" / "cdc_life_expectancy" ) - self.TRACT_INPUT_COLUMN_NAME = "Tract ID" - self.LIFE_EXPECTANCY_FIELD_NAME = "Life expectancy (years)" - # Constants for output self.COLUMNS_TO_KEEP = [ self.GEOID_TRACT_FIELD_NAME, - self.LIFE_EXPECTANCY_FIELD_NAME, + field_names.LIFE_EXPECTANCY_FIELD, ] - self.raw_df: pd.DataFrame - self.output_df: pd.DataFrame - - def extract(self) -> None: - logger.info("Starting data download.") - - download_file_name = ( - self.get_tmp_path() / "cdc_life_expectancy" / "usa.csv" - ) + def _download_and_prep_data( + self, file_url: str, download_file_name: pathlib.Path + ) -> pd.DataFrame: download_file_from_url( - file_url=self.FILE_URL, + file_url=file_url, download_file_name=download_file_name, verify=True, ) - self.raw_df = pd.read_csv( + df = pd.read_csv( filepath_or_buffer=download_file_name, dtype={ # The following need to remain as strings for all of their digits, not get converted to numbers. self.TRACT_INPUT_COLUMN_NAME: "string", + self.STATE_INPUT_COLUMN_NAME: "string", }, low_memory=False, ) + return df + + def extract(self) -> None: + logger.info("Starting data download.") + + all_usa_raw_df = self._download_and_prep_data( + file_url=self.USA_FILE_URL, + download_file_name=self.get_tmp_path() / "US_A.CSV", + ) + + # Check which states are missing + states_in_life_expectancy_usa_file = list( + all_usa_raw_df[self.STATE_INPUT_COLUMN_NAME].unique() + ) + + # Expect that PR, Island Areas, and Maine/Wisconsin are missing + compare_to_list_of_expected_state_fips_codes( + actual_state_fips_codes=states_in_life_expectancy_usa_file, + continental_us_expected=self.CONTINENTAL_US_EXPECTED_IN_DATA, + puerto_rico_expected=self.PUERTO_RICO_EXPECTED_IN_DATA, + island_areas_expected=self.ISLAND_AREAS_EXPECTED_IN_DATA, + additional_fips_codes_not_expected=self.STATES_MISSING_FROM_USA_FILE, + ) + + logger.info("Downloading data for Maine") + maine_raw_df = self._download_and_prep_data( + file_url=self.MAINE_FILE_URL, + download_file_name=self.get_tmp_path() / "maine.csv", + ) + + logger.info("Downloading data for Wisconsin") + wisconsin_raw_df = self._download_and_prep_data( + file_url=self.WISCONSIN_FILE_URL, + download_file_name=self.get_tmp_path() / "wisconsin.csv", + ) + + combined_df = pd.concat( + objs=[all_usa_raw_df, maine_raw_df, wisconsin_raw_df], + ignore_index=True, + verify_integrity=True, + axis=0, + ) + + states_in_combined_df = list( + combined_df[self.STATE_INPUT_COLUMN_NAME].unique() + ) + + # Expect that PR and Island Areas are the only things now missing + compare_to_list_of_expected_state_fips_codes( + actual_state_fips_codes=states_in_combined_df, + continental_us_expected=self.CONTINENTAL_US_EXPECTED_IN_DATA, + puerto_rico_expected=self.PUERTO_RICO_EXPECTED_IN_DATA, + island_areas_expected=self.ISLAND_AREAS_EXPECTED_IN_DATA, + additional_fips_codes_not_expected=[], + ) + + # Save the updated version + self.raw_df = combined_df + def transform(self) -> None: - logger.info("Starting DOE energy burden transform.") + logger.info("Starting CDC life expectancy transform.") self.output_df = self.raw_df.rename( columns={ - "e(0)": self.LIFE_EXPECTANCY_FIELD_NAME, + "e(0)": field_names.LIFE_EXPECTANCY_FIELD, self.TRACT_INPUT_COLUMN_NAME: self.GEOID_TRACT_FIELD_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 bc53758dc..fc5589ce2 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,20 +1,45 @@ -import pandas as pd +import typing +import pandas as pd from data_pipeline.etl.base import ExtractTransformLoad -from data_pipeline.utils import get_module_logger, download_file_from_url +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 +from data_pipeline.config import settings logger = get_module_logger(__name__) class CDCPlacesETL(ExtractTransformLoad): + NAME = "cdc_places" + GEO_LEVEL: ValidGeoLevel = ValidGeoLevel.CENSUS_TRACT + PUERTO_RICO_EXPECTED_IN_DATA = False + + CDC_GEOID_FIELD_NAME = "LocationID" + CDC_VALUE_FIELD_NAME = "Data_Value" + CDC_MEASURE_FIELD_NAME = "Measure" + def __init__(self): self.OUTPUT_PATH = self.DATA_PATH / "dataset" / "cdc_places" - self.CDC_PLACES_URL = "https://chronicdata.cdc.gov/api/views/cwsq-ngmh/rows.csv?accessType=DOWNLOAD" - self.CDC_GEOID_FIELD_NAME = "LocationID" - self.CDC_VALUE_FIELD_NAME = "Data_Value" - self.CDC_MEASURE_FIELD_NAME = "Measure" + if settings.DATASOURCE_RETRIEVAL_FROM_AWS: + self.CDC_PLACES_URL = ( + f"{settings.AWS_JUSTICE40_DATASOURCES_URL}/raw-data-sources/" + "cdc_places/PLACES__Local_Data_for_Better_Health__Census_Tract_Data_2021_release.csv" + ) + else: + self.CDC_PLACES_URL = "https://chronicdata.cdc.gov/api/views/cwsq-ngmh/rows.csv?accessType=DOWNLOAD" + + self.COLUMNS_TO_KEEP: typing.List[str] = [ + self.GEOID_TRACT_FIELD_NAME, + field_names.DIABETES_FIELD, + field_names.ASTHMA_FIELD, + field_names.HEART_DISEASE_FIELD, + field_names.CANCER_FIELD, + field_names.HEALTH_INSURANCE_FIELD, + field_names.PHYS_HEALTH_NOT_GOOD_FIELD, + ] self.df: pd.DataFrame @@ -22,9 +47,7 @@ def extract(self) -> None: logger.info("Starting to download 520MB CDC Places file.") file_path = download_file_from_url( file_url=self.CDC_PLACES_URL, - download_file_name=self.get_tmp_path() - / "cdc_places" - / "census_tract.csv", + download_file_name=self.get_tmp_path() / "census_tract.csv", ) self.df = pd.read_csv( @@ -42,7 +65,6 @@ def transform(self) -> None: inplace=True, errors="raise", ) - # Note: Puerto Rico not included. self.df = self.df.pivot( index=self.GEOID_TRACT_FIELD_NAME, @@ -65,12 +87,4 @@ def transform(self) -> None: ) # Make the index (the census tract ID) a column, not the index. - self.df.reset_index(inplace=True) - - def load(self) -> None: - logger.info("Saving CDC Places Data") - - # mkdir census - self.OUTPUT_PATH.mkdir(parents=True, exist_ok=True) - - self.df.to_csv(path_or_buf=self.OUTPUT_PATH / "usa.csv", index=False) + self.output_df = self.df.reset_index() 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 7eaf0b77c..7901af087 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 47a3720c1..c4f9853e5 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,9 @@ -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 +from data_pipeline.config import settings logger = get_module_logger(__name__) @@ -17,7 +17,13 @@ class CDCSVIIndex(ExtractTransformLoad): def __init__(self): self.OUTPUT_PATH = self.DATA_PATH / "dataset" / "cdc_svi_index" - self.CDC_SVI_INDEX_URL = "https://svi.cdc.gov/Documents/Data/2018_SVI_Data/CSV/SVI2018_US.csv" + if settings.DATASOURCE_RETRIEVAL_FROM_AWS: + self.CDC_SVI_INDEX_URL = ( + f"{settings.AWS_JUSTICE40_DATASOURCES_URL}/raw-data-sources/" + "cdc_svi_index/SVI2018_US.csv" + ) + else: + self.CDC_SVI_INDEX_URL = "https://svi.cdc.gov/Documents/Data/2018_SVI_Data/CSV/SVI2018_US.csv" self.CDC_RPL_THEMES_THRESHOLD = 0.90 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 8b340d0bb..103453d14 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 subprocess from enum import Enum from pathlib import Path -import geopandas as gpd +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__) @@ -20,19 +20,20 @@ class GeoFileType(Enum): class CensusETL(ExtractTransformLoad): + SHP_BASE_PATH = ExtractTransformLoad.DATA_PATH / "census" / "shp" + GEOJSON_BASE_PATH = ExtractTransformLoad.DATA_PATH / "census" / "geojson" + CSV_BASE_PATH = ExtractTransformLoad.DATA_PATH / "census" / "csv" + GEOJSON_PATH = ExtractTransformLoad.DATA_PATH / "census" / "geojson" + NATIONAL_TRACT_CSV_PATH = CSV_BASE_PATH / "us.csv" + NATIONAL_TRACT_JSON_PATH = GEOJSON_BASE_PATH / "us.json" + GEOID_TRACT_FIELD_NAME: str = "GEOID10_TRACT" + def __init__(self): - self.SHP_BASE_PATH = self.DATA_PATH / "census" / "shp" - self.GEOJSON_BASE_PATH = self.DATA_PATH / "census" / "geojson" - self.CSV_BASE_PATH = self.DATA_PATH / "census" / "csv" # the fips_states_2010.csv is generated from data here # https://www.census.gov/geographies/reference-files/time-series/geo/tallies.html self.STATE_FIPS_CODES = get_state_fips_codes(self.DATA_PATH) - self.GEOJSON_PATH = self.DATA_PATH / "census" / "geojson" self.TRACT_PER_STATE: dict = {} # in-memory dict per state self.TRACT_NATIONAL: list = [] # in-memory global list - self.NATIONAL_TRACT_CSV_PATH = self.CSV_BASE_PATH / "us.csv" - self.NATIONAL_TRACT_JSON_PATH = self.GEOJSON_BASE_PATH / "us.json" - self.GEOID_TRACT_FIELD_NAME: str = "GEOID10_TRACT" def _path_for_fips_file( self, fips_code: str, file_type: GeoFileType 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 2f61a14a6..d172fafb6 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 @@ 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 42e2d6c9c..b36139767 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,22 +1,33 @@ -import pandas as pd +import os +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_imputations import ( + calculate_income_measures, +) 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 +from data_pipeline.utils import unzip_file_from_url logger = get_module_logger(__name__) +# because now there is a requirement for the us.json, this will port from +# AWS when a local copy does not exist. +CENSUS_DATA_S3_URL = settings.AWS_JUSTICE40_DATASOURCES_URL + "/census.zip" + class CensusACSETL(ExtractTransformLoad): - def __init__(self): - self.ACS_YEAR = 2019 - self.OUTPUT_PATH = ( - self.DATA_PATH / "dataset" / f"census_acs_{self.ACS_YEAR}" - ) + NAME = "census_acs" + ACS_YEAR = 2019 + MINIMUM_POPULATION_REQUIRED_FOR_IMPUTATION = 1 + def __init__(self): self.TOTAL_UNEMPLOYED_FIELD = "B23025_005E" self.TOTAL_IN_LABOR_FORCE = "B23025_003E" self.EMPLOYMENT_FIELDS = [ @@ -59,6 +70,23 @@ def __init__(self): self.POVERTY_LESS_THAN_200_PERCENT_FPL_FIELD_NAME = ( "Percent of individuals < 200% Federal Poverty Line" ) + self.IMPUTED_POVERTY_LESS_THAN_200_PERCENT_FPL_FIELD_NAME = ( + "Percent of individuals < 200% Federal Poverty Line, imputed" + ) + + self.ADJUSTED_POVERTY_LESS_THAN_200_PERCENT_FPL_FIELD_NAME = ( + "Adjusted percent of individuals < 200% Federal Poverty Line" + ) + + self.ADJUSTED_AND_IMPUTED_POVERTY_LESS_THAN_200_PERCENT_FPL_FIELD_NAME_PRELIMINARY = ( + "Preliminary adjusted percent of individuals < 200% Federal Poverty Line," + + " imputed" + ) + + self.ADJUSTED_AND_IMPUTED_POVERTY_LESS_THAN_200_PERCENT_FPL_FIELD_NAME = ( + "Adjusted percent of individuals < 200% Federal Poverty Line," + + " imputed" + ) self.MEDIAN_HOUSE_VALUE_FIELD = "B25077_001E" self.MEDIAN_HOUSE_VALUE_FIELD_NAME = ( @@ -136,6 +164,10 @@ def __init__(self): "Percent enrollment in college or graduate school" ) + self.IMPUTED_COLLEGE_ATTENDANCE_FIELD = ( + "Percent enrollment in college or graduate school, imputed" + ) + self.COLLEGE_NON_ATTENDANCE_FIELD = "Percent of population not currently enrolled in college or graduate school" self.RE_FIELDS = [ @@ -153,19 +185,25 @@ def __init__(self): "B03002_003E", "B03003_001E", "B03003_003E", + "B02001_007E", # "Some other race alone" ] - # Name output demographics fields. - self.BLACK_FIELD_NAME = "Black or African American alone" - self.AMERICAN_INDIAN_FIELD_NAME = ( - "American Indian and Alaska Native alone" - ) - self.ASIAN_FIELD_NAME = "Asian alone" - self.HAWAIIAN_FIELD_NAME = "Native Hawaiian and Other Pacific alone" - self.TWO_OR_MORE_RACES_FIELD_NAME = "Two or more races" - self.NON_HISPANIC_WHITE_FIELD_NAME = "Non-Hispanic White" + self.BLACK_FIELD_NAME = "Black or African American" + self.AMERICAN_INDIAN_FIELD_NAME = "American Indian / Alaska Native" + self.ASIAN_FIELD_NAME = "Asian" + self.HAWAIIAN_FIELD_NAME = "Native Hawaiian or Pacific" + self.TWO_OR_MORE_RACES_FIELD_NAME = "two or more races" + self.NON_HISPANIC_WHITE_FIELD_NAME = "White" self.HISPANIC_FIELD_NAME = "Hispanic or Latino" + # Note that `other` is lowercase because the whole field will show up in the download + # file as "Percent other races" + self.OTHER_RACE_FIELD_NAME = "other races" + + self.TOTAL_RACE_POPULATION_FIELD_NAME = ( + "Total population surveyed on racial data" + ) + # Name output demographics fields. self.RE_OUTPUT_FIELDS = [ self.BLACK_FIELD_NAME, self.AMERICAN_INDIAN_FIELD_NAME, @@ -174,32 +212,133 @@ def __init__(self): self.TWO_OR_MORE_RACES_FIELD_NAME, self.NON_HISPANIC_WHITE_FIELD_NAME, self.HISPANIC_FIELD_NAME, + self.OTHER_RACE_FIELD_NAME, ] - self.PERCENT_PREFIX = "Percent " + # Note: this field does double-duty here. It's used as the total population + # within the age questions. + # It's also what EJScreen used as their variable for total population in the + # census tract, so we use it similarly. + # See p. 83 of https://www.epa.gov/sites/default/files/2021-04/documents/ejscreen_technical_document.pdf + self.TOTAL_POPULATION_FROM_AGE_TABLE = "B01001_001E" # Estimate!!Total: + + self.AGE_INPUT_FIELDS = [ + self.TOTAL_POPULATION_FROM_AGE_TABLE, + "B01001_003E", # Estimate!!Total:!!Male:!!Under 5 years + "B01001_004E", # Estimate!!Total:!!Male:!!5 to 9 years + "B01001_005E", # Estimate!!Total:!!Male:!!10 to 14 years + "B01001_006E", # Estimate!!Total:!!Male:!!15 to 17 years + "B01001_007E", # Estimate!!Total:!!Male:!!18 and 19 years + "B01001_008E", # Estimate!!Total:!!Male:!!20 years + "B01001_009E", # Estimate!!Total:!!Male:!!21 years + "B01001_010E", # Estimate!!Total:!!Male:!!22 to 24 years + "B01001_011E", # Estimate!!Total:!!Male:!!25 to 29 years + "B01001_012E", # Estimate!!Total:!!Male:!!30 to 34 years + "B01001_013E", # Estimate!!Total:!!Male:!!35 to 39 years + "B01001_014E", # Estimate!!Total:!!Male:!!40 to 44 years + "B01001_015E", # Estimate!!Total:!!Male:!!45 to 49 years + "B01001_016E", # Estimate!!Total:!!Male:!!50 to 54 years + "B01001_017E", # Estimate!!Total:!!Male:!!55 to 59 years + "B01001_018E", # Estimate!!Total:!!Male:!!60 and 61 years + "B01001_019E", # Estimate!!Total:!!Male:!!62 to 64 years + "B01001_020E", # Estimate!!Total:!!Male:!!65 and 66 years + "B01001_021E", # Estimate!!Total:!!Male:!!67 to 69 years + "B01001_022E", # Estimate!!Total:!!Male:!!70 to 74 years + "B01001_023E", # Estimate!!Total:!!Male:!!75 to 79 years + "B01001_024E", # Estimate!!Total:!!Male:!!80 to 84 years + "B01001_025E", # Estimate!!Total:!!Male:!!85 years and over + "B01001_027E", # Estimate!!Total:!!Female:!!Under 5 years + "B01001_028E", # Estimate!!Total:!!Female:!!5 to 9 years + "B01001_029E", # Estimate!!Total:!!Female:!!10 to 14 years + "B01001_030E", # Estimate!!Total:!!Female:!!15 to 17 years + "B01001_031E", # Estimate!!Total:!!Female:!!18 and 19 years + "B01001_032E", # Estimate!!Total:!!Female:!!20 years + "B01001_033E", # Estimate!!Total:!!Female:!!21 years + "B01001_034E", # Estimate!!Total:!!Female:!!22 to 24 years + "B01001_035E", # Estimate!!Total:!!Female:!!25 to 29 years + "B01001_036E", # Estimate!!Total:!!Female:!!30 to 34 years + "B01001_037E", # Estimate!!Total:!!Female:!!35 to 39 years + "B01001_038E", # Estimate!!Total:!!Female:!!40 to 44 years + "B01001_039E", # Estimate!!Total:!!Female:!!45 to 49 years + "B01001_040E", # Estimate!!Total:!!Female:!!50 to 54 years + "B01001_041E", # Estimate!!Total:!!Female:!!55 to 59 years + "B01001_042E", # Estimate!!Total:!!Female:!!60 and 61 years + "B01001_043E", # Estimate!!Total:!!Female:!!62 to 64 years + "B01001_044E", # Estimate!!Total:!!Female:!!65 and 66 years + "B01001_045E", # Estimate!!Total:!!Female:!!67 to 69 years + "B01001_046E", # Estimate!!Total:!!Female:!!70 to 74 years + "B01001_047E", # Estimate!!Total:!!Female:!!75 to 79 years + "B01001_048E", # Estimate!!Total:!!Female:!!80 to 84 years + "B01001_049E", # Estimate!!Total:!!Female:!!85 years and over + ] + + self.AGE_OUTPUT_FIELDS = [ + field_names.PERCENT_AGE_UNDER_10, + field_names.PERCENT_AGE_10_TO_64, + field_names.PERCENT_AGE_OVER_64, + ] self.STATE_GEOID_FIELD_NAME = "GEOID2" self.COLUMNS_TO_KEEP = ( [ self.GEOID_TRACT_FIELD_NAME, + field_names.TOTAL_POP_FIELD, self.UNEMPLOYED_FIELD_NAME, self.LINGUISTIC_ISOLATION_FIELD_NAME, self.MEDIAN_INCOME_FIELD_NAME, self.POVERTY_LESS_THAN_100_PERCENT_FPL_FIELD_NAME, self.POVERTY_LESS_THAN_150_PERCENT_FPL_FIELD_NAME, - self.POVERTY_LESS_THAN_200_PERCENT_FPL_FIELD_NAME, + self.IMPUTED_POVERTY_LESS_THAN_200_PERCENT_FPL_FIELD_NAME, self.MEDIAN_HOUSE_VALUE_FIELD_NAME, self.HIGH_SCHOOL_ED_FIELD, self.COLLEGE_ATTENDANCE_FIELD, self.COLLEGE_NON_ATTENDANCE_FIELD, + self.IMPUTED_COLLEGE_ATTENDANCE_FIELD, + field_names.IMPUTED_INCOME_FLAG_FIELD_NAME, ] + self.RE_OUTPUT_FIELDS - + [self.PERCENT_PREFIX + field for field in self.RE_OUTPUT_FIELDS] + + [ + field_names.PERCENT_PREFIX + field + for field in self.RE_OUTPUT_FIELDS + ] + + self.AGE_OUTPUT_FIELDS + + [ + field_names.POVERTY_LESS_THAN_200_FPL_FIELD, + field_names.POVERTY_LESS_THAN_200_FPL_IMPUTED_FIELD, + ] ) self.df: pd.DataFrame + # pylint: disable=too-many-arguments + def _merge_geojson( + self, + df: pd.DataFrame, + usa_geo_df: gpd.GeoDataFrame, + geoid_field: str = "GEOID10", + geometry_field: str = "geometry", + state_code_field: str = "STATEFP10", + county_code_field: str = "COUNTYFP10", + ) -> gpd.GeoDataFrame: + usa_geo_df[geoid_field] = ( + usa_geo_df[geoid_field].astype(str).str.zfill(11) + ) + return gpd.GeoDataFrame( + df.merge( + usa_geo_df[ + [ + geoid_field, + geometry_field, + state_code_field, + county_code_field, + ] + ], + left_on=[self.GEOID_TRACT_FIELD_NAME], + right_on=[geoid_field], + ) + ) + def extract(self) -> None: # Define the variables to retrieve variables = ( @@ -213,6 +352,7 @@ def extract(self) -> None: + self.EDUCATIONAL_FIELDS + self.RE_FIELDS + self.COLLEGE_ATTENDANCE_FIELDS + + self.AGE_INPUT_FIELDS ) self.df = retrieve_census_acs_data( @@ -227,12 +367,37 @@ def transform(self) -> None: df = self.df - # Rename two fields. + # Here we join the geometry of the US to the dataframe so that we can impute + # The income of neighbors. first this looks locally; if there's no local + # geojson file for all of the US, this will read it off of S3 + logger.info("Reading in geojson for the country") + if not os.path.exists( + self.DATA_PATH / "census" / "geojson" / "us.json" + ): + logger.info("Fetching Census data from AWS S3") + unzip_file_from_url( + CENSUS_DATA_S3_URL, + self.DATA_PATH / "tmp", + self.DATA_PATH, + ) + + geo_df = gpd.read_file( + self.DATA_PATH / "census" / "geojson" / "us.json", + ) + + df = self._merge_geojson( + df=df, + usa_geo_df=geo_df, + ) + + # Rename some fields. df = df.rename( columns={ self.MEDIAN_HOUSE_VALUE_FIELD: self.MEDIAN_HOUSE_VALUE_FIELD_NAME, self.MEDIAN_INCOME_FIELD: self.MEDIAN_INCOME_FIELD_NAME, - } + self.TOTAL_POPULATION_FROM_AGE_TABLE: field_names.TOTAL_POP_FIELD, + }, + errors="raise", ) # Handle null values for various fields, which are `-666666666`. @@ -318,38 +483,101 @@ def transform(self) -> None: ) # Calculate some demographic information. - df[self.BLACK_FIELD_NAME] = df["B02001_003E"] - df[self.AMERICAN_INDIAN_FIELD_NAME] = df["B02001_004E"] - df[self.ASIAN_FIELD_NAME] = df["B02001_005E"] - df[self.HAWAIIAN_FIELD_NAME] = df["B02001_006E"] - df[self.TWO_OR_MORE_RACES_FIELD_NAME] = df["B02001_008E"] - df[self.NON_HISPANIC_WHITE_FIELD_NAME] = df["B03002_003E"] - df[self.HISPANIC_FIELD_NAME] = df["B03003_003E"] - - # Calculate demographics as percent - df[self.PERCENT_PREFIX + self.BLACK_FIELD_NAME] = ( - df["B02001_003E"] / df["B02001_001E"] - ) - df[self.PERCENT_PREFIX + self.AMERICAN_INDIAN_FIELD_NAME] = ( - df["B02001_004E"] / df["B02001_001E"] - ) - df[self.PERCENT_PREFIX + self.ASIAN_FIELD_NAME] = ( - df["B02001_005E"] / df["B02001_001E"] - ) - df[self.PERCENT_PREFIX + self.HAWAIIAN_FIELD_NAME] = ( - df["B02001_006E"] / df["B02001_001E"] - ) - df[self.PERCENT_PREFIX + self.TWO_OR_MORE_RACES_FIELD_NAME] = ( - df["B02001_008E"] / df["B02001_001E"] - ) - df[self.PERCENT_PREFIX + self.NON_HISPANIC_WHITE_FIELD_NAME] = ( - df["B03002_003E"] / df["B03002_001E"] - ) - df[self.PERCENT_PREFIX + self.HISPANIC_FIELD_NAME] = ( - df["B03003_003E"] / df["B03003_001E"] + df = df.rename( + columns={ + "B02001_003E": self.BLACK_FIELD_NAME, + "B02001_004E": self.AMERICAN_INDIAN_FIELD_NAME, + "B02001_005E": self.ASIAN_FIELD_NAME, + "B02001_006E": self.HAWAIIAN_FIELD_NAME, + "B02001_008E": self.TWO_OR_MORE_RACES_FIELD_NAME, + "B03002_003E": self.NON_HISPANIC_WHITE_FIELD_NAME, + "B03003_003E": self.HISPANIC_FIELD_NAME, + "B02001_007E": self.OTHER_RACE_FIELD_NAME, + "B02001_001E": self.TOTAL_RACE_POPULATION_FIELD_NAME, + }, + errors="raise", ) - # Calculate college attendance: + for race_field_name in self.RE_OUTPUT_FIELDS: + df[field_names.PERCENT_PREFIX + race_field_name] = ( + df[race_field_name] / df[self.TOTAL_RACE_POPULATION_FIELD_NAME] + ) + + # First value is the `age bucket`, and the second value is a list of all fields + # that will be summed in the calculations of the total population in that age + # bucket. + age_bucket_and_its_sum_columns = [ + ( + field_names.PERCENT_AGE_UNDER_10, + [ + "B01001_003E", # Estimate!!Total:!!Male:!!Under 5 years + "B01001_004E", # Estimate!!Total:!!Male:!!5 to 9 years + "B01001_027E", # Estimate!!Total:!!Female:!!Under 5 years + "B01001_028E", # Estimate!!Total:!!Female:!!5 to 9 years + ], + ), + ( + field_names.PERCENT_AGE_10_TO_64, + [ + "B01001_005E", # Estimate!!Total:!!Male:!!10 to 14 years + "B01001_006E", # Estimate!!Total:!!Male:!!15 to 17 years + "B01001_007E", # Estimate!!Total:!!Male:!!18 and 19 years + "B01001_008E", # Estimate!!Total:!!Male:!!20 years + "B01001_009E", # Estimate!!Total:!!Male:!!21 years + "B01001_010E", # Estimate!!Total:!!Male:!!22 to 24 years + "B01001_011E", # Estimate!!Total:!!Male:!!25 to 29 years + "B01001_012E", # Estimate!!Total:!!Male:!!30 to 34 years + "B01001_013E", # Estimate!!Total:!!Male:!!35 to 39 years + "B01001_014E", # Estimate!!Total:!!Male:!!40 to 44 years + "B01001_015E", # Estimate!!Total:!!Male:!!45 to 49 years + "B01001_016E", # Estimate!!Total:!!Male:!!50 to 54 years + "B01001_017E", # Estimate!!Total:!!Male:!!55 to 59 years + "B01001_018E", # Estimate!!Total:!!Male:!!60 and 61 years + "B01001_019E", # Estimate!!Total:!!Male:!!62 to 64 years + "B01001_029E", # Estimate!!Total:!!Female:!!10 to 14 years + "B01001_030E", # Estimate!!Total:!!Female:!!15 to 17 years + "B01001_031E", # Estimate!!Total:!!Female:!!18 and 19 years + "B01001_032E", # Estimate!!Total:!!Female:!!20 years + "B01001_033E", # Estimate!!Total:!!Female:!!21 years + "B01001_034E", # Estimate!!Total:!!Female:!!22 to 24 years + "B01001_035E", # Estimate!!Total:!!Female:!!25 to 29 years + "B01001_036E", # Estimate!!Total:!!Female:!!30 to 34 years + "B01001_037E", # Estimate!!Total:!!Female:!!35 to 39 years + "B01001_038E", # Estimate!!Total:!!Female:!!40 to 44 years + "B01001_039E", # Estimate!!Total:!!Female:!!45 to 49 years + "B01001_040E", # Estimate!!Total:!!Female:!!50 to 54 years + "B01001_041E", # Estimate!!Total:!!Female:!!55 to 59 years + "B01001_042E", # Estimate!!Total:!!Female:!!60 and 61 years + "B01001_043E", # Estimate!!Total:!!Female:!!62 to 64 years + ], + ), + ( + field_names.PERCENT_AGE_OVER_64, + [ + "B01001_020E", # Estimate!!Total:!!Male:!!65 and 66 years + "B01001_021E", # Estimate!!Total:!!Male:!!67 to 69 years + "B01001_022E", # Estimate!!Total:!!Male:!!70 to 74 years + "B01001_023E", # Estimate!!Total:!!Male:!!75 to 79 years + "B01001_024E", # Estimate!!Total:!!Male:!!80 to 84 years + "B01001_025E", # Estimate!!Total:!!Male:!!85 years and over + "B01001_044E", # Estimate!!Total:!!Female:!!65 and 66 years + "B01001_045E", # Estimate!!Total:!!Female:!!67 to 69 years + "B01001_046E", # Estimate!!Total:!!Female:!!70 to 74 years + "B01001_047E", # Estimate!!Total:!!Female:!!75 to 79 years + "B01001_048E", # Estimate!!Total:!!Female:!!80 to 84 years + "B01001_049E", # Estimate!!Total:!!Female:!!85 years and over + ], + ), + ] + + # For each age bucket, sum the relevant columns and calculate the total + # percentage. + for age_bucket, sum_columns in age_bucket_and_its_sum_columns: + df[age_bucket] = ( + df[sum_columns].sum(axis=1) / df[field_names.TOTAL_POP_FIELD] + ) + + # Calculate college attendance and adjust low income df[self.COLLEGE_ATTENDANCE_FIELD] = ( df[self.COLLEGE_ATTENDANCE_MALE_ENROLLED_PUBLIC] + df[self.COLLEGE_ATTENDANCE_MALE_ENROLLED_PRIVATE] @@ -361,26 +589,75 @@ def transform(self) -> None: 1 - df[self.COLLEGE_ATTENDANCE_FIELD] ) - # strip columns - df = df[self.COLUMNS_TO_KEEP] + # we impute income for both income measures + ## TODO: Convert to pydantic for clarity + logger.info("Imputing income information") + ImputeVariables = namedtuple( + "ImputeVariables", ["raw_field_name", "imputed_field_name"] + ) - # Save results to self. - self.df = df - - # rename columns to be used in score - rename_fields = { - "Percent of individuals < 200% Federal Poverty Line": field_names.POVERTY_LESS_THAN_200_FPL_FIELD, - } - self.df.rename( - columns=rename_fields, - inplace=True, - errors="raise", + df = calculate_income_measures( + impute_var_named_tup_list=[ + ImputeVariables( + raw_field_name=self.POVERTY_LESS_THAN_200_PERCENT_FPL_FIELD_NAME, + imputed_field_name=self.IMPUTED_POVERTY_LESS_THAN_200_PERCENT_FPL_FIELD_NAME, + ), + ImputeVariables( + raw_field_name=self.COLLEGE_ATTENDANCE_FIELD, + imputed_field_name=self.IMPUTED_COLLEGE_ATTENDANCE_FIELD, + ), + ], + geo_df=df, + geoid_field=self.GEOID_TRACT_FIELD_NAME, + minimum_population_required_for_imputation=self.MINIMUM_POPULATION_REQUIRED_FOR_IMPUTATION, ) - def load(self) -> None: - logger.info("Saving Census ACS Data") + logger.info("Calculating with imputed values") - # mkdir census - self.OUTPUT_PATH.mkdir(parents=True, exist_ok=True) + df[ + self.ADJUSTED_AND_IMPUTED_POVERTY_LESS_THAN_200_PERCENT_FPL_FIELD_NAME + ] = ( + df[self.POVERTY_LESS_THAN_200_PERCENT_FPL_FIELD_NAME].fillna( + df[self.IMPUTED_POVERTY_LESS_THAN_200_PERCENT_FPL_FIELD_NAME] + ) + - df[self.COLLEGE_ATTENDANCE_FIELD].fillna( + df[self.IMPUTED_COLLEGE_ATTENDANCE_FIELD] + ) + # Use clip to ensure that the values are not negative if college attendance + # is very high + ).clip( + lower=0 + ) + + # All values should have a value at this point + assert ( + # For tracts with >0 population + df[ + df[field_names.TOTAL_POP_FIELD] + >= self.MINIMUM_POPULATION_REQUIRED_FOR_IMPUTATION + ][ + # Then the imputed field should have no nulls + self.ADJUSTED_AND_IMPUTED_POVERTY_LESS_THAN_200_PERCENT_FPL_FIELD_NAME + ] + .isna() + .sum() + == 0 + ), "Error: not all values were filled..." - self.df.to_csv(path_or_buf=self.OUTPUT_PATH / "usa.csv", index=False) + logger.info("Renaming columns...") + df = df.rename( + columns={ + self.ADJUSTED_AND_IMPUTED_POVERTY_LESS_THAN_200_PERCENT_FPL_FIELD_NAME: field_names.POVERTY_LESS_THAN_200_FPL_IMPUTED_FIELD, + self.POVERTY_LESS_THAN_200_PERCENT_FPL_FIELD_NAME: field_names.POVERTY_LESS_THAN_200_FPL_FIELD, + } + ) + + # We generate a boolean that is TRUE when there is an imputed income but not a baseline income, and FALSE otherwise. + # This allows us to see which tracts have an imputed income. + df[field_names.IMPUTED_INCOME_FLAG_FIELD_NAME] = ( + df[field_names.POVERTY_LESS_THAN_200_FPL_IMPUTED_FIELD].notna() + & df[field_names.POVERTY_LESS_THAN_200_FPL_FIELD].isna() + ) + + # Save results to self. + self.output_df = df 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 new file mode 100644 index 000000000..e3d52988b --- /dev/null +++ b/data/data-pipeline/data_pipeline/etl/sources/census_acs/etl_imputations.py @@ -0,0 +1,166 @@ +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 + +# pylint: disable=unsubscriptable-object + +logger = get_module_logger(__name__) + + +def _get_fips_mask( + geo_df: gpd.GeoDataFrame, + row: gpd.GeoSeries, + fips_digits: int, + geoid_field: str = "GEOID10_TRACT", +) -> pd.Series: + return ( + geo_df[geoid_field].str[:fips_digits] == row[geoid_field][:fips_digits] + ) + + +def _get_neighbor_mask( + geo_df: gpd.GeoDataFrame, row: gpd.GeoSeries +) -> pd.Series: + """Returns neighboring tracts.""" + return geo_df["geometry"].touches(row["geometry"]) + + +def _choose_best_mask( + geo_df: gpd.GeoDataFrame, + masks_in_priority_order: List[pd.Series], + column_to_impute: str, +) -> pd.Series: + for mask in masks_in_priority_order: + if any(geo_df[mask][column_to_impute].notna()): + return mask + raise Exception("No mask found") + + +def _prepare_dataframe_for_imputation( + impute_var_named_tup_list: List[NamedTuple], + geo_df: gpd.GeoDataFrame, + population_field: str, + minimum_population_required_for_imputation: int = 1, + geoid_field: str = "GEOID10_TRACT", +) -> Tuple[Any, gpd.GeoDataFrame]: + """Helper for imputation. + + Given the inputs of `ImputeVariables`, returns list of tracts that need to be + imputed, along with a GeoDataFrame that has a column with the imputed field + "primed", meaning it is a copy of the raw field. + + Will drop any rows with population less than + `minimum_population_required_for_imputation`. + """ + imputing_cols = [ + impute_var_pair.raw_field_name + for impute_var_pair in impute_var_named_tup_list + ] + + # Prime column to exist + for impute_var_pair in impute_var_named_tup_list: + geo_df[impute_var_pair.imputed_field_name] = geo_df[ + impute_var_pair.raw_field_name + ].copy() + + # Generate a list of tracts for which at least one of the imputation + # columns is null that also meets population criteria. + tract_list = geo_df[ + ( + # First, check whether any of the columns we want to impute contain null + # values + geo_df[imputing_cols].isna().any(axis=1) + # Second, ensure population is not null and >= the minimum population + & ( + geo_df[population_field].notnull() + & ( + geo_df[population_field] + >= minimum_population_required_for_imputation + ) + ) + ) + ][geoid_field].unique() + + # Check that imputation is a valid choice for this set of fields + logger.info(f"Imputing values for {len(tract_list)} unique tracts.") + assert len(tract_list) > 0, "Error: No missing values to impute" + + return tract_list, geo_df + + +def calculate_income_measures( + impute_var_named_tup_list: list, + geo_df: gpd.GeoDataFrame, + geoid_field: str, + population_field: str = field_names.TOTAL_POP_FIELD, + minimum_population_required_for_imputation: int = 1, +) -> pd.DataFrame: + """Impute values based on geographic neighbors + + We only want to check neighbors a single time, so all variables + that we impute get imputed here. + + Takes in: + required: + impute_var_named_tup_list: list of named tuples (imputed field, raw field) + geo_df: geo dataframe that already has the census shapefiles merged + geoid field: tract level ID + + Returns: non-geometry pd.DataFrame + """ + # Determine where to impute variables and fill a column with nulls + tract_list, geo_df = _prepare_dataframe_for_imputation( + impute_var_named_tup_list=impute_var_named_tup_list, + geo_df=geo_df, + geoid_field=geoid_field, + population_field=population_field, + minimum_population_required_for_imputation=minimum_population_required_for_imputation, + ) + + # Iterate through the dataframe to impute in place + ## TODO: We should probably convert this to a spatial join now that we are doing >1 imputation and it's taking a lot + ## of time, but thinking through how to do this while maintaining the masking will take some time. I think the best + ## way would be to (1) spatial join to all neighbors, and then (2) iterate to take the "smallest" set of neighbors... + ## but haven't implemented it yet. + for index, row in geo_df.iterrows(): + if row[geoid_field] in tract_list: + neighbor_mask = _get_neighbor_mask(geo_df, row) + county_mask = _get_fips_mask( + geo_df=geo_df, row=row, fips_digits=5, geoid_field=geoid_field + ) + ## TODO: Did CEQ decide to cut this? + state_mask = _get_fips_mask( + geo_df=geo_df, row=row, fips_digits=2, geoid_field=geoid_field + ) + + # Impute fields for every row missing at least one value using the best possible set of neighbors + # Note that later, we will pull raw.fillna(imputed), so the mechanics of this step aren't critical + for impute_var_pair in impute_var_named_tup_list: + mask_to_use = _choose_best_mask( + geo_df=geo_df, + masks_in_priority_order=[ + neighbor_mask, + county_mask, + state_mask, + ], + column_to_impute=impute_var_pair.raw_field_name, + ) + + geo_df.loc[index, impute_var_pair.imputed_field_name] = geo_df[ + mask_to_use + ][impute_var_pair.raw_field_name].mean() + + logger.info("Casting geodataframe as a typical dataframe") + # get rid of the geometry column and cast as a typical df + df = pd.DataFrame( + geo_df[[col for col in geo_df.columns if col != "geometry"]] + ) + + # finally, return the df + return df 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 e4f3726ae..633576c79 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,9 +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 97b0f16fb..49648eae4 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 32325842f..e0322e4fc 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.config import settings 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.config import settings -from data_pipeline.utils import unzip_file_from_url, download_file_from_url +from data_pipeline.utils import unzip_file_from_url logger = get_module_logger(__name__) @@ -282,12 +283,20 @@ def extract(self) -> None: # Download MSA median incomes logger.info("Starting download of MSA median incomes.") - download = requests.get(self.MSA_MEDIAN_INCOME_URL, verify=None) + download = requests.get( + self.MSA_MEDIAN_INCOME_URL, + verify=None, + timeout=settings.REQUESTS_DEFAULT_TIMOUT, + ) self.msa_median_incomes = json.loads(download.content) # Download state median incomes logger.info("Starting download of state median incomes.") - download_state = requests.get(self.STATE_MEDIAN_INCOME_URL, verify=None) + download_state = requests.get( + self.STATE_MEDIAN_INCOME_URL, + verify=None, + timeout=settings.REQUESTS_DEFAULT_TIMOUT, + ) self.state_median_incomes = json.loads(download_state.content) ## NOTE we already have PR's MI here 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 56aa4745d..e230fa33f 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,12 +1,13 @@ import json -import requests +from typing import List import numpy as np 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.score import field_names +from data_pipeline.utils import get_module_logger pd.options.mode.chained_assignment = "raise" @@ -146,6 +147,63 @@ def __init__(self): field_names.CENSUS_DECENNIAL_UNEMPLOYMENT_FIELD_2009 ) + # Race/Ethnicity fields + self.TOTAL_RACE_POPULATION_FIELD = "PCT086001" # Total + self.ASIAN_FIELD = "PCT086002" # Total!!Asian + self.BLACK_FIELD = "PCT086003" # Total!!Black or African American + self.HAWAIIAN_FIELD = ( + "PCT086004" # Total!!Native Hawaiian and Other Pacific Islander + ) + # Note that the 2010 census for island araeas does not break out + # hispanic and non-hispanic white, so this is slightly different from + # our other demographic data + self.NON_HISPANIC_WHITE_FIELD = "PCT086005" # Total!!White + self.HISPANIC_FIELD = "PCT086006" # Total!!Hispanic or Latino + self.OTHER_RACE_FIELD = "PCT086007" # Total!!Other Ethnic Origin or Ra + + self.TOTAL_RACE_POPULATION_VI_FIELD = "P003001" # Total + self.BLACK_VI_FIELD = ( + "P003003" # Total!!One race!!Black or African American alone + ) + self.AMERICAN_INDIAN_VI_FIELD = "P003005" # Total!!One race!!American Indian and Alaska Native alone + self.ASIAN_VI_FIELD = "P003006" # Total!!One race!!Asian alone + self.HAWAIIAN_VI_FIELD = "P003007" # Total!!One race!!Native Hawaiian and Other Pacific Islander alone + self.TWO_OR_MORE_RACES_VI_FIELD = "P003009" # Total!!Two or More Races + self.NON_HISPANIC_WHITE_VI_FIELD = ( + "P005006" # Total!!Not Hispanic or Latino!!One race!!White alone + ) + self.HISPANIC_VI_FIELD = "P005002" # Total!!Hispanic or Latino + self.OTHER_RACE_VI_FIELD = ( + "P003008" # Total!!One race!!Some Other Race alone + ) + self.TOTAL_RACE_POPULATION_VI_FIELD = "P003001" # Total + + self.TOTAL_RACE_POPULATION_FIELD_NAME = ( + "Total population surveyed on racial data" + ) + self.BLACK_FIELD_NAME = "Black or African American" + self.AMERICAN_INDIAN_FIELD_NAME = "American Indian / Alaska Native" + self.ASIAN_FIELD_NAME = "Asian" + self.HAWAIIAN_FIELD_NAME = "Native Hawaiian or Pacific" + self.TWO_OR_MORE_RACES_FIELD_NAME = "two or more races" + self.NON_HISPANIC_WHITE_FIELD_NAME = "White" + self.HISPANIC_FIELD_NAME = "Hispanic or Latino" + # Note that `other` is lowercase because the whole field will show up in the download + # file as "Percent other races" + self.OTHER_RACE_FIELD_NAME = "other races" + + # Name output demographics fields. + self.RE_OUTPUT_FIELDS = [ + self.BLACK_FIELD_NAME, + self.AMERICAN_INDIAN_FIELD_NAME, + self.ASIAN_FIELD_NAME, + self.HAWAIIAN_FIELD_NAME, + self.TWO_OR_MORE_RACES_FIELD_NAME, + self.NON_HISPANIC_WHITE_FIELD_NAME, + self.HISPANIC_FIELD_NAME, + self.OTHER_RACE_FIELD_NAME, + ] + var_list = [ self.MEDIAN_INCOME_FIELD, self.TOTAL_HOUSEHOLD_RATIO_INCOME_TO_POVERTY_LEVEL_FIELD, @@ -161,6 +219,13 @@ def __init__(self): self.EMPLOYMENT_FEMALE_IN_LABOR_FORCE_FIELD, self.EMPLOYMENT_FEMALE_UNEMPLOYED_FIELD, self.TOTAL_POP_FIELD, + self.TOTAL_RACE_POPULATION_FIELD, + self.ASIAN_FIELD, + self.BLACK_FIELD, + self.HAWAIIAN_FIELD, + self.NON_HISPANIC_WHITE_FIELD, + self.HISPANIC_FIELD, + self.OTHER_RACE_FIELD, ] var_list = ",".join(var_list) @@ -179,6 +244,15 @@ def __init__(self): self.EMPLOYMENT_FEMALE_IN_LABOR_FORCE_VI_FIELD, self.EMPLOYMENT_FEMALE_UNEMPLOYED_VI_FIELD, self.TOTAL_POP_VI_FIELD, + self.BLACK_VI_FIELD, + self.AMERICAN_INDIAN_VI_FIELD, + self.ASIAN_VI_FIELD, + self.HAWAIIAN_VI_FIELD, + self.TWO_OR_MORE_RACES_VI_FIELD, + self.NON_HISPANIC_WHITE_VI_FIELD, + self.HISPANIC_VI_FIELD, + self.OTHER_RACE_VI_FIELD, + self.TOTAL_RACE_POPULATION_VI_FIELD, ] var_list_vi = ",".join(var_list_vi) @@ -209,6 +283,23 @@ def __init__(self): self.EMPLOYMENT_MALE_UNEMPLOYED_FIELD: self.EMPLOYMENT_MALE_UNEMPLOYED_FIELD, self.EMPLOYMENT_FEMALE_IN_LABOR_FORCE_FIELD: self.EMPLOYMENT_FEMALE_IN_LABOR_FORCE_FIELD, self.EMPLOYMENT_FEMALE_UNEMPLOYED_FIELD: self.EMPLOYMENT_FEMALE_UNEMPLOYED_FIELD, + self.TOTAL_RACE_POPULATION_FIELD: self.TOTAL_RACE_POPULATION_FIELD_NAME, + self.TOTAL_RACE_POPULATION_VI_FIELD: self.TOTAL_RACE_POPULATION_FIELD_NAME, + # Note there is no American Indian data for AS/GU/MI + self.AMERICAN_INDIAN_VI_FIELD: self.AMERICAN_INDIAN_FIELD_NAME, + self.ASIAN_FIELD: self.ASIAN_FIELD_NAME, + self.ASIAN_VI_FIELD: self.ASIAN_FIELD_NAME, + self.BLACK_FIELD: self.BLACK_FIELD_NAME, + self.BLACK_VI_FIELD: self.BLACK_FIELD_NAME, + self.HAWAIIAN_FIELD: self.HAWAIIAN_FIELD_NAME, + self.HAWAIIAN_VI_FIELD: self.HAWAIIAN_FIELD_NAME, + self.TWO_OR_MORE_RACES_VI_FIELD: self.TWO_OR_MORE_RACES_FIELD_NAME, + self.NON_HISPANIC_WHITE_FIELD: self.NON_HISPANIC_WHITE_FIELD_NAME, + self.NON_HISPANIC_WHITE_VI_FIELD: self.NON_HISPANIC_WHITE_FIELD_NAME, + self.HISPANIC_FIELD: self.HISPANIC_FIELD_NAME, + self.HISPANIC_VI_FIELD: self.HISPANIC_FIELD_NAME, + self.OTHER_RACE_FIELD: self.OTHER_RACE_FIELD_NAME, + self.OTHER_RACE_VI_FIELD: self.OTHER_RACE_FIELD_NAME, } # To do: Ask Census Slack Group about whether you need to hardcode the county fips @@ -251,6 +342,8 @@ def __init__(self): + "&for=tract:*&in=state:{}%20county:{}" ) + self.final_race_fields: List[str] = [] + self.df: pd.DataFrame self.df_vi: pd.DataFrame self.df_all: pd.DataFrame @@ -263,14 +356,17 @@ def extract(self) -> None: f"Downloading data for state/territory {island['state_abbreviation']}" ) for county in island["county_fips"]: + api_url = self.API_URL.format( + self.DECENNIAL_YEAR, + island["state_abbreviation"], + island["var_list"], + island["fips"], + county, + ) + logger.debug(f"CENSUS: Requesting {api_url}") download = requests.get( - self.API_URL.format( - self.DECENNIAL_YEAR, - island["state_abbreviation"], - island["var_list"], - island["fips"], - county, - ) + api_url, + timeout=settings.REQUESTS_DEFAULT_TIMOUT, ) df = json.loads(download.content) @@ -377,6 +473,19 @@ def transform(self) -> None: self.df_all["state"] + self.df_all["county"] + self.df_all["tract"] ) + # Calculate stats by race + for race_field_name in self.RE_OUTPUT_FIELDS: + output_field_name = ( + field_names.PERCENT_PREFIX + + race_field_name + + field_names.ISLAND_AREA_BACKFILL_SUFFIX + ) + self.final_race_fields.append(output_field_name) + self.df_all[output_field_name] = ( + self.df_all[race_field_name] + / self.df_all[self.TOTAL_RACE_POPULATION_FIELD_NAME] + ) + # Reporting Missing Values for col in self.df_all.columns: missing_value_count = self.df_all[col].isnull().sum() @@ -400,7 +509,7 @@ def load(self) -> None: self.PERCENTAGE_HOUSEHOLDS_BELOW_200_PERC_POVERTY_LEVEL_FIELD_NAME, self.PERCENTAGE_HIGH_SCHOOL_ED_FIELD_NAME, self.UNEMPLOYMENT_FIELD_NAME, - ] + ] + self.final_race_fields self.df_all[columns_to_include].to_csv( path_or_buf=self.OUTPUT_PATH / "usa.csv", index=False 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 eb9de9db0..c3ecb5fbe 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,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.etl.base import ValidGeoLevel +from data_pipeline.utils import get_module_logger +from data_pipeline.config import settings logger = get_module_logger(__name__) @@ -21,14 +22,35 @@ class ChildOpportunityIndex(ExtractTransformLoad): Full technical documents: https://www.diversitydatakids.org/sites/default/files/2020-02/ddk_coi2.0_technical_documentation_20200212.pdf. Github repo: https://github.com/diversitydatakids/COI/ - """ + # Metadata for the baseclass + NAME = "child_opportunity_index" + GEO_LEVEL = ValidGeoLevel.CENSUS_TRACT + LOAD_YAML_CONFIG: bool = True + + # Define these for easy code completion + EXTREME_HEAT_FIELD: str + HEALTHY_FOOD_FIELD: str + IMPENETRABLE_SURFACES_FIELD: str + READING_FIELD: str + + PUERTO_RICO_EXPECTED_IN_DATA = False + def __init__(self): - self.COI_FILE_URL = ( - "https://data.diversitydatakids.org/datastore/zip/f16fff12-b1e5-4f60-85d3-" - "3a0ededa30a0?format=csv" - ) + if settings.DATASOURCE_RETRIEVAL_FROM_AWS: + self.SOURCE_URL = ( + f"{settings.AWS_JUSTICE40_DATASOURCES_URL}/raw-data-sources/" + "child_opportunity_index/raw.zip" + ) + else: + self.SOURCE_URL = ( + "https://data.diversitydatakids.org/datastore/zip/f16fff12-b1e5-4f60-85d3-" + "3a0ededa30a0?format=csv" + ) + + # TODO: Decide about nixing this + self.TRACT_INPUT_COLUMN_NAME = self.INPUT_GEOID_TRACT_FIELD_NAME self.OUTPUT_PATH: Path = ( self.DATA_PATH / "dataset" / "child_opportunity_index" @@ -40,31 +62,19 @@ def __init__(self): self.IMPENETRABLE_SURFACES_INPUT_FIELD = "HE_GREEN" self.READING_INPUT_FIELD = "ED_READING" - # Constants for output - self.COLUMNS_TO_KEEP = [ - self.GEOID_TRACT_FIELD_NAME, - field_names.EXTREME_HEAT_FIELD, - field_names.HEALTHY_FOOD_FIELD, - field_names.IMPENETRABLE_SURFACES_FIELD, - field_names.READING_FIELD, - ] - - self.raw_df: pd.DataFrame self.output_df: pd.DataFrame def extract(self) -> None: logger.info("Starting 51MB data download.") - - unzip_file_from_url( - file_url=self.COI_FILE_URL, - download_path=self.get_tmp_path(), - unzipped_file_path=self.get_tmp_path() / "child_opportunity_index", + super().extract( + source_url=self.SOURCE_URL, + extract_path=self.get_tmp_path(), ) - self.raw_df = pd.read_csv( - filepath_or_buffer=self.get_tmp_path() - / "child_opportunity_index" - / "raw.csv", + def transform(self) -> None: + logger.info("Starting transforms.") + raw_df = pd.read_csv( + filepath_or_buffer=self.get_tmp_path() / "raw.csv", # The following need to remain as strings for all of their digits, not get # converted to numbers. dtype={ @@ -73,16 +83,13 @@ def extract(self) -> None: low_memory=False, ) - def transform(self) -> None: - logger.info("Starting transforms.") - - output_df = self.raw_df.rename( + output_df = raw_df.rename( columns={ self.TRACT_INPUT_COLUMN_NAME: self.GEOID_TRACT_FIELD_NAME, - self.EXTREME_HEAT_INPUT_FIELD: field_names.EXTREME_HEAT_FIELD, - self.HEALTHY_FOOD_INPUT_FIELD: field_names.HEALTHY_FOOD_FIELD, - self.IMPENETRABLE_SURFACES_INPUT_FIELD: field_names.IMPENETRABLE_SURFACES_FIELD, - self.READING_INPUT_FIELD: field_names.READING_FIELD, + self.EXTREME_HEAT_INPUT_FIELD: self.EXTREME_HEAT_FIELD, + self.HEALTHY_FOOD_INPUT_FIELD: self.HEALTHY_FOOD_FIELD, + self.IMPENETRABLE_SURFACES_INPUT_FIELD: self.IMPENETRABLE_SURFACES_FIELD, + self.READING_INPUT_FIELD: self.READING_FIELD, } ) @@ -95,8 +102,8 @@ def transform(self) -> None: # Convert percents from 0-100 to 0-1 to standardize with our other fields. percent_fields_to_convert = [ - field_names.HEALTHY_FOOD_FIELD, - field_names.IMPENETRABLE_SURFACES_FIELD, + self.HEALTHY_FOOD_FIELD, + self.IMPENETRABLE_SURFACES_FIELD, ] for percent_field_to_convert in percent_fields_to_convert: @@ -105,11 +112,3 @@ def transform(self) -> None: ) self.output_df = output_df - - def load(self) -> None: - logger.info("Saving CSV") - - self.OUTPUT_PATH.mkdir(parents=True, exist_ok=True) - self.output_df[self.COLUMNS_TO_KEEP].to_csv( - path_or_buf=self.OUTPUT_PATH / "usa.csv", index=False - ) 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 80407d390..3ce2e5a6d 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,64 +1,51 @@ 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.utils import get_module_logger, unzip_file_from_url +from data_pipeline.etl.base import ValidGeoLevel +from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) class DOEEnergyBurden(ExtractTransformLoad): - def __init__(self): - self.DOE_FILE_URL = ( - settings.AWS_JUSTICE40_DATASOURCES_URL - + "/DOE_LEAD_AMI_TRACT_2018_ALL.csv.zip" - ) + NAME = "doe_energy_burden" + SOURCE_URL: str = ( + settings.AWS_JUSTICE40_DATASOURCES_URL + + "/DOE_LEAD_AMI_TRACT_2018_ALL.csv.zip" + ) + GEO_LEVEL = ValidGeoLevel.CENSUS_TRACT + LOAD_YAML_CONFIG: bool = True + + REVISED_ENERGY_BURDEN_FIELD_NAME: str + def __init__(self): self.OUTPUT_PATH: Path = ( self.DATA_PATH / "dataset" / "doe_energy_burden" ) - - self.TRACT_INPUT_COLUMN_NAME = "FIP" self.INPUT_ENERGY_BURDEN_FIELD_NAME = "BURDEN" - self.REVISED_ENERGY_BURDEN_FIELD_NAME = "Energy burden" - - # Constants for output - self.COLUMNS_TO_KEEP = [ - self.GEOID_TRACT_FIELD_NAME, - self.REVISED_ENERGY_BURDEN_FIELD_NAME, - ] self.raw_df: pd.DataFrame self.output_df: pd.DataFrame - def extract(self) -> None: - logger.info("Starting data download.") - - unzip_file_from_url( - file_url=self.DOE_FILE_URL, - download_path=self.get_tmp_path(), - unzipped_file_path=self.get_tmp_path() / "doe_energy_burden", - ) - - self.raw_df = pd.read_csv( + def transform(self) -> None: + logger.info("Starting DOE Energy Burden transforms.") + raw_df: pd.DataFrame = pd.read_csv( filepath_or_buffer=self.get_tmp_path() - / "doe_energy_burden" / "DOE_LEAD_AMI_TRACT_2018_ALL.csv", # The following need to remain as strings for all of their digits, not get converted to numbers. dtype={ - self.TRACT_INPUT_COLUMN_NAME: "string", + self.INPUT_GEOID_TRACT_FIELD_NAME: "string", }, low_memory=False, ) - def transform(self) -> None: - logger.info("Starting transforms.") - - output_df = self.raw_df.rename( + logger.info("Renaming columns and ensuring output format is correct") + output_df = raw_df.rename( columns={ self.INPUT_ENERGY_BURDEN_FIELD_NAME: self.REVISED_ENERGY_BURDEN_FIELD_NAME, - self.TRACT_INPUT_COLUMN_NAME: self.GEOID_TRACT_FIELD_NAME, + self.INPUT_GEOID_TRACT_FIELD_NAME: self.GEOID_TRACT_FIELD_NAME, } ) @@ -71,11 +58,3 @@ def transform(self) -> None: ) self.output_df = output_df - - def load(self) -> None: - logger.info("Saving DOE Energy Burden CSV") - - self.OUTPUT_PATH.mkdir(parents=True, exist_ok=True) - self.output_df[self.COLUMNS_TO_KEEP].to_csv( - path_or_buf=self.OUTPUT_PATH / "usa.csv", index=False - ) 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 new file mode 100644 index 000000000..f369ed4db --- /dev/null +++ b/data/data-pipeline/data_pipeline/etl/sources/dot_travel_composite/README.md @@ -0,0 +1,16 @@ +# DOT travel barriers + +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). + +The DOT interim definition for DACs was developed by an internal and external collaborative research process (see recordings from November 2021 public meetings). It includes data for 22 indicators collected at the census tract level and grouped into six (6) categories of transportation disadvantage. The numbers in parenthesis show how many indicators fall in that category: + +- Transportation access disadvantage identifies communities and places that spend more, and take longer, to get where they need to go. (4) +- Health disadvantage identifies communities based on variables associated with adverse health outcomes, disability, as well as environmental exposures. (3) +- Environmental disadvantage identifies communities with disproportionately high levels of certain air pollutants and high potential presence of lead-based paint in housing units. (6) +- Economic disadvantage identifies areas and populations with high poverty, low wealth, lack of local jobs, low homeownership, low educational attainment, and high inequality. (7) +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. diff --git a/data/data-pipeline/data_pipeline/etl/sources/dot_travel_composite/__init__.py b/data/data-pipeline/data_pipeline/etl/sources/dot_travel_composite/__init__.py new file mode 100644 index 000000000..e69de29bb 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 new file mode 100644 index 000000000..f68c2d78e --- /dev/null +++ b/data/data-pipeline/data_pipeline/etl/sources/dot_travel_composite/etl.py @@ -0,0 +1,69 @@ +# pylint: disable=unsubscriptable-object +# pylint: disable=unsupported-assignment-operation +import geopandas as gpd +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 +from data_pipeline.config import settings + +logger = get_module_logger(__name__) + + +class TravelCompositeETL(ExtractTransformLoad): + """ETL class for the DOT Travel Disadvantage Dataset""" + + NAME = "travel_composite" + + if settings.DATASOURCE_RETRIEVAL_FROM_AWS: + SOURCE_URL = ( + f"{settings.AWS_JUSTICE40_DATASOURCES_URL}/raw-data-sources/" + "dot_travel_composite/Shapefile_and_Metadata.zip" + ) + else: + SOURCE_URL = "https://www.transportation.gov/sites/dot.gov/files/Shapefile_and_Metadata.zip" + + GEO_LEVEL = ValidGeoLevel.CENSUS_TRACT + PUERTO_RICO_EXPECTED_IN_DATA = False + LOAD_YAML_CONFIG: bool = True + + # Output score variables (values set on datasets.yml) for linting purposes + TRAVEL_BURDEN_FIELD_NAME: str + + def __init__(self): + # define the full path for the input CSV file + self.INPUT_SHP = ( + self.get_tmp_path() / "DOT_Disadvantage_Layer_Final_April2022.shp" + ) + + # this is the main dataframe + self.df: pd.DataFrame + + # Start dataset-specific vars here + ## Average of Transportation Indicator Percentiles (calculated) + ## Calculated: Average of (EPL_TCB+EPL_NWKI+EPL_NOVEH+EPL_COMMUTE) excluding NULLS + ## See metadata for more information + self.INPUT_TRAVEL_DISADVANTAGE_FIELD_NAME = "Transp_TH" + self.INPUT_GEOID_TRACT_FIELD_NAME = "FIPS" + + def transform(self) -> None: + """Reads the unzipped data file into memory and applies the following + transformations to prepare it for the load() method: + + - Renames the Census Tract column to match the other datasets + - Converts to CSV + """ + logger.info("Transforming DOT Travel Disadvantage Data") + + # read in the unzipped shapefile from data source + # reformat it to be standard df, remove unassigned rows, and + # then rename the Census Tract column for merging + df_dot: pd.DataFrame = gpd.read_file(self.INPUT_SHP) + df_dot = df_dot.rename( + columns={ + self.INPUT_GEOID_TRACT_FIELD_NAME: self.GEOID_TRACT_FIELD_NAME, + self.INPUT_TRAVEL_DISADVANTAGE_FIELD_NAME: self.TRAVEL_BURDEN_FIELD_NAME, + } + ).dropna(subset=[self.GEOID_TRACT_FIELD_NAME]) + # Assign the final df to the class' output_df for the load method + self.output_df = df_dot diff --git a/data/data-pipeline/data_pipeline/etl/sources/eamlis/README.md b/data/data-pipeline/data_pipeline/etl/sources/eamlis/README.md new file mode 100644 index 000000000..54ce9c72c --- /dev/null +++ b/data/data-pipeline/data_pipeline/etl/sources/eamlis/README.md @@ -0,0 +1,40 @@ +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. + +The figures in e-AMLIS are further broken down into 3 cost categories: + +Unfunded Cost represents pre-construction estimates to reclaim the AML feature; +Funded Cost indicates that construction has been approved by OSM and these figures may change during construction; +Completed Cost is the actual cost to complete construction and reclamation of the AML feature. +DOI/OSMRE’s Financial Business & Management System is the system of record to obtain comprehensive information about all AML grant expenditures. + +An inventory of land and water impacted by past mining (primarily coal mining) is maintained by OSMRE to provide information needed to implement the Surface Mining Control and Reclamation Act of 1977 (SMCRA). The inventory contains information on the location, type, and extent of AML impacts, as well as, information on the cost associated with the reclamation of those problems. The inventory is based upon field surveys by State, Tribal, and OSMRE program officials. It is dynamic to the extent that it is modified as new problems are identified and existing problems are reclaimed. + +The Abandoned Mine Land Reclamation Act (AMRA) of 1990, amended SMCRA. The amended law expanded the scope of data OSMRE must collect regarding AML reclamation programs and progress. On December 20, 2006, SMCRA was amended under the Tax Relief and Health Care Act of 2006 to add sources of program funding, emphasize high priority coal reclamation, and expand OSMRE’s responsibilities towards implementation and management of the AML Inventory. + +WHO MAINTAINS THE INFORMATION IN THE AML INVENTORY? +The information is developed and/or updated by the States and Indian Tribes managing their own AML programs under SMCRA or by the OSMRE office responsible for States and Indian Tribes not managing their own AML problems. + +TYPES OF PROBLEMS +"High Priority" +The most serious AML problems are those posing a threat to health, safety and general welfare of people (Priority 1 and Priority 2, or "high priority"). These are the only problems which the law requires to be inventoried. There are 17 Priority 1 and 2 problem types. + +Emergencies +Under the 2006 amendments to SMCRA, AML grants to states and tribes increased from $145 million in FY 2007 to $395 million in FY 2011. The increase in funding allowed states to take responsibility for their AML emergencies as part of their regular AML programs. + +Until FY 2011, OSMRE provided Abandoned Mine Land (AML) State Emergency grants to the 15 states that manage their own emergency programs under the Abandoned Mine Land Reclamation Program. Thirteen other states and tribes that had approved AML programs did not receive emergency grants. OSMRE managed emergencies in those 13 states and tribes as well as in Federal Program States without AML programs. + +OSMRE officially notified the state and tribal officials and Congressional delegations that, starting on October 1, 2010, they would fully assume responsibility for funding their emergency programs. OSMRE then worked with states and tribes to ensure a smooth transition to the states’ assumption of responsibility for administering state emergency programs. New funding and carryover balances were used during the transition to address immediate needs. + +Overall, OSMRE successfully transitioned the financial responsibility to the states in FY 2011, and continues to provide technical and program assistance when needed. States with AML programs are now in a position to effectively handle emergency programs. + +Environmental +AML problems impacting the environment are known as Priority 3 problems. While SMCRA does not require OSMRE to inventory every unreclaimed priority 3 problem, some program States and Indian tribes have chosen to submit such information. Information for priority 3 problem types is required when reclamation activities are funded and information on completed reclamation of priority 3 problems is kept in the inventory. + +Other Coal Mine Related Problems +Information is also kept on lower priority coal related AML problems such as lower priority coal-related projects involving public facilities, and the development of publicly-owned land. The lower priority problems are also categorized-- Priority 4 and 5 problem types. + +Non-coal Mine Related AML Problems +The non-coal problems are primarily problems reclaimed by States/Indian tribes that had "Certified" having addressed all known eligible coal related problems. States and Indian tribes managing their own AML programs reclaimed non-coal problems prior to addressing all their coal related problems under SMCRA SEC. 409-- FILLING VOIDS AND SEALING TUNNELS at the request of the Governor of the state or the governing body of the Indian tribe if the Secretary of the Department of the Interior determines such problems meet the criteria for a priority 1, extreme hazard, problems. This Program Area contains historical reclamation accomplishments for Certified Programs reclaiming Priority 1, 2, and 3 non-coal Problem Type features with pre-AML Reauthorization SMCRA funds distributed prior to October 1, 2007. diff --git a/data/data-pipeline/data_pipeline/etl/sources/eamlis/__init__.py b/data/data-pipeline/data_pipeline/etl/sources/eamlis/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/data/data-pipeline/data_pipeline/etl/sources/eamlis/etl.py b/data/data-pipeline/data_pipeline/etl/sources/eamlis/etl.py new file mode 100644 index 000000000..100c3d6a6 --- /dev/null +++ b/data/data-pipeline/data_pipeline/etl/sources/eamlis/etl.py @@ -0,0 +1,81 @@ +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.etl.base import ValidGeoLevel +from data_pipeline.etl.sources.geo_utils import add_tracts_for_geometries +from data_pipeline.utils import get_module_logger + +logger = get_module_logger(__name__) + + +class AbandonedMineETL(ExtractTransformLoad): + """Data from Office Of Surface Mining Reclamation and Enforcement's + eAMLIS. These are the locations of abandoned mines. + """ + + # Metadata for the baseclass + NAME = "eamlis" + GEO_LEVEL = ValidGeoLevel.CENSUS_TRACT + AML_BOOLEAN: str + LOAD_YAML_CONFIG: bool = True + + PUERTO_RICO_EXPECTED_IN_DATA = False + EXPECTED_MISSING_STATES = [ + "10", + "11", + "12", + "15", + "23", + "27", + "31", + "33", + "34", + "36", + "45", + "50", + "55", + ] + + # Define these for easy code completion + def __init__(self): + self.SOURCE_URL = ( + settings.AWS_JUSTICE40_DATASOURCES_URL + + "/eAMLIS export of all data.tsv.zip" + ) + + self.TRACT_INPUT_COLUMN_NAME = self.INPUT_GEOID_TRACT_FIELD_NAME + + self.OUTPUT_PATH: Path = ( + self.DATA_PATH / "dataset" / "abandoned_mine_land_inventory_system" + ) + + self.COLUMNS_TO_KEEP = [ + self.GEOID_TRACT_FIELD_NAME, + self.AML_BOOLEAN, + ] + + self.output_df: pd.DataFrame + + def transform(self) -> None: + logger.info("Starting eAMLIS transforms.") + df = pd.read_csv( + self.get_tmp_path() / "eAMLIS export of all data.tsv", + sep="\t", + low_memory=False, + ) + gdf = gpd.GeoDataFrame( + df, + geometry=gpd.points_from_xy( + x=df["Longitude"], + y=df["Latitude"], + ), + crs="epsg:4326", + ) + gdf = gdf.drop_duplicates(subset=["geometry"], keep="last") + gdf_tracts = add_tracts_for_geometries(gdf) + gdf_tracts = gdf_tracts.drop_duplicates(self.GEOID_TRACT_FIELD_NAME) + gdf_tracts[self.AML_BOOLEAN] = True + self.output_df = gdf_tracts[self.COLUMNS_TO_KEEP] 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 683dbcd26..cba408cc7 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 +from data_pipeline.etl.base import ValidGeoLevel from data_pipeline.score import field_names from data_pipeline.utils import get_module_logger @@ -8,21 +8,22 @@ class EJSCREENETL(ExtractTransformLoad): - """Load EJSCREEN data. + """Load updated EJSCREEN data.""" - Data dictionary: - https://gaftp.epa.gov/EJSCREEN/2019/2019_EJSCREEN_columns_explained.csv - """ + NAME = "ejscreen" + GEO_LEVEL: ValidGeoLevel = ValidGeoLevel.CENSUS_TRACT + INPUT_GEOID_TRACT_FIELD_NAME: str = "ID" def __init__(self): - self.EJSCREEN_FTP_URL = "https://edap-arcgiscloud-data-commons.s3.amazonaws.com/EJSCREEN2020/EJSCREEN_Tract_2020_USPR.csv.zip" - self.EJSCREEN_CSV = self.get_tmp_path() / "EJSCREEN_Tract_2020_USPR.csv" - self.CSV_PATH = self.DATA_PATH / "dataset" / "ejscreen_2019" + self.EJSCREEN_FTP_URL = "https://gaftp.epa.gov/EJSCREEN/2021/EJSCREEN_2021_USPR_Tracts.csv.zip" + self.EJSCREEN_CSV = ( + self.get_tmp_path() / "EJSCREEN_2021_USPR_Tracts.csv" + ) + self.CSV_PATH = self.DATA_PATH / "dataset" / "ejscreen" self.df: pd.DataFrame self.COLUMNS_TO_KEEP = [ self.GEOID_TRACT_FIELD_NAME, - field_names.TOTAL_POP_FIELD, # pylint: disable=duplicate-code field_names.AIR_TOXICS_CANCER_RISK_FIELD, field_names.RESPIRATORY_HAZARD_FIELD, @@ -39,6 +40,7 @@ def __init__(self): field_names.OVER_64_FIELD, field_names.UNDER_5_FIELD, field_names.LEAD_PAINT_FIELD, + field_names.UST_FIELD, ] def extract(self) -> None: @@ -53,19 +55,16 @@ def transform(self) -> None: logger.info("Transforming EJScreen Data") self.df = pd.read_csv( self.EJSCREEN_CSV, - dtype={"ID": "string"}, + dtype={self.INPUT_GEOID_TRACT_FIELD_NAME: str}, # EJSCREEN writes the word "None" for NA data. na_values=["None"], low_memory=False, ) # rename ID to Tract ID - self.df.rename( + self.output_df = self.df.rename( columns={ - "ID": self.GEOID_TRACT_FIELD_NAME, - # Note: it is currently unorthodox to use `field_names` in an ETL class, - # but I think that's the direction we'd like to move all ETL classes. - LMB - "ACSTOTPOP": field_names.TOTAL_POP_FIELD, + self.INPUT_GEOID_TRACT_FIELD_NAME: self.GEOID_TRACT_FIELD_NAME, "CANCER": field_names.AIR_TOXICS_CANCER_RISK_FIELD, "RESP": field_names.RESPIRATORY_HAZARD_FIELD, "DSLPM": field_names.DIESEL_FIELD, @@ -81,14 +80,6 @@ def transform(self) -> None: "OVER64PCT": field_names.OVER_64_FIELD, "UNDER5PCT": field_names.UNDER_5_FIELD, "PRE1960PCT": field_names.LEAD_PAINT_FIELD, + "UST": field_names.UST_FIELD, # added for 2021 update }, - inplace=True, - ) - - def load(self) -> None: - logger.info("Saving EJScreen CSV") - # write nationwide csv - self.CSV_PATH.mkdir(parents=True, exist_ok=True) - self.df[self.COLUMNS_TO_KEEP].to_csv( - self.CSV_PATH / "usa.csv", index=False ) 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 57749cc23..366e37388 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 @@ def transform(self) -> None: # 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 7007fa522..d83287fa3 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 abc2165f5..1788b835e 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,11 @@ 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 +from data_pipeline.config import settings logger = get_module_logger(__name__) @@ -20,7 +22,17 @@ class EPARiskScreeningEnvironmentalIndicatorsETL(ExtractTransformLoad): """ def __init__(self): - self.AGGREGATED_RSEI_SCORE_FILE_URL = "http://abt-rsei.s3.amazonaws.com/microdata2019/census_agg/CensusMicroTracts2019_2019_aggregated.zip" + + if settings.DATASOURCE_RETRIEVAL_FROM_AWS: + self.AGGREGATED_RSEI_SCORE_FILE_URL = ( + f"{settings.AWS_JUSTICE40_DATASOURCES_URL}/raw-data-sources/" + "epa_rsei/CensusMicroTracts2019_2019_aggregated.zip" + ) + else: + self.AGGREGATED_RSEI_SCORE_FILE_URL = ( + "http://abt-rsei.s3.amazonaws.com/microdata2019/" + "census_agg/CensusMicroTracts2019_2019_aggregated.zip" + ) self.OUTPUT_PATH: Path = self.DATA_PATH / "dataset" / "epa_rsei" self.EPA_RSEI_SCORE_THRESHOLD_CUTOFF = 0.75 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 new file mode 100644 index 000000000..c703cdedb --- /dev/null +++ b/data/data-pipeline/data_pipeline/etl/sources/fsf_flood_risk/README.md @@ -0,0 +1,3 @@ +# FSF flood risk data + +Flood risk computed as 1 in 100 year flood zone diff --git a/data/data-pipeline/data_pipeline/etl/sources/fsf_flood_risk/__init__.py b/data/data-pipeline/data_pipeline/etl/sources/fsf_flood_risk/__init__.py new file mode 100644 index 000000000..e69de29bb 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 new file mode 100644 index 000000000..1e829f3d3 --- /dev/null +++ b/data/data-pipeline/data_pipeline/etl/sources/fsf_flood_risk/etl.py @@ -0,0 +1,86 @@ +# 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 +from data_pipeline.etl.base import ValidGeoLevel +from data_pipeline.utils import get_module_logger + +logger = get_module_logger(__name__) + + +class FloodRiskETL(ExtractTransformLoad): + """ETL class for the First Street Foundation flood risk dataset""" + + NAME = "fsf_flood_risk" + # These data were emailed to the J40 team while first street got + # their official data sharing channels setup. + SOURCE_URL = settings.AWS_JUSTICE40_DATASOURCES_URL + "/fsf_flood.zip" + GEO_LEVEL = ValidGeoLevel.CENSUS_TRACT + LOAD_YAML_CONFIG: bool = True + + # Output score variables (values set on datasets.yml) for linting purposes + COUNT_PROPERTIES: str + PROPERTIES_AT_RISK_FROM_FLOODING_TODAY: str + PROPERTIES_AT_RISK_FROM_FLOODING_IN_30_YEARS: str + SHARE_OF_PROPERTIES_AT_RISK_FROM_FLOODING_TODAY: str + SHARE_OF_PROPERTIES_AT_RISK_FROM_FLOODING_IN_30_YEARS: str + + def __init__(self): + # define the full path for the input CSV file + self.INPUT_CSV = ( + self.get_tmp_path() / "fsf_flood" / "flood-tract2010.csv" + ) + + # this is the main dataframe + self.df: pd.DataFrame + + # Start dataset-specific vars here + self.COUNT_PROPERTIES_NATIVE_FIELD_NAME = "count_properties" + self.COUNT_PROPERTIES_AT_RISK_TODAY = "mid_depth_100_year00" + self.COUNT_PROPERTIES_AT_RISK_30_YEARS = "mid_depth_100_year30" + self.CLIP_PROPERTIES_COUNT = 250 + + def transform(self) -> None: + """Reads the unzipped data file into memory and applies the following + transformations to prepare it for the load() method: + + - Renames the Census Tract column to match the other datasets + - Calculates share of properties at risk, left-clipping number of properties at 250 + """ + logger.info("Transforming National Risk Index Data") + + # read in the unzipped csv data source then rename the + # Census Tract column for merging + df_fsf_flood: pd.DataFrame = pd.read_csv( + self.INPUT_CSV, + dtype={self.INPUT_GEOID_TRACT_FIELD_NAME: str}, + low_memory=False, + ) + + df_fsf_flood[self.GEOID_TRACT_FIELD_NAME] = df_fsf_flood[ + self.INPUT_GEOID_TRACT_FIELD_NAME + ].str.zfill(11) + + df_fsf_flood[self.COUNT_PROPERTIES] = df_fsf_flood[ + self.COUNT_PROPERTIES_NATIVE_FIELD_NAME + ].clip(lower=self.CLIP_PROPERTIES_COUNT) + + df_fsf_flood[self.SHARE_OF_PROPERTIES_AT_RISK_FROM_FLOODING_TODAY] = ( + df_fsf_flood[self.COUNT_PROPERTIES_AT_RISK_TODAY] + / df_fsf_flood[self.COUNT_PROPERTIES] + ) + df_fsf_flood[ + self.SHARE_OF_PROPERTIES_AT_RISK_FROM_FLOODING_IN_30_YEARS + ] = ( + df_fsf_flood[self.COUNT_PROPERTIES_AT_RISK_30_YEARS] + / df_fsf_flood[self.COUNT_PROPERTIES] + ) + + # Assign the final df to the class' output_df for the load method with rename + self.output_df = df_fsf_flood.rename( + columns={ + self.COUNT_PROPERTIES_AT_RISK_TODAY: self.PROPERTIES_AT_RISK_FROM_FLOODING_TODAY, + self.COUNT_PROPERTIES_AT_RISK_30_YEARS: self.PROPERTIES_AT_RISK_FROM_FLOODING_IN_30_YEARS, + } + ) 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 new file mode 100644 index 000000000..9d2e67068 --- /dev/null +++ b/data/data-pipeline/data_pipeline/etl/sources/fsf_wildfire_risk/README.md @@ -0,0 +1,3 @@ +# FSF wildfire risk data + +Fire risk computed as >= 0.003 burn risk probability diff --git a/data/data-pipeline/data_pipeline/etl/sources/fsf_wildfire_risk/__init__.py b/data/data-pipeline/data_pipeline/etl/sources/fsf_wildfire_risk/__init__.py new file mode 100644 index 000000000..e69de29bb 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 new file mode 100644 index 000000000..38a77f005 --- /dev/null +++ b/data/data-pipeline/data_pipeline/etl/sources/fsf_wildfire_risk/etl.py @@ -0,0 +1,83 @@ +# 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 +from data_pipeline.etl.base import ValidGeoLevel +from data_pipeline.utils import get_module_logger + +logger = get_module_logger(__name__) + + +class WildfireRiskETL(ExtractTransformLoad): + """ETL class for the First Street Foundation wildfire risk dataset""" + + NAME = "fsf_wildfire_risk" + # These data were emailed to the J40 team while first street got + # their official data sharing channels setup. + SOURCE_URL = settings.AWS_JUSTICE40_DATASOURCES_URL + "/fsf_fire.zip" + GEO_LEVEL = ValidGeoLevel.CENSUS_TRACT + PUERTO_RICO_EXPECTED_IN_DATA = False + LOAD_YAML_CONFIG: bool = True + ALASKA_AND_HAWAII_EXPECTED_IN_DATA = False + + # Output score variables (values set on datasets.yml) for linting purposes + COUNT_PROPERTIES: str + PROPERTIES_AT_RISK_FROM_FIRE_TODAY: str + PROPERTIES_AT_RISK_FROM_FIRE_IN_30_YEARS: str + SHARE_OF_PROPERTIES_AT_RISK_FROM_FIRE_TODAY: str + SHARE_OF_PROPERTIES_AT_RISK_FROM_FIRE_IN_30_YEARS: str + + def __init__(self): + # define the full path for the input CSV file + self.INPUT_CSV = self.get_tmp_path() / "fsf_fire" / "fire-tract2010.csv" + + # this is the main dataframe + self.df: pd.DataFrame + + # Start dataset-specific vars here + self.COUNT_PROPERTIES_NATIVE_FIELD_NAME = "count_properties" + self.COUNT_PROPERTIES_AT_RISK_TODAY = "burnprob_year00_flag" + self.COUNT_PROPERTIES_AT_RISK_30_YEARS = "burnprob_year30_flag" + self.CLIP_PROPERTIES_COUNT = 250 + + def transform(self) -> None: + """Reads the unzipped data file into memory and applies the following + transformations to prepare it for the load() method: + + - Renames the Census Tract column to match the other datasets + - Calculates share of properties at risk, left-clipping number of properties at 250 + """ + logger.info("Transforming National Risk Index Data") + # read in the unzipped csv data source then rename the + # Census Tract column for merging + df_fsf_fire: pd.DataFrame = pd.read_csv( + self.INPUT_CSV, + dtype={self.INPUT_GEOID_TRACT_FIELD_NAME: str}, + low_memory=False, + ) + + df_fsf_fire[self.GEOID_TRACT_FIELD_NAME] = df_fsf_fire[ + self.INPUT_GEOID_TRACT_FIELD_NAME + ].str.zfill(11) + + df_fsf_fire[self.COUNT_PROPERTIES] = df_fsf_fire[ + self.COUNT_PROPERTIES_NATIVE_FIELD_NAME + ].clip(lower=self.CLIP_PROPERTIES_COUNT) + + df_fsf_fire[self.SHARE_OF_PROPERTIES_AT_RISK_FROM_FIRE_TODAY] = ( + df_fsf_fire[self.COUNT_PROPERTIES_AT_RISK_TODAY] + / df_fsf_fire[self.COUNT_PROPERTIES] + ) + df_fsf_fire[self.SHARE_OF_PROPERTIES_AT_RISK_FROM_FIRE_IN_30_YEARS] = ( + df_fsf_fire[self.COUNT_PROPERTIES_AT_RISK_30_YEARS] + / df_fsf_fire[self.COUNT_PROPERTIES] + ) + + # Assign the final df to the class' output_df for the load method with rename + self.output_df = df_fsf_fire.rename( + columns={ + self.COUNT_PROPERTIES_AT_RISK_TODAY: self.PROPERTIES_AT_RISK_FROM_FIRE_TODAY, + self.COUNT_PROPERTIES_AT_RISK_30_YEARS: self.PROPERTIES_AT_RISK_FROM_FIRE_IN_30_YEARS, + } + ) diff --git a/data/data-pipeline/data_pipeline/etl/sources/geo_utils.py b/data/data-pipeline/data_pipeline/etl/sources/geo_utils.py new file mode 100644 index 000000000..ec0f1b51e --- /dev/null +++ b/data/data-pipeline/data_pipeline/etl/sources/geo_utils.py @@ -0,0 +1,92 @@ +"""Utililities for turning geographies into tracts, using census data""" +from functools import lru_cache +from pathlib import Path +from typing import Optional + +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__) + + +@lru_cache() +def get_tract_geojson( + _tract_data_path: Optional[Path] = None, +) -> gpd.GeoDataFrame: + logger.info("Loading tract geometry data from census ETL") + GEOJSON_PATH = _tract_data_path + if GEOJSON_PATH is None: + GEOJSON_PATH = CensusETL.NATIONAL_TRACT_JSON_PATH + if not GEOJSON_PATH.exists(): + logger.debug("Census data has not been computed, running") + census_etl = CensusETL() + census_etl.extract() + census_etl.transform() + census_etl.load() + tract_data = gpd.read_file( + GEOJSON_PATH, + include_fields=["GEOID10"], + ) + tract_data = tract_data.rename( + columns={"GEOID10": "GEOID10_TRACT"}, errors="raise" + ) + return tract_data + + +@lru_cache() +def get_tribal_geojson( + _tribal_data_path: Optional[Path] = None, +) -> gpd.GeoDataFrame: + logger.info("Loading Tribal geometry data from Tribal ETL") + GEOJSON_PATH = _tribal_data_path + if GEOJSON_PATH is None: + GEOJSON_PATH = TribalETL().NATIONAL_TRIBAL_GEOJSON_PATH + if not GEOJSON_PATH.exists(): + logger.debug("Tribal data has not been computed, running") + tribal_etl = TribalETL() + tribal_etl.extract() + tribal_etl.transform() + tribal_etl.load() + tribal_data = gpd.read_file( + GEOJSON_PATH, + ) + return tribal_data + + +def add_tracts_for_geometries( + df: gpd.GeoDataFrame, tract_data: Optional[gpd.GeoDataFrame] = None +) -> gpd.GeoDataFrame: + """Adds tract-geoids to dataframe df that contains spatial geometries + + Depends on CensusETL for the geodata to do its conversion + + Args: + df (GeoDataFrame): a geopandas GeoDataFrame with a point geometry column + tract_data (GeoDataFrame): optional override to directly pass a + geodataframe of the tract boundaries. Also helps simplify testing. + + Returns: + GeoDataFrame: the above dataframe, with an additional GEOID10_TRACT column that + maps the points in DF to census tracts and a geometry column for later + spatial analysis + """ + logger.debug("Appending tract data to dataframe") + + if tract_data is None: + tract_data = get_tract_geojson() + else: + logger.debug("Using existing tract data.") + + assert ( + tract_data.crs == df.crs + ), f"Dataframe must be projected to {tract_data.crs}" + df = gpd.sjoin( + df, + tract_data[["GEOID10_TRACT", "geometry"]], + how="inner", + op="intersects", + ) + return df 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 ed088cae2..a75845be1 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/geocorr/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/geocorr/etl.py @@ -1,16 +1,18 @@ 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, - unzip_file_from_url, -) +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__) class GeoCorrETL(ExtractTransformLoad): + NAME = "geocorr" + GEO_LEVEL: ValidGeoLevel = ValidGeoLevel.CENSUS_TRACT + PUERTO_RICO_EXPECTED_IN_DATA = False + def __init__(self): self.OUTPUT_PATH = self.DATA_PATH / "dataset" / "geocorr" @@ -24,6 +26,10 @@ def __init__(self): self.GEOCORR_PLACES_URL = "https://justice40-data.s3.amazonaws.com/data-sources/geocorr_urban_rural.csv.zip" self.GEOCORR_GEOID_FIELD_NAME = "GEOID10_TRACT" self.URBAN_HEURISTIC_FIELD_NAME = "Urban Heuristic Flag" + self.COLUMNS_TO_KEEP = [ + self.GEOID_TRACT_FIELD_NAME, + self.URBAN_HEURISTIC_FIELD_NAME, + ] self.df: pd.DataFrame @@ -35,13 +41,11 @@ def extract(self) -> None: file_url=settings.AWS_JUSTICE40_DATASOURCES_URL + "/geocorr_urban_rural.csv.zip", download_path=self.get_tmp_path(), - unzipped_file_path=self.get_tmp_path() / "geocorr", + unzipped_file_path=self.get_tmp_path(), ) self.df = pd.read_csv( - filepath_or_buffer=self.get_tmp_path() - / "geocorr" - / "geocorr_urban_rural.csv", + filepath_or_buffer=self.get_tmp_path() / "geocorr_urban_rural.csv", dtype={ self.GEOCORR_GEOID_FIELD_NAME: "string", }, @@ -50,22 +54,10 @@ def extract(self) -> None: def transform(self) -> None: logger.info("Starting GeoCorr Urban Rural Map transform") + # Put in logic from Jupyter Notebook transform when we switch in the hyperlink to Geocorr - self.df.rename( + self.output_df = self.df.rename( columns={ "urban_heuristic_flag": self.URBAN_HEURISTIC_FIELD_NAME, }, - inplace=True, ) - - pass - - # Put in logic from Jupyter Notebook transform when we switch in the hyperlink to Geocorr - - def load(self) -> None: - logger.info("Saving GeoCorr Urban Rural Map Data") - - # mkdir census - self.OUTPUT_PATH.mkdir(parents=True, exist_ok=True) - - self.df.to_csv(path_or_buf=self.OUTPUT_PATH / "usa.csv", index=False) diff --git a/data/data-pipeline/data_pipeline/etl/sources/historic_redlining/README.md b/data/data-pipeline/data_pipeline/etl/sources/historic_redlining/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/data/data-pipeline/data_pipeline/etl/sources/historic_redlining/__init__.py b/data/data-pipeline/data_pipeline/etl/sources/historic_redlining/__init__.py new file mode 100644 index 000000000..e69de29bb 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 new file mode 100644 index 000000000..4a8de3153 --- /dev/null +++ b/data/data-pipeline/data_pipeline/etl/sources/historic_redlining/etl.py @@ -0,0 +1,70 @@ +import pandas as pd +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__) + + +class HistoricRedliningETL(ExtractTransformLoad): + NAME = "historic_redlining" + GEO_LEVEL: ValidGeoLevel = ValidGeoLevel.CENSUS_TRACT + EXPECTED_MISSING_STATES = [ + "10", + "11", + "16", + "23", + "30", + "32", + "35", + "38", + "46", + "50", + "56", + ] + PUERTO_RICO_EXPECTED_IN_DATA = False + ALASKA_AND_HAWAII_EXPECTED_IN_DATA: bool = False + SOURCE_URL = settings.AWS_JUSTICE40_DATASOURCES_URL + "/HRS_2010.zip" + + def __init__(self): + self.CSV_PATH = self.DATA_PATH / "dataset" / "historic_redlining" + + self.HISTORIC_REDLINING_FILE_PATH = ( + self.get_tmp_path() / "HRS_2010.xlsx" + ) + + self.REDLINING_SCALAR = "Tract-level redlining score" + + self.COLUMNS_TO_KEEP = [ + self.GEOID_TRACT_FIELD_NAME, + self.REDLINING_SCALAR, + ] + self.df: pd.DataFrame + + def transform(self) -> None: + logger.info("Transforming Historic Redlining Data") + # this is obviously temporary + historic_redlining_data = pd.read_excel( + self.HISTORIC_REDLINING_FILE_PATH + ) + historic_redlining_data[self.GEOID_TRACT_FIELD_NAME] = ( + historic_redlining_data["GEOID10"].astype(str).str.zfill(11) + ) + historic_redlining_data = historic_redlining_data.rename( + columns={"HRS2010": self.REDLINING_SCALAR} + ) + + logger.info(f"{historic_redlining_data.columns}") + + # Calculate lots of different score thresholds for convenience + for threshold in [3.25, 3.5, 3.75]: + historic_redlining_data[ + f"{self.REDLINING_SCALAR} meets or exceeds {round(threshold, 2)}" + ] = (historic_redlining_data[self.REDLINING_SCALAR] >= threshold) + ## NOTE We add to columns to keep here + self.COLUMNS_TO_KEEP.append( + f"{self.REDLINING_SCALAR} meets or exceeds {round(threshold, 2)}" + ) + + self.output_df = historic_redlining_data 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 5a560e260..681d2cb91 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__) @@ -35,7 +35,7 @@ def extract(self) -> None: # New file name: tmp_csv_file_path = ( - zip_file_dir / f"htaindex_data_tracts_{fips}.csv" + zip_file_dir / f"htaindex2019_data_tracts_{fips}.csv" ) try: 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 6cc5b2c21..0e08d2259 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,16 +1,28 @@ 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 +from data_pipeline.config import settings logger = get_module_logger(__name__) class HudHousingETL(ExtractTransformLoad): + NAME = "hud_housing" + GEO_LEVEL: ValidGeoLevel = ValidGeoLevel.CENSUS_TRACT + def __init__(self): - self.OUTPUT_PATH = self.DATA_PATH / "dataset" / "hud_housing" self.GEOID_TRACT_FIELD_NAME = "GEOID10_TRACT" - self.HOUSING_FTP_URL = "https://www.huduser.gov/portal/datasets/cp/2014thru2018-140-csv.zip" - self.HOUSING_ZIP_FILE_DIR = self.get_tmp_path() / "hud_housing" + + if settings.DATASOURCE_RETRIEVAL_FROM_AWS: + self.HOUSING_FTP_URL = ( + f"{settings.AWS_JUSTICE40_DATASOURCES_URL}/raw-data-sources/" + "hud_housing/2014thru2018-140-csv.zip" + ) + else: + self.HOUSING_FTP_URL = "https://www.huduser.gov/portal/datasets/cp/2014thru2018-140-csv.zip" + + self.HOUSING_ZIP_FILE_DIR = self.get_tmp_path() # We measure households earning less than 80% of HUD Area Median Family Income by county # and paying greater than 30% of their income to housing costs. @@ -19,6 +31,17 @@ def __init__(self): self.HOUSING_BURDEN_DENOMINATOR_FIELD_NAME = ( "HOUSING_BURDEN_DENOMINATOR" ) + self.NO_KITCHEN_OR_INDOOR_PLUMBING_FIELD_NAME = ( + "Share of homes with no kitchen or indoor plumbing (percent)" + ) + self.COLUMNS_TO_KEEP = [ + self.GEOID_TRACT_FIELD_NAME, + self.HOUSING_BURDEN_NUMERATOR_FIELD_NAME, + self.HOUSING_BURDEN_DENOMINATOR_FIELD_NAME, + self.HOUSING_BURDEN_FIELD_NAME, + self.NO_KITCHEN_OR_INDOOR_PLUMBING_FIELD_NAME, + "DENOM INCL NOT COMPUTED", + ] # Note: some variable definitions. # HUD-adjusted median family income (HAMFI). @@ -27,7 +50,8 @@ def __init__(self): # - incomplete plumbing facilities, # - more than 1 person per room, # - cost burden greater than 30%. - # Table 8 is the desired table. + # Table 8 is the desired table for housing burden + # Table 3 is the desired table for no kitchen or indoor plumbing self.df: pd.DataFrame @@ -38,124 +62,74 @@ def extract(self) -> None: self.HOUSING_ZIP_FILE_DIR, ) - def transform(self) -> None: - logger.info("Transforming HUD Housing Data") - + def _read_chas_table(self, file_name): # New file name: - tmp_csv_file_path = self.HOUSING_ZIP_FILE_DIR / "140" / "Table8.csv" - self.df = pd.read_csv( + tmp_csv_file_path = self.HOUSING_ZIP_FILE_DIR / "140" / file_name + tmp_df = pd.read_csv( filepath_or_buffer=tmp_csv_file_path, encoding="latin-1", ) - # Rename and reformat block group ID - self.df.rename( - columns={"geoid": self.GEOID_TRACT_FIELD_NAME}, inplace=True - ) - # The CHAS data has census tract ids such as `14000US01001020100` # Whereas the rest of our data uses, for the same tract, `01001020100`. - # the characters before `US`: - self.df[self.GEOID_TRACT_FIELD_NAME] = self.df[ - self.GEOID_TRACT_FIELD_NAME - ].str.replace(r"^.*?US", "", regex=True) + # This reformats and renames this field. + tmp_df[self.GEOID_TRACT_FIELD_NAME] = tmp_df["geoid"].str.replace( + r"^.*?US", "", regex=True + ) + + return tmp_df + + def transform(self) -> None: + logger.info("Transforming HUD Housing Data") + + table_8 = self._read_chas_table("Table8.csv") + table_3 = self._read_chas_table("Table3.csv") + + self.df = table_8.merge( + table_3, how="outer", on=self.GEOID_TRACT_FIELD_NAME + ) + + # Calculate share that lacks indoor plumbing or kitchen + # This is computed as + # ( + # owner occupied without plumbing + renter occupied without plumbing + # ) / ( + # total of owner and renter occupied + # ) + self.df[self.NO_KITCHEN_OR_INDOOR_PLUMBING_FIELD_NAME] = ( + # T3_est3: owner-occupied lacking complete plumbing or kitchen facilities for all levels of income + # T3_est46: subtotal: renter-occupied lacking complete plumbing or kitchen facilities for all levels of income + # T3_est2: subtotal: owner-occupied for all levels of income + # T3_est45: subtotal: renter-occupied for all levels of income + self.df["T3_est3"] + + self.df["T3_est46"] + ) / (self.df["T3_est2"] + self.df["T3_est45"]) # Calculate housing burden - # This is quite a number of steps. It does not appear to be accessible nationally in a simpler format, though. # See "CHAS data dictionary 12-16.xlsx" # Owner occupied numerator fields OWNER_OCCUPIED_NUMERATOR_FIELDS = [ - # Column Name - # Line_Type - # Tenure - # Household income - # Cost burden - # Facilities - "T8_est7", - # Subtotal - # Owner occupied - # less than or equal to 30% of HAMFI - # greater than 30% but less than or equal to 50% - # All - "T8_est10", - # Subtotal - # Owner occupied - # less than or equal to 30% of HAMFI - # greater than 50% - # All - "T8_est20", - # Subtotal - # Owner occupied - # greater than 30% but less than or equal to 50% of HAMFI - # greater than 30% but less than or equal to 50% - # All - "T8_est23", - # Subtotal - # Owner occupied - # greater than 30% but less than or equal to 50% of HAMFI - # greater than 50% - # All - "T8_est33", - # Subtotal - # Owner occupied - # greater than 50% but less than or equal to 80% of HAMFI - # greater than 30% but less than or equal to 50% - # All - "T8_est36", - # Subtotal - # Owner occupied - # greater than 50% but less than or equal to 80% of HAMFI - # greater than 50% - # All + "T8_est7", # Owner, less than or equal to 30% of HAMFI, greater than 30% but less than or equal to 50% + "T8_est10", # Owner, less than or equal to 30% of HAMFI, greater than 50% + "T8_est20", # Owner, greater than 30% but less than or equal to 50% of HAMFI, greater than 30% but less than or equal to 50% + "T8_est23", # Owner, greater than 30% but less than or equal to 50% of HAMFI, greater than 50% + "T8_est33", # Owner, greater than 50% but less than or equal to 80% of HAMFI, greater than 30% but less than or equal to 50% + "T8_est36", # Owner, greater than 50% but less than or equal to 80% of HAMFI, greater than 50% ] # These rows have the values where HAMFI was not computed, b/c of no or negative income. + # They are in the same order as the rows above OWNER_OCCUPIED_NOT_COMPUTED_FIELDS = [ - # Column Name - # Line_Type - # Tenure - # Household income - # Cost burden - # Facilities "T8_est13", - # Subtotal - # Owner occupied - # less than or equal to 30% of HAMFI - # not computed (no/negative income) - # All "T8_est26", - # Subtotal - # Owner occupied - # greater than 30% but less than or equal to 50% of HAMFI - # not computed (no/negative income) - # All "T8_est39", - # Subtotal - # Owner occupied - # greater than 50% but less than or equal to 80% of HAMFI - # not computed (no/negative income) - # All "T8_est52", - # Subtotal - # Owner occupied - # greater than 80% but less than or equal to 100% of HAMFI - # not computed (no/negative income) - # All "T8_est65", - # Subtotal - # Owner occupied - # greater than 100% of HAMFI - # not computed (no/negative income) - # All ] + # This represents all owner-occupied housing units OWNER_OCCUPIED_POPULATION_FIELD = "T8_est2" - # Subtotal - # Owner occupied - # All - # All - # All # Renter occupied numerator fields RENTER_OCCUPIED_NUMERATOR_FIELDS = [ @@ -280,18 +254,4 @@ def transform(self) -> None: float ) - def load(self) -> None: - logger.info("Saving HUD Housing Data") - - self.OUTPUT_PATH.mkdir(parents=True, exist_ok=True) - - # Drop unnecessary fields - self.df[ - [ - self.GEOID_TRACT_FIELD_NAME, - self.HOUSING_BURDEN_NUMERATOR_FIELD_NAME, - self.HOUSING_BURDEN_DENOMINATOR_FIELD_NAME, - self.HOUSING_BURDEN_FIELD_NAME, - "DENOM INCL NOT COMPUTED", - ] - ].to_csv(path_or_buf=self.OUTPUT_PATH / "usa.csv", index=False) + self.output_df = self.df 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 c5f6ce63c..447202f31 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,16 +1,27 @@ 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 + logger = get_module_logger(__name__) class HudRecapETL(ExtractTransformLoad): def __init__(self): - # pylint: disable=line-too-long - self.HUD_RECAP_CSV_URL = "https://opendata.arcgis.com/api/v3/datasets/56de4edea8264fe5a344da9811ef5d6e_0/downloads/data?format=csv&spatialRefId=4326" # noqa: E501 + + if settings.DATASOURCE_RETRIEVAL_FROM_AWS: + self.HUD_RECAP_CSV_URL = ( + f"{settings.AWS_JUSTICE40_DATASOURCES_URL}/raw-data-sources/" + "hud_recap/Racially_or_Ethnically_Concentrated_Areas_of_Poverty__R_ECAPs_.csv" + ) + else: + self.HUD_RECAP_CSV_URL = ( + "https://opendata.arcgis.com/api/v3/datasets/" + "56de4edea8264fe5a344da9811ef5d6e_0/downloads/data?format=csv&spatialRefId=4326" + ) + self.HUD_RECAP_CSV = ( self.get_tmp_path() / "Racially_or_Ethnically_Concentrated_Areas_of_Poverty__R_ECAPs_.csv" @@ -26,7 +37,11 @@ def __init__(self): def extract(self) -> None: logger.info("Downloading HUD Recap Data") - download = requests.get(self.HUD_RECAP_CSV_URL, verify=None) + download = requests.get( + self.HUD_RECAP_CSV_URL, + verify=None, + timeout=settings.REQUESTS_DEFAULT_TIMOUT, + ) file_contents = download.content csv_file = open(self.HUD_RECAP_CSV, "wb") csv_file.write(file_contents) 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 5b0f2a391..4299dc04d 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 - +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.score import field_names -from data_pipeline.config import settings +from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) @@ -96,4 +95,3 @@ def load(self) -> None: 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 b4bbe7d08..bcc24910a 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 ea2f81523..d9caac8df 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,12 @@ 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 +from data_pipeline.config import settings logger = get_module_logger(__name__) @@ -21,10 +23,16 @@ class MappingInequalityETL(ExtractTransformLoad): """ def __init__(self): - self.MAPPING_INEQUALITY_CSV_URL = ( - "https://raw.githubusercontent.com/americanpanorama/Census_HOLC_Research/" - "main/2010_Census_Tracts/holc_tract_lookup.csv" - ) + if settings.DATASOURCE_RETRIEVAL_FROM_AWS: + self.MAPPING_INEQUALITY_CSV_URL = ( + f"{settings.AWS_JUSTICE40_DATASOURCES_URL}/raw-data-sources/" + "mapping_inequality/holc_tract_lookup.csv" + ) + else: + self.MAPPING_INEQUALITY_CSV_URL = ( + "https://raw.githubusercontent.com/americanpanorama/Census_HOLC_Research/" + "main/2010_Census_Tracts/holc_tract_lookup.csv" + ) self.MAPPING_INEQUALITY_CSV = ( self.get_tmp_path() / "holc_tract_lookup.csv" ) @@ -47,16 +55,21 @@ def __init__(self): self.HOLC_GRADE_AND_ID_FIELD: str = "holc_id" self.CITY_INPUT_FIELD: str = "city" - self.HOLC_GRADE_D_FIELD: str = "HOLC Grade D" + self.HOLC_GRADE_D_FIELD: str = "HOLC Grade D (hazardous)" + self.HOLC_GRADE_C_FIELD: str = "HOLC Grade C (declining)" self.HOLC_GRADE_MANUAL_FIELD: str = "HOLC Grade (manually mapped)" self.HOLC_GRADE_DERIVED_FIELD: str = "HOLC Grade (derived)" self.COLUMNS_TO_KEEP = [ self.GEOID_TRACT_FIELD_NAME, + field_names.HOLC_GRADE_C_TRACT_PERCENT_FIELD, + field_names.HOLC_GRADE_C_OR_D_TRACT_PERCENT_FIELD, + field_names.HOLC_GRADE_C_OR_D_TRACT_50_PERCENT_FIELD, field_names.HOLC_GRADE_D_TRACT_PERCENT_FIELD, field_names.HOLC_GRADE_D_TRACT_20_PERCENT_FIELD, field_names.HOLC_GRADE_D_TRACT_50_PERCENT_FIELD, field_names.HOLC_GRADE_D_TRACT_75_PERCENT_FIELD, + field_names.REDLINED_SHARE, ] self.df: pd.DataFrame @@ -113,34 +126,58 @@ def transform(self) -> None: how="left", ) - # Create a single field that combines the 'derived' grade D field with the - # manually mapped grade D field into a single grade D field. - merged_df[self.HOLC_GRADE_D_FIELD] = np.where( - (merged_df[self.HOLC_GRADE_DERIVED_FIELD] == "D") - | (merged_df[self.HOLC_GRADE_MANUAL_FIELD] == "D"), - True, - None, - ) + # Create a single field that combines the 'derived' grade C and D fields with the + # manually mapped grade C and D field into a single grade C and D field. + ## Note: there are no manually derived C tracts at the moment + + for grade, field_name in [ + ("C", self.HOLC_GRADE_C_FIELD), + ("D", self.HOLC_GRADE_D_FIELD), + ]: + merged_df[field_name] = np.where( + (merged_df[self.HOLC_GRADE_DERIVED_FIELD] == grade) + | (merged_df[self.HOLC_GRADE_MANUAL_FIELD] == grade), + True, + None, + ) + + redlined_dataframes_list = [ + merged_df[merged_df[field].fillna(False)] + .groupby(self.GEOID_TRACT_FIELD_NAME)[self.TRACT_PROPORTION_FIELD] + .sum() + .rename(new_name) + for field, new_name in [ + ( + self.HOLC_GRADE_D_FIELD, + field_names.HOLC_GRADE_D_TRACT_PERCENT_FIELD, + ), + ( + self.HOLC_GRADE_C_FIELD, + field_names.HOLC_GRADE_C_TRACT_PERCENT_FIELD, + ), + ] + ] - # Start grouping by, to sum all of the grade D parts of each tract. + # Group by tract ID to get tract proportions of just C or just D + # This produces a single row per tract grouped_df = ( - merged_df.groupby( - by=[ - self.GEOID_TRACT_FIELD_NAME, - self.HOLC_GRADE_D_FIELD, - ], - # Keep the nulls, so we know the non-D proportion. - dropna=False, - )[self.TRACT_PROPORTION_FIELD] - .sum() + pd.concat( + redlined_dataframes_list, + axis=1, + ) + .fillna(0) .reset_index() ) - # Create a field that is only the percent that is grade D. - grouped_df[field_names.HOLC_GRADE_D_TRACT_PERCENT_FIELD] = np.where( - grouped_df[self.HOLC_GRADE_D_FIELD], - grouped_df[self.TRACT_PROPORTION_FIELD], - 0, + grouped_df[ + field_names.HOLC_GRADE_C_OR_D_TRACT_PERCENT_FIELD + ] = grouped_df[ + [ + field_names.HOLC_GRADE_C_TRACT_PERCENT_FIELD, + field_names.HOLC_GRADE_D_TRACT_PERCENT_FIELD, + ] + ].sum( + axis=1 ) # Calculate some specific threshold cutoffs, for convenience. @@ -154,15 +191,14 @@ def transform(self) -> None: grouped_df[field_names.HOLC_GRADE_D_TRACT_PERCENT_FIELD] > 0.75 ) - # Drop the non-True values of `self.HOLC_GRADE_D_FIELD` -- we only - # want one row per tract for future joins. - # Note this means not all tracts will be in this data. - # Note: this singleton comparison warning may be a pylint bug: - # https://stackoverflow.com/questions/51657715/pylint-pandas-comparison-to-true-should-be-just-expr-or-expr-is-true-sin#comment90876517_51657715 - # pylint: disable=singleton-comparison - grouped_df = grouped_df[ - grouped_df[self.HOLC_GRADE_D_FIELD] == True # noqa: E712 - ] + grouped_df[field_names.HOLC_GRADE_C_OR_D_TRACT_50_PERCENT_FIELD] = ( + grouped_df[field_names.HOLC_GRADE_C_OR_D_TRACT_PERCENT_FIELD] > 0.5 + ) + + # Create the indicator we will use + grouped_df[field_names.REDLINED_SHARE] = ( + grouped_df[field_names.HOLC_GRADE_C_OR_D_TRACT_PERCENT_FIELD] > 0.5 + ) & (grouped_df[field_names.HOLC_GRADE_D_TRACT_PERCENT_FIELD] > 0) # Sort for convenience. grouped_df.sort_values(by=self.GEOID_TRACT_FIELD_NAME, inplace=True) 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 e76fc47f6..f2949cc3d 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 5f7cff177..fb1679cec 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.config import settings 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.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 03ada026e..1bab79272 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 @@ -1,5 +1,4 @@ # Michigan EJSCREEN - The Michigan EJSCREEN description and publication can be found [here](https://deepblue.lib.umich.edu/bitstream/handle/2027.42/149105/AssessingtheStateofEnvironmentalJusticeinMichigan_344.pdf). @@ -30,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 f73fb89a1..cfbad0d33 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.config import settings 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.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 5b14d79b8..ae31dab19 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,11 +2,11 @@ # 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 +from data_pipeline.config import settings logger = get_module_logger(__name__) @@ -15,8 +15,21 @@ class NationalRiskIndexETL(ExtractTransformLoad): """ETL class for the FEMA National Risk Index dataset""" NAME = "national_risk_index" - SOURCE_URL = "https://hazards.fema.gov/nri/Content/StaticDocuments/DataDownload//NRI_Table_CensusTracts/NRI_Table_CensusTracts.zip" + + if settings.DATASOURCE_RETRIEVAL_FROM_AWS: + SOURCE_URL = ( + f"{settings.AWS_JUSTICE40_DATASOURCES_URL}/raw-data-sources/" + "national_risk_index/NRI_Table_CensusTracts.zip" + ) + else: + SOURCE_URL = ( + "https://hazards.fema.gov/nri/Content/StaticDocuments/DataDownload/" + "NRI_Table_CensusTracts/NRI_Table_CensusTracts.zip" + ) + GEO_LEVEL = ValidGeoLevel.CENSUS_TRACT + PUERTO_RICO_EXPECTED_IN_DATA = False + LOAD_YAML_CONFIG: bool = True # Output score variables (values set on datasets.yml) for linting purposes RISK_INDEX_EXPECTED_ANNUAL_LOSS_SCORE_FIELD_NAME: str @@ -33,9 +46,6 @@ class NationalRiskIndexETL(ExtractTransformLoad): AGRIVALUE_LOWER_BOUND = 408000 def __init__(self): - # load YAML config - self.DATASET_CONFIG = super().yaml_config_load() - # define the full path for the input CSV file self.INPUT_CSV = self.get_tmp_path() / "NRI_Table_CensusTracts.csv" @@ -156,6 +166,27 @@ def transform(self) -> None: lower=self.AGRIVALUE_LOWER_BOUND ) + ## Check that this clip worked -- that the only place the value has changed is when the clip took effect + base_expectation = ( + disaster_agriculture_sum_series + / df_nri[self.AGRICULTURAL_VALUE_INPUT_FIELD_NAME] + ) + assert ( + df_nri[ + df_nri[self.EXPECTED_AGRICULTURE_LOSS_RATE_FIELD_NAME] + != base_expectation + ][self.AGRICULTURAL_VALUE_INPUT_FIELD_NAME].max() + <= self.AGRIVALUE_LOWER_BOUND + ), ( + "Clipping the agrivalue did not work. There are places where the value doesn't " + + "match an unclipped ratio, even where the agrivalue is above the lower bound!" + ) + + assert ( + df_nri[self.EXPECTED_AGRICULTURE_LOSS_RATE_FIELD_NAME] + != base_expectation + ).sum() > 0, "Clipping the agrivalue did nothing!" + # This produces a boolean that is True in the case of non-zero agricultural value df_nri[self.CONTAINS_AGRIVALUE] = ( df_nri[self.AGRICULTURAL_VALUE_INPUT_FIELD_NAME] > 0 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 new file mode 100644 index 000000000..cf1d50144 --- /dev/null +++ b/data/data-pipeline/data_pipeline/etl/sources/nlcd_nature_deprived/README.md @@ -0,0 +1,80 @@ +# Nature deprived communities data + +The following dataset was compiled by TPL (Trust for Public Lands) using NCLD data. We define as: AREA - [CROPLAND] - [IMPERVIOUS SURFACES]. + +## Codebook +- GEOID10 – Census tract ID +- SF – State Name +- CF – County Name +- P200_PFS – Percent of individuals below 200% Federal Poverty Line (from CEJST source data). +- CA_LT20 – Percent higher ed enrollment rate is less than 20% (from CEJST source data). +- TractAcres – Acres of tract calculated from ALAND10 field (area land/meters) in 2010 census tracts. + - CAVEAT: Some census tracts in the CEJST source file extend into open water. ALAND10 area was used to constrain percent calculations (e.g. cropland area) to land only. +- 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. +- __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% +- ImpOrCrop – If tract >= 90th percentile for PctImperv OR PctCrops. 1 = True, 0 = False. + - PctImperv 90th percentile = 67.4146 % + - PctCrops 90th percentile = 27.8116 % +- LowInAndEd – If tract >= 65th percentile for P200_PFS AND CA_LT20. + - P200_PFS 65th percentile = 64.0% +- NatureDep – ImpOrCrp = 1 AND LowInAndEd = 1. + +We added `GEOID10_TRACT` before converting shapefile to csv. + +## Instructions to recreate + +### Creating Impervious plus Cropland Attributes for Census Tracts + +The Cropland Data Layer and NLCD Impervious layer were too big to put on our OneDrive, but you can download them here: + CDL: https://www.nass.usda.gov/Research_and_Science/Cropland/Release/datasets/2021_30m_cdls.zip + Impervious: https://s3-us-west-2.amazonaws.com/mrlc/nlcd_2019_impervious_l48_20210604.zip + + +#### Crops + +Add an attribute called TractAcres (or similar) to the census tracts to hold a value representing acres covered by the census tract. +Calculate the TractAcres field for each census tract by using the Calculate Geometry tool (set the Property to Area (geodesic), and the Units to Acres). +From the Cropland Data Layer (CDL), extract only the pixels representing crops, using the Extract by Attributes tool in ArcGIS Spatial Analyst toolbox. +a. The attribute table tells you the names of each type of land cover. Since the CDL also contains NLCD classes and empty classes, the actual crop classes must be extracted. +From the crops-only raster extracted from the CDL, run the Reclassify tool to create a binary layer where all crops = 1, and everything else is Null. +Run the Tabulate Area tool: +a. Zone data = census tracts +b. Input raster data = the binary crops layer +c. This will produce a table with the square meters of crops in each census tract contained in an attribute called VALUE_1 +Run the Join Field tool to join the table to the census tracts, with the VALUE_1 field as the Transfer Field, to transfer the VALUE_1 field (square meters of crops) to the census tracts. +Add a field to the census tracts called AcresCrops (or similar) to hold the acreage of crops in each census tract. +Calculate the AcresCrops field by multiplying the VALUE_1 field by 0.000247105 to produce acres of crops in each census tracts. +a. You can delete the VALUE_1 field. +Add a field called PctCrops (or similar) to hold the percent of each census tract occupied by crops. +Calculate the PctCrops field by dividing the AcresCrops field by the TractAcres field, and multiply by 100 to get the percent. +Impervious + +Run the Zonal Statistics as Table tool: +a. Zone data = census tracts +b. Input raster data = impervious data raster layer +c. Statistics type = Mean +d. This will produce a table with the percent of each census tract occupied by impervious surfaces, contained in an attribute called MEAN + +Run the Join Field tool to join the table to the census tracts, with the MEAN field as the Transfer Field, to transfer the MEAN field (percent impervious) to the census tracts. + +Add a field called PctImperv (or similar) to hold the percent impervious value. + +Calculate the PctImperv field by setting it equal to the MEAN field. +a. You can delete the MEAN field. +Combine the Crops and Impervious Data + +Open the census tracts attribute table and add a field called PctNatural (or similar). Calculate this field using this equation: 100 – PctCrops – PctImperv . This produces a value that tells you the percent of each census tract covered in natural land cover. + +Define the census tracts that fall in the 90th percentile of non-natural land cover: +a. Add a field called PctNat90 (or similar) +b. Right-click on the PctNatural field, and click Sort Ascending (lowest PctNatural values on top) +c. Select the top 10 percent of rows after the sort +d. Click on Show Selected Records in the attribute table +e. Calculate the PctNat90 field for the selected records = 1 +f. Clear the selection +g. The rows that now have a value of 1 for PctNat90 are the most lacking for natural land cover, and can be symbolized accordingly in a map diff --git a/data/data-pipeline/data_pipeline/etl/sources/nlcd_nature_deprived/__init__.py b/data/data-pipeline/data_pipeline/etl/sources/nlcd_nature_deprived/__init__.py new file mode 100644 index 000000000..e69de29bb 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 new file mode 100644 index 000000000..ff1fab777 --- /dev/null +++ b/data/data-pipeline/data_pipeline/etl/sources/nlcd_nature_deprived/etl.py @@ -0,0 +1,77 @@ +# 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 +from data_pipeline.etl.base import ValidGeoLevel +from data_pipeline.utils import get_module_logger + +logger = get_module_logger(__name__) + + +class NatureDeprivedETL(ExtractTransformLoad): + """ETL class for the Nature Deprived Communities dataset""" + + NAME = "nlcd_nature_deprived" + SOURCE_URL = ( + settings.AWS_JUSTICE40_DATASOURCES_URL + + "/usa_conus_nat_dep__compiled_by_TPL.csv.zip" + ) + GEO_LEVEL = ValidGeoLevel.CENSUS_TRACT + PUERTO_RICO_EXPECTED_IN_DATA = False + LOAD_YAML_CONFIG: bool = True + ALASKA_AND_HAWAII_EXPECTED_IN_DATA = False + + # Output score variables (values set on datasets.yml) for linting purposes + ELIGIBLE_FOR_NATURE_DEPRIVED_FIELD_NAME: str + TRACT_PERCENT_IMPERVIOUS_FIELD_NAME: str + TRACT_PERCENT_NON_NATURAL_FIELD_NAME: str + TRACT_PERCENT_CROPLAND_FIELD_NAME: str + + def __init__(self): + # define the full path for the input CSV file + self.INPUT_CSV = ( + self.get_tmp_path() / "usa_conus_nat_dep__compiled_by_TPL.csv" + ) + + # this is the main dataframe + self.df: pd.DataFrame + + # Start dataset-specific vars here + self.PERCENT_NATURAL_FIELD_NAME = "PctNatural" + self.PERCENT_IMPERVIOUS_FIELD_NAME = "PctImperv" + self.PERCENT_CROPLAND_FIELD_NAME = "PctCrops" + self.TRACT_ACRES_FIELD_NAME = "TractAcres" + # In order to ensure that tracts with very small Acreage, we want to create an eligibility criterion + # similar to agrivalue. Here, we are ensuring that a tract has at least 35 acres, or is above the 1st percentile + # for area. This does indeed remove tracts from the 90th+ percentile later on + self.TRACT_ACRES_LOWER_BOUND = 35 + + def transform(self) -> None: + """Reads the unzipped data file into memory and applies the following + transformations to prepare it for the load() method: + + - Renames columns as needed + """ + logger.info("Transforming NLCD Data") + + df_ncld: pd.DataFrame = pd.read_csv( + self.INPUT_CSV, + dtype={self.INPUT_GEOID_TRACT_FIELD_NAME: str}, + low_memory=False, + ) + + df_ncld[self.ELIGIBLE_FOR_NATURE_DEPRIVED_FIELD_NAME] = ( + df_ncld[self.TRACT_ACRES_FIELD_NAME] >= self.TRACT_ACRES_LOWER_BOUND + ) + df_ncld[self.TRACT_PERCENT_NON_NATURAL_FIELD_NAME] = ( + 100 - df_ncld[self.PERCENT_NATURAL_FIELD_NAME] + ) + + # Assign the final df to the class' output_df for the load method with rename + self.output_df = df_ncld.rename( + columns={ + self.PERCENT_IMPERVIOUS_FIELD_NAME: self.TRACT_PERCENT_IMPERVIOUS_FIELD_NAME, + self.PERCENT_CROPLAND_FIELD_NAME: self.TRACT_PERCENT_CROPLAND_FIELD_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 44d35b4e6..82daf8610 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 -from data_pipeline.utils import ( - get_module_logger, - unzip_file_from_url, -) +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__) @@ -19,6 +18,10 @@ class PersistentPovertyETL(ExtractTransformLoad): Codebook: `https://s4.ad.brown.edu/Projects/Diversity/Researcher/LTBDDload/Dfiles/codebooks.pdf`. """ + NAME = "persistent_poverty" + GEO_LEVEL: ValidGeoLevel = ValidGeoLevel.CENSUS_TRACT + PUERTO_RICO_EXPECTED_IN_DATA = False + def __init__(self): self.OUTPUT_PATH = self.DATA_PATH / "dataset" / "persistent_poverty" @@ -75,7 +78,7 @@ def _join_input_dfs(self, dfs: list) -> pd.DataFrame: def extract(self) -> None: logger.info("Starting to download 86MB persistent poverty file.") - unzipped_file_path = self.get_tmp_path() / "persistent_poverty" + unzipped_file_path = self.get_tmp_path() unzip_file_from_url( file_url=settings.AWS_JUSTICE40_DATASOURCES_URL @@ -155,14 +158,4 @@ def transform(self) -> None: ) ) - self.df = transformed_df - - def load(self) -> None: - logger.info("Saving persistent poverty data.") - - # mkdir census - self.OUTPUT_PATH.mkdir(parents=True, exist_ok=True) - - self.df[self.COLUMNS_TO_KEEP].to_csv( - path_or_buf=self.OUTPUT_PATH / "usa.csv", index=False - ) + self.output_df = transformed_df 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 852a956d0..0fdb852c8 100644 --- a/data/data-pipeline/data_pipeline/etl/sources/tribal/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/tribal/etl.py @@ -1,18 +1,25 @@ 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.utils import get_module_logger, unzip_file_from_url +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__) class TribalETL(ExtractTransformLoad): def __init__(self): - self.GEOJSON_BASE_PATH = self.DATA_PATH / "tribal" / "geojson" + self.GEOGRAPHIC_BASE_PATH = ( + self.DATA_PATH / "tribal" / "geographic_data" + ) self.CSV_BASE_PATH = self.DATA_PATH / "tribal" / "csv" - self.NATIONAL_TRIBAL_GEOJSON_PATH = self.GEOJSON_BASE_PATH / "usa.json" + self.NATIONAL_TRIBAL_GEOJSON_PATH = ( + self.GEOGRAPHIC_BASE_PATH / "usa.json" + ) self.USA_TRIBAL_DF_LIST = [] def extract(self) -> None: @@ -23,43 +30,66 @@ def extract(self) -> None: """ logger.info("Downloading Tribal Data") - bia_geojson_url = "https://justice40-data.s3.amazonaws.com/data-sources/BIA_National_LAR_json.zip" - alaska_geojson_url = "https://justice40-data.s3.amazonaws.com/data-sources/Alaska_Native_Villages_json.zip" + bia_shapefile_zip_url = ( + settings.AWS_JUSTICE40_DATASOURCES_URL + + "/BIA_National_LAR_updated_20220929.zip" + ) + + tsa_and_aian_geojson_zip_url = ( + settings.AWS_JUSTICE40_DATASOURCES_URL + + "/BIA_TSA_and_AIAN_json.zip" + ) + + alaska_geojson_url = ( + settings.AWS_JUSTICE40_DATASOURCES_URL + + "/Alaska_Native_Villages_json.zip" + ) unzip_file_from_url( - bia_geojson_url, + bia_shapefile_zip_url, self.TMP_PATH, - self.DATA_PATH / "tribal" / "geojson" / "bia_national_lar", + self.GEOGRAPHIC_BASE_PATH / "bia_national_lar", + ) + + unzip_file_from_url( + tsa_and_aian_geojson_zip_url, + self.TMP_PATH, + self.GEOGRAPHIC_BASE_PATH / "tsa_and_aian", ) unzip_file_from_url( alaska_geojson_url, self.TMP_PATH, - self.DATA_PATH / "tribal" / "geojson" / "alaska_native_villages", + self.GEOGRAPHIC_BASE_PATH / "alaska_native_villages", ) - pass - def _transform_bia_national_lar(self, tribal_geojson_path: Path) -> None: + def _transform_bia_national_lar(self, path: Path) -> None: """Transform the Tribal BIA National Lar Geodataframe and appends it to the national Tribal Dataframe List Args: - tribal_geojson_path (Path): the Path to the Tribal Geojson + path (Path): the Path to the BIA National Lar Returns: None """ - bia_national_lar_df = gpd.read_file(tribal_geojson_path) + bia_national_lar_df = gpd.read_file(path) + + # DELETE + logger.info(f"Columns: {bia_national_lar_df.columns}\n") bia_national_lar_df.drop( - ["OBJECTID", "GISAcres", "Shape_Length", "Shape_Area"], + ["GISAcres"], axis=1, inplace=True, ) bia_national_lar_df.rename( - columns={"TSAID": "tribalId", "LARName": "landAreaName"}, + columns={ + "LARID": field_names.TRIBAL_ID, + "LARName": field_names.TRIBAL_LAND_AREA_NAME, + }, inplace=True, ) @@ -87,7 +117,10 @@ def _transform_bia_aian_supplemental( ) bia_aian_supplemental_df.rename( - columns={"OBJECTID": "tribalId", "Land_Area_": "landAreaName"}, + columns={ + "OBJECTID": field_names.TRIBAL_ID, + "Land_Area_": field_names.TRIBAL_LAND_AREA_NAME, + }, inplace=True, ) @@ -113,7 +146,10 @@ def _transform_bia_tsa(self, tribal_geojson_path: Path) -> None: ) bia_tsa_df.rename( - columns={"TSAID": "tribalId", "LARName": "landAreaName"}, + columns={ + "TSAID": field_names.TRIBAL_ID, + "LARName": field_names.TRIBAL_LAND_AREA_NAME, + }, inplace=True, ) @@ -136,8 +172,8 @@ def _transform_alaska_native_villages( alaska_native_villages_df.rename( columns={ - "GlobalID": "tribalId", - "TRIBALOFFICENAME": "landAreaName", + "GlobalID": field_names.TRIBAL_ID, + "TRIBALOFFICENAME": field_names.TRIBAL_LAND_AREA_NAME, }, inplace=True, ) @@ -152,27 +188,30 @@ def transform(self) -> None: """ logger.info("Transforming Tribal Data") - # load the geojsons - bia_national_lar_geojson = ( - self.GEOJSON_BASE_PATH / "bia_national_lar" / "BIA_TSA.json" + # Set the filepaths: + bia_national_lar_shapefile = ( + self.GEOGRAPHIC_BASE_PATH / "bia_national_lar" ) + bia_aian_supplemental_geojson = ( - self.GEOJSON_BASE_PATH - / "bia_national_lar" + self.GEOGRAPHIC_BASE_PATH + / "tsa_and_aian" / "BIA_AIAN_Supplemental.json" ) - bia_tsa_geojson_geojson = ( - self.GEOJSON_BASE_PATH / "bia_national_lar" / "BIA_TSA.json" + + bia_tsa_geojson = ( + self.GEOGRAPHIC_BASE_PATH / "tsa_and_aian" / "BIA_TSA.json" ) + alaska_native_villages_geojson = ( - self.GEOJSON_BASE_PATH + self.GEOGRAPHIC_BASE_PATH / "alaska_native_villages" / "AlaskaNativeVillages.gdb.geojson" ) - self._transform_bia_national_lar(bia_national_lar_geojson) + self._transform_bia_national_lar(bia_national_lar_shapefile) self._transform_bia_aian_supplemental(bia_aian_supplemental_geojson) - self._transform_bia_tsa(bia_tsa_geojson_geojson) + self._transform_bia_tsa(bia_tsa_geojson) self._transform_alaska_native_villages(alaska_native_villages_geojson) def load(self) -> None: @@ -182,13 +221,13 @@ def load(self) -> None: None """ logger.info("Saving Tribal GeoJson and CSV") - usa_tribal_df = gpd.GeoDataFrame( pd.concat(self.USA_TRIBAL_DF_LIST, ignore_index=True) ) usa_tribal_df = usa_tribal_df.to_crs( "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs" ) + logger.info("Writing national geojson file") usa_tribal_df.to_file( self.NATIONAL_TRIBAL_GEOJSON_PATH, driver="GeoJSON" 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 4e1220181..ea97db1cb 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/README.md b/data/data-pipeline/data_pipeline/etl/sources/tribal_overlap/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/data/data-pipeline/data_pipeline/etl/sources/tribal_overlap/__init__.py b/data/data-pipeline/data_pipeline/etl/sources/tribal_overlap/__init__.py new file mode 100644 index 000000000..e69de29bb 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 new file mode 100644 index 000000000..35945228f --- /dev/null +++ b/data/data-pipeline/data_pipeline/etl/sources/tribal_overlap/etl.py @@ -0,0 +1,274 @@ +from typing import Optional + +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.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 + +logger = get_module_logger(__name__) + + +class TribalOverlapETL(ExtractTransformLoad): + """Calculates the overlap between Census tracts and Tribal boundaries.""" + + # Metadata for the baseclass + NAME = "tribal_overlap" + GEO_LEVEL = ValidGeoLevel.CENSUS_TRACT + + PUERTO_RICO_EXPECTED_IN_DATA = False + ALASKA_AND_HAWAII_EXPECTED_IN_DATA = True + EXPECTED_MISSING_STATES = [ + # 15 is Hawaii, which has Hawaiian Home Lands, but they are not included in + # this dataset. + "15", + # The following states do not have any federally recognized Tribes in this + # dataset. + "10", + "11", + "13", + "17", + "18", + "21", + "24", + "33", + "34", + "39", + "50", + "51", + "54", + ] + + # A Tribal area that requires some special processing. + ANNETTE_ISLAND_TRIBAL_NAME = "Annette Island" + + CRS_INTEGER = 3857 + TRIBAL_OVERLAP_CUTOFF = 0.995 # Percentage of overlap that rounds to 100% + + # Define these for easy code completion + def __init__(self): + self.COLUMNS_TO_KEEP = [ + self.GEOID_TRACT_FIELD_NAME, + field_names.COUNT_OF_TRIBAL_AREAS_IN_TRACT_AK, + field_names.COUNT_OF_TRIBAL_AREAS_IN_TRACT_CONUS, + field_names.PERCENT_OF_TRIBAL_AREA_IN_TRACT, + field_names.NAMES_OF_TRIBAL_AREAS_IN_TRACT, + field_names.PERCENT_OF_TRIBAL_AREA_IN_TRACT_DISPLAY, + field_names.IS_TRIBAL_DAC, + ] + + self.OVERALL_TRIBAL_COUNT = "OVERALL_TRIBAL_COUNT" + self.output_df: pd.DataFrame + self.census_tract_gdf: gpd.GeoDataFrame + self.tribal_gdf: gpd.GeoDataFrame + + @staticmethod + def _create_string_from_list(series: pd.Series) -> str: + """Helper method that creates a sorted string list (for tribal names).""" + str_list = series.tolist() + str_list = sorted(str_list) + return ", ".join(str_list) + + @classmethod + def _adjust_percentage_for_frontend( + cls, + percentage_float: float, + ) -> Optional[float]: + """Round numbers very close to 0 to 0 and very close to 1 to 1 for display""" + if percentage_float is None: + return None + if percentage_float < 0.01: + return 0.0 + if percentage_float > cls.TRIBAL_OVERLAP_CUTOFF: + return 1.0 + + return percentage_float + + def extract(self) -> None: + self.census_tract_gdf = get_tract_geojson() + self.tribal_gdf = get_tribal_geojson() + + def transform(self) -> None: + logger.info("Starting tribal overlap transforms.") + + # First, calculate whether tracts include any areas from the Tribal areas, + # for both the points in AK and the polygons in the continental US (CONUS). + tribal_overlap_with_tracts = add_tracts_for_geometries( + df=self.tribal_gdf, tract_data=self.census_tract_gdf + ) + + # Cleanup the suffixes in the tribal names + tribal_overlap_with_tracts[field_names.TRIBAL_LAND_AREA_NAME] = ( + tribal_overlap_with_tracts[field_names.TRIBAL_LAND_AREA_NAME] + .str.replace(" LAR", "") + .str.replace(" TSA", "") + .str.replace(" IRA", "") + .str.replace(" AK", "") + ) + + tribal_overlap_with_tracts = tribal_overlap_with_tracts.groupby( + [self.GEOID_TRACT_FIELD_NAME] + ).agg( + { + field_names.TRIBAL_ID: "count", + field_names.TRIBAL_LAND_AREA_NAME: self._create_string_from_list, + } + ) + + tribal_overlap_with_tracts = tribal_overlap_with_tracts.reset_index() + + tribal_overlap_with_tracts = tribal_overlap_with_tracts.rename( + columns={ + field_names.TRIBAL_ID: self.OVERALL_TRIBAL_COUNT, + field_names.TRIBAL_LAND_AREA_NAME: field_names.NAMES_OF_TRIBAL_AREAS_IN_TRACT, + } + ) + + # Second, calculate percentage overlap. + # Drop the points from the Tribal data (because these cannot be joined to a + # (Multi)Polygon tract data frame) + tribal_gdf_without_points = self.tribal_gdf[ + self.tribal_gdf.geom_type.isin(["Polygon", "MultiPolygon"]) + ] + + # Switch from geographic to projected CRSes + # because logically that's right + self.census_tract_gdf = self.census_tract_gdf.to_crs( + crs=self.CRS_INTEGER + ) + tribal_gdf_without_points = tribal_gdf_without_points.to_crs( + crs=self.CRS_INTEGER + ) + + # Create a measure for the entire census tract area + self.census_tract_gdf["area_tract"] = self.census_tract_gdf.area + + # Performing overlay funcion + # We have a mix of polygons and multipolygons, and we just want the overlaps + # without caring a ton about the specific types, so we ignore geom type. + # Realistically, this changes almost nothing in the calculation; True and False + # are the same within 9 digits of precision + gdf_joined = gpd.overlay( + self.census_tract_gdf, + tribal_gdf_without_points, + how="intersection", + keep_geom_type=False, + ) + + # Calculating the areas of the newly-created overlapping geometries + gdf_joined["area_joined"] = gdf_joined.area + + # Calculating the areas of the newly-created geometries in relation + # to the original tract geometries + gdf_joined[field_names.PERCENT_OF_TRIBAL_AREA_IN_TRACT] = ( + gdf_joined["area_joined"] / gdf_joined["area_tract"] + ) + + # Aggregate the results + percentage_results = gdf_joined.groupby( + [self.GEOID_TRACT_FIELD_NAME] + ).agg({field_names.PERCENT_OF_TRIBAL_AREA_IN_TRACT: "sum"}) + + percentage_results = percentage_results.reset_index() + + # Merge the two results. + merged_output_df = tribal_overlap_with_tracts.merge( + right=percentage_results, + how="outer", + on=self.GEOID_TRACT_FIELD_NAME, + ) + + # Finally, fix one unique error. + # There is one unique Tribal area (self.ANNETTE_ISLAND_TRIBAL_NAME) that is a polygon in + # Alaska. All other Tribal areas in Alaska are points. + # For tracts that *only* contain that Tribal area, leave percentage as is. + # For tracts that include that Tribal area AND Alaska Native villages, + # null the percentage, because we cannot calculate the percent of the tract + # this is within Tribal areas. + + # Create state FIPS codes. + merged_output_df_state_fips_code = merged_output_df[ + self.GEOID_TRACT_FIELD_NAME + ].str[0:2] + + # Start by testing for Annette Island exception, to make sure data is as + # expected + alaskan_non_annette_matches = ( + # Data from Alaska + (merged_output_df_state_fips_code == "02") + # Where the Tribal areas do *not* include Annette + & ( + ~merged_output_df[ + field_names.NAMES_OF_TRIBAL_AREAS_IN_TRACT + ].str.contains(self.ANNETTE_ISLAND_TRIBAL_NAME) + ) + # But somehow percentage is greater than zero. + & ( + merged_output_df[field_names.PERCENT_OF_TRIBAL_AREA_IN_TRACT] + > 0 + ) + ) + + # There should be none of these matches. + if sum(alaskan_non_annette_matches) > 0: + raise ValueError( + "Data has changed. More than one Alaskan Tribal Area has polygon " + "boundaries. You'll need to refactor this ETL. \n" + f"Data:\n{merged_output_df[alaskan_non_annette_matches]}" + ) + + # Now, fix the exception that is already known. + merged_output_df[ + field_names.PERCENT_OF_TRIBAL_AREA_IN_TRACT + ] = np.where( + # For tracts inside Alaska + (merged_output_df_state_fips_code == "02") + # That are not only represented by Annette Island + & ( + merged_output_df[field_names.NAMES_OF_TRIBAL_AREAS_IN_TRACT] + != self.ANNETTE_ISLAND_TRIBAL_NAME + ), + # Set the value to `None` for tracts with more than just Annette. + None, + # Otherwise, set the value to what it was. + merged_output_df[field_names.PERCENT_OF_TRIBAL_AREA_IN_TRACT], + ) + + # Counting tribes in the lower 48 is different from counting in AK, + # so per request by the design and frontend team, we remove all the + # counts outside AK + merged_output_df[ + field_names.COUNT_OF_TRIBAL_AREAS_IN_TRACT_AK + ] = np.where( + # In Alaska + (merged_output_df_state_fips_code == "02"), + # Keep the counts + merged_output_df[self.OVERALL_TRIBAL_COUNT], + # Otherwise, null them + None, + ) + + # TODO: Count tribal areas in the lower 48 correctly + merged_output_df[ + field_names.COUNT_OF_TRIBAL_AREAS_IN_TRACT_CONUS + ] = None + + merged_output_df[field_names.IS_TRIBAL_DAC] = ( + merged_output_df[field_names.PERCENT_OF_TRIBAL_AREA_IN_TRACT] + > self.TRIBAL_OVERLAP_CUTOFF + ) + + # The very final thing we want to do is produce a string for the front end to show + # We do this here so that all of the logic is included + merged_output_df[ + field_names.PERCENT_OF_TRIBAL_AREA_IN_TRACT_DISPLAY + ] = merged_output_df[field_names.PERCENT_OF_TRIBAL_AREA_IN_TRACT].apply( + self._adjust_percentage_for_frontend + ) + + self.output_df = merged_output_df diff --git a/data/data-pipeline/data_pipeline/etl/sources/us_army_fuds/__init__.py b/data/data-pipeline/data_pipeline/etl/sources/us_army_fuds/__init__.py new file mode 100644 index 000000000..e69de29bb 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 new file mode 100644 index 000000000..e915d7d9a --- /dev/null +++ b/data/data-pipeline/data_pipeline/etl/sources/us_army_fuds/etl.py @@ -0,0 +1,112 @@ +from pathlib import Path + +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 +from data_pipeline.config import settings + +logger = get_module_logger(__name__) + + +class USArmyFUDS(ExtractTransformLoad): + """The Formerly Used Defense Sites (FUDS)""" + + NAME: str = "us_army_fuds" + + ELIGIBLE_FUDS_COUNT_FIELD_NAME: str + INELIGIBLE_FUDS_COUNT_FIELD_NAME: str + ELIGIBLE_FUDS_BINARY_FIELD_NAME: str + GEO_LEVEL: ValidGeoLevel = ValidGeoLevel.CENSUS_TRACT + LOAD_YAML_CONFIG: bool = True + + ISLAND_AREAS_EXPECTED_IN_DATA = True + + def __init__(self): + + if settings.DATASOURCE_RETRIEVAL_FROM_AWS: + self.FILE_URL = ( + f"{settings.AWS_JUSTICE40_DATASOURCES_URL}/raw-data-sources/" + "us_army_fuds/Formerly_Used_Defense_Sites_(FUDS)_" + "all_data_reported_to_Congress_in_FY2020.geojson" + ) + else: + self.FILE_URL: str = ( + "https://opendata.arcgis.com/api/v3/datasets/" + "3f8354667d5b4b1b8ad7a6e00c3cf3b1_1/downloads/" + "data?format=geojson&spatialRefId=4326&where=1%3D1" + ) + + self.OUTPUT_PATH: Path = self.DATA_PATH / "dataset" / "us_army_fuds" + + # Constants for output + self.COLUMNS_TO_KEEP = [ + self.GEOID_TRACT_FIELD_NAME, + self.ELIGIBLE_FUDS_COUNT_FIELD_NAME, + self.INELIGIBLE_FUDS_COUNT_FIELD_NAME, + self.ELIGIBLE_FUDS_BINARY_FIELD_NAME, + ] + self.DOWNLOAD_FILE_NAME = self.get_tmp_path() / "fuds.geojson" + + self.raw_df: gpd.GeoDataFrame + self.output_df: pd.DataFrame + + def extract(self) -> None: + logger.info("Starting FUDS data download.") + + download_file_from_url( + file_url=self.FILE_URL, + download_file_name=self.DOWNLOAD_FILE_NAME, + verify=True, + ) + + def transform(self) -> None: + logger.info("Starting FUDS transform.") + # before we try to do any transformation, get the tract data + # so it's loaded and the census ETL is out of scope + + logger.info("Loading FUDS data as GeoDataFrame for transform") + raw_df = gpd.read_file( + filename=self.DOWNLOAD_FILE_NAME, + low_memory=False, + ) + + # Note that the length of raw_df will not be exactly the same + # because same bases lack coordinated or have coordinates in + # Mexico or in the ocean. See the following dataframe: + # raw_df[~raw_df.OBJECTID.isin(df_with_tracts.OBJECTID)][ + # ['OBJECTID', 'CLOSESTCITY', 'COUNTY', 'ELIGIBILITY', + # 'STATE', 'LATITUDE', "LONGITUDE"]] + logger.debug("Adding tracts to FUDS data") + df_with_tracts = add_tracts_for_geometries(raw_df) + self.output_df = pd.DataFrame() + + # this will create a boolean series which you can do actually sans np.where + df_with_tracts["tmp_fuds"] = ( + df_with_tracts.ELIGIBILITY == "Eligible" + ) & (df_with_tracts.HASPROJECTS == "Yes") + + self.output_df[ + self.ELIGIBLE_FUDS_COUNT_FIELD_NAME + ] = df_with_tracts.groupby(self.GEOID_TRACT_FIELD_NAME)[ + "tmp_fuds" + ].sum() + + self.output_df[self.INELIGIBLE_FUDS_COUNT_FIELD_NAME] = ( + df_with_tracts[~df_with_tracts.tmp_fuds] + .groupby(self.GEOID_TRACT_FIELD_NAME) + .size() + ) + self.output_df = ( + self.output_df.fillna(0).astype(np.int64).sort_index().reset_index() + ) + + self.output_df[self.ELIGIBLE_FUDS_BINARY_FIELD_NAME] = np.where( + self.output_df[self.ELIGIBLE_FUDS_COUNT_FIELD_NAME] > 0.0, + True, + False, + ) diff --git a/data/data-pipeline/data_pipeline/files/readme-version-1.0.md b/data/data-pipeline/data_pipeline/files/readme-version-1.0.md new file mode 100644 index 000000000..e69de29bb diff --git a/data/data-pipeline/data_pipeline/ipython/TractArea.ipynb b/data/data-pipeline/data_pipeline/ipython/TractArea.ipynb deleted file mode 100644 index d4b678c1b..000000000 --- a/data/data-pipeline/data_pipeline/ipython/TractArea.ipynb +++ /dev/null @@ -1,418 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 54, - "id": "df048f08", - "metadata": {}, - "outputs": [], - "source": [ - "import geopandas as gpd\n", - "import pathlib" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "62366f7d", - "metadata": {}, - "outputs": [], - "source": [ - "lowJson = pathlib.Path() / 'usa-low.json'\n", - "assert lowJson.exists()\n", - "highJson = pathlib.Path() / 'usa-high.json'\n", - "assert highJson.exists()" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "4077ed78", - "metadata": {}, - "outputs": [], - "source": [ - "gdf = gpd.read_file(highJson)" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "d4abfc64", - "metadata": {}, - "outputs": [], - "source": [ - "gdf['area'] = gdf.apply(lambda row : gpd.GeoSeries(row['geometry']).area, axis = 1)" - ] - }, - { - "cell_type": "markdown", - "id": "5077d9ef", - "metadata": {}, - "source": [ - "Add `zlfc` = *zoom level full containment*, This field will indicate the maximum zoom level the user can go up to while still keeping the entire tract in view. Below, we sample a few tracts to get an idea of the relationship between zoom level and area" - ] - }, - { - "cell_type": "code", - "execution_count": 89, - "id": "a1234574", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
GEOID10SFCFareazlfc
984602185000200AlaskaNorth Slope Borough53.3237024.45
993702290000100AlaskaYukon-Koyukuk Census Area21.6531545.50
985702188000100AlaskaNorthwest Arctic Borough21.1881595.50
993502290000200AlaskaYukon-Koyukuk Census Area20.7447705.38
993402290000300AlaskaYukon-Koyukuk Census Area17.1408260.00
993602290000400AlaskaYukon-Koyukuk Census Area14.6874485.77
989302180000100AlaskaNome Census Area13.3778170.00
984702164000100AlaskaLake and Peninsula Borough13.0616445.33
991802261000100AlaskaValdez-Cordova Census Area11.1188350.00
994502050000100AlaskaBethel Census Area10.9518880.00
984102270000100AlaskaWade Hampton Census Area8.7718060.00
983902240000100AlaskaSoutheast Fairbanks Census Area8.6136900.00
984302070000100AlaskaDillingham Census Area8.5753070.00
994702050000300AlaskaBethel Census Area8.4080400.00
989902170000101AlaskaMatanuska-Susitna Borough6.4804440.00
994402068000100AlaskaDenali Borough5.9972360.00
983602013000100AlaskaAleutians East Borough5.4877260.00
992102122000100AlaskaKenai Peninsula Borough4.8318316.10
985102150000100AlaskaKodiak Island Borough4.6640090.00
985002105000300AlaskaHoonah-Angoon Census Area4.3057160.00
983802016000100AlaskaAleutians West Census Area4.0535200.00
991702282000100AlaskaYakutat City and Borough3.9261820.00
992002261000300AlaskaValdez-Cordova Census Area3.2854820.00
984002240000400AlaskaSoutheast Fairbanks Census Area3.2339610.00
991902261000200AlaskaValdez-Cordova Census Area3.1563170.00
1035441045970900OregonMalheur County2.7317190.00
988802198000100AlaskaPrince of Wales-Hyder Census Area2.6062860.00
1021241025960200OregonHarney County2.5689437.08
984402185000300AlaskaNorth Slope Borough2.4631650.00
985802130000100AlaskaKetchikan Gateway Borough2.4400510.00
\n", - "
" - ], - "text/plain": [ - " GEOID10 SF CF area zlfc\n", - "9846 02185000200 Alaska North Slope Borough 53.323702 4.45\n", - "9937 02290000100 Alaska Yukon-Koyukuk Census Area 21.653154 5.50\n", - "9857 02188000100 Alaska Northwest Arctic Borough 21.188159 5.50\n", - "9935 02290000200 Alaska Yukon-Koyukuk Census Area 20.744770 5.38\n", - "9934 02290000300 Alaska Yukon-Koyukuk Census Area 17.140826 0.00\n", - "9936 02290000400 Alaska Yukon-Koyukuk Census Area 14.687448 5.77\n", - "9893 02180000100 Alaska Nome Census Area 13.377817 0.00\n", - "9847 02164000100 Alaska Lake and Peninsula Borough 13.061644 5.33\n", - "9918 02261000100 Alaska Valdez-Cordova Census Area 11.118835 0.00\n", - "9945 02050000100 Alaska Bethel Census Area 10.951888 0.00\n", - "9841 02270000100 Alaska Wade Hampton Census Area 8.771806 0.00\n", - "9839 02240000100 Alaska Southeast Fairbanks Census Area 8.613690 0.00\n", - "9843 02070000100 Alaska Dillingham Census Area 8.575307 0.00\n", - "9947 02050000300 Alaska Bethel Census Area 8.408040 0.00\n", - "9899 02170000101 Alaska Matanuska-Susitna Borough 6.480444 0.00\n", - "9944 02068000100 Alaska Denali Borough 5.997236 0.00\n", - "9836 02013000100 Alaska Aleutians East Borough 5.487726 0.00\n", - "9921 02122000100 Alaska Kenai Peninsula Borough 4.831831 6.10\n", - "9851 02150000100 Alaska Kodiak Island Borough 4.664009 0.00\n", - "9850 02105000300 Alaska Hoonah-Angoon Census Area 4.305716 0.00\n", - "9838 02016000100 Alaska Aleutians West Census Area 4.053520 0.00\n", - "9917 02282000100 Alaska Yakutat City and Borough 3.926182 0.00\n", - "9920 02261000300 Alaska Valdez-Cordova Census Area 3.285482 0.00\n", - "9840 02240000400 Alaska Southeast Fairbanks Census Area 3.233961 0.00\n", - "9919 02261000200 Alaska Valdez-Cordova Census Area 3.156317 0.00\n", - "10354 41045970900 Oregon Malheur County 2.731719 0.00\n", - "9888 02198000100 Alaska Prince of Wales-Hyder Census Area 2.606286 0.00\n", - "10212 41025960200 Oregon Harney County 2.568943 7.08\n", - "9844 02185000300 Alaska North Slope Borough 2.463165 0.00\n", - "9858 02130000100 Alaska Ketchikan Gateway Borough 2.440051 0.00" - ] - }, - "execution_count": 89, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "gdf['zlfc'] = 0\n", - "gdf.at[9846, 'zlfc'] = 4.45\n", - "gdf.at[10212, 'zlfc'] = 7.08\n", - "gdf.at[9937, 'zlfc'] = 5.5\n", - "gdf.at[9857, 'zlfc'] = 5.5\n", - "gdf.at[9935, 'zlfc'] = 5.38\n", - "gdf.at[9936, 'zlfc'] = 5.77\n", - "gdf.at[9921, 'zlfc'] = 6.1\n", - "gdf.at[9847, 'zlfc'] = 5.33\n", - "gdf_short = gdf[[\"GEOID10\", \"SF\", \"CF\", \"area\", \"zlfc\"]]\n", - "gdf_short_sorted = gdf_short.sort_values(by='area', ascending=False);\n", - "gdf_short_sorted.head(30)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5930de0e", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.13" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/data/data-pipeline/data_pipeline/ipython/aggregate_burden_exploration.ipynb b/data/data-pipeline/data_pipeline/ipython/aggregate_burden_exploration.ipynb new file mode 100644 index 000000000..e4870bfde --- /dev/null +++ b/data/data-pipeline/data_pipeline/ipython/aggregate_burden_exploration.ipynb @@ -0,0 +1,1238 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "029b2e96-5a58-4816-81cc-4f60da27e518", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import pathlib\n", + "\n", + "%load_ext lab_black" + ] + }, + { + "cell_type": "markdown", + "id": "c20b1785-f802-474d-8aec-423ec574bd05", + "metadata": {}, + "source": [ + "# Creating an aggregate burden index\n", + "\n", + "Although we will not be using a aggregate burden index for v1.0 of the CEJST, the USDS team wanted to demonstrate how even duplicating CalEnviroScreen's cumulative index (or a loose interpretation of it) would impact the communities highlighted. Here, the scoring procedure that we use is lifted as closely as possible from CalEnviroScreen, including the categorization of burdens and the weighting between cumulative score. \n", + "\n", + "The data team believes that a threshold methodology has significant limitations that an aggregate or cumulative burden index could remediate, and presents the following as an example of such an index. " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3dac5f2a-385d-4d23-9564-cfbe2d0706d1", + "metadata": {}, + "outputs": [], + "source": [ + "SCORE_DIR = pathlib.Path.cwd().parent / \"data\" / \"score\" / \"csv\" / \"full\"" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "9fb12b5e-1f53-4eaf-a306-42ea9c1422fd", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/Cellar/jupyterlab/3.2.8/libexec/lib/python3.9/site-packages/IPython/core/interactiveshell.py:3251: DtypeWarning: Columns (1,2,3,4,75,76,78) have mixed types.Specify dtype option on import or set low_memory=False.\n", + " exec(code_obj, self.user_global_ns, self.user_ns)\n" + ] + } + ], + "source": [ + "usa = pd.read_csv(\n", + " SCORE_DIR / \"usa.csv\",\n", + " dtype={\"GEOID10_TRACT\": str},\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f80bdf5f-11e3-4967-a0b3-a7504374c803", + "metadata": {}, + "outputs": [], + "source": [ + "## environment\n", + "toxins_category = [\n", + " \"Percent pre-1960s housing (lead paint indicator) (percentile)\",\n", + " \"Proximity to Risk Management Plan (RMP) facilities (percentile)\",\n", + " \"Proximity to NPL sites (percentile)\",\n", + " \"Proximity to hazardous waste sites (percentile)\",\n", + " \"Wastewater discharge (percentile)\",\n", + "]\n", + "\n", + "## sensitive populations\n", + "health_category = [\n", + " \"Diagnosed diabetes among adults aged greater than or equal to 18 years (percentile)\",\n", + " \"Current asthma among adults aged greater than or equal to 18 years (percentile)\",\n", + " \"Coronary heart disease among adults aged greater than or equal to 18 years (percentile)\",\n", + " \"Low life expectancy (percentile)\",\n", + "]\n", + "\n", + "## exposure\n", + "built_environment_category = [\n", + " \"Expected building loss rate (Natural Hazards Risk Index) (percentile)\",\n", + " \"Expected agricultural loss rate (Natural Hazards Risk Index) (percentile)\",\n", + " \"Expected population loss rate (Natural Hazards Risk Index) (percentile)\",\n", + " \"Energy burden (percentile)\",\n", + " \"Diesel particulate matter exposure (percentile)\",\n", + " \"Traffic proximity and volume (percentile)\",\n", + " \"PM2.5 in the air (percentile)\",\n", + "]\n", + "\n", + "## socioeconomic\n", + "socioeconomic_category = [\n", + " \"Unemployment (percent) (percentile)\",\n", + " \"Housing burden (percent) (percentile)\",\n", + " \"Low median household income as a percent of area median income (percentile)\",\n", + " \"Percent of households in linguistic isolation (percentile)\",\n", + " \"Percent of individuals below 200% Federal Poverty Line, imputed and adjusted (percentile)\",\n", + " \"Percent individuals age 25 or over with less than high school degree (percentile)\",\n", + " \"Percent of individuals < 100% Federal Poverty Line (percentile)\",\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "a5057a21-318c-438e-84da-8f2e765c02d5", + "metadata": {}, + "outputs": [], + "source": [ + "usa[\"toxins_cat\"] = usa[toxins_category].mean(axis=1)\n", + "usa[\"built_env_cat\"] = usa[built_environment_category].mean(axis=1)\n", + "usa[\"health_cat\"] = usa[health_category].mean(axis=1)\n", + "usa[\"ses_cat\"] = usa[socioeconomic_category].mean(axis=1)\n", + "\n", + "\n", + "usa[\"pollution_burden\"] = 0.5 * usa[\"toxins_cat\"] + usa[\"built_env_cat\"]\n", + "usa[\"population_characteristics\"] = usa[\"health_cat\"] + usa[\"ses_cat\"]\n", + "poll_max = usa[\"pollution_burden\"].max()\n", + "pop_max = usa[\"population_characteristics\"].max()\n", + "\n", + "usa[\"scaled_pollution_burden\"] = usa[\"pollution_burden\"] / poll_max\n", + "usa[\"scaled_population_characteristics\"] = usa[\"population_characteristics\"] / pop_max\n", + "\n", + "usa[\"cal_score\"] = (\n", + " usa[\"scaled_pollution_burden\"] * usa[\"scaled_population_characteristics\"]\n", + ")\n", + "usa[\"pct_cal_score\"] = usa[\"cal_score\"].rank(pct=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "3217e0ce-d9ec-46b8-9584-4cf9f6b35686", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Definition N (communities)FalseTrue
pct_cal_score_0.65
False420396823
True542319849
\n", + "
" + ], + "text/plain": [ + "Definition N (communities) False True\n", + "pct_cal_score_0.65 \n", + "False 42039 6823\n", + "True 5423 19849" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Definition N (communities)FalseTrue
pct_cal_score_0.65
False0.5670680.092036
True0.0731510.267745
\n", + "
" + ], + "text/plain": [ + "Definition N (communities) False True\n", + "pct_cal_score_0.65 \n", + "False 0.567068 0.092036\n", + "True 0.073151 0.267745" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Definition N (communities)FalseTrue
pct_cal_score_0.8
False4615213540
True131013132
\n", + "
" + ], + "text/plain": [ + "Definition N (communities) False True\n", + "pct_cal_score_0.8 \n", + "False 46152 13540\n", + "True 1310 13132" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Definition N (communities)FalseTrue
pct_cal_score_0.8
False0.6225480.182642
True0.0176710.177139
\n", + "
" + ], + "text/plain": [ + "Definition N (communities) False True\n", + "pct_cal_score_0.8 \n", + "False 0.622548 0.182642\n", + "True 0.017671 0.177139" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Definition N (communities)FalseTrue
pct_cal_score_0.825
False4657514923
True88711749
\n", + "
" + ], + "text/plain": [ + "Definition N (communities) False True\n", + "pct_cal_score_0.825 \n", + "False 46575 14923\n", + "True 887 11749" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Definition N (communities)FalseTrue
pct_cal_score_0.825
False0.6282540.201298
True0.0119650.158483
\n", + "
" + ], + "text/plain": [ + "Definition N (communities) False True\n", + "pct_cal_score_0.825 \n", + "False 0.628254 0.201298\n", + "True 0.011965 0.158483" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Definition N (communities)FalseTrue
pct_cal_score_0.85
False4689816405
True56410267
\n", + "
" + ], + "text/plain": [ + "Definition N (communities) False True\n", + "pct_cal_score_0.85 \n", + "False 46898 16405\n", + "True 564 10267" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Definition N (communities)FalseTrue
pct_cal_score_0.85
False0.6326110.221288
True0.0076080.138492
\n", + "
" + ], + "text/plain": [ + "Definition N (communities) False True\n", + "pct_cal_score_0.85 \n", + "False 0.632611 0.221288\n", + "True 0.007608 0.138492" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Definition N (communities)FalseTrue
pct_cal_score_0.9
False4728819625
True1747047
\n", + "
" + ], + "text/plain": [ + "Definition N (communities) False True\n", + "pct_cal_score_0.9 \n", + "False 47288 19625\n", + "True 174 7047" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Definition N (communities)FalseTrue
pct_cal_score_0.9
False0.6378720.264723
True0.0023470.095058
\n", + "
" + ], + "text/plain": [ + "Definition N (communities) False True\n", + "pct_cal_score_0.9 \n", + "False 0.637872 0.264723\n", + "True 0.002347 0.095058" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# this shows the number of communities identified by Score N (base)\n", + "# that are also identified by our cumulative burden metric (at some threshold)\n", + "\n", + "for cutoff in [0.65, 0.8, 0.825, 0.85, 0.9]:\n", + "\n", + " usa[\"pct_cal_score_\" + str(cutoff)] = usa[\"pct_cal_score\"] >= cutoff\n", + " display(\n", + " pd.crosstab(\n", + " usa[\"pct_cal_score_\" + str(cutoff)],\n", + " usa[\"Definition N (communities)\"],\n", + " )\n", + " )\n", + " display(\n", + " pd.crosstab(\n", + " usa[\"pct_cal_score_\" + str(cutoff)],\n", + " usa[\"Definition N (communities)\"],\n", + " normalize=True,\n", + " )\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "fa47f4f8-16bd-47ec-b2a5-e20fe2d83c83", + "metadata": {}, + "source": [ + "## Does it square with calenvironscreen? \n", + "\n", + "Here we compare OUR work with the data from CalEnviroScreen, limiting to California. We see reasonable agreement -- the vast majority (>90%) of tracts at or above 90th percentile match." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "5498bbd7-b40f-4e17-9dd4-c102f071b250", + "metadata": {}, + "outputs": [], + "source": [ + "DATA_DIR = pathlib.Path.cwd().parent / \"data\" / \"dataset\"\n", + "\n", + "true_ces = pd.read_csv(\n", + " DATA_DIR / \"calenviroscreen4/data06.csv\",\n", + " dtype={\"GEOID10_TRACT\": str},\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "edf211f6-84ee-4a9f-b0a6-31ffc2622adb", + "metadata": {}, + "outputs": [], + "source": [ + "ces_merged = usa.merge(true_ces, on=\"GEOID10_TRACT\", how=\"right\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "cd54de47-2025-460e-beda-7807adf334df", + "metadata": {}, + "outputs": [], + "source": [ + "ces_merged[\"new_cal_score\"] = ces_merged[\"pct_cal_score\"].rank(pct=True)\n", + "ces_merged[\"new_cal_flag\"] = ces_merged[\"new_cal_score\"] >= 0.9" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "ea5aabe0-d3e3-47b2-98df-335538cbf8e4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False 0.900311\n", + "True 0.099689\n", + "Name: new_cal_flag, dtype: float64" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ces_merged[\"new_cal_flag\"].value_counts(normalize=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "d63f6db6-aae3-43e2-9ea8-5766d630fe8a", + "metadata": {}, + "outputs": [], + "source": [ + "ces_merged[\"any_flag\"] = (\n", + " ces_merged[\"pct_cal_score_0.9\"] | ces_merged[\"Definition N (communities)\"]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "23360b80-a3d3-4d35-b56c-cc7f6423646c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pct_cal_score_0.9 DRAFT CES 4.0\\nPercentile Range\n", + "False 10-15% 0.052527\n", + " 20-25% 0.052527\n", + " 40-45% 0.052527\n", + " 1-5% (lowest scores) 0.052395\n", + " 15-20% 0.052395\n", + " 25-30% 0.052395\n", + " 30-35% 0.052395\n", + " 35-40% 0.052395\n", + " 5-10% 0.052395\n", + " 45-50% 0.052263\n", + " 50-55% 0.052263\n", + " 60-65% 0.052130\n", + " 55-60% 0.051998\n", + " 65-70% 0.051336\n", + " 70-75% 0.050410\n", + " 75-80% 0.048690\n", + " 80-85% 0.047499\n", + " 85-90% 0.041413\n", + " 90-95% 0.037841\n", + " 95-100% (highest scores) 0.028844\n", + " NaN 0.013363\n", + "True 95-100% (highest scores) 0.375262\n", + " 90-95% 0.232704\n", + " 85-90% 0.174004\n", + " 80-85% 0.079665\n", + " 75-80% 0.058700\n", + " 70-75% 0.033543\n", + " 65-70% 0.016771\n", + " NaN 0.008386\n", + " 55-60% 0.006289\n", + " 60-65% 0.006289\n", + " 50-55% 0.004193\n", + " 30-35% 0.002096\n", + " 45-50% 0.002096\n", + "Name: DRAFT CES 4.0\\nPercentile Range, dtype: float64" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Each row of the following outputs answers the question:\n", + "# what share of communities at or above the 90th percentile for our version of aggregate burden fall into\n", + "# each percentile range for the true calenviroscreen? For example, 38% of tracts that are above 90th percentile\n", + "# for our metric are in the highest score bucket on CES.\n", + "\n", + "ces_merged.groupby(\"pct_cal_score_0.9\")[\"DRAFT CES 4.0\\nPercentile Range\"].value_counts(\n", + " dropna=False, normalize=True\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "72bcce80-ed57-4f1c-ad01-c88b0b9046a8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
DRAFT CES 4.0\n", + "Percentile Range1-5% (lowest scores)10-15%15-20%20-25%25-30%30-35%35-40%40-45%45-50%5-10%50-55%55-60%60-65%65-70%70-75%75-80%80-85%85-90%90-95%95-100% (highest scores)
pct_cal_score_0.9
False0.0523950.0525270.0523950.0525270.0523950.0523950.0523950.0525270.0522630.0523950.0522630.0519980.0521300.0513360.0504100.048690.0474990.0414130.0378410.028844
TrueNaNNaNNaNNaNNaN0.002096NaNNaN0.002096NaN0.0041930.0062890.0062890.0167710.0335430.058700.0796650.1740040.2327040.375262
\n", + "
" + ], + "text/plain": [ + "DRAFT CES 4.0\n", + "Percentile Range 1-5% (lowest scores) 10-15% 15-20% \\\n", + "pct_cal_score_0.9 \n", + "False 0.052395 0.052527 0.052395 \n", + "True NaN NaN NaN \n", + "\n", + "DRAFT CES 4.0\n", + "Percentile Range 20-25% 25-30% 30-35% 35-40% \\\n", + "pct_cal_score_0.9 \n", + "False 0.052527 0.052395 0.052395 0.052395 \n", + "True NaN NaN 0.002096 NaN \n", + "\n", + "DRAFT CES 4.0\n", + "Percentile Range 40-45% 45-50% 5-10% 50-55% \\\n", + "pct_cal_score_0.9 \n", + "False 0.052527 0.052263 0.052395 0.052263 \n", + "True NaN 0.002096 NaN 0.004193 \n", + "\n", + "DRAFT CES 4.0\n", + "Percentile Range 55-60% 60-65% 65-70% 70-75% \\\n", + "pct_cal_score_0.9 \n", + "False 0.051998 0.052130 0.051336 0.050410 \n", + "True 0.006289 0.006289 0.016771 0.033543 \n", + "\n", + "DRAFT CES 4.0\n", + "Percentile Range 75-80% 80-85% 85-90% 90-95% \\\n", + "pct_cal_score_0.9 \n", + "False 0.04869 0.047499 0.041413 0.037841 \n", + "True 0.05870 0.079665 0.174004 0.232704 \n", + "\n", + "DRAFT CES 4.0\n", + "Percentile Range 95-100% (highest scores) \n", + "pct_cal_score_0.9 \n", + "False 0.028844 \n", + "True 0.375262 " + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Easier to read!\n", + "ces_merged.groupby(\"pct_cal_score_0.9\")[\"DRAFT CES 4.0\\nPercentile Range\"].value_counts(\n", + " dropna=False, normalize=True\n", + ").rename(\"share\").reset_index().pivot_table(\n", + " index=\"pct_cal_score_0.9\", columns=\"DRAFT CES 4.0\\nPercentile Range\", values=\"share\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "86c66114-b090-4f96-877d-60dad7e18252", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
any_flagFalseTrue
DRAFT CES 4.0\n", + "Percentile Range
1-5% (lowest scores)0.079518NaN
10-15%0.0771080.004255
15-20%0.0759040.005892
20-25%0.0726910.011457
25-30%0.0712850.013421
30-35%0.0688760.017676
35-40%0.0664660.021277
40-45%0.0618470.029133
45-50%0.0562250.037971
5-10%0.0787150.001309
50-55%0.0500000.048445
55-60%0.0467870.053355
60-65%0.0461850.054664
65-70%0.0399600.064484
70-75%0.0269080.086088
75-80%0.0236950.090998
80-85%0.0182730.100164
85-90%0.0132530.108020
90-95%0.0078310.117185
95-100% (highest scores)0.0032130.124714
\n", + "
" + ], + "text/plain": [ + "any_flag False True\n", + "DRAFT CES 4.0\\nPercentile Range \n", + "1-5% (lowest scores) 0.079518 NaN\n", + "10-15% 0.077108 0.004255\n", + "15-20% 0.075904 0.005892\n", + "20-25% 0.072691 0.011457\n", + "25-30% 0.071285 0.013421\n", + "30-35% 0.068876 0.017676\n", + "35-40% 0.066466 0.021277\n", + "40-45% 0.061847 0.029133\n", + "45-50% 0.056225 0.037971\n", + "5-10% 0.078715 0.001309\n", + "50-55% 0.050000 0.048445\n", + "55-60% 0.046787 0.053355\n", + "60-65% 0.046185 0.054664\n", + "65-70% 0.039960 0.064484\n", + "70-75% 0.026908 0.086088\n", + "75-80% 0.023695 0.090998\n", + "80-85% 0.018273 0.100164\n", + "85-90% 0.013253 0.108020\n", + "90-95% 0.007831 0.117185\n", + "95-100% (highest scores) 0.003213 0.124714" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Any flag here is score N or our version of cumulative burden. This table can be read the same way as above\n", + "\n", + "ces_merged.groupby(\"any_flag\")[\"DRAFT CES 4.0\\nPercentile Range\"].value_counts(\n", + " dropna=False, normalize=True\n", + ").rename(\"share\").reset_index().pivot_table(\n", + " index=\"any_flag\", columns=\"DRAFT CES 4.0\\nPercentile Range\", values=\"share\"\n", + ").T" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} 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 b7a0efb1f..0463d27a3 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 new file mode 100644 index 000000000..7ea4814b8 --- /dev/null +++ b/data/data-pipeline/data_pipeline/ipython/check_tribal_count.ipynb @@ -0,0 +1,177 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "8f03fec9-e4a0-4621-b94c-ff6459a42032", + "metadata": {}, + "source": [ + "This code is to do the one time check described in [ticket 1917]( Run a one-time check on count of federal Indian reservations)\n", + "\n", + "> We should do a one-time check on the BIA data we import, such that after import that have (for now in our staging environment) 326 federal Indian reservations on our map. The number 326 from https://www.bia.gov/faqs/what-federal-indian-reservation.\n", + ">\n", + "> If that one-time check to make sure we have all reservations fails, there's a list of federal Indian reservation names that we can use to track down which reservations are not shown on our map and troubleshoot." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "76c8eeac-21e0-4ff1-886d-b9cdd6199411", + "metadata": {}, + "outputs": [], + "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)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "aaf46946-4fa7-4744-8cd6-723ce86a0213", + "metadata": {}, + "outputs": [], + "source": [ + "from data_pipeline.etl.sources.tribal.etl import TribalETL\n", + "from data_pipeline.etl.sources.geo_utils import get_tribal_geojson\n", + "import geopandas as gpd" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "039d244f-6c97-4b1b-af04-6f879cd2cd86", + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext lab_black" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "0f0b3597-844e-4328-b6c9-ac760301383e", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-09-23 11:56:25,551 [data_pipeline.etl.sources.tribal.etl] INFO Downloading Tribal Data\n", + "2022-09-23 11:56:25,552 [data_pipeline.utils] INFO Downloading https://justice40-data.s3.amazonaws.com/data-sources/BIA_National_LAR_json.zip\n", + "2022-09-23 11:56:26,068 [data_pipeline.utils] INFO Extracting /home/matt/active/justice40-tool/data/data-pipeline/data_pipeline/data/tmp/downloaded-47ce415c-cc72-4e6f-9cbc-7ad833e08813.zip\n", + "2022-09-23 11:56:26,190 [data_pipeline.utils] INFO Downloading https://justice40-data.s3.amazonaws.com/data-sources/Alaska_Native_Villages_json.zip\n", + "2022-09-23 11:56:26,290 [data_pipeline.utils] INFO Extracting /home/matt/active/justice40-tool/data/data-pipeline/data_pipeline/data/tmp/downloaded-7c700e59-83cd-4752-889c-159e58c71154.zip\n" + ] + } + ], + "source": [ + "etl = TribalETL()\n", + "etl.extract()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "51a5a5c7-c02b-4a6f-9f3d-19868e45d7b1", + "metadata": {}, + "outputs": [], + "source": [ + "GEOJSON_BASE_PATH = etl.GEOJSON_BASE_PATH" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "c4224aeb-6aa5-47fa-9c6f-e2cd9354720d", + "metadata": {}, + "outputs": [], + "source": [ + "bia_national_lar_geojson = (\n", + " GEOJSON_BASE_PATH / \"bia_national_lar\" / \"BIA_National_LAR.json\"\n", + ")\n", + "bia_aian_supplemental_geojson = (\n", + " GEOJSON_BASE_PATH / \"bia_national_lar\" / \"BIA_AIAN_Supplemental.json\"\n", + ")\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\n", + " / \"alaska_native_villages\"\n", + " / \"AlaskaNativeVillages.gdb.geojson\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "7dd74d24-4f55-45db-bdd9-f4ac945d6a78", + "metadata": {}, + "outputs": [], + "source": [ + "bia_national_lar_df = gpd.read_file(bia_national_lar_geojson)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "ae8dafb7-f997-4977-87da-53f0b4f98a98", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "326" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(\n", + " sorted(\n", + " list(\n", + " bia_national_lar_df.LARName.str.replace(\n", + " r\"\\(.*\\) \", \"\", regex=True\n", + " ).unique()\n", + " )\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "40849cc4-345b-4658-94ac-498154107e9f", + "metadata": {}, + "source": [ + "Looking at the main BIA LAR data file, and removing paranthecials (so that `'Acoma (Red Lake) LAR','Acoma LAR'` are counted as a single tribal entry), **we have 326 tribal areas**, which is the number we expected." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} 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 new file mode 100644 index 000000000..0eabedc0e --- /dev/null +++ b/data/data-pipeline/data_pipeline/ipython/compare_tiles_and_geoJson_files.ipynb @@ -0,0 +1,359 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "c9fab286", + "metadata": {}, + "outputs": [], + "source": [ + "# %load_ext lab_black\n", + "import json\n", + "import pandas as pd\n", + "import geopandas as gpd" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "dbd84e10", + "metadata": {}, + "outputs": [ + { + "ename": "DriverError", + "evalue": "/mnt/e/opt/justice40-tool/data/data-pipeline/data_pipeline/data/score/csv/tiles/usa.csv: No such file or directory", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mCPLE_OpenFailedError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32mfiona/_shim.pyx\u001b[0m in \u001b[0;36mfiona._shim.gdal_open_vector\u001b[0;34m()\u001b[0m\n", + "\u001b[0;32mfiona/_err.pyx\u001b[0m in \u001b[0;36mfiona._err.exc_wrap_pointer\u001b[0;34m()\u001b[0m\n", + "\u001b[0;31mCPLE_OpenFailedError\u001b[0m: /mnt/e/opt/justice40-tool/data/data-pipeline/data_pipeline/data/score/csv/tiles/usa.csv: No such file or directory", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[0;31mDriverError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/tmp/ipykernel_10603/1449522338.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# Read in the score geojson file\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mdata_pipeline\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0metl\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mscore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconstants\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mDATA_SCORE_CSV_TILES_FILE_PATH\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mnation\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_file\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mDATA_SCORE_CSV_TILES_FILE_PATH\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m~/.cache/pypoetry/virtualenvs/data-pipeline-WziHKidv-py3.8/lib/python3.8/site-packages/geopandas/io/file.py\u001b[0m in \u001b[0;36m_read_file\u001b[0;34m(filename, bbox, mask, rows, **kwargs)\u001b[0m\n\u001b[1;32m 158\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 159\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mfiona_env\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 160\u001b[0;31m \u001b[0;32mwith\u001b[0m \u001b[0mreader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpath_or_bytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mfeatures\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 161\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 162\u001b[0m \u001b[0;31m# In a future Fiona release the crs attribute of features will\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/.cache/pypoetry/virtualenvs/data-pipeline-WziHKidv-py3.8/lib/python3.8/site-packages/fiona/env.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 406\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mwrapper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 407\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlocal\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_env\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 408\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 409\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 410\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/.cache/pypoetry/virtualenvs/data-pipeline-WziHKidv-py3.8/lib/python3.8/site-packages/fiona/__init__.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(fp, mode, driver, schema, crs, encoding, layer, vfs, enabled_drivers, crs_wkt, **kwargs)\u001b[0m\n\u001b[1;32m 262\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 263\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmode\u001b[0m \u001b[0;32min\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m'a'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'r'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 264\u001b[0;31m c = Collection(path, mode, driver=driver, encoding=encoding,\n\u001b[0m\u001b[1;32m 265\u001b[0m layer=layer, enabled_drivers=enabled_drivers, **kwargs)\n\u001b[1;32m 266\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mmode\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'w'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/.cache/pypoetry/virtualenvs/data-pipeline-WziHKidv-py3.8/lib/python3.8/site-packages/fiona/collection.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, path, mode, driver, schema, crs, encoding, layer, vsi, archive, enabled_drivers, crs_wkt, ignore_fields, ignore_geometry, **kwargs)\u001b[0m\n\u001b[1;32m 160\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmode\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'r'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 161\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msession\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mSession\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 162\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msession\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstart\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 163\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmode\u001b[0m \u001b[0;32min\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m'a'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'w'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 164\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msession\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mWritingSession\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32mfiona/ogrext.pyx\u001b[0m in \u001b[0;36mfiona.ogrext.Session.start\u001b[0;34m()\u001b[0m\n", + "\u001b[0;32mfiona/_shim.pyx\u001b[0m in \u001b[0;36mfiona._shim.gdal_open_vector\u001b[0;34m()\u001b[0m\n", + "\u001b[0;31mDriverError\u001b[0m: /mnt/e/opt/justice40-tool/data/data-pipeline/data_pipeline/data/score/csv/tiles/usa.csv: No such file or directory" + ] + } + ], + "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)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2f850529", + "metadata": {}, + "outputs": [], + "source": [ + "nation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5f342d36", + "metadata": {}, + "outputs": [], + "source": [ + "# get the columns of the df and sort the list:\n", + "sorted_nation = sorted(nation.columns.to_list())" + ] + }, + { + "cell_type": "markdown", + "id": "97aac08f", + "metadata": {}, + "source": [ + "CLI to covert a pbf into a json file (requires tippecannoe and jq to be installed)\n", + "\n", + "```bash\n", + "curl https://justice40-data.s3.amazonaws.com/data-pipeline-staging/1822/e6385c172f1d2adf588050375b7c0985035cfb24/data/score/tiles/high/8/67/101.pbf -o uh-1822-e638-8-67-101.pbf | tippecanoe-decode uh-1822-e638-8-67-101.pbf 8 67 101 | jq > cat uh-1822-e638-8-67-101.json\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cbe37ccb", + "metadata": {}, + "outputs": [], + "source": [ + "# load a random high-tile json (after decoding a pbf) file using json.loads()\n", + "with open(\"/Users/vims/Downloads/uh-1822-e638-8-67-101.json\", \"r\") as f:\n", + " random_tile_features = json.loads(f.read())\n", + "\n", + "# Flatten data around the features key:\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(\n", + " list(flatten_features[\"features\"][0][0][\"properties\"].keys())\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a33f5126", + "metadata": {}, + "outputs": [], + "source": [ + "set_dif = set(sorted_nation).symmetric_difference(set(random_tile))\n", + "list(set_dif)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d228360b", + "metadata": {}, + "outputs": [], + "source": [ + "nation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b6925138", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2f2d7ba0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
GEOID10SFCFHRS_ETAML_ETFUDS_ET
7127061480300MinnesotaItasca CountyNoneNone0
7527061940000MinnesotaItasca CountyNoneNone0
11527077460400MinnesotaLake of the Woods CountyNoneNone0
12727123042001MinnesotaRamsey CountyNoneNone0
16027123033400MinnesotaRamsey County0None0
.....................
7404716055000200IdahoKootenai CountyNoneNone0
7406816011950500IdahoBingham CountyNoneNone0
7407616001010503IdahoAda CountyNoneNone0
7410716001001000IdahoAda CountyNoneNone0
7412316001002100IdahoAda CountyNoneNone0
\n", + "

3170 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " GEOID10 SF CF HRS_ET AML_ET FUDS_ET\n", + "71 27061480300 Minnesota Itasca County None None 0\n", + "75 27061940000 Minnesota Itasca County None None 0\n", + "115 27077460400 Minnesota Lake of the Woods County None None 0\n", + "127 27123042001 Minnesota Ramsey County None None 0\n", + "160 27123033400 Minnesota Ramsey County 0 None 0\n", + "... ... ... ... ... ... ...\n", + "74047 16055000200 Idaho Kootenai County None None 0\n", + "74068 16011950500 Idaho Bingham County None None 0\n", + "74076 16001010503 Idaho Ada County None None 0\n", + "74107 16001001000 Idaho Ada County None None 0\n", + "74123 16001002100 Idaho Ada County None None 0\n", + "\n", + "[3170 rows x 6 columns]" + ] + }, + "execution_count": 75, + "metadata": {}, + "output_type": "execute_result" + } + ], + "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\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "02eef4b5", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "678bea72", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([None, '0', '1'], dtype=object)" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nation[\"HRS_ET\"].unique()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.8.10 ('data-pipeline-WziHKidv-py3.8')", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.10" + }, + "vscode": { + "interpreter": { + "hash": "c28609757c27a373a12dad8bc3a2aec46aa91130799a09665fba7d386f9c3756" + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/data/data-pipeline/data_pipeline/ipython/compare_two_score_files_for_differences.ipynb b/data/data-pipeline/data_pipeline/ipython/compare_two_score_files_for_differences.ipynb index f3619af63..6c4649724 100644 --- a/data/data-pipeline/data_pipeline/ipython/compare_two_score_files_for_differences.ipynb +++ b/data/data-pipeline/data_pipeline/ipython/compare_two_score_files_for_differences.ipynb @@ -150,7 +150,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.6" + "version": "3.9.10" } }, "nbformat": 4, diff --git a/data/data-pipeline/data_pipeline/ipython/county_lookup.ipynb b/data/data-pipeline/data_pipeline/ipython/county_lookup.ipynb index 6140f3183..7d733b1ff 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 de6c2a8fe..a0a9fd0a3 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 new file mode 100644 index 000000000..af099cbc3 --- /dev/null +++ b/data/data-pipeline/data_pipeline/ipython/explore_adjacency.ipynb @@ -0,0 +1,718 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "8d2dd0fc-5bd6-4d28-9ef3-f7cf7403f0be", + "metadata": {}, + "outputs": [], + "source": [ + "import geopandas as gpd\n", + "import pandas as pd\n", + "import numpy as np\n", + "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)\n", + "\n", + "from data_pipeline.config import settings\n", + "from data_pipeline.etl.sources.geo_utils import (\n", + " add_tracts_for_geometries,\n", + " get_tract_geojson,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "f36fe7ef-2717-48be-ae94-a3f0aa33acc1", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "%load_ext lab_black" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "207209d1-f95a-4b84-bc34-d37235a6dab4", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-08-17 11:45:46,587 [data_pipeline.etl.sources.geo_utils] INFO Loading tract geometry data from census ETL\n", + "2022-08-17 11:45:46,588 [data_pipeline.etl.sources.geo_utils] DEBUG Loading existing tract geojson\n" + ] + } + ], + "source": [ + "df = get_tract_geojson()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "a6cd76db-9dff-4e18-aa26-bab9a841ce1f", + "metadata": {}, + "outputs": [], + "source": [ + "center = \"6030.04\"\n", + "center_GEOID10_TRACT = \"24027603004\"" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "ce9487d8-5e27-4d07-8f9e-467ac7cdf7e0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
STATEFP10COUNTYFP10TRACTCE10GEOID10_TRACTNAME10NAMELSAD10MTFCC10FUNCSTAT10ALAND10AWATER10INTPTLAT10INTPTLON10geometry
5341524027602100240276021006021Census Tract 6021G5020S137699343674+39.3076905-076.8349752POLYGON ((-76.86305 39.31484, -76.86308 39.315...
5341624027602303240276023036023.03Census Tract 6023.03G5020S1174075626901+39.2600506-076.8754102POLYGON ((-76.86750 39.25170, -76.86754 39.251...
5342424027605503240276055036055.03Census Tract 6055.03G5020S31586458444+39.2274469-076.8803625POLYGON ((-76.88405 39.23543, -76.88398 39.235...
5342924027605502240276055026055.02Census Tract 6055.02G5020S526098416405+39.2257617-076.9054701POLYGON ((-76.90881 39.21739, -76.90882 39.217...
5345224027603004240276030046030.04Census Tract 6030.04G5020S4442509799882+39.2817022-076.9188315POLYGON ((-76.98539 39.26610, -76.98557 39.266...
5345324027605104240276051046051.04Census Tract 6051.04G5020S399695261553493+39.2369323-076.9735549POLYGON ((-76.97979 39.23322, -76.98018 39.233...
5345424027603003240276030036030.03Census Tract 6030.03G5020S45161338174904+39.3192333-076.9680454POLYGON ((-76.93350 39.35760, -76.93341 39.357...
5345524027603001240276030016030.01Census Tract 6030.01G5020S2472630357708+39.3279761-076.8942412POLYGON ((-76.86308 39.31501, -76.86305 39.314...
5346424027602201240276022016022.01Census Tract 6022.01G5020S46115496125+39.2900228-076.8721238POLYGON ((-76.87750 39.30290, -76.87747 39.302...
\n", + "
" + ], + "text/plain": [ + " STATEFP10 COUNTYFP10 TRACTCE10 GEOID10_TRACT NAME10 \\\n", + "53415 24 027 602100 24027602100 6021 \n", + "53416 24 027 602303 24027602303 6023.03 \n", + "53424 24 027 605503 24027605503 6055.03 \n", + "53429 24 027 605502 24027605502 6055.02 \n", + "53452 24 027 603004 24027603004 6030.04 \n", + "53453 24 027 605104 24027605104 6051.04 \n", + "53454 24 027 603003 24027603003 6030.03 \n", + "53455 24 027 603001 24027603001 6030.01 \n", + "53464 24 027 602201 24027602201 6022.01 \n", + "\n", + " NAMELSAD10 MTFCC10 FUNCSTAT10 ALAND10 AWATER10 \\\n", + "53415 Census Tract 6021 G5020 S 13769934 3674 \n", + "53416 Census Tract 6023.03 G5020 S 11740756 26901 \n", + "53424 Census Tract 6055.03 G5020 S 3158645 8444 \n", + "53429 Census Tract 6055.02 G5020 S 5260984 16405 \n", + "53452 Census Tract 6030.04 G5020 S 44425097 99882 \n", + "53453 Census Tract 6051.04 G5020 S 39969526 1553493 \n", + "53454 Census Tract 6030.03 G5020 S 45161338 174904 \n", + "53455 Census Tract 6030.01 G5020 S 24726303 57708 \n", + "53464 Census Tract 6022.01 G5020 S 4611549 6125 \n", + "\n", + " INTPTLAT10 INTPTLON10 \\\n", + "53415 +39.3076905 -076.8349752 \n", + "53416 +39.2600506 -076.8754102 \n", + "53424 +39.2274469 -076.8803625 \n", + "53429 +39.2257617 -076.9054701 \n", + "53452 +39.2817022 -076.9188315 \n", + "53453 +39.2369323 -076.9735549 \n", + "53454 +39.3192333 -076.9680454 \n", + "53455 +39.3279761 -076.8942412 \n", + "53464 +39.2900228 -076.8721238 \n", + "\n", + " geometry \n", + "53415 POLYGON ((-76.86305 39.31484, -76.86308 39.315... \n", + "53416 POLYGON ((-76.86750 39.25170, -76.86754 39.251... \n", + "53424 POLYGON ((-76.88405 39.23543, -76.88398 39.235... \n", + "53429 POLYGON ((-76.90881 39.21739, -76.90882 39.217... \n", + "53452 POLYGON ((-76.98539 39.26610, -76.98557 39.266... \n", + "53453 POLYGON ((-76.97979 39.23322, -76.98018 39.233... \n", + "53454 POLYGON ((-76.93350 39.35760, -76.93341 39.357... \n", + "53455 POLYGON ((-76.86308 39.31501, -76.86305 39.314... \n", + "53464 POLYGON ((-76.87750 39.30290, -76.87747 39.302... " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_subset = df.query(\n", + " 'STATEFP10==\"24\" and COUNTYFP10==\"027\" and NAME10 in [\"6030.03\", \"6051.04\", \"6055.02\", \"6055.03\", \"6023.03\", \"6022.01\", \"6030.01\", \"6022.01\", \"6021\", \"6030.04\"]'\n", + ")\n", + "df_subset" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "64e8c34d-df3a-4011-afad-c8a04af71d39", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAATEAAAD4CAYAAACE9dGgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAA9eklEQVR4nO2deXhV1bn/P++ZcjIPZCAkIQkggyAECEFRHHAo2sFacW4dqrXe3vZ2tGrtcGtvf7debbWztWrV2jq2WsdSqjgLIWFGZggkBEgg85ycs35/nB0I4SQ5J9lnXp/nOU9O9t5r73ef7HzPWu961/uKUgqNRqOJVCyhNkCj0WjGghYxjUYT0WgR02g0EY0WMY1GE9FoEdNoNBGNLdQGmEFmZqYqKioKtRkajSZAVFZWHlFKZXnbFxUiVlRUREVFRajN0Gg0AUJE9g21Tw8nNRpNRKNFTKPRRDRaxDQaTUSjRUyj0UQ0WsQ0Gk1Eo0VMo9FENFrENBpNRKNFTKPRRDRaxGIEpRQ7D7fyx3f38NW/ruVQc1eoTdJoTCEqIvZjmfXVTdS1dHHRzPFDHnOkrZv/enodH+4+emzbtkOt/PVLC8lOdgbDTI0mYGgRi2D+VlnD7S9sQAGvfW0xmckOAJo7ejnc0k1agp1Zean8/F/bTxAwgF11bXz61+9z46Jils3PJys5LgR3oNGMHYmG9NSlpaUq2tdO1rV28T+vbmVjTRNOu5WSgjT+vu4APX3uYdt98cxinlq1jx7X0MdlJjlY+Z1zSXbaR21f+d4GyoozRt1eoxkOEalUSpV626d7YhGA2634+tPr+WjPicNBX3jsg70jHnOkrYc3Nh/iytICv+zaVNPMP9YfoLGjl7+treHvX1nEvInpfp1DoxkrWsTCnPrWbi7+5XscaesO6HXueeVjzpySSV5avE/H/+Gd3dy3fDt97uM9+Uff38u8a7WIaYKLnp0Mc9IS7ARjyN/W3cefPxoy28lJNHf2niBgAP/acohn1+ynubP32DaXW/G9FzdxxUMfsvlAs2n2ajT9aJ9YBPDm1sPc9lQlva7A/q1E4I6l07lxURFOuxWXW7F8yyGqjrbT3t1Hn0sxLsnB7rp2UuJt/PE970PVFKeN73xiGp+ePYHHPtjLr9/adWzf9PHJnD5pHDedWUThuMSA3o8mehjOJ6ZFLEL4wqOreW/nkaBca0p2Er+5di7/8+pW3t8VmGumJdh58StnUpyphUwzMsOJmB5ORgj56b75qsxgV10bSx98L2ACBtDU0cv9y7cH7Pya2EGLWIQwITV4IhYsXtt0kG88s47tPs60ajTe0LOTEYLVKqE2ISC8tL6W+rZunrp5ISLm3uPmA81srGnGrRQJDivTx6dw6oQUU6+hCT1axCKEnCheHvTBrqOc//N3+NTsXHbVtzEhNZ7vXTIDi2V0otbU0cNv3trFnz6swjVgBtVuFZ74YhmLJmcO235XXRs//9d2vrbkFC16EYAWsQjh8vn5jEty8P9e38qOw22hNsd09hxp51cDZjE31jTz2E0LSIrz7xH9cNcRrn+s/KTwD4Bel+KH/9jCP7++GJv1uCfF5Vb8a8sh3t5eT+X+RnbVeT7fhcUZnDohhQ93HSEtwaEFLUwZ8QkRESfwLhBnHP+CUupHIrIEuB9wAJXAzUqpvkFtC4EX8fje7MCvlVIPGfveBnKBTuPwi5RSdSISBzwJzAeOAlcpparGeJ9RwbnTsjlrSibPVlTzwIodHGnrCbVJAaO8qoFLf/M+507L5hMzxzMrL4UEx8iCtq+hw6uA9bOrro0LfvEOX11yCoeaO3m+sobmzl6aOnpPOnZqTjIAD7+3h7e31/PNC6by9QtOGf1NaQLCiCEW4nFUJCql2kTEDrwPfBN4FjhfKbVDRO4B9imlHh3U1mFco1tEkoDNwCKlVK0hYt9RSlUMavMVYLZS6jYRuRq4TCl11XA2xkKIxWBaunr5zVu7ePyDqmHXRUYLNotw2dw8zjolk8lZSfzpgyoS46zkp8ezaHIms/JSAXhq1T6+/9JmU66ZHGfjV9fM5bEP9vLeziNYLcJfb1nIwknjTDm/xndMixMTkQQ8IvYfwF+VUpON7YuBu5RSlwzTdhywDjh9BBFbDvy3UuojEbEBh4AsNYyhsShi/VQ3dHDNH1dR09g58sFRxsLiDFbvbcBpt7D5vz+BzWqhprGDqx8O3OcxNSeJf33znICcWzM0Y44TExGriKwH6oAVQDlgE5H+ky4DvK4eFpECEdkIVAP3KqVqB+z+k4isF5EfyPGpqTzjWIzhaTNw0lefiNwqIhUiUlFfX+/LbUQlcXYLtU2xJ2AA/d9qXb1ufvr6VlxuxYTUeCZlJQXsmjvr2ujucwXs/Br/8clrqpRyASUikobHxzUTuBp4wPBh/Qvw+pdVSlUDs0VkAvCSiLyglDoMXKeUOiAiycDfgC/g8YX5hFLqYeBh8PTEfG0Xbfyt8gDDuICillOykzgwQLz/9EEVG6qbSHDYAhqkqxS8v/MI58/ICdg1NP7hV7CrUqoJWAksVUp9pJRarJQqw+P43zFC21o8PrHFxu8HjJ+twF+BMuPQAxi9OmM4mYrHwa/xwjs76kJtQkjo7nNzYNCQce3+poAKWD+3v7CR1q6TJwI0oWFEERORLKMHhojEAxcC20Qk29gWB9wBPOSlbb7RBhFJB84CtouITUQyje124FN4BA7gZeAG4/0y4K3h/GGxTFNHD5X7GkNtRtApK8pgf0NHyK7f0N7DI0MsftcEH196YrnASsOvtQZYoZR6FbhdRLYCG4FXlFJvAYhIqYg8YrSdAawWkQ3AO8D9SqlNeMI1lhvnXI+n9/VHo82jwDgR2QV8C7jThPuMSv6+9kDAM1uEG/MmplFe1RBqM/jlmzt5P0gL8jXDo7NYRCA7D7fy8Lt7eHHdgWFjoqKN7OQ4OntctHb3jXxwELhsbh4PXFUSajNiAp3FIsp49P29PF9ZE1MClpvqxK1U2AgYwJqqhqAkrNQMjxaxCMRpt4bahKCTkegIuxUKNY2dMRmfF25oEYtA/F1PGOlMzkpkS21LqM3wyvOVNaE2IebRIhaBjDa7Q6QSzj3PX725k68/s04HwIYQLWIRSFaSI9QmBI05+alh2wvr5x/ra/n+i5u1fyxEaBGLQEoKYqMsWrzdwsHmrlCb4RPPV9bEZMxeOKBFLAKZkZtMgiN8h1hmcVpeGnWtga23aSbbD+s026FAi1gEYrNamJ2fGmozAk5nb/iEU/hCog/5zjTmoz/1CGV+YTqr9oQ+cj1QTM5KZNOB8PaF9XPetCySnHYWTdZ5xkKBFrEIpax4HL9duTvUZgSM1Hh7qE3widvOmcydF08PtRkxjR5ORijzC9OxRWmoRVZSHBtrmkNthk+s3FZHc6fOaBFKtIhFKElxNmbkRmfhirz0+IhZUrX9cCvXPbKKrl4dJxYqtIhFKL0uNwebo2vJi8MqzMlPZX11U6hN8YvNB1r4gUl5/TX+o0UsQlm5rS7s1hKOlZKJ6WyIkGHkYJZvOXRCjUtN8NAiFqFE45q93r7IrdrU0tXHi+sOoJSitqmTupbICNKNBvTsZARS39rNym3Rl5Z6z5E2puYkRWxx4O++sIH7l2/nkCFgp+amcO60LOpau9lS20JWchzXlk3kEzNzOF4XRzNWtIhFIC9FaTLE5s4+WjrbWFCUzvZDrbR0RVawq1txTMAAPj7YwscHj8e6bT0I7+6o57xpWdx3xRwyk+JCYWbUoYeTEYZSiucrq0NtRsBQwJqqRvLTE0JtSsBYub2ey3//IfURtKQqnNEiFmFsrGmO2OGWP9Q0ha4QSDDYd7SDr/ylUqfwMQEtYhHGcxXR2wsbSGdP9P9zr6lq5LmK6JugCTa+lGxziki5iGwQkS0i8mNj+xIRWSsim0XkCaNG5OC2hcYx6422txnbE0TkNRHZZmz/2YA2N4pIvdFmvYjcYuYNRzLNnb28uO5AqM0ICrFSxelnr29l+ZZDoTYjovGlJ9YNLFFKzQFKgKUisgh4ArhaKTUL2MfxWpEDOQicoZQqARYCdxqVwMFTvm06MBc4U0QuHtDuWaVUifF6BA0Az1dU0xEDPRTw5BKLBdp7XHz5z5X8Y31sfDkFghGfFOWh3wljN14uoEcp1V/1ewVwuZe2PUqpfu9lXP/1lFIdSqmV/ccAa4H8sdxItONyK574qCrUZgSN0/LSQm1CULnzb5vYejAysnaEGz593YmIVUTWA3V4BKscsIlIfx24ZUDBEG0LjCK51cC9SqnaQfvTgE8Dbw7YfLmIbBSRF0RkqPPeKiIVIlJRX1/vy21ENG9uPUx1Q3QtMxqKmRNSWLs/trKkdva6uOlPa2hoj65VGMHAJxFTSrmMIWE+UAbMBK4GHhCRcqAVT+/MW9tqpdRsYApwg4jk9O8z/GhPA79SSu0xNr8CFBltVuAZtno778NKqVKlVGlWVpYvtxHR/OmDqlCbEDQOt3RFZRzcSLiU4t5/bsUdg/c+FvxyPCilmoCVwFKl1EdKqcVKqTLgXWDHCG1rgc3A4gGbHwZ2KqUeHHDc0QFD0EeA+f7YGI3sO9rOR3uOhtqMoJCREH71JYPB1JwkXC43z66pYeX26FuNEUh8mZ3MMoZ8iEg8cCGwTUSyjW1xwB3AQ17a5httEJF04Cxgu/H7/wCpwDcGtckd8OtngK3+3lS0ESszdQCpCZGRDNFMJmclUt3QQUOHJy/ZUT2k9Atflh3lAk+IiBWP6D2nlHpVRO4TkU8Z236vlHoLwPCT3aaUugWYAfxcRBQgeGYkN4lIPnA3sA1Ya6wj+40xE/lfIvIZoA9oAG408X4jktau2Ei6V1qYTq8rcheBj4a89HiOtvfQ2Xv8vlt0kkW/GFHElFIb8YRBDN5+O3C7l+0VwC3G+xXAbC/H1OARNW/Xuwu4ayS7YgW3W/GzN7aF2oyg0N3nZtOByEzFMxpSnDb6+tw0dZwoWrESRmMWsRGME6G43IrvvbiJ1XujtyDIQDp6ImvB91gpzkzksJf1k+/tDM5se0+fm3d21LN6z9GI7gHrLBZhzD2vbOGZNbGxzAiIqfCCBUXprKnyHkayvrqJutYuspOdXvd39bqoa+kmNd4+ah/iuv2NfO3pddQ0esJ2puUk84+vnonTHnn1THVPLEzZXd/Gk6v2hdqMoBJpqXdGS+G4BNbvbxpyf69L8dDbe1Dq5AmdNzYdZNaPlnP2fSs5/xdvc3gUyRff33mEa/+4+piAgadWwFBuC7db8e3nNnDdI6t4PgzX7moRC1N+t3I3Xp7hqMUixEx6Z4fVQu8I9/rYB3v59G/eP6GSUp/LzX3Ltx+LoTvS1sNPX/Nv8n7zgWZu/FM5nV4Kmzz5URU7vVQx33Oknb+treGDXUd5eUPtSfvBs2B/Y01TSFwCejgZhlQ3dPBSjK2ly06O41BLbOTXqjrajtNmoWuEdNybD7TwpScr+NaFU+npc/NsRTV7jrSfcMzLG2pp7OjhD1+YT4JRgdztVhxq6cJmlZOGpPe88vGQgcRuBQ+/u4f7rphzwvbfrtx17P2qPUepaew4lu+tvrWbZ8r384d399DW3cfEjATOm5bF508v5JScZN8+kDEi3rqskUZpaamqqKgItRmmcdffN/F0+f5QmxFUyooyKK+KjQkMgGk5SWw3MS9cVnIcF8zIoavXxce1LWw/3MqS6dk8duOCY8fsPNzKhQ+8O+x5bBbhvTvOIzc1HoDmjl5KfvKvE0YFaQl2Pr+wkCSnjV+s2EGPFzG2WoRrygq48NTxHGntpigzgbkF6VhGWStVRCqVUqXe9umeWJhR19oVMznDBtLUGTtOfQCz45frW7tP+uIrHHdidtwX1o6cu6zPrfjf17fxy6tLEBFS4m0kOmy0dR8fJjZ19PKbAb0zb7jciqdW7eepVcdtmpDq5KeXncZ507N9uSWf0T6xMGPltrqY8Q31k5nkiIlstQOpaw18NaRTBxRXVkrx9jbfQjde3lDLXX/fxOGWLpo7e7GaVGm+trmLrz29jj+8s9uU8/Wje2Jhxqo9sTOk6qc4MzHm1ksGozxdQcbxnthfy/ez3YvTfiieWVPNM2uqEcHUCaa27j5+89YublhUZFo4h+6JhRmxkJZ5MO3dsXfPk7KSAn6NVzbUUnWknb9V1vg9i9lPIFzmrd19vL7poGnn0z2xMGNnne/fltHC/oboLgoymPGpTpy2wPcf/rJ6P39ZHZ4TRGYurdIiFkY0d/Syu7595AOjiLQE+0lrB6OVU7KTSHBY2VDTzKHm2K0Qnp5g5zMlE0Y+0Ee0iIUR66rDP5upw2YhPcFOXWu3KUMNuyX6PRqz81Lp6nPF3OTFUHxydi4pTvNSLmkRCyPWDrMUJVwoGpfAjsNt2C1CTpqTjEQHTpsVN4rOHhdH2rr9ErgeV/T5w7KT4yjKTGTX4TY6e/vYGEOZOXyht89cR5sWsTBifXVTqE0YkaQ4zyPT61bUNHaesP6uH7tFGJ/uJCPBgdNuxa0UXb1ujrZ1c7i1+4QQkmDM0gWLmRNSsFmEjTXN1Onq3kOSlRxn6vm0iIURe+rDf7hhs448/Ot1K6obOr0WNrEITDB6cPF2KxYR2rr7aGzvob6tO+Ky2CbH2ZgxIYUDjR1sqdXVioZjTn4qnynJ49Nzckc+2A+0iIUJfS43B2PA2etWUNvURW2T93vNTo4jI9FBstPzaHb1umns6OFwS1dABS7ebmVCmpNkpx27VRARBE+IgUt5hsqHW7qOpY7OTo6jaFwimw40UR4j+d7GQuG4BP58y0JTfWH9aBELEw42d0VEpH5Pb2CHf3Wt3UMOxSakORmf4kQp2HKwxeuaPV+Js1mYNj4Zh83CwaYuDjR1+jQznJUUR0FGPPEOKxtrmk9IK60ZmqWzxgdEwECLWNhQ3RgZsVK97tD90w7swaUn2CnJT6ViXyP+aP/MCSk4bBa21rawscZ/h3t9Wzf1bR6RtVuFkoI0OntcfkXDxxKTsxK59/LZlBZlBOwaWsTChJoYKYxrFo0dvZRXNVI0LoFkp33Y3Pzxdiuz8lKobeo01W/V61Ksr25idn4qp+Ym09HjoupoZHwZBYNPnpbL/VfMId4R2GyxI4qYiDjx1JWMM45/QSn1IxFZAtwPOIBK4GalVN+gtoXAi3iWN9mBXyulHjL2zQceB+KB14GvK6WUiGQAzwJFQBVwpVIq/AOoxsiBpsgQMUcQIs39oV80cpLjKBiXgHC8xJ3DZqGnz832Qy1DpoIeK/lp8Xxc20KfW2ERKC1KZ09dOw0dsbUWdDCLT8nkl1eX+DQRNFZ86Yl1A0uUUm0iYgfeF5HleCpzn6+U2iEi9wA3AI8OansQOEMp1S0iScBmEXnZKKT7e+BLwGo8IrYUeAO4E3hTKfUzEbnT+P2Osd9qePPVJVNo6ujhqdX7w9o3Zg/CQzkaDrd2ey26EWg6elzHkgy6FVRUNRLvsLKwOIP11Y10mxwTFQmkxtv5xZXBETDwYQG48tA/9283Xi6gRynVX/V7BXC5l7Y9A6p5x/VfzyiQm6KUWqU8WRmfBD5rHHcpHoHE+PlZYgC71cKPL53FuVOzQm3KsHTF4AL14Wjs6CEvPf6EbZ09LlbvbSDZaae0MD1EloWO7y6dZnos2HD4JJUiYhWR9UAdHsEqB2xGoVyAZUDBEG0LRGQjUA3ca/TC8oCBGdpqjG0AOUqp/iXuh4CcIc57q4hUiEhFfX1wSlwFgyRnmLspzUktFRXE2YTT8lM54CXgFzw58Cv2NVKcmcDMCSlej4k2zpuWxbVlE4N6TZ9ETCnlUkqVAPlAGTATuBp4QETKgVY8vTNvbauVUrOBKcANIuJVlIZoqwCv/XGl1MNKqVKlVGlWVnj3XvwhXIdr/dhMSpAX6aQn2JmYkejTDOfeI55A2Nl5qUzMiB/x+EjlrCmZ/PraeYgE9xnx62tfKdUkIiuBpUqp+4HFACJyETB1hLa1IrLZaPMBHkHsJx/or4xxWERylVIHjWFnnT82RjpxYeY4H4wtBhZsj8SsCSnUt3Wzs86/FRYbDzQjAnML0mjv6YuaBeGZSXH853mTuf6MItOywPqDL7OTWUCvIWDxwIXAvSKSrZSqE5E4PI73n3ppmw8cVUp1ikg6cBbwgCFQLSJyOh7H/vXAr41mL+OZJPiZ8fMfY7/NyCH8ezqx56geyPyJaVSOYaG+UrDOWCM7MSOB8alODjR2cGCIFQzhSuG4BOZPTGfJjGwumJET0qK7vvTEcoEnRMSKZ/j5nFLqVRG5T0Q+ZWz7vVLqLQDDT3abUuoWYAbwcxFReLwp9yulNhnn/QrHQyzeMF7gEa/nRORmYB9wpQn3GTGkxAcmqtkseiJsbaOZJMdZ2X3EvHxv+xs6jiWEnJDmZEJqPA6bha5eF/uOdhxb4uQNq0VIdFhJirORaLw8762e3x02EuKsnp8OK3arBYtFsAhYRYz3gtut6HG56XO5cdisZCY5yElxkuCw0trdR21TJ+3dfVhEyEh0kJ+eQEFG/LHycOHAiJYopTYCc71svx243cv2CuAW4/0KYPYQ560AZnnZfhQ4fyS7opVw74e1d8dGlW5vTM1JoXJ/YOLN+lcjLD4lk79/5UwAevo860Y7e1z0ud1YREhy2khx2omzWYLie5o3MfxnV8NHTjUAfHwwvJevDKxIHUtMzkoMmIANpGhc4rH3DpuFnBTnMEdrQBcKCSuUUlTuC9+MCFaLxGyerIxER1CuMysvNkIxzESLWBix50g7jWGcbz4rKXgBjOFEaWE6lfuCs/ItGFWQog0tYmHEPzcfCrUJw5KdEnsiVpgRz/rqJr8yZYzpeoOqdmtGRotYmNDncvPMmvAsr9VP+Id/mMv08Um0dPUdWxsZaJKdtpjt7Y4FLWJhwmubDnpN5xwuTMxIiIgaAGZRWpTOrrrgDu+nZCcFPdo9GtAiFib84Z09oTZhSOIdVqwWCdqQKtSUFqbhcqmgx+xNzU4O6vWiBS1iYUJTmOafSnHaKEiPZ6+JQZ7hzGl5qVTua2JddRM9fS7KitIJVudo7sS04FwoytBxYmFCsPwu/jAh1YmIRM0av5EoGpfA7rrWYwur2rpdlFc1MjkrEasl8J/DqTGS6cJsdE8sTAg3EZuak0RHrytiMs6OlYxEOx09Ljq8FP7YXd/OjsNtLChKP1aFyWwsAlNz9HByNGgRCxP6XOFTNWduQRp769tpCuOYNTNx2CxkJMaNGMi7pqoRm0WYH4ClOJOzkkK6iDqS0cPJMCFcUlKXFWfEXB3FPpebtq4+Ts1NJjHOhgAHjDJug2ns6KVyfyMzcpNp6+qjeoiEiP5SUpBmynliES1iGgCm5SQjQswJGHhy4x9q6eJQy/F0OPMmpg07lN56sBWbBRYWZ7B2f+OYC/vOi8E01mahRSxMCEY/zGm3MCUriXiHFUFAPOs1a5s6dd3EUdDnhtV7GyjMSMBqEfaMYQZX+8NGjxaxMCGQjv0Up43puSl8fKCZzSbWXYxm/EkTvq+hA5sFyooyKK8aXU82N1Vnqxgt2rEfJgTCJ5Yab6esOIM+l5vyvQ206UpFPtPj50RLnxvKqxqYk59Kqp9BsplJcYzXKXdGjRaxMEApZaqIpcbbWVicQU+fi/K9DV7DBjTD0zzKmdkNNZ48+guLM8j2sWzZp+fkYomxdalmooeTYYCZAlZWlMGW2mZWx6CD3kzGEh/X1NF77PMvzIgnK9mJCLR0etI9tw7KjnvZ3Dxvp9H4iBaxMMDfoYs34mwWpo9PHrVPRnMi3X1uclPjONg8tiSQ+xo62TdoYX9agp3MJAeJDhv56Qmclpc6pmvEOlrEwoDuMQ73Eh1WCjLi2eBDDUSN72QmjV3EvNHU0XsskPimM4t15ooxokUsDBjLzGRqvOdbfduh2FjfGEzi7YH998hIdPCp2bkBvUYsMKJjX0ScIlIuIhtEZIuI/NjYvkRE1orIZhF5QkRO+ouLSImIfGS02ygiVw3Y956IrDdetSLykrH9XBFpHrDvhybeb1gy2vV4mUkOUpw2dtfHRoaJYBPoDtK8ienYwrzieyTgy39PN7BEKdUmInbgfRFZDjwBnK+U2iEi9+ApdPvooLYdwPVKqZ0iMgGoFJHlSqkmpdTi/oNE5G+cWCT3PaXUp8ZyY5FEn1vhsFno6fN9WJmR6MBuFdOWvWiCz7zCtFCbEBWM+DWgPPSPVezGywX0KKV2GNtXAJd7abtDKbXTeF8L1AFZA48RkRRgCfDSKO8h4ln64Lt+CRh4giMD4a/RBAeH1cLFs/RQ0gx86suKiFVE1uMRoRVAOWAzqn0DLAMKRjhHGeAAdg/a9VngTaXUwFDyM4zh6xsiMnOI890qIhUiUlFfX+/LbYQldS1d1PjZm5qak8QWHXkfcLp6AxccfO+y0yjOTBz5QM2I+CRiSimXUqoEyAfKgJnA1cADIlIOtOLpnXlFRHKBPwM3KaUGdzmuAZ4e8PtaoFApNQf4NUP00JRSDyulSpVSpVlZWd4OiQhGU4w2PSE4NRBjnX0NHQE57z2XzuSyufkBOXcs4pdXUSnVBKwEliqlPlJKLVZKlQHvAju8tTGGi68BdyulVg3al4lHFF8bcI2W/uGrUup1wG4cF5V8fND/HpVbhUfanmimcFxCQPKpXVNWwPVnFJl+3ljGl9nJLBFJM97HAxcC20Qk29gWB9wBPOSlrQN4EXhSKfWCl9MvA15VSnUNaDNejMAZYwhqAY76eV8RQ0q8HaufS04sOq4o4OQkB2Yt44Wn5gTkvLGMLz2xXGCliGwE1gArlFKvAreLyFZgI/CKUuotABEpFZFHjLZXAmcDNw4ImSgZcO6rOXEoCR5h2ywiG4BfAVcrFb1dj/OmZbP8G2fj8GOqvbWrb+SDNGPCjFUU3tB/O/ORaNCH0tJSVVFREWozxsSsHy2nrdu3BzzBYaVDZ6QIGBbxrIJo7Tb/Mz59UgbP3HqG6eeNdkSkUilV6m2fjrQLE/wZIXb0uPTMVgCZkp0UEAEDWLWngR06AaWpaBELE+Js/v0pMpP0DGWgCPTs79Pl+wN6/lhDi1iYMCEt3q/jw6WwSDTSGOBCxs+tqR51vjLNyWgRCxMKMhL8On5/gGKYYp14h5VddYFdTN/e4+LpNbo3ZhZaxMKEQj9F7EhbDzk+Zg7V+M6UrCSC0cl98sMq3Zs2CS1iYcK08f5Xuxk8BHX66VfTnEy8IzifYW1zF3vHUB1JcxydTyxMODU35YTfs5PjmJiRgIhnaVLV0Y5ji8QzkxxMSIsnxWlnQVE67d0u9jd00Nbdx/gUJxPHxbP1YKuOSRoFR1oD6w8biL9BzhrvaBELEyZlJTEnPxWHzUJtUycHmrqoaz2epcJuFfLT4mnu6uVIWw9H2rz/s/UXgY2zWZhfmE5De4/+xveR1Hj7mGpH+sPUnCSKxvnnQtB4R4tYiDna1s0LlTX8c8uhYdNL97oUNX4Ur+juc1O5rxGAsuKMmKzs7S+TMhNZV90UlGtdtWCiTkttElrEQoBSivK9Dfxl9X7+uflQwJa49FO+t4GFxRm6AtII2KzBERW7VfhsyYSgXCsW0CIWRBrbe1i+5RCPvL834NP4g1m9t4H5E9Oo3N8U1OtGEkMN0c3m3GnZjEvSM8tmoUUswFTua+DxD/exbn+j38kPzWZDTTOz8lLYfEAnVPRGU4CDXPvRxUHMRYtYAKlt6uSWJypoDJPo7D63YnddO1OyEtmli4ucRDD+Tk67hQtm6HQ8ZqIDiwJER08fn390ddgIWD+dvS7qWruZluN/XFo0k5ZgD8p1LpiRQ2Kc7juYif40A8RvV+5iT5j2dlq6+mjtbmXmhBQSHTYa2rvZ39BBj+vkCHKnzULXoCImCXYLNpuFvj43HWMs/BsuZCQ4ApLJdTCfmaMd+majRcxkXG7FAyt28NuVg+uhhBdKcUKxEYt4lj6NS3Jgs1jo6nWx90g7rd19xNksJMbZ6O510d7j8giXIV5F4xLoc6uQ+/vGSjB6RylOG+dMi9x6EOGKFjGTqG3q5M1tdfx19X62jiJvfqhxK09hDG/FMbr73HT3eXd6Vx3tIMFhZU5+6rBxbuGOv6mQRsMnZ+cSZ7MG/DqxhhYxE/jzqn388B+biYIkuaOio8fFhprmiA6qtQRhCdClJXkBv0Ysoh37Y+TBf+/gBy/FroANpHxvA2XFGdgjcU1ggP9+BRnxlBVlBPYiMYoWsTFQua+BB/+9M9RmhBXlexvITnEyIzeyZj/73IGdoDh/ek5QenuxiC8l25wiUm5U5N4iIj82ti8RkbUisllEnhCRk4amIlIiIh8Z7TaKyFUD9j0uInsHV0ESD78SkV1Gm3km3q+pvL7pUKhNCEsONHWy9WAr8wvTyYiQQr/dfYEtvDI7PzWg549lfOmJdQNLjIrcJcBSEVkEPIGnnNosYB9wg5e2HcD1SqmZwFLgwf4alga3K6VKjNd6Y9vFwCnG61bg937fVRBQSvHm1sOhNiOsqdzXSHefiwVF6UwfnxRqc4Yl3m5jQVE6MycEpgeZn64zVgSKER37Rs3H/oV+duPlAnqUUv1Vv1cAdwGPDmq7Y8D7WhGpA7KApmEueSmeYrsKWCUiaSKSq5Q66NstBYfd9e1UHdUpokeivcfFmipPNo30BDuTs5Lo6nXx8cGWoGRQ9ZUKI+NHstNGbqqTg81dI7TwD4dOWBkwfPpkRcQqIuuBOjyCVQ7YRKS/DtwyoGCEc5QBDmBgANVPjSHjA0YlcYA8oHrAMTXGtsHnu1VEKkSkor6+3pfbMJV/fayHkv7S2NFLxb5GNte2kGwkdAy3HlprV5/f9Q58wab9YQHDJxFTSrmUUiVAPlAGzMRTvfsBESkHWvH0zrwiIrnAn4GblFL9HtS7gOnAAiADuMMfw5VSDyulSpVSpVlZwQ0gVErx6oaw6hhGHM2dvaypamTboTYykxyUFWVwSnZ4CFog5Maic4cFDL/ixJRSTSKyEliqlLofWAwgIhcBU721EZEU4DXgbqXUqgHn6leBbhH5E/Ad4/cDnNiryze2hQ3Ltxzm4wgMaA1XPJlqPfFlE1Kd5GckcLC5k+qG0KwC6AvAOFcFOoYjhvFldjKr3xkvIvHAhcA2Eck2tsXh6UU95KWtA3gRj4/rhUH7co2fAnwW2Gzsehm43pilPB1oDid/2Me1LXz7ufWhNiNqqW3uonxvA9UNnWQkOigpSGP+xHSCORrr6TM/3EJXNgocvvTEcoEnRMSKR/SeU0q9KiL3icinjG2/V0q9BWD4yW5TSt0CXAmcDYwTkRuN891ozET+RUSy8PTe1wO3GftfBy4BduGZ3bxpzHdpEgebO/nSkxW09wR2Ol7joaG9h4Z2z3KnjEQHBRnxxNmsKKXYfriVls7AFELp6jX/79vrZXG9xhxERUGoeWlpqaqoqAjoNT7cfYRvPLP+hOIdmtCR6LAyMy+VbYdaTBezQMxOPvflMygr1hH7o0VEKpVSpd726bWTPrD1YAtffHwNXVGSdiYaaO9xUb63AYvA9PHJpDhtbD/cSrMJghaIUnd6OBk4dPCKD9z7z21awMIUt4Jth1opr2rE7Yb5E9PHfM627j5S4s39fg/0sqZYRovYCLR19/Hh7qOhNkPjA63dfVTubzQl6r44M9EEi44TBV6bsEWL2Ag89PbugMxWaQJHS1cfY62+5rCa969htwqn5em1k4FCi9gwVFQ18Lu3d4XaDI2fVDd0Mr9wbE50MydwPjc3n/TEyFgIH4loERuCXXWtfOUva8NqfZ/Gd2qaOsYUW7bvaAfpJhUPWTprvCnn0XhHi9ggWrp6+e+Xt7D0wffCNpwiO1kXXh2J2qYuZuenjSlBY9E4c/xiZk8SaE5Ei5hBa1cvj7y3hyX3v83jH1YFZOmJGcydmMY/v3E2iyaPC7UpYc/66iYmZyeROkoRsY3VsWbQ2aN9qoEkpr8i3G7F79/ZzfZDrazcVkdrd2AiwM1i5oQU/nrL6cQ7rNxz6SyueOjDsKtrGW5sO9RKZpKDBUXpbKhu8lqWbigOt5jTEw90wsVYJ6Z7Yv/7xlbuW76dlzfUhr2AAVw2N494h6dazpTsJP72H4uYGIC0MdHGkbYe1lQ1kpPiZJwfDvb9DR1kJY196K4TWASWmBWxP767hz++tzfUZvhMbqqTz83LP2HbpKwk/v6VRWGTwibcqW7s9LvSd1Gmb18SDquQnmAnL83J5KxEZuQmc2puCrmpcbjD1DURLcTkcPLFdTX89PWtoTbDZwrHJfDUzQvJ8NKLyEyK4/EvlnH57z7kUIu56/2ikd317UzJTmJXXduIxyY4rCQ4rJQVp+NyQ3t3H70uN70uN129bqMep4uuXjc9LkVPR6/X4X13nxaxQBJzIrZ6z1Fuf35jqM3wmZyUOJ7/8hlkpziHPCYvLZ4nby7jyj98RJP2kY1IWvyJvTGLQFZyHFnJcSQ6bPS43Bxu6aK2qYt3dhwZ8/Xau/vo6OnDabPqikcBIOaGk9NzU8gZRhDCjZvPKh5WwPqZmpPMEzeVkeDQFaaHwm4VJmclkhRnpawog9l5qeSleT7bwy3dbD7Qwuq9DbR09lLbZF6v9u6XNnHqD5dzzv0r2VM/cg9Q4x8xJ2Kp8XZ+ceWciHC2WgQ+60fV6DkFafz1S6czOcvcdX+RRpzNQnFmInMnplFWnMHciWkUZybidit217fz9o4jlFc1sPFAMweauk4KaPbH+e8L/bnEqhs6+fErH5t6bk0MihjAwknj+Mq5k0NtxoicdUqWT72wgZQUpPHG18/ma0umBMiq8CQ7OY6yogxykuPo7nOz90g76/Y3Ub63gXX7m9h7pB1foysCGSP4zo561lQ1BOz8sUjM+cT6+faF0+hzK/7wzp5QmzIkVy8YtoDUkDhsFr590TS2Hmzh31vrTLYqPEhwWJmUmYjTbsUiwvrqRspNWmFR3xa4lRplxRkU6rAYU4lZEbNYhLsunkFuipMfv/px2KVKGZ/i5IIZOWM6x3eXTufUCal8XNvCv6Oo0O/UnCQOtXSxuTYwxVpqGjuJt1voNDmH3OJTMnnkhlLibNpvaSYxOZwcyI1nFrNkWnaozTiJWxYXj7ng6tScZL514VT+8IX5JMdFx/dVosPK7Py0gOXXB0/ur4kZ5vsVp49P1gIWAGJexACWzAgvEctMcnDdwkLTzme1CKVFY894Gg7cefF0vnB6IZkmRNIPR7LTfNHXBWYCgy8l25wiUi4iG0Rki4j82Ni+RETWishmEXlCRE76q4tIiYh8ZLTbKCJXDdj3FxHZbrR/TETsxvZzRaRZRNYbrx+aecPeOH/62IZtZmK1CD+5dNax5UVmcc7U4BYYDgSnT8rguoWFzClI4/GbFgS0d2l2sdv/OHcyV5WOzsepGR5femLdwBKl1BygBFgqIouAJ4CrlVKzgH3ADV7adgDXK6VmAkuBB/trWAJ/wVMB/DQgHrhlQLv3lFIlxuse/2/LP8anOpk5ISXQlxmR7OQ4nrn1dC4+Ldf0c19yWm5QazeazdScJH559dxjwaKz8lL50WdmBuRak7ISqTra7lcbm0W46cwivnPR1JNmvj83N4/vXDSNOQVpJlqp6WfErzLlqenWH6FnN14uoEcptcPYvgK4C3h0UNsdA97XikgdkAU0KaVe798nIuV4Kn2HjDsvns6tT1bSGYCag76wsDiD31w7j6wA5QrLTnFy9tQs3t5eH5DzB5IvnF7I3Z+cgdN+Yu902fx8Zk5I4eJfvjfmaywszkApaO/pY4ufEwan5aXy6A2lJ4TDXFFawPMV1cybmM4Fp4ZPTz8a8cknJiJWEVkP1OERrHLAZhTKBVgGDNtXFpEywAHsHrTdDnwB+OeAzWcYw9c3RCQwX7eDWHxKFk/dspDUeHOyefqKRTxDjaduWRgwAesn0oYz2clxPHZjKT/57KyTBKyfqTnJxA+xz1/Kqxr8FrB4u5XfXjvvpHi+4sxEvrt0uhawIOCTiCmlXEqpEjy9pTJgJnA18IDRi2rF0zvziojkAn8GblJKDZ63/h3wrlKq/+t0LVBoDF9/Dbw0xDlvFZEKEamorzendzG/MJ1vXTjVlHP5wmfmTODt75zHHUunYzexMMVQXHhqDvnp8QG/jhlcNjeP5d84myUj+CutFuFiE9I/j7bW5OXz85g4Tsd9hRK//nOUUk3ASmCpUuojpdRipVQZ8C6ww1sbEUkBXgPuVkqtGrTvR3iGl98acI0WpVSb8f51wC4imV5seVgpVaqUKs3KMs9pHazKRvMmpvHAVSVB/QewWS3c/olpQbveaLlv2WweuKrE5+IaM3LH7s/cXd/md4WkqTlJ/PBTQRkoaIbBl9nJrH5nvIjEAxcC20Qk29gWB9wBPOSlrQN4EXhSKfXCoH23AJ8ArhnYOxOR8SKeqSFjCGoBglb4sb0n8MkRExxWHrxqLtYQeNo/M2cCi0856TshbPjimcVc4eewd74J4SPdfW5mTvCvrFp2snPMsXyasePLXyAXWCkiG4E1wAql1KvA7SKyFdgIvKKUegtAREpF5BGj7ZXA2cCNA0ImSox9DwE5wEeDQimWAZtFZAPwKzwzoEGLp+8IQizPxbNyQzYEERF+cWUJeWnhN6wsLUznzoun+92ubZRDwcHsqGv1LBovymBhcQYZIyRQXFg8trJwGnOQIOpDwCgtLVUVFRWmnOvuFzfxl9X7TTnXUPzuunlcEoAwCn/YebiVa/64iiNtPSG1o5+8tHhe/Moivxe8A/S63Fzz8Coq9jWaatPMCclsqW09abvTbuH7nzyVz59uXkCyZnhEpFIpVeptn+4LD+KmM4uZZHIJ+4HMnJDCRWEwY3VKTjLPffkMJoVB2h6n3cLD188flYCBZ5lQIMrrDbVE6O5LZnBt2UTTr6cZHVrEBjElO4kX//PMgEW4f/70QmxBmIn0hUlZSbz81bNCHnrxf8vm+O2PGojDZuGr500x3cc41N/pB//Yws/+uc3Ua2lGT3j8N4UZqfF2HrtxAV8+e5Kp542zWbhsru9JDoNBUpyNe5fN5tlbT2dKCAqO3LioiM/MmTDm81y5oID//dxp2E2qFQkwnKtl+ZZDpl1HMza0iA2B1SLcdckMHryqhDiTZqCSnbYhgzZDzcJJ43j9vxZz+yem4bQH57GYk5/K9y6ZYdr5riwt4JdXz6XIpEmT7mHCbRIc0ZEVJBrQIjYCn52bx/O3ncF4E/LyBzrzwlhx2Cz853lTWPHNczh3WmAXjCfF2fjVNXNND1G45LRcbv/EdFO+eI4OmPRIdFgpzkykrDiDxadkcsYkXYE9XNBfJz4wOz+Nl792Jrf9uZK1+5tGfZ4zp4RvfNZACjIS+NONC3hj8yHueeXjgJSC+/mVcygcF5hJhU/OzuVwSxf3vDq2fPaHWrqwW4SLZo7nfy8/jRRncJekaXxD98R8JDvZydO3ns6VpaNfpx5u/rDhEBEuOS2Xf3/7HG45q9hUp/n3PzmDT8wc+1Kh4bhxURE/vWzWmHpkl83N41/fOpvfXjdPC1gYo0XMD+JsVu69fDb/d/lsv4NFZ+SmhEW6H39JirPx/U+dyitfPYt5E9PGfL4r5udz81nFYzdsBCwW4bqFhZSNIiA13m7l0RtKuf+KORRn6urq4Y4WMT8REa5cUMA7t5/LL68uISfFNz/XFfPzkUioEzcEp05I4YXbFvG/nztt1Jk+5hSk8ZPPzgra53CgqZP3dh7BIvDEF8t8is9LS7Dzly8t5Pwx1jfQBA/tExslNquFS0vyaGzv4b9HqCWYGm9n2RiGoeGCxSJcUzaRi07N4WdvbOP5yhqf22YmxfGHz88P2uxsY3sPn/n1+4Cnuvc5U7M4Y9I4Wrp6cdgsbDvYyrZDLWw/1MqW2hY21DRRkJ7A4zctYFKW7n1FElrExsjl8/O5b/n2YfOnf/mcSVHlUxmXFMd9V8zhygUF3P3iJnYcHr6qtc0i/PbauYxPDV7l9Q01TRxt98wupsbbcbsVDpvl2AxxWXHGCUPNyn2NFI5LCPsZZM3J6OHkGEl22vncvKF7WZlJDm5cVBQ8g4LIgqIMXvuvxdx18fRhExPec+ksFgY5JGFgcsMdh9v4pNErG4r5helawCIULWImcOvZk1g02fs/6Q1nFEV1YKTdauHL50zm398+x2tywhsXFXHtwuCvM7y0ZMIJ/sqtB1vYVNMcdDs0gUeLmAkUZCTw1y+dzj/+80wunjWefr91nM3CdTGS6SAvLZ7ff34+T36x7NgC+nOnZfH9T5oXke8P+ekJJ61/feyDvSGxRRNYoreLEALmFKTx+8/PZ099Gw+/uwen3UqGj9lJo4Wzp2bxxjcW8/Tq/SwrLQjpYvejg9IMvbqxljsvnk6OCasvNOGDzicWQJRSER1WEal09rj45rPr+aeXRdpXlRZw77LZIbBKMxaGyyeme2IBRAtYaFi+5ZBXAQN4tqKaeIeVqxYU0NnrwuVWLCjSGVojGS1imqjj7+sODLv/8Q+rePzDKgAunjVei1iEox37mqjDabP4vNYzHGsNaPxDi5gm6nj4+lLe/e55zPVhrad28kc+WsQ0UUleWjxP3byQtBEqFumSa5GPL3UnnSJSLiIbRGSLiPzY2L5ERNaKyGYReUJETvKviUiJiHxktNsoIlcN2FcsIqtFZJeIPGvUqERE4ozfdxn7i0y8X00MkRhnGzIIGTyZdr8QI3F80YwvX0PdwBKl1BygBFgqIouAJ/DUhJwF7ANu8NK2A7heKTUTWAo82F+IF7gXeEApNQVoBG42tt8MNBrbHzCO02hGxe+umz9kIZSkOBstXb1BtkhjNiOKmPLQv8LXbrxcQI9SaoexfQVwuZe2O5RSO433tUAdkGVU+F4C9FcFfwL4rPH+UuN3jP3n91cE12hGw3eXTiPFefJE/MHmLlbtaQiBRRoz8ckhICJWEVmPR4RWAOWATUT6g8+WAcPW/RKRMsAB7AbGAU1Kqf7SzTVAf9rTPKAawNjfbBw/+Hy3ikiFiFTU19f7chuaGGVcUhw//PRMr/VE5xWmBd8gjan4JGJKKZdSqgTIB8qAmcDVwAMiUg604umdeUVEcoE/AzcppYYuIeMHSqmHlVKlSqnSrKzAFrXQRD7L5uez4lvncNagOgcd3UOnUNJEBn5NzSilmoCVwFKl1EdKqcVKqTLgXWCHtzYikgK8BtytlFplbD4KpA2YDMgH+iMUD2D06oz9qcbxGs2Y6Op1kRRnY6BzYsXHh0NnkMYUfJmdzOp3xotIPHAhsE1Eso1tccAdwENe2jqAF4EnlVL9/i+UZ8HmSjzDUPBMCvzDeP8yxycJlgFvqWhY4KkJOYlxNh76wny+d7Ens0ay0xbwgiWawONLTywXWCkiG4E1wAql1KvA7SKyFdgIvKKUegtAREpF5BGj7ZXA2cCNIrLeeJUY++4AviUiu/D4vB41tj8KjDO2fwu4c8x3qdEM4AtnFHL21Cy+tmQKE00qtKsJHTqLhUajCXuGy2Khw5U1Gk1Eo0VMo9FENFrENBpNRKNFTKPRRDRaxDQaTUSjRUyj0UQ0WsQ0Gk1Eo0VMo9FENFrENBpNRBMVEfsiUo8nMSNAJnAkhOaMlki0OxJthsi0OxJtBvPsLlRKeU1XExUiNhARqRhqeUI4E4l2R6LNEJl2R6LNEBy79XBSo9FENFrENBpNRBONIvZwqA0YJZFodyTaDJFpdyTaDEGwO+p8YhqNJraIxp6YRqOJIbSIaTSaiCZiRMyoCt6f4rrKKCGHiFw3YPt6EXEPSIE9sH2GiKwQkZ3Gz3Rj+7ki0jyg/Q8jwGYRkV8ZVdI3isg8s2wezm5j3+wBVd03iYjTS/s5xjGbROQVo1gMIlIkIp0Dzn1SXYZws9nYd5fxWW8XkU+YZbNJdpeIyCqjfYV4SiOG5Lk2webRPddKqYh7AT8Hfuhl+2nA7iHa/B9wp/H+TuBe4/25wKsRZvMlwBuAAKcDq4NhN2DDU1NhjvH7OMDqpc0a4Bzj/ReBnxjvi4DNwfysTbD5VGADEAcU46mbelL7ENr9L+DiAc/F2ypEz7UJNo/quY6Ynlg/IiJ4CpA87WX3NcAzQzQdWFl8YMXxgBMAmy/FU0FKKU8ZvDTx1PY0FS92XwRsVEptAFBKHVVKeSvcOBVPGT8Yojp8oAiAzZcCzyilupVSe4FdeGqvhovdCujvNaYCtWbbNhQBsHlUz3XEiRiwGDislNrpZd9VeBcKgByl1EHj/SEgZ8C+M0Rkg4i8ISIzTbS1H7NtPlYl3WBgBXUzGWz3VECJyHIRWSsi3x2i3RY8DyTAFZxYHb5YRNaJyDsisjgCbA73z/obwH0iUg3cD9w1YF+wn+ux2jyqz9o20gHBRET+DXgrBHi3Uqq/LuU1ePmnF5GFQIdSavNI11FKKRHpjy1Zi2ddVpuIXAK8BJwS5jaPmVHabQPOAhYAHcCb4qlC8+agc3wR+JWI/ABPHdEeY/tBYKJS6qiIzAdeEpGZSqmWMLZ5zATY7v8AvqmU+puIXImn5OEFhOa5HqvNoyPQY2aTx9824DCQ72XfA8D3hmm7Hcg13ucC24c4rgrIDGebgT8A13g7LpB2A1cDTwz4/QfA7SOcZypQPsS+t4HScLYZTy/hrgH7lgNnhMtnDTRzPN5TgJYhrhHw53qsNo/2uY604eQFwDalVM3AjSJiwTM2H8q3BCdWFj9WcVxExhtje4xZEgtwNJxtNrZfb8zmnA40q+PDTrPwZvdy4DQRSRARG3AO8PHghnK8OrwF+D5GdXjxVJO3Gu8n4ekZ7Alnm/F81leLSJyIFBs2l5to85jsxuNPOsd4vwTYadxHKJ7rMdnMaJ9rM79RAv0CHgdu87L9XGCVl+2PYHzT45kpedP4wP4NZBjbv4rHH7IBWAUsigCbBfgtnpmyTZjYm/HB7s8bn9dm4P+GsPvrwA7j9TOOf+tebrRdj2e48+lwt9nYd7fxWW/HmFULI7vPAiqN53c1MD/Ez/VYbB7Vc62XHWk0mogm0oaTGo1GcwJaxDQaTUSjRUyj0UQ0WsQ0Gk1Eo0VMo9FENFrENBpNRKNFTKPRRDT/HyCyc5M7Ot+SAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "df_subset.plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "44c0c3d9-fa1e-405c-9887-29a0a69801ba", + "metadata": {}, + "outputs": [], + "source": [ + "tract_subset = df_subset.copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "1d7645f9-22b2-4fec-9514-d777dae32b29", + "metadata": {}, + "outputs": [], + "source": [ + "df_subset = df_subset[[\"GEOID10_TRACT\", \"geometry\"]].copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "cfff1e45-3b3f-453b-a33b-8cf20f0152b9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([False, False, True, True, False, False, False, True, True])" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.random.choice([True, False], len(df_subset))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "4f01f4fa-69cf-4c9a-8acc-fddf3d8ab39d", + "metadata": {}, + "outputs": [], + "source": [ + "df_subset_scores = df_subset.copy()\n", + "# df_subset_scores[\"included\"] = np.random.choice([True, False], len(df_subset))\n", + "df_subset_scores[\"included\"] = True\n", + "df_subset_scores.loc[df.GEOID10_TRACT == \"24027603004\", \"included\"] = False" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "8cdda9e3-9c73-405e-8c35-e40e8ff2d29b", + "metadata": {}, + "outputs": [], + "source": [ + "tract_data = df_subset.rename(columns={\"GEOID10_TRACT\": \"ORIGINAL_TRACT\"})" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "f43ffa4a-3503-4497-a247-8cc02b264f7d", + "metadata": {}, + "outputs": [], + "source": [ + "df = df_subset_scores" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "8e1797ed-4838-4139-943c-809e4df0ab70", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
GEOID10_TRACTgeometryincluded
5341524027602100POLYGON ((-76.86305 39.31484, -76.86308 39.315...True
5341624027602303POLYGON ((-76.86750 39.25170, -76.86754 39.251...True
5342424027605503POLYGON ((-76.88405 39.23543, -76.88398 39.235...True
5342924027605502POLYGON ((-76.90881 39.21739, -76.90882 39.217...True
5345224027603004POLYGON ((-76.98539 39.26610, -76.98557 39.266...False
5345324027605104POLYGON ((-76.97979 39.23322, -76.98018 39.233...True
5345424027603003POLYGON ((-76.93350 39.35760, -76.93341 39.357...True
5345524027603001POLYGON ((-76.86308 39.31501, -76.86305 39.314...True
5346424027602201POLYGON ((-76.87750 39.30290, -76.87747 39.302...True
\n", + "
" + ], + "text/plain": [ + " GEOID10_TRACT geometry \\\n", + "53415 24027602100 POLYGON ((-76.86305 39.31484, -76.86308 39.315... \n", + "53416 24027602303 POLYGON ((-76.86750 39.25170, -76.86754 39.251... \n", + "53424 24027605503 POLYGON ((-76.88405 39.23543, -76.88398 39.235... \n", + "53429 24027605502 POLYGON ((-76.90881 39.21739, -76.90882 39.217... \n", + "53452 24027603004 POLYGON ((-76.98539 39.26610, -76.98557 39.266... \n", + "53453 24027605104 POLYGON ((-76.97979 39.23322, -76.98018 39.233... \n", + "53454 24027603003 POLYGON ((-76.93350 39.35760, -76.93341 39.357... \n", + "53455 24027603001 POLYGON ((-76.86308 39.31501, -76.86305 39.314... \n", + "53464 24027602201 POLYGON ((-76.87750 39.30290, -76.87747 39.302... \n", + "\n", + " included \n", + "53415 True \n", + "53416 True \n", + "53424 True \n", + "53429 True \n", + "53452 False \n", + "53453 True \n", + "53454 True \n", + "53455 True \n", + "53464 True " + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "799b883e-1f45-4f79-9b3f-65361aec881c", + "metadata": {}, + "outputs": [], + "source": [ + "adjacent_tracts: gpd.GeoDataFrame = df.sjoin(\n", + " tract_data, how=\"left\", predicate=\"touches\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "21672763-02e0-4608-82b2-3e256591c567", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
GEOID10_TRACTincluded
0240276021000.666667
1240276022010.666667
2240276023030.666667
3240276030010.666667
4240276030030.666667
5240276030041.000000
6240276051040.666667
7240276055020.666667
8240276055030.666667
\n", + "
" + ], + "text/plain": [ + " GEOID10_TRACT included\n", + "0 24027602100 0.666667\n", + "1 24027602201 0.666667\n", + "2 24027602303 0.666667\n", + "3 24027603001 0.666667\n", + "4 24027603003 0.666667\n", + "5 24027603004 1.000000\n", + "6 24027605104 0.666667\n", + "7 24027605502 0.666667\n", + "8 24027605503 0.666667" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "adjacent_tracts.groupby(\"ORIGINAL_TRACT\")[\n", + " [\"included\"]\n", + "].mean().reset_index().rename(columns={\"ORIGINAL_TRACT\": \"GEOID10_TRACT\"})" + ] + }, + { + "cell_type": "markdown", + "id": "e6f4289b-944c-489e-955a-a7a177ec6dd5", + "metadata": {}, + "source": [ + "# Make test data" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "78772a00-3185-4d28-9755-7ba72c170282", + "metadata": {}, + "outputs": [], + "source": [ + "tract_subset.to_file(\"../tests/score/test_utils/data/us.geojson\", index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "425a5cd3-5929-4560-89e7-2dd9233bf303", + "metadata": {}, + "outputs": [], + "source": [ + "df[[\"GEOID10_TRACT\", \"included\"]].to_csv(\n", + " \"../tests/score/test_utils/data/scores.csv\", index=False\n", + ")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/data/data-pipeline/data_pipeline/ipython/explore_eamlis.ipynb b/data/data-pipeline/data_pipeline/ipython/explore_eamlis.ipynb new file mode 100644 index 000000000..71612a7d5 --- /dev/null +++ b/data/data-pipeline/data_pipeline/ipython/explore_eamlis.ipynb @@ -0,0 +1,2444 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "24085186-3472-43d3-8b87-b5191c4f6ca6", + "metadata": {}, + "outputs": [], + "source": [ + "import geopandas as gpd\n", + "import pandas as pd\n", + "import numpy as np\n", + "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)\n", + "\n", + "from data_pipeline.config import settings\n", + "from data_pipeline.etl.base import ExtractTransformLoad\n", + "from data_pipeline.etl.sources.census.etl import CensusETL\n", + "from data_pipeline.etl.sources.geo_utils import add_tracts_for_geometries\n", + "from data_pipeline.utils import unzip_file_from_url" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "f36fe7ef-2717-48be-ae94-a3f0aa33acc1", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "%load_ext lab_black" + ] + }, + { + "cell_type": "markdown", + "id": "dbecd665-1c8a-40fe-a7fc-684ecf73f991", + "metadata": {}, + "source": [ + "# Grab the data" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "f451ea70-917c-45f9-adf9-9306436b955d", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-08-16 11:50:57,573 [data_pipeline.utils] INFO Downloading https://justice40-data.s3.amazonaws.com/data-sources/eAMLIS export of all data.tsv.zip\n", + "2022-08-16 11:50:57,857 [data_pipeline.utils] INFO Extracting /home/matt/active/justice40-tool/data/data-pipeline/data_pipeline/data/tmp/abandoned_mine_lands/downloaded-af59fffe-aec2-48b4-a57f-716b8dc7e0a3.zip\n" + ] + } + ], + "source": [ + "tmp_path = ExtractTransformLoad.DATA_PATH / \"tmp\" / \"abandoned_mine_lands\"\n", + "# Create directory if it doesn't exist\n", + "tmp_path.mkdir(parents=True, exist_ok=True)\n", + "\n", + "eamlis_path_in_s3 = (\n", + " settings.AWS_JUSTICE40_DATASOURCES_URL\n", + " + \"/eAMLIS export of all data.tsv.zip\"\n", + ")\n", + "\n", + "unzip_file_from_url(\n", + " file_url=eamlis_path_in_s3,\n", + " download_path=tmp_path,\n", + " unzipped_file_path=tmp_path,\n", + ")\n", + "\n", + "eamlis_path = tmp_path / \"eAMLIS export of all data.tsv\"" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "5cee0a59-4f69-4678-a7ab-877e57d06f1b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'/home/matt/active/justice40-tool/data/data-pipeline/data_pipeline/data/tmp/abandoned_mine_lands/eAMLIS export of all data.tsv'" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "str(eamlis_path)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "5b8119d8-315b-4e87-b286-3767158d63ab", + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv(eamlis_path, sep=\"\\t\", low_memory=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "4fbac263-5868-4fbc-bcb7-168ef479af53", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(57149, 42)" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gdf = gpd.GeoDataFrame(\n", + " df,\n", + " geometry=gpd.points_from_xy(\n", + " x=df[\"Longitude\"],\n", + " y=df[\"Latitude\"],\n", + " ),\n", + " crs=\"epsg:4326\",\n", + ")\n", + "gdf.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "3b176f62-2d13-4bd2-9211-0ac7c2807146", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(3977, 42)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gdf.drop_duplicates(subset=[\"geometry\"], inplace=True, keep=\"last\")\n", + "gdf.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "a0116c52-58f5-48a6-aa9e-c49873ebafa7", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-08-16 11:51:28,795 [data_pipeline.etl.sources.geo_utils] DEBUG Appending tract data to dataframe\n", + "2022-08-16 11:51:28,796 [data_pipeline.etl.sources.geo_utils] INFO Loading tract geometry data from census ETL\n", + "2022-08-16 11:51:28,796 [data_pipeline.etl.sources.geo_utils] DEBUG Loading existing tract geojson\n", + "/home/matt/.cache/pypoetry/virtualenvs/justice40-data-pipeline-IwBjhw-4-py3.10/lib/python3.10/site-packages/IPython/core/interactiveshell.py:3553: FutureWarning: The `op` parameter is deprecated and will be removed in a future release. Please use the `predicate` parameter instead.\n", + " exec(code_obj, self.user_global_ns, self.user_ns)\n" + ] + } + ], + "source": [ + "gdf_tracts = add_tracts_for_geometries(gdf)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "2a18ba4d-274b-4640-a83c-02ae1d02837c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AMLIS KeyState/TribeCountyCongressional DistrictQuadrangle NameWatershedHUC CodeFIPS CodeLatitudeLongitude...Funded GPRA AcresFunded Metric UnitsCompleted Standard UnitsCompleted CostsCompleted GPRA AcresCompleted Metric UnitsUnnamed: 40geometryindex_rightGEOID10_TRACT
\n", + "

0 rows × 44 columns

\n", + "
" + ], + "text/plain": [ + "Empty GeoDataFrame\n", + "Columns: [AMLIS Key, State/Tribe, County, Congressional District, Quadrangle Name, Watershed, HUC Code, FIPS Code, Latitude, Longitude, Funding Source / Program, Problem Area Name, Problem Area Number, Planning Unit Name, Planning Unit Number, Problem Priority, Problem Type, Mining Type, Ore Types, Date Prepared, Date Revised, Private Owner %, State Owner %, Other Federal Owner %, Park Service Owner %, Forest Service Owner %, Indian Owner %, BLM Owner %, Unfunded Standard Units, Unfunded Costs, Unfunded GPRA Acres, Unfunded Metric Units, Funded Standard Units, Funded Costs, Funded GPRA Acres, Funded Metric Units, Completed Standard Units, Completed Costs, Completed GPRA Acres, Completed Metric Units, Unnamed: 40, geometry, index_right, GEOID10_TRACT]\n", + "Index: []\n", + "\n", + "[0 rows x 44 columns]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gdf_tracts[gdf_tracts.GEOID10_TRACT.isna()]" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "e9aaa563-4c11-46b0-a64d-6ce053412e9c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AMLIS KeyState/TribeCountyCongressional DistrictQuadrangle NameWatershedHUC CodeFIPS CodeLatitudeLongitude...Funded GPRA AcresFunded Metric UnitsCompleted Standard UnitsCompleted CostsCompleted GPRA AcresCompleted Metric UnitsUnnamed: 40geometryindex_rightGEOID10_TRACT
2AK000001AKMATANUSKA-SUSITNA1.0ANCHORAGE C-8NaNNaN0217061.6-149.8...0.00.0900.0033200.012.86274.30NaNPOINT (-149.80000 61.60000)990002170000401
6AK000003AKVALDEZ-CORDOVA1.0Valdez C-119050003NaN02-2661.6-144.0...0.00.00.349200.00.030.34NaNPOINT (-144.00000 61.60000)991802261000100
100AK000080AKVALDEZ-CORDOVA CENSU1.0MCCARTHY C-5NaNNaN0226161.5-142.8...0.00.04.009924.00.404.00NaNPOINT (-142.80000 61.50000)991802261000100
113AK000096AKVALDEZ-CORDOVA1.0MCCARTHY C-6NaNNaNAlaska61.6-142.8...0.00.02.0029729.00.202.00NaNPOINT (-142.80000 61.60000)991802261000100
12AK000006AKMATANUSKA-SUSITNA1.0ANCHORAGE C-6NaNNaNAlaska61.7-149.0...0.00.03.009225.00.303.00NaNPOINT (-149.00000 61.70000)993802170000200
\n", + "

5 rows × 44 columns

\n", + "
" + ], + "text/plain": [ + " AMLIS Key State/Tribe County Congressional District \\\n", + "2 AK000001 AK MATANUSKA-SUSITNA 1.0 \n", + "6 AK000003 AK VALDEZ-CORDOVA 1.0 \n", + "100 AK000080 AK VALDEZ-CORDOVA CENSU 1.0 \n", + "113 AK000096 AK VALDEZ-CORDOVA 1.0 \n", + "12 AK000006 AK MATANUSKA-SUSITNA 1.0 \n", + "\n", + " Quadrangle Name Watershed HUC Code FIPS Code Latitude Longitude ... \\\n", + "2 ANCHORAGE C-8 NaN NaN 02170 61.6 -149.8 ... \n", + "6 Valdez C-1 19050003 NaN 02-26 61.6 -144.0 ... \n", + "100 MCCARTHY C-5 NaN NaN 02261 61.5 -142.8 ... \n", + "113 MCCARTHY C-6 NaN NaN Alaska 61.6 -142.8 ... \n", + "12 ANCHORAGE C-6 NaN NaN Alaska 61.7 -149.0 ... \n", + "\n", + " Funded GPRA Acres Funded Metric Units Completed Standard Units \\\n", + "2 0.0 0.0 900.00 \n", + "6 0.0 0.0 0.34 \n", + "100 0.0 0.0 4.00 \n", + "113 0.0 0.0 2.00 \n", + "12 0.0 0.0 3.00 \n", + "\n", + " Completed Costs Completed GPRA Acres Completed Metric Units Unnamed: 40 \\\n", + "2 33200.0 12.86 274.30 NaN \n", + "6 9200.0 0.03 0.34 NaN \n", + "100 9924.0 0.40 4.00 NaN \n", + "113 29729.0 0.20 2.00 NaN \n", + "12 9225.0 0.30 3.00 NaN \n", + "\n", + " geometry index_right GEOID10_TRACT \n", + "2 POINT (-149.80000 61.60000) 9900 02170000401 \n", + "6 POINT (-144.00000 61.60000) 9918 02261000100 \n", + "100 POINT (-142.80000 61.50000) 9918 02261000100 \n", + "113 POINT (-142.80000 61.60000) 9918 02261000100 \n", + "12 POINT (-149.00000 61.70000) 9938 02170000200 \n", + "\n", + "[5 rows x 44 columns]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gdf_tracts.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "901f8c2f-b27a-4223-ad73-71daf51f6bd6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(2034, 44)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gdf_tracts.drop_duplicates(\"GEOID10_TRACT\").shape" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "65bfb3e7-d562-4d59-a2ef-f59d385a7c23", + "metadata": {}, + "outputs": [], + "source": [ + "census_tracts = gpd.read_file(CensusETL.NATIONAL_TRACT_JSON_PATH)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "6b7011aa-49e8-4cf8-877f-b3b36805c18e", + "metadata": {}, + "outputs": [], + "source": [ + "census_tracts.set_index(\"GEOID10\", drop=False, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "4334eb8e-c8eb-486a-a4e0-a455f18c038c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(3976, 44)" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gdf_tracts.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "cbc84001-bb43-46dc-bc6a-306f0e169a20", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AMLIS KeyState/TribeCountyCongressional DistrictQuadrangle NameWatershedHUC CodeFIPS CodeLatitudeLongitude...Funded GPRA AcresFunded Metric UnitsCompleted Standard UnitsCompleted CostsCompleted GPRA AcresCompleted Metric UnitsUnnamed: 40geometryindex_rightGEOID10_TRACT
100AK000080AKVALDEZ-CORDOVA CENSU1.0MCCARTHY C-5NaNNaN0226161.5-142.8...0.00.04.09924.00.44.0NaNPOINT (-142.80000 61.50000)991802261000100
113AK000096AKVALDEZ-CORDOVA1.0MCCARTHY C-6NaNNaNAlaska61.6-142.8...0.00.02.029729.00.22.0NaNPOINT (-142.80000 61.60000)991802261000100
30AK000015AKMATANUSKA-SUSITNA1.0ANCHORAGE D-4NaNNaN0217061.7-148.2...0.00.07.04100.00.77.0NaNPOINT (-148.20000 61.70000)993802170000200
45AK000040AKMATANUSKA-SUSITNA1.0ANCHORAGE C-6NaNNaN0217061.7-148.8...0.00.01.020284.00.11.0NaNPOINT (-148.80000 61.70000)993802170000200
117AK000099AKMATANUSKA-SUSITNA1.0NaNNaNNaN0217061.7-148.4...0.00.00.00.00.00.0NaNPOINT (-148.40000 61.70000)993802170000200
..................................................................
57095WY176742WYCampbell County1.0Little Thunder ReservoirUPPER CHEYENNE10120103.05600543.7-105.4...3.03.08.61407322.08.68.6NaNPOINT (-105.40000 43.70000)2839456005000100
56861WY082926WYPLATTE1.0Guernsey ReservoirGLENDO RESERVOIR10180008.05603142.3-104.7...0.00.01.0293122.01.00.4NaNPOINT (-104.70000 42.30000)2840256031959100
56864WY086744WYPLATTE1.0HELL GAPGLENDO RESERVOIR10180008.05603142.4-104.7...0.00.01.018848.00.11.0NaNPOINT (-104.70000 42.40000)2840256031959100
56930WY102624WYFREMONT1.0Lookout ButteLOWER WIND10080005.05601343.3-108.7...0.00.00.00.00.00.0NaNPOINT (-108.70000 43.30000)2844256013940201
57021WY132533WYFREMONT1.0Eagle PointLOWER WIND10080005.05601343.4-108.7...0.00.00.00.00.00.0NaNPOINT (-108.70000 43.40000)2844256013940201
\n", + "

1942 rows × 44 columns

\n", + "
" + ], + "text/plain": [ + " AMLIS Key State/Tribe County Congressional District \\\n", + "100 AK000080 AK VALDEZ-CORDOVA CENSU 1.0 \n", + "113 AK000096 AK VALDEZ-CORDOVA 1.0 \n", + "30 AK000015 AK MATANUSKA-SUSITNA 1.0 \n", + "45 AK000040 AK MATANUSKA-SUSITNA 1.0 \n", + "117 AK000099 AK MATANUSKA-SUSITNA 1.0 \n", + "... ... ... ... ... \n", + "57095 WY176742 WY Campbell County 1.0 \n", + "56861 WY082926 WY PLATTE 1.0 \n", + "56864 WY086744 WY PLATTE 1.0 \n", + "56930 WY102624 WY FREMONT 1.0 \n", + "57021 WY132533 WY FREMONT 1.0 \n", + "\n", + " Quadrangle Name Watershed HUC Code FIPS Code \\\n", + "100 MCCARTHY C-5 NaN NaN 02261 \n", + "113 MCCARTHY C-6 NaN NaN Alaska \n", + "30 ANCHORAGE D-4 NaN NaN 02170 \n", + "45 ANCHORAGE C-6 NaN NaN 02170 \n", + "117 NaN NaN NaN 02170 \n", + "... ... ... ... ... \n", + "57095 Little Thunder Reservoir UPPER CHEYENNE 10120103.0 56005 \n", + "56861 Guernsey Reservoir GLENDO RESERVOIR 10180008.0 56031 \n", + "56864 HELL GAP GLENDO RESERVOIR 10180008.0 56031 \n", + "56930 Lookout Butte LOWER WIND 10080005.0 56013 \n", + "57021 Eagle Point LOWER WIND 10080005.0 56013 \n", + "\n", + " Latitude Longitude ... Funded GPRA Acres Funded Metric Units \\\n", + "100 61.5 -142.8 ... 0.0 0.0 \n", + "113 61.6 -142.8 ... 0.0 0.0 \n", + "30 61.7 -148.2 ... 0.0 0.0 \n", + "45 61.7 -148.8 ... 0.0 0.0 \n", + "117 61.7 -148.4 ... 0.0 0.0 \n", + "... ... ... ... ... ... \n", + "57095 43.7 -105.4 ... 3.0 3.0 \n", + "56861 42.3 -104.7 ... 0.0 0.0 \n", + "56864 42.4 -104.7 ... 0.0 0.0 \n", + "56930 43.3 -108.7 ... 0.0 0.0 \n", + "57021 43.4 -108.7 ... 0.0 0.0 \n", + "\n", + " Completed Standard Units Completed Costs Completed GPRA Acres \\\n", + "100 4.0 9924.0 0.4 \n", + "113 2.0 29729.0 0.2 \n", + "30 7.0 4100.0 0.7 \n", + "45 1.0 20284.0 0.1 \n", + "117 0.0 0.0 0.0 \n", + "... ... ... ... \n", + "57095 8.6 1407322.0 8.6 \n", + "56861 1.0 293122.0 1.0 \n", + "56864 1.0 18848.0 0.1 \n", + "56930 0.0 0.0 0.0 \n", + "57021 0.0 0.0 0.0 \n", + "\n", + " Completed Metric Units Unnamed: 40 geometry \\\n", + "100 4.0 NaN POINT (-142.80000 61.50000) \n", + "113 2.0 NaN POINT (-142.80000 61.60000) \n", + "30 7.0 NaN POINT (-148.20000 61.70000) \n", + "45 1.0 NaN POINT (-148.80000 61.70000) \n", + "117 0.0 NaN POINT (-148.40000 61.70000) \n", + "... ... ... ... \n", + "57095 8.6 NaN POINT (-105.40000 43.70000) \n", + "56861 0.4 NaN POINT (-104.70000 42.30000) \n", + "56864 1.0 NaN POINT (-104.70000 42.40000) \n", + "56930 0.0 NaN POINT (-108.70000 43.30000) \n", + "57021 0.0 NaN POINT (-108.70000 43.40000) \n", + "\n", + " index_right GEOID10_TRACT \n", + "100 9918 02261000100 \n", + "113 9918 02261000100 \n", + "30 9938 02170000200 \n", + "45 9938 02170000200 \n", + "117 9938 02170000200 \n", + "... ... ... \n", + "57095 28394 56005000100 \n", + "56861 28402 56031959100 \n", + "56864 28402 56031959100 \n", + "56930 28442 56013940201 \n", + "57021 28442 56013940201 \n", + "\n", + "[1942 rows x 44 columns]" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gdf_tracts[gdf_tracts.GEOID10_TRACT.duplicated()]" + ] + }, + { + "cell_type": "markdown", + "id": "bdf572df-8a20-4711-812c-376887de8d30", + "metadata": {}, + "source": [ + "# Assemble test data" + ] + }, + { + "cell_type": "markdown", + "id": "c6820da8-d61d-4da7-870a-d1e648152ae2", + "metadata": {}, + "source": [ + "## Get some test tracts" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "78cf15fc-a9a6-41bc-ab90-9c94a32e0fcd", + "metadata": {}, + "outputs": [], + "source": [ + "example_geoids = pd.read_csv(\n", + " \"../tests/sources/example/data/extract.csv\", dtype=\"object\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "c0129782-bc75-4cb5-b53f-4a99d4473aa6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(15, 2)" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "example_geoids.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "2647d12f-3eab-4cbc-a656-a514a2c06084", + "metadata": {}, + "outputs": [], + "source": [ + "tract_df = gdf_tracts" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "7ac85550-c8b9-4978-869b-1a233f89a1b2", + "metadata": {}, + "outputs": [], + "source": [ + "merged_exaple_data = pd.merge(\n", + " example_geoids[\"GEOID10_TRACT\"],\n", + " tract_df,\n", + " on=\"GEOID10_TRACT\",\n", + " how=\"left\",\n", + " indicator=True,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "e3e36b6f-8edc-4459-9703-83b790778ce6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
GEOID10_TRACTAMLIS KeyState/TribeCountyCongressional DistrictQuadrangle NameWatershedHUC CodeFIPS CodeLatitude...Funded GPRA AcresFunded Metric UnitsCompleted Standard UnitsCompleted CostsCompleted GPRA AcresCompleted Metric UnitsUnnamed: 40geometryindex_right_merge
006027000800NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNoneNaNleft_only
106069000802NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNoneNaNleft_only
206061021322NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNoneNaNleft_only
315001021010NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNoneNaNleft_only
415001021101NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNoneNaNleft_only
515007040603NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNoneNaNleft_only
615007040700NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNoneNaNleft_only
715009030100NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNoneNaNleft_only
815009030201NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNoneNaNleft_only
915001021402NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNoneNaNleft_only
1015001021800NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNoneNaNleft_only
1115009030402NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNoneNaNleft_only
1215009030800NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNoneNaNleft_only
1315003010201NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNoneNaNleft_only
1415007040604NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNoneNaNleft_only
\n", + "

15 rows × 45 columns

\n", + "
" + ], + "text/plain": [ + " GEOID10_TRACT AMLIS Key State/Tribe County Congressional District \\\n", + "0 06027000800 NaN NaN NaN NaN \n", + "1 06069000802 NaN NaN NaN NaN \n", + "2 06061021322 NaN NaN NaN NaN \n", + "3 15001021010 NaN NaN NaN NaN \n", + "4 15001021101 NaN NaN NaN NaN \n", + "5 15007040603 NaN NaN NaN NaN \n", + "6 15007040700 NaN NaN NaN NaN \n", + "7 15009030100 NaN NaN NaN NaN \n", + "8 15009030201 NaN NaN NaN NaN \n", + "9 15001021402 NaN NaN NaN NaN \n", + "10 15001021800 NaN NaN NaN NaN \n", + "11 15009030402 NaN NaN NaN NaN \n", + "12 15009030800 NaN NaN NaN NaN \n", + "13 15003010201 NaN NaN NaN NaN \n", + "14 15007040604 NaN NaN NaN NaN \n", + "\n", + " Quadrangle Name Watershed HUC Code FIPS Code Latitude ... \\\n", + "0 NaN NaN NaN NaN NaN ... \n", + "1 NaN NaN NaN NaN NaN ... \n", + "2 NaN NaN NaN NaN NaN ... \n", + "3 NaN NaN NaN NaN NaN ... \n", + "4 NaN NaN NaN NaN NaN ... \n", + "5 NaN NaN NaN NaN NaN ... \n", + "6 NaN NaN NaN NaN NaN ... \n", + "7 NaN NaN NaN NaN NaN ... \n", + "8 NaN NaN NaN NaN NaN ... \n", + "9 NaN NaN NaN NaN NaN ... \n", + "10 NaN NaN NaN NaN NaN ... \n", + "11 NaN NaN NaN NaN NaN ... \n", + "12 NaN NaN NaN NaN NaN ... \n", + "13 NaN NaN NaN NaN NaN ... \n", + "14 NaN NaN NaN NaN NaN ... \n", + "\n", + " Funded GPRA Acres Funded Metric Units Completed Standard Units \\\n", + "0 NaN NaN NaN \n", + "1 NaN NaN NaN \n", + "2 NaN NaN NaN \n", + "3 NaN NaN NaN \n", + "4 NaN NaN NaN \n", + "5 NaN NaN NaN \n", + "6 NaN NaN NaN \n", + "7 NaN NaN NaN \n", + "8 NaN NaN NaN \n", + "9 NaN NaN NaN \n", + "10 NaN NaN NaN \n", + "11 NaN NaN NaN \n", + "12 NaN NaN NaN \n", + "13 NaN NaN NaN \n", + "14 NaN NaN NaN \n", + "\n", + " Completed Costs Completed GPRA Acres Completed Metric Units Unnamed: 40 \\\n", + "0 NaN NaN NaN NaN \n", + "1 NaN NaN NaN NaN \n", + "2 NaN NaN NaN NaN \n", + "3 NaN NaN NaN NaN \n", + "4 NaN NaN NaN NaN \n", + "5 NaN NaN NaN NaN \n", + "6 NaN NaN NaN NaN \n", + "7 NaN NaN NaN NaN \n", + "8 NaN NaN NaN NaN \n", + "9 NaN NaN NaN NaN \n", + "10 NaN NaN NaN NaN \n", + "11 NaN NaN NaN NaN \n", + "12 NaN NaN NaN NaN \n", + "13 NaN NaN NaN NaN \n", + "14 NaN NaN NaN NaN \n", + "\n", + " geometry index_right _merge \n", + "0 None NaN left_only \n", + "1 None NaN left_only \n", + "2 None NaN left_only \n", + "3 None NaN left_only \n", + "4 None NaN left_only \n", + "5 None NaN left_only \n", + "6 None NaN left_only \n", + "7 None NaN left_only \n", + "8 None NaN left_only \n", + "9 None NaN left_only \n", + "10 None NaN left_only \n", + "11 None NaN left_only \n", + "12 None NaN left_only \n", + "13 None NaN left_only \n", + "14 None NaN left_only \n", + "\n", + "[15 rows x 45 columns]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "merged_exaple_data[merged_exaple_data[\"_merge\"] == \"left_only\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "76f66b32-ce2e-4ad1-93f2-eb566be2e04f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'AMLIS Key': 'AK000001',\n", + " 'State/Tribe': 'AK',\n", + " 'County': 'MATANUSKA-SUSITNA',\n", + " 'Congressional District': 1.0,\n", + " 'Quadrangle Name': 'ANCHORAGE C-8',\n", + " 'Watershed': nan,\n", + " 'HUC Code': nan,\n", + " 'FIPS Code': '02170',\n", + " 'Latitude': 61.6,\n", + " 'Longitude': -149.8,\n", + " 'Funding Source / Program': 'FRA',\n", + " 'Problem Area Name': 'EAST HOUSTON MINE',\n", + " 'Problem Area Number': 1,\n", + " 'Planning Unit Name': 'HOUSTON',\n", + " 'Planning Unit Number': '1',\n", + " 'Problem Priority': '1',\n", + " 'Problem Type': 'VO',\n", + " 'Mining Type': 'S',\n", + " 'Ore Types': nan,\n", + " 'Date Prepared': '12/3/1986 12:00:00 AM',\n", + " 'Date Revised': '4/23/2014 6:40:28 PM',\n", + " 'Private Owner %': 0.0,\n", + " 'State Owner %': 0.0,\n", + " 'Other Federal Owner %': 0.0,\n", + " 'Park Service Owner %': 0.0,\n", + " 'Forest Service Owner %': 0.0,\n", + " 'Indian Owner %': 0.0,\n", + " 'BLM Owner %': 0.0,\n", + " 'Unfunded Standard Units': 0.0,\n", + " 'Unfunded Costs': 0.0,\n", + " 'Unfunded GPRA Acres': 0.0,\n", + " 'Unfunded Metric Units': 0.0,\n", + " 'Funded Standard Units': 0.0,\n", + " 'Funded Costs': 0.0,\n", + " 'Funded GPRA Acres': 0.0,\n", + " 'Funded Metric Units': 0.0,\n", + " 'Completed Standard Units': 2.0,\n", + " 'Completed Costs': 10000.0,\n", + " 'Completed GPRA Acres': 0.2,\n", + " 'Completed Metric Units': 2.0,\n", + " 'Unnamed: 40': nan,\n", + " 'geometry': }" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dict(df.iloc[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "3caf8290-8248-44e5-8f3b-c67c54e834de", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['AMLIS Key', 'BLM Owner %', 'Completed Costs', 'Completed GPRA Acres',\n", + " 'Completed Metric Units', 'Completed Standard Units',\n", + " 'Congressional District', 'County', 'Date Prepared', 'Date Revised',\n", + " 'FIPS Code', 'Forest Service Owner %', 'Funded Costs',\n", + " 'Funded GPRA Acres', 'Funded Metric Units', 'Funded Standard Units',\n", + " 'Funding Source / Program', 'HUC Code', 'Indian Owner %', 'Latitude',\n", + " 'Longitude', 'Mining Type', 'Ore Types', 'Other Federal Owner %',\n", + " 'Park Service Owner %', 'Planning Unit Name', 'Planning Unit Number',\n", + " 'Private Owner %', 'Problem Area Name', 'Problem Area Number',\n", + " 'Problem Priority', 'Problem Type', 'Quadrangle Name', 'State Owner %',\n", + " 'State/Tribe', 'Unfunded Costs', 'Unfunded GPRA Acres',\n", + " 'Unfunded Metric Units', 'Unfunded Standard Units', 'Unnamed: 40',\n", + " 'Watershed', '_merge', 'geometry', 'index_right'],\n", + " dtype='object')" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "merged_exaple_data.columns.difference([\"GEOID10_TRACT\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "2f0cd691-069e-4367-8f42-e77efd649e77", + "metadata": {}, + "outputs": [], + "source": [ + "def generate_fake_eamlis_row(tract: str, state: str) -> dict:\n", + " generate_fake_eamlis_row._row_id += 1\n", + " centroid = census_tracts.loc[tract].geometry.centroid\n", + " return {\n", + " \"AMLIS Key\": f\"{state}{str(generate_fake_eamlis_row._row_id).zfill(6)}\",\n", + " \"State/Tribe\": state,\n", + " \"County\": \"MATANUSKA-SUSITNA\",\n", + " \"Congressional District\": 1.0,\n", + " \"Quadrangle Name\": \"ANCHORAGE C-8\",\n", + " \"Watershed\": np.nan,\n", + " \"HUC Code\": np.nan,\n", + " \"FIPS Code\": \"02170\",\n", + " \"Latitude\": centroid.y,\n", + " \"Longitude\": centroid.x,\n", + " \"Funding Source / Program\": \"FRA\",\n", + " \"Problem Area Name\": \"EAST HOUSTON MINE\",\n", + " \"Problem Area Number\": 1,\n", + " \"Planning Unit Name\": \"HOUSTON\",\n", + " \"Planning Unit Number\": \"1\",\n", + " \"Problem Priority\": \"1\",\n", + " \"Problem Type\": \"VO\",\n", + " \"Mining Type\": \"S\",\n", + " \"Ore Types\": np.nan,\n", + " \"Date Prepared\": \"12/3/1986 12:00:00 AM\",\n", + " \"Date Revised\": \"4/23/2014 6:40:28 PM\",\n", + " \"Private Owner %\": 0.0,\n", + " \"State Owner %\": 0.0,\n", + " \"Other Federal Owner %\": 0.0,\n", + " \"Park Service Owner %\": 0.0,\n", + " \"Forest Service Owner %\": 0.0,\n", + " \"Indian Owner %\": 0.0,\n", + " \"BLM Owner %\": 0.0,\n", + " \"Unfunded Standard Units\": 0.0,\n", + " \"Unfunded Costs\": 0.0,\n", + " \"Unfunded GPRA Acres\": 0.0,\n", + " \"Unfunded Metric Units\": 0.0,\n", + " \"Funded Standard Units\": 0.0,\n", + " \"Funded Costs\": 0.0,\n", + " \"Funded GPRA Acres\": 0.0,\n", + " \"Funded Metric Units\": 0.0,\n", + " \"Completed Standard Units\": 2.0,\n", + " \"Completed Costs\": 10000.0,\n", + " \"Completed GPRA Acres\": 0.2,\n", + " \"Completed Metric Units\": 2.0,\n", + " \"Unnamed: 40\": np.nan,\n", + " }\n", + "\n", + "\n", + "generate_fake_eamlis_row._row_id = 0" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "6ab61dda-8642-4706-9b67-b03ed27713fd", + "metadata": {}, + "outputs": [], + "source": [ + "rows = []\n", + "for tract in merged_exaple_data[\n", + " merged_exaple_data[\"_merge\"] == \"left_only\"\n", + "].GEOID10_TRACT:\n", + " state = \"HI\"\n", + " if tract.startswith(\"06\"):\n", + " state = \"CA\"\n", + " rows.append(generate_fake_eamlis_row(tract, state))" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "93714c4d-3e1d-49c1-9bac-4e553e0bae08", + "metadata": {}, + "outputs": [], + "source": [ + "pd.DataFrame(rows).to_csv(\n", + " \"/home/matt/active/justice40-tool/data/data-pipeline/data_pipeline/tests/sources/eamlis/data/eAMLIS export of all data.tsv.zip\",\n", + " index=False,\n", + " sep=\"\\t\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "776d4dab-4067-4d36-9ce3-d7c7094ea8c6", + "metadata": {}, + "source": [ + "## Get the points for the geolocation mock" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "a630a0f8-e922-4eb3-9937-6c4b590fd527", + "metadata": {}, + "outputs": [], + "source": [ + "lookup_table = {}\n", + "for tract in merged_exaple_data[\n", + " merged_exaple_data[\"_merge\"] == \"left_only\"\n", + "].GEOID10_TRACT:\n", + " centroid = census_tracts.loc[tract].geometry.centroid\n", + " lookup_table[(centroid.x, centroid.y)] = tract" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "d828b2e0-424e-4040-b167-da46734bcf4d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'AMLIS Key': 'CA000001',\n", + " 'State/Tribe': 'CA',\n", + " 'County': 'MATANUSKA-SUSITNA',\n", + " 'Congressional District': 1.0,\n", + " 'Quadrangle Name': 'ANCHORAGE C-8',\n", + " 'Watershed': nan,\n", + " 'HUC Code': nan,\n", + " 'FIPS Code': '02170',\n", + " 'Latitude': 36.25161281807095,\n", + " 'Longitude': -117.11772856883819,\n", + " 'Funding Source / Program': 'FRA',\n", + " 'Problem Area Name': 'EAST HOUSTON MINE',\n", + " 'Problem Area Number': 1,\n", + " 'Planning Unit Name': 'HOUSTON',\n", + " 'Planning Unit Number': '1',\n", + " 'Problem Priority': '1',\n", + " 'Problem Type': 'VO',\n", + " 'Mining Type': 'S',\n", + " 'Ore Types': nan,\n", + " 'Date Prepared': '12/3/1986 12:00:00 AM',\n", + " 'Date Revised': '4/23/2014 6:40:28 PM',\n", + " 'Private Owner %': 0.0,\n", + " 'State Owner %': 0.0,\n", + " 'Other Federal Owner %': 0.0,\n", + " 'Park Service Owner %': 0.0,\n", + " 'Forest Service Owner %': 0.0,\n", + " 'Indian Owner %': 0.0,\n", + " 'BLM Owner %': 0.0,\n", + " 'Unfunded Standard Units': 0.0,\n", + " 'Unfunded Costs': 0.0,\n", + " 'Unfunded GPRA Acres': 0.0,\n", + " 'Unfunded Metric Units': 0.0,\n", + " 'Funded Standard Units': 0.0,\n", + " 'Funded Costs': 0.0,\n", + " 'Funded GPRA Acres': 0.0,\n", + " 'Funded Metric Units': 0.0,\n", + " 'Completed Standard Units': 2.0,\n", + " 'Completed Costs': 10000.0,\n", + " 'Completed GPRA Acres': 0.2,\n", + " 'Completed Metric Units': 2.0,\n", + " 'Unnamed: 40': nan},\n", + " {'AMLIS Key': 'CA000002',\n", + " 'State/Tribe': 'CA',\n", + " 'County': 'MATANUSKA-SUSITNA',\n", + " 'Congressional District': 1.0,\n", + " 'Quadrangle Name': 'ANCHORAGE C-8',\n", + " 'Watershed': nan,\n", + " 'HUC Code': nan,\n", + " 'FIPS Code': '02170',\n", + " 'Latitude': 36.5498780497345,\n", + " 'Longitude': -121.0070599015156,\n", + " 'Funding Source / Program': 'FRA',\n", + " 'Problem Area Name': 'EAST HOUSTON MINE',\n", + " 'Problem Area Number': 1,\n", + " 'Planning Unit Name': 'HOUSTON',\n", + " 'Planning Unit Number': '1',\n", + " 'Problem Priority': '1',\n", + " 'Problem Type': 'VO',\n", + " 'Mining Type': 'S',\n", + " 'Ore Types': nan,\n", + " 'Date Prepared': '12/3/1986 12:00:00 AM',\n", + " 'Date Revised': '4/23/2014 6:40:28 PM',\n", + " 'Private Owner %': 0.0,\n", + " 'State Owner %': 0.0,\n", + " 'Other Federal Owner %': 0.0,\n", + " 'Park Service Owner %': 0.0,\n", + " 'Forest Service Owner %': 0.0,\n", + " 'Indian Owner %': 0.0,\n", + " 'BLM Owner %': 0.0,\n", + " 'Unfunded Standard Units': 0.0,\n", + " 'Unfunded Costs': 0.0,\n", + " 'Unfunded GPRA Acres': 0.0,\n", + " 'Unfunded Metric Units': 0.0,\n", + " 'Funded Standard Units': 0.0,\n", + " 'Funded Costs': 0.0,\n", + " 'Funded GPRA Acres': 0.0,\n", + " 'Funded Metric Units': 0.0,\n", + " 'Completed Standard Units': 2.0,\n", + " 'Completed Costs': 10000.0,\n", + " 'Completed GPRA Acres': 0.2,\n", + " 'Completed Metric Units': 2.0,\n", + " 'Unnamed: 40': nan},\n", + " {'AMLIS Key': 'CA000003',\n", + " 'State/Tribe': 'CA',\n", + " 'County': 'MATANUSKA-SUSITNA',\n", + " 'Congressional District': 1.0,\n", + " 'Quadrangle Name': 'ANCHORAGE C-8',\n", + " 'Watershed': nan,\n", + " 'HUC Code': nan,\n", + " 'FIPS Code': '02170',\n", + " 'Latitude': 38.84602113669345,\n", + " 'Longitude': -121.40564726784282,\n", + " 'Funding Source / Program': 'FRA',\n", + " 'Problem Area Name': 'EAST HOUSTON MINE',\n", + " 'Problem Area Number': 1,\n", + " 'Planning Unit Name': 'HOUSTON',\n", + " 'Planning Unit Number': '1',\n", + " 'Problem Priority': '1',\n", + " 'Problem Type': 'VO',\n", + " 'Mining Type': 'S',\n", + " 'Ore Types': nan,\n", + " 'Date Prepared': '12/3/1986 12:00:00 AM',\n", + " 'Date Revised': '4/23/2014 6:40:28 PM',\n", + " 'Private Owner %': 0.0,\n", + " 'State Owner %': 0.0,\n", + " 'Other Federal Owner %': 0.0,\n", + " 'Park Service Owner %': 0.0,\n", + " 'Forest Service Owner %': 0.0,\n", + " 'Indian Owner %': 0.0,\n", + " 'BLM Owner %': 0.0,\n", + " 'Unfunded Standard Units': 0.0,\n", + " 'Unfunded Costs': 0.0,\n", + " 'Unfunded GPRA Acres': 0.0,\n", + " 'Unfunded Metric Units': 0.0,\n", + " 'Funded Standard Units': 0.0,\n", + " 'Funded Costs': 0.0,\n", + " 'Funded GPRA Acres': 0.0,\n", + " 'Funded Metric Units': 0.0,\n", + " 'Completed Standard Units': 2.0,\n", + " 'Completed Costs': 10000.0,\n", + " 'Completed GPRA Acres': 0.2,\n", + " 'Completed Metric Units': 2.0,\n", + " 'Unnamed: 40': nan},\n", + " {'AMLIS Key': 'HI000004',\n", + " 'State/Tribe': 'HI',\n", + " 'County': 'MATANUSKA-SUSITNA',\n", + " 'Congressional District': 1.0,\n", + " 'Quadrangle Name': 'ANCHORAGE C-8',\n", + " 'Watershed': nan,\n", + " 'HUC Code': nan,\n", + " 'FIPS Code': '02170',\n", + " 'Latitude': 19.49784370888389,\n", + " 'Longitude': -155.10321769858746,\n", + " 'Funding Source / Program': 'FRA',\n", + " 'Problem Area Name': 'EAST HOUSTON MINE',\n", + " 'Problem Area Number': 1,\n", + " 'Planning Unit Name': 'HOUSTON',\n", + " 'Planning Unit Number': '1',\n", + " 'Problem Priority': '1',\n", + " 'Problem Type': 'VO',\n", + " 'Mining Type': 'S',\n", + " 'Ore Types': nan,\n", + " 'Date Prepared': '12/3/1986 12:00:00 AM',\n", + " 'Date Revised': '4/23/2014 6:40:28 PM',\n", + " 'Private Owner %': 0.0,\n", + " 'State Owner %': 0.0,\n", + " 'Other Federal Owner %': 0.0,\n", + " 'Park Service Owner %': 0.0,\n", + " 'Forest Service Owner %': 0.0,\n", + " 'Indian Owner %': 0.0,\n", + " 'BLM Owner %': 0.0,\n", + " 'Unfunded Standard Units': 0.0,\n", + " 'Unfunded Costs': 0.0,\n", + " 'Unfunded GPRA Acres': 0.0,\n", + " 'Unfunded Metric Units': 0.0,\n", + " 'Funded Standard Units': 0.0,\n", + " 'Funded Costs': 0.0,\n", + " 'Funded GPRA Acres': 0.0,\n", + " 'Funded Metric Units': 0.0,\n", + " 'Completed Standard Units': 2.0,\n", + " 'Completed Costs': 10000.0,\n", + " 'Completed GPRA Acres': 0.2,\n", + " 'Completed Metric Units': 2.0,\n", + " 'Unnamed: 40': nan},\n", + " {'AMLIS Key': 'HI000005',\n", + " 'State/Tribe': 'HI',\n", + " 'County': 'MATANUSKA-SUSITNA',\n", + " 'Congressional District': 1.0,\n", + " 'Quadrangle Name': 'ANCHORAGE C-8',\n", + " 'Watershed': nan,\n", + " 'HUC Code': nan,\n", + " 'FIPS Code': '02170',\n", + " 'Latitude': 19.446650238354696,\n", + " 'Longitude': -154.89548634140738,\n", + " 'Funding Source / Program': 'FRA',\n", + " 'Problem Area Name': 'EAST HOUSTON MINE',\n", + " 'Problem Area Number': 1,\n", + " 'Planning Unit Name': 'HOUSTON',\n", + " 'Planning Unit Number': '1',\n", + " 'Problem Priority': '1',\n", + " 'Problem Type': 'VO',\n", + " 'Mining Type': 'S',\n", + " 'Ore Types': nan,\n", + " 'Date Prepared': '12/3/1986 12:00:00 AM',\n", + " 'Date Revised': '4/23/2014 6:40:28 PM',\n", + " 'Private Owner %': 0.0,\n", + " 'State Owner %': 0.0,\n", + " 'Other Federal Owner %': 0.0,\n", + " 'Park Service Owner %': 0.0,\n", + " 'Forest Service Owner %': 0.0,\n", + " 'Indian Owner %': 0.0,\n", + " 'BLM Owner %': 0.0,\n", + " 'Unfunded Standard Units': 0.0,\n", + " 'Unfunded Costs': 0.0,\n", + " 'Unfunded GPRA Acres': 0.0,\n", + " 'Unfunded Metric Units': 0.0,\n", + " 'Funded Standard Units': 0.0,\n", + " 'Funded Costs': 0.0,\n", + " 'Funded GPRA Acres': 0.0,\n", + " 'Funded Metric Units': 0.0,\n", + " 'Completed Standard Units': 2.0,\n", + " 'Completed Costs': 10000.0,\n", + " 'Completed GPRA Acres': 0.2,\n", + " 'Completed Metric Units': 2.0,\n", + " 'Unnamed: 40': nan},\n", + " {'AMLIS Key': 'HI000006',\n", + " 'State/Tribe': 'HI',\n", + " 'County': 'MATANUSKA-SUSITNA',\n", + " 'Congressional District': 1.0,\n", + " 'Quadrangle Name': 'ANCHORAGE C-8',\n", + " 'Watershed': nan,\n", + " 'HUC Code': nan,\n", + " 'FIPS Code': '02170',\n", + " 'Latitude': 21.904412260968197,\n", + " 'Longitude': -159.43665201302525,\n", + " 'Funding Source / Program': 'FRA',\n", + " 'Problem Area Name': 'EAST HOUSTON MINE',\n", + " 'Problem Area Number': 1,\n", + " 'Planning Unit Name': 'HOUSTON',\n", + " 'Planning Unit Number': '1',\n", + " 'Problem Priority': '1',\n", + " 'Problem Type': 'VO',\n", + " 'Mining Type': 'S',\n", + " 'Ore Types': nan,\n", + " 'Date Prepared': '12/3/1986 12:00:00 AM',\n", + " 'Date Revised': '4/23/2014 6:40:28 PM',\n", + " 'Private Owner %': 0.0,\n", + " 'State Owner %': 0.0,\n", + " 'Other Federal Owner %': 0.0,\n", + " 'Park Service Owner %': 0.0,\n", + " 'Forest Service Owner %': 0.0,\n", + " 'Indian Owner %': 0.0,\n", + " 'BLM Owner %': 0.0,\n", + " 'Unfunded Standard Units': 0.0,\n", + " 'Unfunded Costs': 0.0,\n", + " 'Unfunded GPRA Acres': 0.0,\n", + " 'Unfunded Metric Units': 0.0,\n", + " 'Funded Standard Units': 0.0,\n", + " 'Funded Costs': 0.0,\n", + " 'Funded GPRA Acres': 0.0,\n", + " 'Funded Metric Units': 0.0,\n", + " 'Completed Standard Units': 2.0,\n", + " 'Completed Costs': 10000.0,\n", + " 'Completed GPRA Acres': 0.2,\n", + " 'Completed Metric Units': 2.0,\n", + " 'Unnamed: 40': nan},\n", + " {'AMLIS Key': 'HI000007',\n", + " 'State/Tribe': 'HI',\n", + " 'County': 'MATANUSKA-SUSITNA',\n", + " 'Congressional District': 1.0,\n", + " 'Quadrangle Name': 'ANCHORAGE C-8',\n", + " 'Watershed': nan,\n", + " 'HUC Code': nan,\n", + " 'FIPS Code': '02170',\n", + " 'Latitude': 21.94208315793464,\n", + " 'Longitude': -159.52362041178708,\n", + " 'Funding Source / Program': 'FRA',\n", + " 'Problem Area Name': 'EAST HOUSTON MINE',\n", + " 'Problem Area Number': 1,\n", + " 'Planning Unit Name': 'HOUSTON',\n", + " 'Planning Unit Number': '1',\n", + " 'Problem Priority': '1',\n", + " 'Problem Type': 'VO',\n", + " 'Mining Type': 'S',\n", + " 'Ore Types': nan,\n", + " 'Date Prepared': '12/3/1986 12:00:00 AM',\n", + " 'Date Revised': '4/23/2014 6:40:28 PM',\n", + " 'Private Owner %': 0.0,\n", + " 'State Owner %': 0.0,\n", + " 'Other Federal Owner %': 0.0,\n", + " 'Park Service Owner %': 0.0,\n", + " 'Forest Service Owner %': 0.0,\n", + " 'Indian Owner %': 0.0,\n", + " 'BLM Owner %': 0.0,\n", + " 'Unfunded Standard Units': 0.0,\n", + " 'Unfunded Costs': 0.0,\n", + " 'Unfunded GPRA Acres': 0.0,\n", + " 'Unfunded Metric Units': 0.0,\n", + " 'Funded Standard Units': 0.0,\n", + " 'Funded Costs': 0.0,\n", + " 'Funded GPRA Acres': 0.0,\n", + " 'Funded Metric Units': 0.0,\n", + " 'Completed Standard Units': 2.0,\n", + " 'Completed Costs': 10000.0,\n", + " 'Completed GPRA Acres': 0.2,\n", + " 'Completed Metric Units': 2.0,\n", + " 'Unnamed: 40': nan},\n", + " {'AMLIS Key': 'HI000008',\n", + " 'State/Tribe': 'HI',\n", + " 'County': 'MATANUSKA-SUSITNA',\n", + " 'Congressional District': 1.0,\n", + " 'Quadrangle Name': 'ANCHORAGE C-8',\n", + " 'Watershed': nan,\n", + " 'HUC Code': nan,\n", + " 'FIPS Code': '02170',\n", + " 'Latitude': 20.72796381691298,\n", + " 'Longitude': -156.14177664396527,\n", + " 'Funding Source / Program': 'FRA',\n", + " 'Problem Area Name': 'EAST HOUSTON MINE',\n", + " 'Problem Area Number': 1,\n", + " 'Planning Unit Name': 'HOUSTON',\n", + " 'Planning Unit Number': '1',\n", + " 'Problem Priority': '1',\n", + " 'Problem Type': 'VO',\n", + " 'Mining Type': 'S',\n", + " 'Ore Types': nan,\n", + " 'Date Prepared': '12/3/1986 12:00:00 AM',\n", + " 'Date Revised': '4/23/2014 6:40:28 PM',\n", + " 'Private Owner %': 0.0,\n", + " 'State Owner %': 0.0,\n", + " 'Other Federal Owner %': 0.0,\n", + " 'Park Service Owner %': 0.0,\n", + " 'Forest Service Owner %': 0.0,\n", + " 'Indian Owner %': 0.0,\n", + " 'BLM Owner %': 0.0,\n", + " 'Unfunded Standard Units': 0.0,\n", + " 'Unfunded Costs': 0.0,\n", + " 'Unfunded GPRA Acres': 0.0,\n", + " 'Unfunded Metric Units': 0.0,\n", + " 'Funded Standard Units': 0.0,\n", + " 'Funded Costs': 0.0,\n", + " 'Funded GPRA Acres': 0.0,\n", + " 'Funded Metric Units': 0.0,\n", + " 'Completed Standard Units': 2.0,\n", + " 'Completed Costs': 10000.0,\n", + " 'Completed GPRA Acres': 0.2,\n", + " 'Completed Metric Units': 2.0,\n", + " 'Unnamed: 40': nan},\n", + " {'AMLIS Key': 'HI000009',\n", + " 'State/Tribe': 'HI',\n", + " 'County': 'MATANUSKA-SUSITNA',\n", + " 'Congressional District': 1.0,\n", + " 'Quadrangle Name': 'ANCHORAGE C-8',\n", + " 'Watershed': nan,\n", + " 'HUC Code': nan,\n", + " 'FIPS Code': '02170',\n", + " 'Latitude': 20.86486713282688,\n", + " 'Longitude': -156.2497797752935,\n", + " 'Funding Source / Program': 'FRA',\n", + " 'Problem Area Name': 'EAST HOUSTON MINE',\n", + " 'Problem Area Number': 1,\n", + " 'Planning Unit Name': 'HOUSTON',\n", + " 'Planning Unit Number': '1',\n", + " 'Problem Priority': '1',\n", + " 'Problem Type': 'VO',\n", + " 'Mining Type': 'S',\n", + " 'Ore Types': nan,\n", + " 'Date Prepared': '12/3/1986 12:00:00 AM',\n", + " 'Date Revised': '4/23/2014 6:40:28 PM',\n", + " 'Private Owner %': 0.0,\n", + " 'State Owner %': 0.0,\n", + " 'Other Federal Owner %': 0.0,\n", + " 'Park Service Owner %': 0.0,\n", + " 'Forest Service Owner %': 0.0,\n", + " 'Indian Owner %': 0.0,\n", + " 'BLM Owner %': 0.0,\n", + " 'Unfunded Standard Units': 0.0,\n", + " 'Unfunded Costs': 0.0,\n", + " 'Unfunded GPRA Acres': 0.0,\n", + " 'Unfunded Metric Units': 0.0,\n", + " 'Funded Standard Units': 0.0,\n", + " 'Funded Costs': 0.0,\n", + " 'Funded GPRA Acres': 0.0,\n", + " 'Funded Metric Units': 0.0,\n", + " 'Completed Standard Units': 2.0,\n", + " 'Completed Costs': 10000.0,\n", + " 'Completed GPRA Acres': 0.2,\n", + " 'Completed Metric Units': 2.0,\n", + " 'Unnamed: 40': nan},\n", + " {'AMLIS Key': 'HI000010',\n", + " 'State/Tribe': 'HI',\n", + " 'County': 'MATANUSKA-SUSITNA',\n", + " 'Congressional District': 1.0,\n", + " 'Quadrangle Name': 'ANCHORAGE C-8',\n", + " 'Watershed': nan,\n", + " 'HUC Code': nan,\n", + " 'FIPS Code': '02170',\n", + " 'Latitude': 19.516629328900667,\n", + " 'Longitude': -155.91378867633992,\n", + " 'Funding Source / Program': 'FRA',\n", + " 'Problem Area Name': 'EAST HOUSTON MINE',\n", + " 'Problem Area Number': 1,\n", + " 'Planning Unit Name': 'HOUSTON',\n", + " 'Planning Unit Number': '1',\n", + " 'Problem Priority': '1',\n", + " 'Problem Type': 'VO',\n", + " 'Mining Type': 'S',\n", + " 'Ore Types': nan,\n", + " 'Date Prepared': '12/3/1986 12:00:00 AM',\n", + " 'Date Revised': '4/23/2014 6:40:28 PM',\n", + " 'Private Owner %': 0.0,\n", + " 'State Owner %': 0.0,\n", + " 'Other Federal Owner %': 0.0,\n", + " 'Park Service Owner %': 0.0,\n", + " 'Forest Service Owner %': 0.0,\n", + " 'Indian Owner %': 0.0,\n", + " 'BLM Owner %': 0.0,\n", + " 'Unfunded Standard Units': 0.0,\n", + " 'Unfunded Costs': 0.0,\n", + " 'Unfunded GPRA Acres': 0.0,\n", + " 'Unfunded Metric Units': 0.0,\n", + " 'Funded Standard Units': 0.0,\n", + " 'Funded Costs': 0.0,\n", + " 'Funded GPRA Acres': 0.0,\n", + " 'Funded Metric Units': 0.0,\n", + " 'Completed Standard Units': 2.0,\n", + " 'Completed Costs': 10000.0,\n", + " 'Completed GPRA Acres': 0.2,\n", + " 'Completed Metric Units': 2.0,\n", + " 'Unnamed: 40': nan},\n", + " {'AMLIS Key': 'HI000011',\n", + " 'State/Tribe': 'HI',\n", + " 'County': 'MATANUSKA-SUSITNA',\n", + " 'Congressional District': 1.0,\n", + " 'Quadrangle Name': 'ANCHORAGE C-8',\n", + " 'Watershed': nan,\n", + " 'HUC Code': nan,\n", + " 'FIPS Code': '02170',\n", + " 'Latitude': 20.164406070883054,\n", + " 'Longitude': -155.81110884967674,\n", + " 'Funding Source / Program': 'FRA',\n", + " 'Problem Area Name': 'EAST HOUSTON MINE',\n", + " 'Problem Area Number': 1,\n", + " 'Planning Unit Name': 'HOUSTON',\n", + " 'Planning Unit Number': '1',\n", + " 'Problem Priority': '1',\n", + " 'Problem Type': 'VO',\n", + " 'Mining Type': 'S',\n", + " 'Ore Types': nan,\n", + " 'Date Prepared': '12/3/1986 12:00:00 AM',\n", + " 'Date Revised': '4/23/2014 6:40:28 PM',\n", + " 'Private Owner %': 0.0,\n", + " 'State Owner %': 0.0,\n", + " 'Other Federal Owner %': 0.0,\n", + " 'Park Service Owner %': 0.0,\n", + " 'Forest Service Owner %': 0.0,\n", + " 'Indian Owner %': 0.0,\n", + " 'BLM Owner %': 0.0,\n", + " 'Unfunded Standard Units': 0.0,\n", + " 'Unfunded Costs': 0.0,\n", + " 'Unfunded GPRA Acres': 0.0,\n", + " 'Unfunded Metric Units': 0.0,\n", + " 'Funded Standard Units': 0.0,\n", + " 'Funded Costs': 0.0,\n", + " 'Funded GPRA Acres': 0.0,\n", + " 'Funded Metric Units': 0.0,\n", + " 'Completed Standard Units': 2.0,\n", + " 'Completed Costs': 10000.0,\n", + " 'Completed GPRA Acres': 0.2,\n", + " 'Completed Metric Units': 2.0,\n", + " 'Unnamed: 40': nan},\n", + " {'AMLIS Key': 'HI000012',\n", + " 'State/Tribe': 'HI',\n", + " 'County': 'MATANUSKA-SUSITNA',\n", + " 'Congressional District': 1.0,\n", + " 'Quadrangle Name': 'ANCHORAGE C-8',\n", + " 'Watershed': nan,\n", + " 'HUC Code': nan,\n", + " 'FIPS Code': '02170',\n", + " 'Latitude': 20.825369670478306,\n", + " 'Longitude': -156.33064622489087,\n", + " 'Funding Source / Program': 'FRA',\n", + " 'Problem Area Name': 'EAST HOUSTON MINE',\n", + " 'Problem Area Number': 1,\n", + " 'Planning Unit Name': 'HOUSTON',\n", + " 'Planning Unit Number': '1',\n", + " 'Problem Priority': '1',\n", + " 'Problem Type': 'VO',\n", + " 'Mining Type': 'S',\n", + " 'Ore Types': nan,\n", + " 'Date Prepared': '12/3/1986 12:00:00 AM',\n", + " 'Date Revised': '4/23/2014 6:40:28 PM',\n", + " 'Private Owner %': 0.0,\n", + " 'State Owner %': 0.0,\n", + " 'Other Federal Owner %': 0.0,\n", + " 'Park Service Owner %': 0.0,\n", + " 'Forest Service Owner %': 0.0,\n", + " 'Indian Owner %': 0.0,\n", + " 'BLM Owner %': 0.0,\n", + " 'Unfunded Standard Units': 0.0,\n", + " 'Unfunded Costs': 0.0,\n", + " 'Unfunded GPRA Acres': 0.0,\n", + " 'Unfunded Metric Units': 0.0,\n", + " 'Funded Standard Units': 0.0,\n", + " 'Funded Costs': 0.0,\n", + " 'Funded GPRA Acres': 0.0,\n", + " 'Funded Metric Units': 0.0,\n", + " 'Completed Standard Units': 2.0,\n", + " 'Completed Costs': 10000.0,\n", + " 'Completed GPRA Acres': 0.2,\n", + " 'Completed Metric Units': 2.0,\n", + " 'Unnamed: 40': nan},\n", + " {'AMLIS Key': 'HI000013',\n", + " 'State/Tribe': 'HI',\n", + " 'County': 'MATANUSKA-SUSITNA',\n", + " 'Congressional District': 1.0,\n", + " 'Quadrangle Name': 'ANCHORAGE C-8',\n", + " 'Watershed': nan,\n", + " 'HUC Code': nan,\n", + " 'FIPS Code': '02170',\n", + " 'Latitude': 20.9170439162332,\n", + " 'Longitude': -156.54289869319305,\n", + " 'Funding Source / Program': 'FRA',\n", + " 'Problem Area Name': 'EAST HOUSTON MINE',\n", + " 'Problem Area Number': 1,\n", + " 'Planning Unit Name': 'HOUSTON',\n", + " 'Planning Unit Number': '1',\n", + " 'Problem Priority': '1',\n", + " 'Problem Type': 'VO',\n", + " 'Mining Type': 'S',\n", + " 'Ore Types': nan,\n", + " 'Date Prepared': '12/3/1986 12:00:00 AM',\n", + " 'Date Revised': '4/23/2014 6:40:28 PM',\n", + " 'Private Owner %': 0.0,\n", + " 'State Owner %': 0.0,\n", + " 'Other Federal Owner %': 0.0,\n", + " 'Park Service Owner %': 0.0,\n", + " 'Forest Service Owner %': 0.0,\n", + " 'Indian Owner %': 0.0,\n", + " 'BLM Owner %': 0.0,\n", + " 'Unfunded Standard Units': 0.0,\n", + " 'Unfunded Costs': 0.0,\n", + " 'Unfunded GPRA Acres': 0.0,\n", + " 'Unfunded Metric Units': 0.0,\n", + " 'Funded Standard Units': 0.0,\n", + " 'Funded Costs': 0.0,\n", + " 'Funded GPRA Acres': 0.0,\n", + " 'Funded Metric Units': 0.0,\n", + " 'Completed Standard Units': 2.0,\n", + " 'Completed Costs': 10000.0,\n", + " 'Completed GPRA Acres': 0.2,\n", + " 'Completed Metric Units': 2.0,\n", + " 'Unnamed: 40': nan},\n", + " {'AMLIS Key': 'HI000014',\n", + " 'State/Tribe': 'HI',\n", + " 'County': 'MATANUSKA-SUSITNA',\n", + " 'Congressional District': 1.0,\n", + " 'Quadrangle Name': 'ANCHORAGE C-8',\n", + " 'Watershed': nan,\n", + " 'HUC Code': nan,\n", + " 'FIPS Code': '02170',\n", + " 'Latitude': 21.556464980367483,\n", + " 'Longitude': -157.89225964427064,\n", + " 'Funding Source / Program': 'FRA',\n", + " 'Problem Area Name': 'EAST HOUSTON MINE',\n", + " 'Problem Area Number': 1,\n", + " 'Planning Unit Name': 'HOUSTON',\n", + " 'Planning Unit Number': '1',\n", + " 'Problem Priority': '1',\n", + " 'Problem Type': 'VO',\n", + " 'Mining Type': 'S',\n", + " 'Ore Types': nan,\n", + " 'Date Prepared': '12/3/1986 12:00:00 AM',\n", + " 'Date Revised': '4/23/2014 6:40:28 PM',\n", + " 'Private Owner %': 0.0,\n", + " 'State Owner %': 0.0,\n", + " 'Other Federal Owner %': 0.0,\n", + " 'Park Service Owner %': 0.0,\n", + " 'Forest Service Owner %': 0.0,\n", + " 'Indian Owner %': 0.0,\n", + " 'BLM Owner %': 0.0,\n", + " 'Unfunded Standard Units': 0.0,\n", + " 'Unfunded Costs': 0.0,\n", + " 'Unfunded GPRA Acres': 0.0,\n", + " 'Unfunded Metric Units': 0.0,\n", + " 'Funded Standard Units': 0.0,\n", + " 'Funded Costs': 0.0,\n", + " 'Funded GPRA Acres': 0.0,\n", + " 'Funded Metric Units': 0.0,\n", + " 'Completed Standard Units': 2.0,\n", + " 'Completed Costs': 10000.0,\n", + " 'Completed GPRA Acres': 0.2,\n", + " 'Completed Metric Units': 2.0,\n", + " 'Unnamed: 40': nan},\n", + " {'AMLIS Key': 'HI000015',\n", + " 'State/Tribe': 'HI',\n", + " 'County': 'MATANUSKA-SUSITNA',\n", + " 'Congressional District': 1.0,\n", + " 'Quadrangle Name': 'ANCHORAGE C-8',\n", + " 'Watershed': nan,\n", + " 'HUC Code': nan,\n", + " 'FIPS Code': '02170',\n", + " 'Latitude': 21.90754283544759,\n", + " 'Longitude': -159.48416846823164,\n", + " 'Funding Source / Program': 'FRA',\n", + " 'Problem Area Name': 'EAST HOUSTON MINE',\n", + " 'Problem Area Number': 1,\n", + " 'Planning Unit Name': 'HOUSTON',\n", + " 'Planning Unit Number': '1',\n", + " 'Problem Priority': '1',\n", + " 'Problem Type': 'VO',\n", + " 'Mining Type': 'S',\n", + " 'Ore Types': nan,\n", + " 'Date Prepared': '12/3/1986 12:00:00 AM',\n", + " 'Date Revised': '4/23/2014 6:40:28 PM',\n", + " 'Private Owner %': 0.0,\n", + " 'State Owner %': 0.0,\n", + " 'Other Federal Owner %': 0.0,\n", + " 'Park Service Owner %': 0.0,\n", + " 'Forest Service Owner %': 0.0,\n", + " 'Indian Owner %': 0.0,\n", + " 'BLM Owner %': 0.0,\n", + " 'Unfunded Standard Units': 0.0,\n", + " 'Unfunded Costs': 0.0,\n", + " 'Unfunded GPRA Acres': 0.0,\n", + " 'Unfunded Metric Units': 0.0,\n", + " 'Funded Standard Units': 0.0,\n", + " 'Funded Costs': 0.0,\n", + " 'Funded GPRA Acres': 0.0,\n", + " 'Funded Metric Units': 0.0,\n", + " 'Completed Standard Units': 2.0,\n", + " 'Completed Costs': 10000.0,\n", + " 'Completed GPRA Acres': 0.2,\n", + " 'Completed Metric Units': 2.0,\n", + " 'Unnamed: 40': nan}]" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rows" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "d6b1d835-deb2-4bbd-b33e-460ba94cf192", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{(-117.11772856883819, 36.25161281807095): '06027000800',\n", + " (-121.0070599015156, 36.5498780497345): '06069000802',\n", + " (-121.40564726784282, 38.84602113669345): '06061021322',\n", + " (-155.10321769858746, 19.49784370888389): '15001021010',\n", + " (-154.89548634140738, 19.446650238354696): '15001021101',\n", + " (-159.43665201302525, 21.904412260968197): '15007040603',\n", + " (-159.52362041178708, 21.94208315793464): '15007040700',\n", + " (-156.14177664396527, 20.72796381691298): '15009030100',\n", + " (-156.2497797752935, 20.86486713282688): '15009030201',\n", + " (-155.91378867633992, 19.516629328900667): '15001021402',\n", + " (-155.81110884967674, 20.164406070883054): '15001021800',\n", + " (-156.33064622489087, 20.825369670478306): '15009030402',\n", + " (-156.54289869319305, 20.9170439162332): '15009030800',\n", + " (-157.89225964427064, 21.556464980367483): '15003010201',\n", + " (-159.48416846823164, 21.90754283544759): '15007040604'}" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lookup_table" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} 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 new file mode 100644 index 000000000..4e1109c35 --- /dev/null +++ b/data/data-pipeline/data_pipeline/ipython/generate_fuds_test_data.ipynb @@ -0,0 +1,1498 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "8c11c900-b1e9-48c2-967d-7fd2eb85cac1", + "metadata": {}, + "source": [ + "# Generate FUDS test data\n", + "\n", + "Creating the fixture data for the Formerly Used Defense Sites (FUDS) is pretty involved. The below walks through creating the data and then eyeballing it so you can check your test results. So, if the FUDS updates and you want to generate new sample data for your tests, run this notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "f8ab7cf7-3124-41f3-9c62-0633d7815686", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import sys\n", + "from data_pipeline.etl.sources.geo_utils import add_tracts_for_geometries\n", + "import json\n", + "\n", + "# Add this project to the path\n", + "module_path = os.path.abspath(os.path.join(\"../..\"))\n", + "if module_path not in sys.path:\n", + " sys.path.append(module_path)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "f59dc003-7df1-48c2-9278-86e1f8c65355", + "metadata": {}, + "outputs": [], + "source": [ + "import geopandas as gpd\n", + "import pandas as pd\n", + "from data_pipeline.etl.sources.census.etl import CensusETL\n", + "from data_pipeline.etl.sources.us_army_fuds.etl import USArmyFUDS" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "598dfe82-04b9-4e9c-a74b-a18c9db6688c", + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext lab_black" + ] + }, + { + "cell_type": "markdown", + "id": "53b68b92-e575-4404-b79d-7dceb302f588", + "metadata": {}, + "source": [ + "# Load the source data and census tract data" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "2c4e0d6b-1dab-4e0a-952b-6cf9b11700da", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-08-10 17:57:23,542 [data_pipeline.etl.sources.us_army_fuds.etl] INFO Starting data download.\n", + "2022-08-10 17:57:23,542 [data_pipeline.utils] INFO Downloading https://opendata.arcgis.com/api/v3/datasets/3f8354667d5b4b1b8ad7a6e00c3cf3b1_1/downloads/data?format=geojson&spatialRefId=4326&where=1%3D1\n" + ] + } + ], + "source": [ + "# get the data\n", + "etl = USArmyFUDS()\n", + "etl.extract()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "c5752c7e-174d-451c-b123-d41b805f11ff", + "metadata": {}, + "outputs": [], + "source": [ + "df = gpd.read_file(etl.DOWNLOAD_FILE_NAME, lowmemory=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "8b372cc7-e44b-4a3a-a482-50870138401f", + "metadata": {}, + "outputs": [], + "source": [ + "census_tracts = gpd.read_file(CensusETL.NATIONAL_TRACT_JSON_PATH)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "e211b168-faf9-4b2e-a654-126d11ce9367", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 74134 entries, 0 to 74133\n", + "Data columns (total 13 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 STATEFP10 74134 non-null object \n", + " 1 COUNTYFP10 74134 non-null object \n", + " 2 TRACTCE10 74134 non-null object \n", + " 3 GEOID10 74134 non-null object \n", + " 4 NAME10 74134 non-null object \n", + " 5 NAMELSAD10 74134 non-null object \n", + " 6 MTFCC10 74134 non-null object \n", + " 7 FUNCSTAT10 74134 non-null object \n", + " 8 ALAND10 74134 non-null int64 \n", + " 9 AWATER10 74134 non-null int64 \n", + " 10 INTPTLAT10 74134 non-null object \n", + " 11 INTPTLON10 74134 non-null object \n", + " 12 geometry 74134 non-null geometry\n", + "dtypes: geometry(1), int64(2), object(10)\n", + "memory usage: 7.4+ MB\n" + ] + } + ], + "source": [ + "census_tracts.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "b8edbb53-b8d8-4a85-acc1-da880435f945", + "metadata": {}, + "outputs": [], + "source": [ + "census_tracts.set_index(\"GEOID10\", inplace=True)" + ] + }, + { + "cell_type": "markdown", + "id": "d5f5a152-dbaa-4c5b-93a9-813d92f9f504", + "metadata": { + "tags": [] + }, + "source": [ + "# Generate the test data" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "5890aa7e-bce2-484e-ad52-a4b4742ea81d", + "metadata": {}, + "outputs": [], + "source": [ + "with open(etl.DOWNLOAD_FILE_NAME) as geojson:\n", + " raw_fuds_geojson = json.load(geojson)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "8977d7b4-6cdf-49e6-84b6-016576663a58", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/matt/.cache/pypoetry/virtualenvs/justice40-data-pipeline-IwBjhw-4-py3.10/lib/python3.10/site-packages/IPython/core/interactiveshell.py:3524: FutureWarning: The `op` parameter is deprecated and will be removed in a future release. Please use the `predicate` parameter instead.\n", + " exec(code_obj, self.user_global_ns, self.user_ns)\n" + ] + } + ], + "source": [ + "tract_df = add_tracts_for_geometries(df)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "2fdc8327-fea6-4e46-aceb-6e000e709716", + "metadata": {}, + "outputs": [], + "source": [ + "example_geoids = pd.read_csv(\n", + " \"../tests/sources/example/data/extract.csv\", dtype=\"object\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "4c642f03-aeac-450a-9ac1-51038d2002e0", + "metadata": {}, + "outputs": [], + "source": [ + "merged_exaple_data = pd.merge(\n", + " example_geoids[\"GEOID10_TRACT\"],\n", + " tract_df,\n", + " on=\"GEOID10_TRACT\",\n", + " how=\"left\",\n", + " indicator=True,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "1b3e5fff-41cd-4c6d-8f37-3ce2c0fe66bf", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
GEOID10_TRACTOBJECTIDCENTROIDLATCENTROIDLONGCLOSESTCITYCONGRESSIONALDISTRICTCOUNTYCURRENTOWNERDODFUDSPROPERTYIDPKELIGIBILITY...STATESTATUSSTATUSCODEUSACEDISTRICTFISCALYEARPROPERTY_HISTORYUSACEDIVISIONgeometryindex_right_merge
2115001021010NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNoneNaNleft_only
3215001021402NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNoneNaNleft_only
3615009030402NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNoneNaNleft_only
3715009030800NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNoneNaNleft_only
4115007040604NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNoneNaNleft_only
\n", + "

5 rows × 35 columns

\n", + "
" + ], + "text/plain": [ + " GEOID10_TRACT OBJECTID CENTROIDLAT CENTROIDLONG CLOSESTCITY \\\n", + "21 15001021010 NaN NaN NaN NaN \n", + "32 15001021402 NaN NaN NaN NaN \n", + "36 15009030402 NaN NaN NaN NaN \n", + "37 15009030800 NaN NaN NaN NaN \n", + "41 15007040604 NaN NaN NaN NaN \n", + "\n", + " CONGRESSIONALDISTRICT COUNTY CURRENTOWNER DODFUDSPROPERTYIDPK ELIGIBILITY \\\n", + "21 NaN NaN NaN NaN NaN \n", + "32 NaN NaN NaN NaN NaN \n", + "36 NaN NaN NaN NaN NaN \n", + "37 NaN NaN NaN NaN NaN \n", + "41 NaN NaN NaN NaN NaN \n", + "\n", + " ... STATE STATUS STATUSCODE USACEDISTRICT FISCALYEAR PROPERTY_HISTORY \\\n", + "21 ... NaN NaN NaN NaN NaN NaN \n", + "32 ... NaN NaN NaN NaN NaN NaN \n", + "36 ... NaN NaN NaN NaN NaN NaN \n", + "37 ... NaN NaN NaN NaN NaN NaN \n", + "41 ... NaN NaN NaN NaN NaN NaN \n", + "\n", + " USACEDIVISION geometry index_right _merge \n", + "21 NaN None NaN left_only \n", + "32 NaN None NaN left_only \n", + "36 NaN None NaN left_only \n", + "37 NaN None NaN left_only \n", + "41 NaN None NaN left_only \n", + "\n", + "[5 rows x 35 columns]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "merged_exaple_data[merged_exaple_data[\"_merge\"] == \"left_only\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "b97e3aa3-88d0-4748-b7bb-77365078ea38", + "metadata": {}, + "outputs": [], + "source": [ + "original_crs = census_tracts.crs\n", + "points = (\n", + " census_tracts.to_crs(epsg=3395)\n", + " .loc[\n", + " merged_exaple_data[(merged_exaple_data[\"_merge\"] == \"left_only\")]\n", + " .query('not GEOID10_TRACT.str.startswith(\"06\")')\n", + " .GEOID10_TRACT\n", + " ]\n", + " .centroid.to_crs(original_crs)\n", + " .to_dict()\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "a2ebcfec-ec7c-454e-ac0f-cee14a93989f", + "metadata": {}, + "outputs": [], + "source": [ + "object_ids_to_keep = set(\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", + " if feature[\"properties\"][\"OBJECTID\"] in object_ids_to_keep:\n", + " features.append(feature)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "703bf1cd-e150-461d-8eed-ce35a593c28a", + "metadata": {}, + "outputs": [], + "source": [ + "def make_fake_feature(\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", + " return {\n", + " \"type\": \"Feature\",\n", + " \"properties\": {\n", + " \"OBJECTID\": make_fake_feature._object_id,\n", + " \"CENTROIDLAT\": None,\n", + " \"CENTROIDLONG\": None,\n", + " \"CLOSESTCITY\": None,\n", + " \"CONGRESSIONALDISTRICT\": \"15\",\n", + " \"COUNTY\": None,\n", + " \"CURRENTOWNER\": None,\n", + " \"DODFUDSPROPERTYIDPK\": \" \",\n", + " \"ELIGIBILITY\": \"Eligible\" if is_eligible else \"Ineligible\",\n", + " \"EMSMGMTACTIONPLANLINK\": \"https://fudsportal.usace.army.mil/ems/inventory/map?id=54113\",\n", + " \"EPAREGION\": \"06\",\n", + " \"FEATUREDESCRIPTION\": None,\n", + " \"FEATURENAME\": \"NEIL, ET AL, PROPERTIES\",\n", + " \"FUDSINSTALLATIONID\": None,\n", + " \"FUDSUNIQUEPROPERTYNUMBER\": \"K06TX1120\",\n", + " \"HASPROJECTS\": \"Yes\" if has_projects else \"No\",\n", + " \"LATITUDE\": latitude,\n", + " \"LONGITUDE\": longitude,\n", + " \"MEDIAID\": None,\n", + " \"METADATAID\": None,\n", + " \"NOFURTHERACTION\": None,\n", + " \"PROJECTREQUIRED\": \"No\",\n", + " \"SDSID\": None,\n", + " \"SITEELIGIBILITY\": None,\n", + " \"STATE\": state,\n", + " \"STATUS\": \"Properties with projects\"\n", + " if has_projects\n", + " else \"Properties without projects\",\n", + " \"STATUSCODE\": \"Not on the NPL\",\n", + " \"USACEDISTRICT\": \"swf\",\n", + " \"FISCALYEAR\": \"2019\",\n", + " \"PROPERTY_HISTORY\": None,\n", + " \"USACEDIVISION\": \"swd\",\n", + " },\n", + " \"geometry\": {\n", + " \"type\": \"Point\",\n", + " \"coordinates\": [longitude, latitude],\n", + " },\n", + " }\n", + "\n", + "\n", + "make_fake_feature._object_id = 50" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "5e020301-a22f-4b42-9aea-127c0d2fe718", + "metadata": {}, + "outputs": [], + "source": [ + "# 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(\n", + " make_fake_feature(\"CA\", bools[0], bools[1], point.y, point.x)\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "eb278e9b-e86d-459b-8961-89696e8173ea", + "metadata": {}, + "outputs": [], + "source": [ + "test_fuds_geojson = raw_fuds_geojson.copy()\n", + "test_fuds_geojson[\"features\"] = features" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "01e7fea9-cd9e-4f62-b498-f1cb8cb30f04", + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"../tests/sources/us_army_fuds/data/fuds.geojson\", \"w\") as outfile:\n", + " json.dump(test_fuds_geojson, outfile)" + ] + }, + { + "cell_type": "markdown", + "id": "5300ea7d-ecc7-4502-bda8-abe9bb183e13", + "metadata": {}, + "source": [ + "# Eyeball the data to check the results of the tests" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "3b912164-8b07-417b-93ff-4180823fe485", + "metadata": {}, + "outputs": [], + "source": [ + "test_frame = gpd.read_file(\"../tests/sources/us_army_fuds/data/fuds.geojson\")" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "82603b6b-bf87-4b5c-9e17-0898ccbb43b3", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/matt/.cache/pypoetry/virtualenvs/justice40-data-pipeline-IwBjhw-4-py3.10/lib/python3.10/site-packages/IPython/core/interactiveshell.py:3524: FutureWarning: The `op` parameter is deprecated and will be removed in a future release. Please use the `predicate` parameter instead.\n", + " exec(code_obj, self.user_global_ns, self.user_ns)\n" + ] + } + ], + "source": [ + "test_frame_with_tracts_full = (\n", + " test_frame_with_tracts\n", + ") = add_tracts_for_geometries(test_frame)" + ] + }, + { + "cell_type": "markdown", + "id": "6829ace4-0289-4d25-915e-4f95d00777ac", + "metadata": {}, + "source": [ + "## Pre-compute the long, lat: tract relationship for use in a mock in the tests" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "c085d3a6-dcb4-4f64-b654-68516e6268d1", + "metadata": {}, + "outputs": [], + "source": [ + "test_frame_with_tracts = test_frame_with_tracts.set_index(\n", + " [\"GEOID10_TRACT\", \"OBJECTID\"]\n", + ")[[\"ELIGIBILITY\", \"HASPROJECTS\"]]" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "41f6649a-f31c-4fac-a72d-a38f79de499a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{(-121.39361572299998, 38.87463378900003): '06061021322',\n", + " (-121.40020751999998, 38.897583008000026): '06061021322',\n", + " (-121.40020751999998, 38.75158691400003): '06061021322',\n", + " (-157.84301757799997, 21.53619384800004): '15003010201',\n", + " (-157.85168456999997, 21.553405762000068): '15003010201',\n", + " (-157.90679931599996, 21.554199219000054): '15003010201',\n", + " (-159.52191162099996, 21.976623535000044): '15007040700',\n", + " (-159.52996826199998, 21.93762207000003): '15007040700',\n", + " (-159.52111816399997, 21.922607422000056): '15007040700',\n", + " (-156.14270019499997, 20.840393066000047): '15009030100',\n", + " (-155.85968017599998, 20.26519775400004): '15001021800',\n", + " (-155.73327636699997, 20.166809082000043): '15001021800',\n", + " (-155.89270019499997, 20.23522949200003): '15001021800',\n", + " (-156.26019287099996, 20.899414062000062): '15009030201',\n", + " (-156.22076415999996, 20.91241455100004): '15009030201',\n", + " (-156.20739746099997, 20.890991211000028): '15009030201',\n", + " (-159.46496581999997, 21.90460205100004): '15007040603',\n", + " (-159.46441650399998, 21.905212402000075): '15007040603',\n", + " (-154.82519531299997, 19.49182128900003): '15001021101',\n", + " (-121.06768798799999, 36.61480712900004): '06069000802',\n", + " (-117.391601563, 36.33343505900007): '06027000800',\n", + " (-117.85546874999994, 36.46960449200003): '06027000800',\n", + " (-117.23529052699996, 36.387634277000075): '06027000800',\n", + " (-118.15270996099997, 36.725219727000024): '06027000800',\n", + " (-118.13891601599994, 36.56683349600007): '06027000800',\n", + " (-117.311096191, 36.783386230000076): '06027000800',\n", + " (-118.00030517599998, 36.283813477000024): '06027000800',\n", + " (-116.86248779299996, 36.46124267600004): '06027000800',\n", + " (-117.16418456999997, 36.60681152300003): '06027000800',\n", + " (-117.06939697299998, 36.158386230000076): '06027000800',\n", + " (-117.873596191, 36.487609863000046): '06027000800',\n", + " (-116.82971191399997, 36.283386230000076): '06027000800',\n", + " (-117.21667480499997, 35.95843505900007): '06027000800',\n", + " (-118.04998779299996, 36.59478759800004): '06027000800',\n", + " (-117.03576660199997, 36.27801513700007): '06027000800',\n", + " (-116.10028076199995, 35.83380127000004): '06027000800',\n", + " (-117.86499023399995, 36.14422607400007): '06027000800',\n", + " (-155.10320912843935, 19.497857096442765): '15001021010',\n", + " (-155.91378674587037, 19.516632121497878): '15001021402',\n", + " (-156.3306524489697, 20.825377142028497): '15009030402',\n", + " (-156.5429023670438, 20.917074254751412): '15009030800',\n", + " (-159.48416820625405, 21.907546119100093): '15007040604'}" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "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", + "tracts.set_index(\"lat_long\")[\"GEOID10_TRACT\"].to_dict()" + ] + }, + { + "cell_type": "markdown", + "id": "22d109ae-9bc4-499f-9d58-1b7db2842a37", + "metadata": {}, + "source": [ + "## Look at the sample data itself" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "399b009a-8d52-4872-87ac-1aa1e82a7d67", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ELIGIBILITYHASPROJECTS
GEOID10_TRACTOBJECTID
06061021322684EligibleNo
1719EligibleYes
7428EligibleNo
150030102011538EligibleYes
1629EligibleNo
6062EligibleYes
150070407002093EligibleYes
2123EligibleNo
6015EligibleNo
150090301002217EligibleNo
150010218004551EligibleNo
4735EligibleNo
5310EligibleYes
150090302014622EligibleYes
5292EligibleNo
5832EligibleNo
150070406034669EligibleNo
6013EligibleNo
150010211014694EligibleNo
060690008026974EligibleYes
060270008007018EligibleNo
7046IneligibleNo
7565IneligibleNo
7689EligibleYes
7691EligibleYes
7831IneligibleNo
7866EligibleNo
7977EligibleNo
8235IneligibleNo
8237IneligibleNo
8499IneligibleNo
8500IneligibleNo
8557EligibleNo
8624IneligibleNo
8742IneligibleNo
9012IneligibleNo
9035EligibleYes
1500102101051EligibleYes
52IneligibleYes
53IneligibleNo
1500102140254EligibleYes
55IneligibleYes
56IneligibleNo
1500903040257EligibleYes
58IneligibleYes
59IneligibleNo
1500903080060EligibleYes
61IneligibleYes
62IneligibleNo
1500704060463EligibleYes
64IneligibleYes
65IneligibleNo
\n", + "
" + ], + "text/plain": [ + " ELIGIBILITY HASPROJECTS\n", + "GEOID10_TRACT OBJECTID \n", + "06061021322 684 Eligible No\n", + " 1719 Eligible Yes\n", + " 7428 Eligible No\n", + "15003010201 1538 Eligible Yes\n", + " 1629 Eligible No\n", + " 6062 Eligible Yes\n", + "15007040700 2093 Eligible Yes\n", + " 2123 Eligible No\n", + " 6015 Eligible No\n", + "15009030100 2217 Eligible No\n", + "15001021800 4551 Eligible No\n", + " 4735 Eligible No\n", + " 5310 Eligible Yes\n", + "15009030201 4622 Eligible Yes\n", + " 5292 Eligible No\n", + " 5832 Eligible No\n", + "15007040603 4669 Eligible No\n", + " 6013 Eligible No\n", + "15001021101 4694 Eligible No\n", + "06069000802 6974 Eligible Yes\n", + "06027000800 7018 Eligible No\n", + " 7046 Ineligible No\n", + " 7565 Ineligible No\n", + " 7689 Eligible Yes\n", + " 7691 Eligible Yes\n", + " 7831 Ineligible No\n", + " 7866 Eligible No\n", + " 7977 Eligible No\n", + " 8235 Ineligible No\n", + " 8237 Ineligible No\n", + " 8499 Ineligible No\n", + " 8500 Ineligible No\n", + " 8557 Eligible No\n", + " 8624 Ineligible No\n", + " 8742 Ineligible No\n", + " 9012 Ineligible No\n", + " 9035 Eligible Yes\n", + "15001021010 51 Eligible Yes\n", + " 52 Ineligible Yes\n", + " 53 Ineligible No\n", + "15001021402 54 Eligible Yes\n", + " 55 Ineligible Yes\n", + " 56 Ineligible No\n", + "15009030402 57 Eligible Yes\n", + " 58 Ineligible Yes\n", + " 59 Ineligible No\n", + "15009030800 60 Eligible Yes\n", + " 61 Ineligible Yes\n", + " 62 Ineligible No\n", + "15007040604 63 Eligible Yes\n", + " 64 Ineligible Yes\n", + " 65 Ineligible No" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test_frame_with_tracts" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "2a48b84d-418e-4690-925e-ba397ab3b239", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ELIGIBILITYHASPROJECTS
GEOID10_TRACTOBJECTID
060270008007018EligibleNo
7046IneligibleNo
7565IneligibleNo
7689EligibleYes
7691EligibleYes
7831IneligibleNo
7866EligibleNo
7977EligibleNo
8235IneligibleNo
8237IneligibleNo
8499IneligibleNo
8500IneligibleNo
8557EligibleNo
8624IneligibleNo
8742IneligibleNo
9012IneligibleNo
9035EligibleYes
06061021322684EligibleNo
1719EligibleYes
7428EligibleNo
060690008026974EligibleYes
1500102101051EligibleYes
52IneligibleYes
53IneligibleNo
150010211014694EligibleNo
1500102140254EligibleYes
55IneligibleYes
56IneligibleNo
150010218004551EligibleNo
4735EligibleNo
5310EligibleYes
150030102011538EligibleYes
1629EligibleNo
6062EligibleYes
150070406034669EligibleNo
6013EligibleNo
1500704060463EligibleYes
64IneligibleYes
65IneligibleNo
150070407002093EligibleYes
2123EligibleNo
6015EligibleNo
150090301002217EligibleNo
150090302014622EligibleYes
5292EligibleNo
5832EligibleNo
1500903040257EligibleYes
58IneligibleYes
59IneligibleNo
1500903080060EligibleYes
61IneligibleYes
62IneligibleNo
\n", + "
" + ], + "text/plain": [ + " ELIGIBILITY HASPROJECTS\n", + "GEOID10_TRACT OBJECTID \n", + "06027000800 7018 Eligible No\n", + " 7046 Ineligible No\n", + " 7565 Ineligible No\n", + " 7689 Eligible Yes\n", + " 7691 Eligible Yes\n", + " 7831 Ineligible No\n", + " 7866 Eligible No\n", + " 7977 Eligible No\n", + " 8235 Ineligible No\n", + " 8237 Ineligible No\n", + " 8499 Ineligible No\n", + " 8500 Ineligible No\n", + " 8557 Eligible No\n", + " 8624 Ineligible No\n", + " 8742 Ineligible No\n", + " 9012 Ineligible No\n", + " 9035 Eligible Yes\n", + "06061021322 684 Eligible No\n", + " 1719 Eligible Yes\n", + " 7428 Eligible No\n", + "06069000802 6974 Eligible Yes\n", + "15001021010 51 Eligible Yes\n", + " 52 Ineligible Yes\n", + " 53 Ineligible No\n", + "15001021101 4694 Eligible No\n", + "15001021402 54 Eligible Yes\n", + " 55 Ineligible Yes\n", + " 56 Ineligible No\n", + "15001021800 4551 Eligible No\n", + " 4735 Eligible No\n", + " 5310 Eligible Yes\n", + "15003010201 1538 Eligible Yes\n", + " 1629 Eligible No\n", + " 6062 Eligible Yes\n", + "15007040603 4669 Eligible No\n", + " 6013 Eligible No\n", + "15007040604 63 Eligible Yes\n", + " 64 Ineligible Yes\n", + " 65 Ineligible No\n", + "15007040700 2093 Eligible Yes\n", + " 2123 Eligible No\n", + " 6015 Eligible No\n", + "15009030100 2217 Eligible No\n", + "15009030201 4622 Eligible Yes\n", + " 5292 Eligible No\n", + " 5832 Eligible No\n", + "15009030402 57 Eligible Yes\n", + " 58 Ineligible Yes\n", + " 59 Ineligible No\n", + "15009030800 60 Eligible Yes\n", + " 61 Ineligible Yes\n", + " 62 Ineligible No" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test_frame_with_tracts.sort_index()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/data/data-pipeline/data_pipeline/ipython/geojson_compare_tiles.ipynb b/data/data-pipeline/data_pipeline/ipython/geojson_compare_tiles.ipynb new file mode 100644 index 000000000..79fa3336c --- /dev/null +++ b/data/data-pipeline/data_pipeline/ipython/geojson_compare_tiles.ipynb @@ -0,0 +1,507 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "27da604f", + "metadata": {}, + "outputs": [], + "source": [ + "# %load_ext lab_black\n", + "import json\n", + "import pandas as pd\n", + "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\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "7b7083fd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 None\n", + "1 None\n", + "2 None\n", + "3 None\n", + "4 None\n", + " ... \n", + "74129 None\n", + "74130 None\n", + "74131 None\n", + "74132 None\n", + "74133 None\n", + "Name: FUDS_RAW, Length: 74134, dtype: object" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nation[\"FUDS_RAW\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "117477e6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
GEOID10SFCFHRS_ETAML_ETAML_RAWFUDS_ETFUDS_RAW
027139080202MinnesotaScott CountyNoneFalseNoneFalseNone
127139080204MinnesotaScott CountyNoneFalseNoneFalseNone
227139080100MinnesotaScott CountyNoneFalseNoneFalseNone
327139080302MinnesotaScott CountyNoneFalseNoneFalseNone
427139080400MinnesotaScott CountyNoneFalseNoneFalseNone
...........................
7412916005001601IdahoBannock CountyNoneFalseNoneFalseNone
7413016005001300IdahoBannock CountyNoneFalseNoneFalseNone
7413116005001000IdahoBannock CountyNoneFalseNoneFalseNone
7413216005000900IdahoBannock CountyNoneFalseNoneFalseNone
7413316005000800IdahoBannock CountyNoneFalseNoneFalseNone
\n", + "

74134 rows × 8 columns

\n", + "
" + ], + "text/plain": [ + " GEOID10 SF CF HRS_ET AML_ET AML_RAW FUDS_ET \\\n", + "0 27139080202 Minnesota Scott County None False None False \n", + "1 27139080204 Minnesota Scott County None False None False \n", + "2 27139080100 Minnesota Scott County None False None False \n", + "3 27139080302 Minnesota Scott County None False None False \n", + "4 27139080400 Minnesota Scott County None False None False \n", + "... ... ... ... ... ... ... ... \n", + "74129 16005001601 Idaho Bannock County None False None False \n", + "74130 16005001300 Idaho Bannock County None False None False \n", + "74131 16005001000 Idaho Bannock County None False None False \n", + "74132 16005000900 Idaho Bannock County None False None False \n", + "74133 16005000800 Idaho Bannock County None False None False \n", + "\n", + " FUDS_RAW \n", + "0 None \n", + "1 None \n", + "2 None \n", + "3 None \n", + "4 None \n", + "... ... \n", + "74129 None \n", + "74130 None \n", + "74131 None \n", + "74132 None \n", + "74133 None \n", + "\n", + "[74134 rows x 8 columns]" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "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" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "0f37acf4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([None, '0', '1'], dtype=object)" + ] + }, + "execution_count": 68, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nation_new_ind[\"HRS_ET\"].unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "id": "4ae865ae", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 8843\n", + "1 4045\n", + "Name: HRS_ET, dtype: int64" + ] + }, + "execution_count": 69, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nation_new_ind[\"HRS_ET\"].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "2f0d29db", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([False, True])" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nation_new_ind[\"AML_ET\"].unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "646b3754", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False 72100\n", + "True 2034\n", + "Name: AML_ET, dtype: int64" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nation_new_ind[\"AML_ET\"].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "0571df6d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([None, '1'], dtype=object)" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nation_new_ind[\"AML_RAW\"].unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "171fa3c9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1 2034\n", + "Name: AML_RAW, dtype: int64" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nation_new_ind[\"AML_RAW\"].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "370b0769", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([False, True])" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nation_new_ind[\"FUDS_ET\"].unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "f8afb668", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False 72056\n", + "True 2078\n", + "Name: FUDS_ET, dtype: int64" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nation_new_ind[\"FUDS_ET\"].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "id": "f2e3b78a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([None, '0', '1'], dtype=object)" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nation_new_ind[\"FUDS_RAW\"].unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "b722e802", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 3170\n", + "1 2078\n", + "Name: FUDS_RAW, dtype: int64" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nation_new_ind[\"FUDS_RAW\"].value_counts()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/data/data-pipeline/data_pipeline/ipython/geopandas_speed_test.ipynb b/data/data-pipeline/data_pipeline/ipython/geopandas_speed_test.ipynb new file mode 100644 index 000000000..01e121ef4 --- /dev/null +++ b/data/data-pipeline/data_pipeline/ipython/geopandas_speed_test.ipynb @@ -0,0 +1,130 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "e0b801f9", + "metadata": {}, + "outputs": [], + "source": [ + "import geopandas as gpd\n", + "import pyogrio\n", + "from data_pipeline.etl.sources.census.etl import CensusETL\n", + "\n", + "import time" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "c4cbab25", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time taken to execute the function using pyogrio is 63.07696199417114\n" + ] + } + ], + "source": [ + "begin = time.time()\n", + "census_tract_gdf = gpd.read_file(\n", + " CensusETL.NATIONAL_TRACT_JSON_PATH,\n", + " # Use `pyogrio` because it's vectorized and faster.\n", + " engine=\"pyogrio\",\n", + ")\n", + "end = time.time()\n", + "\n", + "print(\"Time taken to execute the function using pyogrio is\", end - begin)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "372ab939", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time taken to execute the function using include fields is 67.33577013015747\n" + ] + } + ], + "source": [ + "begin2 = time.time()\n", + "census_tract_gdf = gpd.read_file(\n", + " CensusETL.NATIONAL_TRACT_JSON_PATH,\n", + " engine=\"fiona\",\n", + " include_fields=[\"GEOID10\"],\n", + ")\n", + "end2 = time.time()\n", + "\n", + "print(\n", + " \"Time taken to execute the function using include fields is\", end2 - begin2\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "32fb7d4b", + "metadata": {}, + "outputs": [ + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/var/folders/lx/xmq8p65j71v9xq2bhsd2j5w40000gp/T/ipykernel_21074/2531126572.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mbegin2\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m census_tract_gdf = gpd.read_file(\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mCensusETL\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mNATIONAL_TRACT_JSON_PATH\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mengine\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"fiona\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0minclude_fields\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"GEOID10\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/.virtualenvs/scoring2/lib/python3.9/site-packages/geopandas/io/file.py\u001b[0m in \u001b[0;36m_read_file\u001b[0;34m(filename, bbox, mask, rows, engine, **kwargs)\u001b[0m\n\u001b[1;32m 251\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 252\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mengine\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"fiona\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 253\u001b[0;31m return _read_file_fiona(\n\u001b[0m\u001b[1;32m 254\u001b[0m \u001b[0mpath_or_bytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfrom_bytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbbox\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mbbox\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmask\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmask\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrows\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mrows\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 255\u001b[0m )\n", + "\u001b[0;32m~/.virtualenvs/scoring2/lib/python3.9/site-packages/geopandas/io/file.py\u001b[0m in \u001b[0;36m_read_file_fiona\u001b[0;34m(path_or_bytes, from_bytes, bbox, mask, rows, **kwargs)\u001b[0m\n\u001b[1;32m 338\u001b[0m )\n\u001b[1;32m 339\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 340\u001b[0;31m df = GeoDataFrame.from_features(\n\u001b[0m\u001b[1;32m 341\u001b[0m \u001b[0mf_filt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcrs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcrs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcolumns\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcolumns\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m\"geometry\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 342\u001b[0m )\n", + "\u001b[0;32m~/.virtualenvs/scoring2/lib/python3.9/site-packages/geopandas/geodataframe.py\u001b[0m in \u001b[0;36mfrom_features\u001b[0;34m(cls, features, crs, columns)\u001b[0m\n\u001b[1;32m 641\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 642\u001b[0m \u001b[0mrows\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 643\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mfeature\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mfeatures_lst\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 644\u001b[0m \u001b[0;31m# load geometry\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 645\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfeature\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"__geo_interface__\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32mfiona/ogrext.pyx\u001b[0m in \u001b[0;36mfiona.ogrext.Iterator.__next__\u001b[0;34m()\u001b[0m\n", + "\u001b[0;32mfiona/ogrext.pyx\u001b[0m in \u001b[0;36mfiona.ogrext.Iterator._next\u001b[0;34m()\u001b[0m\n", + "\u001b[0;32m~/.pyenv/versions/3.9.6/lib/python3.9/logging/__init__.py\u001b[0m in \u001b[0;36mdebug\u001b[0;34m(self, msg, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1422\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmanager\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_clear_cache\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1423\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1424\u001b[0;31m \u001b[0;32mdef\u001b[0m \u001b[0mdebug\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1425\u001b[0m \"\"\"\n\u001b[1;32m 1426\u001b[0m \u001b[0mLog\u001b[0m \u001b[0;34m'msg % args'\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mseverity\u001b[0m \u001b[0;34m'DEBUG'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "begin2 = time.time()\n", + "census_tract_gdf = gpd.read_file(\n", + " CensusETL.NATIONAL_TRACT_JSON_PATH,\n", + " engine=\"fiona\",\n", + " include_fields=[\"GEOID10\"],\n", + " rows=slice(0, 76322, 100),\n", + ")\n", + "end2 = time.time()\n", + "\n", + "print(\"Time taken to execute the function using slice is\", end2 - begin2)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/data/data-pipeline/data_pipeline/ipython/scoring_comparison.ipynb b/data/data-pipeline/data_pipeline/ipython/scoring_comparison.ipynb index bb66c5c7c..753653042 100644 --- a/data/data-pipeline/data_pipeline/ipython/scoring_comparison.ipynb +++ b/data/data-pipeline/data_pipeline/ipython/scoring_comparison.ipynb @@ -95,7 +95,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/usr/local/Cellar/jupyterlab/3.2.8/libexec/lib/python3.9/site-packages/IPython/core/interactiveshell.py:3251: DtypeWarning: Columns (1) have mixed types.Specify dtype option on import or set low_memory=False.\n", + "/usr/local/Cellar/jupyterlab/3.2.8/libexec/lib/python3.9/site-packages/IPython/core/interactiveshell.py:3251: DtypeWarning: Columns (1,74,75,77) have mixed types.Specify dtype option on import or set low_memory=False.\n", " exec(code_obj, self.user_global_ns, self.user_ns)\n" ] }, @@ -121,25 +121,25 @@ " \n", " \n", " GEOID10_TRACT\n", - " Persistent Poverty Census Tract\n", + " Does the tract have at least 35 acres in it?\n", + " Contains agricultural value\n", + " Names of Tribal areas within Census tract\n", " Housing burden (percent)\n", + " Share of homes with no kitchen or indoor plumbing (percent)\n", " Total population\n", " Median household income (% of state median household income)\n", " Current asthma among adults aged greater than or equal to 18 years\n", " Coronary heart disease among adults aged greater than or equal to 18 years\n", - " Cancer (excluding skin cancer) among adults aged greater than or equal to 18 years\n", - " Current lack of health insurance among adults aged 18-64 years\n", - " Diagnosed diabetes among adults aged greater than or equal to 18 years\n", " ...\n", - " Score D (top 25th percentile)\n", - " Score D (top 30th percentile)\n", - " Score D (top 35th percentile)\n", - " Score D (top 40th percentile)\n", - " Score E (percentile)\n", - " Score E (top 25th percentile)\n", - " Score E (top 30th percentile)\n", - " Score E (top 35th percentile)\n", - " Score E (top 40th percentile)\n", + " Workforce Factor (Definition N)\n", + " Total categories exceeded\n", + " Definition N (communities)\n", + " Definition N (communities) (percentile)\n", + " Meets the less stringent low income criterion for the adjacency index?\n", + " Definition N (communities) (average of neighbors)\n", + " Is the tract surrounded by disadvantaged communities?\n", + " Definition N (communities) (based on adjacency index and low income alone)\n", + " Definition N community, including adjacency index tracts\n", " GEOID10_STATE\n", " \n", " \n", @@ -148,21 +148,21 @@ " 0\n", " 01073001100\n", " True\n", + " True\n", + " NaN\n", " 0.28\n", - " 4897.00\n", + " 0.00\n", + " 4781.00\n", " 0.73\n", " 11.20\n", " 7.20\n", - " 6.70\n", - " 16.60\n", - " 19.30\n", " ...\n", " False\n", + " 0.00\n", " False\n", - " False\n", - " False\n", - " 0.33\n", - " False\n", + " 0\n", + " True\n", + " 0.86\n", " False\n", " False\n", " False\n", @@ -172,21 +172,21 @@ " 1\n", " 01073001400\n", " True\n", + " True\n", + " NaN\n", " 0.18\n", - " 1906.00\n", + " 0.00\n", + " 1946.00\n", " 0.71\n", " 11.10\n", " 9.10\n", - " 7.30\n", - " 21.40\n", - " 22.40\n", " ...\n", - " False\n", - " False\n", " True\n", + " 6.00\n", " True\n", - " 0.73\n", - " False\n", + " 1\n", + " True\n", + " 1.00\n", " True\n", " True\n", " True\n", @@ -195,22 +195,22 @@ " \n", " 2\n", " 01073002000\n", - " False\n", + " True\n", + " True\n", + " NaN\n", " 0.44\n", - " 4215.00\n", + " 0.01\n", + " 4080.00\n", " 0.54\n", " 13.50\n", " 9.50\n", - " 6.10\n", - " 25.40\n", - " 22.80\n", " ...\n", " True\n", + " 3.00\n", " True\n", + " 1\n", " True\n", - " True\n", - " 0.93\n", - " True\n", + " 1.00\n", " True\n", " True\n", " True\n", @@ -219,22 +219,22 @@ " \n", " 3\n", " 01073003802\n", - " False\n", + " True\n", + " True\n", + " NaN\n", " 0.41\n", - " 5149.00\n", + " 0.04\n", + " 5291.00\n", " 0.77\n", " 12.00\n", " 6.60\n", - " 5.60\n", - " 20.90\n", - " 18.60\n", " ...\n", + " False\n", + " 4.00\n", " True\n", + " 1\n", " True\n", - " True\n", - " True\n", - " 0.76\n", - " True\n", + " 1.00\n", " True\n", " True\n", " True\n", @@ -244,21 +244,21 @@ " 4\n", " 01073004000\n", " True\n", + " False\n", + " NaN\n", " 0.47\n", - " 2621.00\n", + " 0.01\n", + " 2533.00\n", " 0.37\n", " 13.10\n", " 10.00\n", - " 6.30\n", - " 24.50\n", - " 25.00\n", " ...\n", " True\n", + " 5.00\n", " True\n", + " 1\n", " True\n", - " True\n", - " 0.95\n", - " True\n", + " 1.00\n", " True\n", " True\n", " True\n", @@ -266,23 +266,44 @@ " \n", " \n", "\n", - "

5 rows × 554 columns

\n", + "

5 rows × 256 columns

\n", "" ], "text/plain": [ - " GEOID10_TRACT Persistent Poverty Census Tract Housing burden (percent) \\\n", - "0 01073001100 True 0.28 \n", - "1 01073001400 True 0.18 \n", - "2 01073002000 False 0.44 \n", - "3 01073003802 False 0.41 \n", - "4 01073004000 True 0.47 \n", + " GEOID10_TRACT Does the tract have at least 35 acres in it? \\\n", + "0 01073001100 True \n", + "1 01073001400 True \n", + "2 01073002000 True \n", + "3 01073003802 True \n", + "4 01073004000 True \n", + "\n", + " Contains agricultural value Names of Tribal areas within Census tract \\\n", + "0 True NaN \n", + "1 True NaN \n", + "2 True NaN \n", + "3 True NaN \n", + "4 False NaN \n", + "\n", + " Housing burden (percent) \\\n", + "0 0.28 \n", + "1 0.18 \n", + "2 0.44 \n", + "3 0.41 \n", + "4 0.47 \n", + "\n", + " Share of homes with no kitchen or indoor plumbing (percent) \\\n", + "0 0.00 \n", + "1 0.00 \n", + "2 0.01 \n", + "3 0.04 \n", + "4 0.01 \n", "\n", " Total population \\\n", - "0 4897.00 \n", - "1 1906.00 \n", - "2 4215.00 \n", - "3 5149.00 \n", - "4 2621.00 \n", + "0 4781.00 \n", + "1 1946.00 \n", + "2 4080.00 \n", + "3 5291.00 \n", + "4 2533.00 \n", "\n", " Median household income (% of state median household income) \\\n", "0 0.73 \n", @@ -305,63 +326,56 @@ "3 6.60 \n", "4 10.00 \n", "\n", - " Cancer (excluding skin cancer) among adults aged greater than or equal to 18 years \\\n", - "0 6.70 \n", - "1 7.30 \n", - "2 6.10 \n", - "3 5.60 \n", - "4 6.30 \n", + " ... Workforce Factor (Definition N) Total categories exceeded \\\n", + "0 ... False 0.00 \n", + "1 ... True 6.00 \n", + "2 ... True 3.00 \n", + "3 ... False 4.00 \n", + "4 ... True 5.00 \n", "\n", - " Current lack of health insurance among adults aged 18-64 years \\\n", - "0 16.60 \n", - "1 21.40 \n", - "2 25.40 \n", - "3 20.90 \n", - "4 24.50 \n", + " Definition N (communities) Definition N (communities) (percentile) \\\n", + "0 False 0 \n", + "1 True 1 \n", + "2 True 1 \n", + "3 True 1 \n", + "4 True 1 \n", "\n", - " Diagnosed diabetes among adults aged greater than or equal to 18 years \\\n", - "0 19.30 \n", - "1 22.40 \n", - "2 22.80 \n", - "3 18.60 \n", - "4 25.00 \n", + " Meets the less stringent low income criterion for the adjacency index? \\\n", + "0 True \n", + "1 True \n", + "2 True \n", + "3 True \n", + "4 True \n", "\n", - " ... Score D (top 25th percentile) Score D (top 30th percentile) \\\n", - "0 ... False False \n", - "1 ... False False \n", - "2 ... True True \n", - "3 ... True True \n", - "4 ... True True \n", + " Definition N (communities) (average of neighbors) \\\n", + "0 0.86 \n", + "1 1.00 \n", + "2 1.00 \n", + "3 1.00 \n", + "4 1.00 \n", "\n", - " Score D (top 35th percentile) Score D (top 40th percentile) \\\n", - "0 False False \n", - "1 True True \n", - "2 True True \n", - "3 True True \n", - "4 True True \n", + " Is the tract surrounded by disadvantaged communities? \\\n", + "0 False \n", + "1 True \n", + "2 True \n", + "3 True \n", + "4 True \n", "\n", - " Score E (percentile) Score E (top 25th percentile) \\\n", - "0 0.33 False \n", - "1 0.73 False \n", - "2 0.93 True \n", - "3 0.76 True \n", - "4 0.95 True \n", + " Definition N (communities) (based on adjacency index and low income alone) \\\n", + "0 False \n", + "1 True \n", + "2 True \n", + "3 True \n", + "4 True \n", "\n", - " Score E (top 30th percentile) Score E (top 35th percentile) \\\n", - "0 False False \n", - "1 True True \n", - "2 True True \n", - "3 True True \n", - "4 True True \n", + " Definition N community, including adjacency index tracts GEOID10_STATE \n", + "0 False 01 \n", + "1 True 01 \n", + "2 True 01 \n", + "3 True 01 \n", + "4 True 01 \n", "\n", - " Score E (top 40th percentile) GEOID10_STATE \n", - "0 False 01 \n", - "1 True 01 \n", - "2 True 01 \n", - "3 True 01 \n", - "4 True 01 \n", - "\n", - "[5 rows x 554 columns]" + "[5 rows x 256 columns]" ] }, "execution_count": 3, @@ -456,25 +470,25 @@ " \n", " \n", " GEOID10_TRACT\n", - " Persistent Poverty Census Tract\n", + " Does the tract have at least 35 acres in it?\n", + " Contains agricultural value\n", + " Names of Tribal areas within Census tract\n", " Housing burden (percent)\n", + " Share of homes with no kitchen or indoor plumbing (percent)\n", " Total population\n", " Median household income (% of state median household income)\n", " Current asthma among adults aged greater than or equal to 18 years\n", " Coronary heart disease among adults aged greater than or equal to 18 years\n", - " Cancer (excluding skin cancer) among adults aged greater than or equal to 18 years\n", - " Current lack of health insurance among adults aged 18-64 years\n", - " Diagnosed diabetes among adults aged greater than or equal to 18 years\n", " ...\n", - " Score D (top 25th percentile)\n", - " Score D (top 30th percentile)\n", - " Score D (top 35th percentile)\n", - " Score D (top 40th percentile)\n", - " Score E (percentile)\n", - " Score E (top 25th percentile)\n", - " Score E (top 30th percentile)\n", - " Score E (top 35th percentile)\n", - " Score E (top 40th percentile)\n", + " Workforce Factor (Definition N)\n", + " Total categories exceeded\n", + " Definition N (communities)\n", + " Definition N (communities) (percentile)\n", + " Meets the less stringent low income criterion for the adjacency index?\n", + " Definition N (communities) (average of neighbors)\n", + " Is the tract surrounded by disadvantaged communities?\n", + " Definition N (communities) (based on adjacency index and low income alone)\n", + " Definition N community, including adjacency index tracts\n", " GEOID10_STATE\n", " \n", " \n", @@ -483,21 +497,21 @@ " 0\n", " 01073001100\n", " True\n", + " True\n", + " NaN\n", " 0.28\n", - " 4897.00\n", + " 0.00\n", + " 4781.00\n", " 0.73\n", " 11.20\n", " 7.20\n", - " 6.70\n", - " 16.60\n", - " 19.30\n", " ...\n", " False\n", + " 0.00\n", " False\n", - " False\n", - " False\n", - " 0.33\n", - " False\n", + " 0\n", + " True\n", + " 0.86\n", " False\n", " False\n", " False\n", @@ -507,21 +521,21 @@ " 1\n", " 01073001400\n", " True\n", + " True\n", + " NaN\n", " 0.18\n", - " 1906.00\n", + " 0.00\n", + " 1946.00\n", " 0.71\n", " 11.10\n", " 9.10\n", - " 7.30\n", - " 21.40\n", - " 22.40\n", " ...\n", - " False\n", - " False\n", " True\n", + " 6.00\n", " True\n", - " 0.73\n", - " False\n", + " 1\n", + " True\n", + " 1.00\n", " True\n", " True\n", " True\n", @@ -530,22 +544,22 @@ " \n", " 2\n", " 01073002000\n", - " False\n", + " True\n", + " True\n", + " NaN\n", " 0.44\n", - " 4215.00\n", + " 0.01\n", + " 4080.00\n", " 0.54\n", " 13.50\n", " 9.50\n", - " 6.10\n", - " 25.40\n", - " 22.80\n", " ...\n", " True\n", + " 3.00\n", " True\n", + " 1\n", " True\n", - " True\n", - " 0.93\n", - " True\n", + " 1.00\n", " True\n", " True\n", " True\n", @@ -554,22 +568,22 @@ " \n", " 3\n", " 01073003802\n", - " False\n", + " True\n", + " True\n", + " NaN\n", " 0.41\n", - " 5149.00\n", + " 0.04\n", + " 5291.00\n", " 0.77\n", " 12.00\n", " 6.60\n", - " 5.60\n", - " 20.90\n", - " 18.60\n", " ...\n", + " False\n", + " 4.00\n", " True\n", + " 1\n", " True\n", - " True\n", - " True\n", - " 0.76\n", - " True\n", + " 1.00\n", " True\n", " True\n", " True\n", @@ -579,21 +593,21 @@ " 4\n", " 01073004000\n", " True\n", + " False\n", + " NaN\n", " 0.47\n", - " 2621.00\n", + " 0.01\n", + " 2533.00\n", " 0.37\n", " 13.10\n", " 10.00\n", - " 6.30\n", - " 24.50\n", - " 25.00\n", " ...\n", " True\n", + " 5.00\n", " True\n", + " 1\n", " True\n", - " True\n", - " 0.95\n", - " True\n", + " 1.00\n", " True\n", " True\n", " True\n", @@ -601,23 +615,44 @@ " \n", " \n", "\n", - "

5 rows × 554 columns

\n", + "

5 rows × 256 columns

\n", "" ], "text/plain": [ - " GEOID10_TRACT Persistent Poverty Census Tract Housing burden (percent) \\\n", - "0 01073001100 True 0.28 \n", - "1 01073001400 True 0.18 \n", - "2 01073002000 False 0.44 \n", - "3 01073003802 False 0.41 \n", - "4 01073004000 True 0.47 \n", + " GEOID10_TRACT Does the tract have at least 35 acres in it? \\\n", + "0 01073001100 True \n", + "1 01073001400 True \n", + "2 01073002000 True \n", + "3 01073003802 True \n", + "4 01073004000 True \n", + "\n", + " Contains agricultural value Names of Tribal areas within Census tract \\\n", + "0 True NaN \n", + "1 True NaN \n", + "2 True NaN \n", + "3 True NaN \n", + "4 False NaN \n", + "\n", + " Housing burden (percent) \\\n", + "0 0.28 \n", + "1 0.18 \n", + "2 0.44 \n", + "3 0.41 \n", + "4 0.47 \n", + "\n", + " Share of homes with no kitchen or indoor plumbing (percent) \\\n", + "0 0.00 \n", + "1 0.00 \n", + "2 0.01 \n", + "3 0.04 \n", + "4 0.01 \n", "\n", " Total population \\\n", - "0 4897.00 \n", - "1 1906.00 \n", - "2 4215.00 \n", - "3 5149.00 \n", - "4 2621.00 \n", + "0 4781.00 \n", + "1 1946.00 \n", + "2 4080.00 \n", + "3 5291.00 \n", + "4 2533.00 \n", "\n", " Median household income (% of state median household income) \\\n", "0 0.73 \n", @@ -640,63 +675,56 @@ "3 6.60 \n", "4 10.00 \n", "\n", - " Cancer (excluding skin cancer) among adults aged greater than or equal to 18 years \\\n", - "0 6.70 \n", - "1 7.30 \n", - "2 6.10 \n", - "3 5.60 \n", - "4 6.30 \n", - "\n", - " Current lack of health insurance among adults aged 18-64 years \\\n", - "0 16.60 \n", - "1 21.40 \n", - "2 25.40 \n", - "3 20.90 \n", - "4 24.50 \n", + " ... Workforce Factor (Definition N) Total categories exceeded \\\n", + "0 ... False 0.00 \n", + "1 ... True 6.00 \n", + "2 ... True 3.00 \n", + "3 ... False 4.00 \n", + "4 ... True 5.00 \n", "\n", - " Diagnosed diabetes among adults aged greater than or equal to 18 years \\\n", - "0 19.30 \n", - "1 22.40 \n", - "2 22.80 \n", - "3 18.60 \n", - "4 25.00 \n", + " Definition N (communities) Definition N (communities) (percentile) \\\n", + "0 False 0 \n", + "1 True 1 \n", + "2 True 1 \n", + "3 True 1 \n", + "4 True 1 \n", "\n", - " ... Score D (top 25th percentile) Score D (top 30th percentile) \\\n", - "0 ... False False \n", - "1 ... False False \n", - "2 ... True True \n", - "3 ... True True \n", - "4 ... True True \n", + " Meets the less stringent low income criterion for the adjacency index? \\\n", + "0 True \n", + "1 True \n", + "2 True \n", + "3 True \n", + "4 True \n", "\n", - " Score D (top 35th percentile) Score D (top 40th percentile) \\\n", - "0 False False \n", - "1 True True \n", - "2 True True \n", - "3 True True \n", - "4 True True \n", + " Definition N (communities) (average of neighbors) \\\n", + "0 0.86 \n", + "1 1.00 \n", + "2 1.00 \n", + "3 1.00 \n", + "4 1.00 \n", "\n", - " Score E (percentile) Score E (top 25th percentile) \\\n", - "0 0.33 False \n", - "1 0.73 False \n", - "2 0.93 True \n", - "3 0.76 True \n", - "4 0.95 True \n", + " Is the tract surrounded by disadvantaged communities? \\\n", + "0 False \n", + "1 True \n", + "2 True \n", + "3 True \n", + "4 True \n", "\n", - " Score E (top 30th percentile) Score E (top 35th percentile) \\\n", - "0 False False \n", - "1 True True \n", - "2 True True \n", - "3 True True \n", - "4 True True \n", + " Definition N (communities) (based on adjacency index and low income alone) \\\n", + "0 False \n", + "1 True \n", + "2 True \n", + "3 True \n", + "4 True \n", "\n", - " Score E (top 40th percentile) GEOID10_STATE \n", - "0 False 01 \n", - "1 True 01 \n", - "2 True 01 \n", - "3 True 01 \n", - "4 True 01 \n", + " Definition N community, including adjacency index tracts GEOID10_STATE \n", + "0 False 01 \n", + "1 True 01 \n", + "2 True 01 \n", + "3 True 01 \n", + "4 True 01 \n", "\n", - "[5 rows x 554 columns]" + "[5 rows x 256 columns]" ] }, "execution_count": 5, @@ -733,7 +761,7 @@ "text": [ "\n", "~~~~Analysis for field `Percent enrollment in college or graduate school`~~~~\n", - "count 73298.00\n", + "count 73273.00\n", "mean 0.08\n", "std 0.09\n", "min 0.00\n", @@ -745,11 +773,11 @@ "\n", "There are 1.16% of values missing.\n", "\n", - "Quantile at 0.9 is 0.12186292304275304\n", + "Quantile at 0.9 is 0.1218759147363821\n", "AxesSubplot(0.125,0.125;0.775x0.755)\n", "\n", "~~~~Analysis for field `Percent individuals age 25 or over with less than high school degree`~~~~\n", - "count 73280.00\n", + "count 73255.00\n", "mean 0.13\n", "std 0.10\n", "min 0.00\n", @@ -761,27 +789,27 @@ "\n", "There are 1.19% of values missing.\n", "\n", - "Quantile at 0.9 is 0.2693215167829206\n", + "Quantile at 0.9 is 0.26932488524084897\n", "AxesSubplot(0.125,0.125;0.775x0.755)\n", "\n", "~~~~Analysis for field `Median household income as a percent of area median income`~~~~\n", - "count 68232.00\n", + "count 69113.00\n", "mean 1.01\n", "std 0.43\n", "min 0.04\n", "25% 0.72\n", "50% 0.94\n", "75% 1.21\n", - "max 4.46\n", + "max 4.92\n", "Name: Median household income as a percent of area median income, dtype: float64\n", "\n", - "There are 7.99% of values missing.\n", + "There are 6.77% of values missing.\n", "\n", - "Quantile at 0.9 is 1.5445838485220498\n", + "Quantile at 0.9 is 1.546334409849502\n", "AxesSubplot(0.125,0.125;0.775x0.755)\n", "\n", "~~~~Analysis for field `Percent of individuals below 200% Federal Poverty Line`~~~~\n", - "count 73149.00\n", + "count 73124.00\n", "mean 0.33\n", "std 0.19\n", "min 0.00\n", @@ -793,13 +821,13 @@ "\n", "There are 1.36% of values missing.\n", "\n", - "Quantile at 0.9 is 0.6000566482486579\n", + "Quantile at 0.9 is 0.6\n", "AxesSubplot(0.125,0.125;0.775x0.755)\n" ] }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAD4CAYAAAAO9oqkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAT4klEQVR4nO3df4xd5X3n8fcn5kdQKAEKO0tstEaKRUpBEDICV1mtZkEFQ6oaqSkCpcGK2FjrEESlaLuw/3hJijbVKg0homit4MW0LBSljbAiUq9FuKoq1QRoKA44iFkCsi2ItzE/OomSyNnv/jGP1TueO/b19czc+fF+SVdzzvc859znPrbn43Puc89NVSFJWt7eN+wOSJKGzzCQJBkGkiTDQJKEYSBJAk4adgcGdc4559Tq1asH2venP/0pH/jAB2a3Q4uY4zGV4zGV4zHdYh2T559//p+q6txe2xZtGKxevZrnnntuoH07nQ5jY2Oz26FFzPGYyvGYyvGYbrGOSZI3ZtrmZSJJkmEgSTIMJEkYBpIkDANJEn2GQZIzk3wzyQ+T7EnyW0nOTrIzyavt51mtbZLcl2Q8yYtJLu86zobW/tUkG7rqH0uyu+1zX5LM/kuVJM2k3zODrwF/U1UfAS4F9gB3Ak9V1RrgqbYOcB2wpj02Ag8AJDkb2AxcCVwBbD4cIK3NZ7v2W3diL0uSdDyOGQZJPgj8O+BBgKr6ZVW9A6wHtrVm24Ab2vJ64OGatAs4M8l5wLXAzqo6WFVvAzuBdW3bGVW1qybvp/1w17EkSfOgnw+dXQD8X+B/JrkUeB64Axipqjdbm7eAkba8Etjbtf++VjtafV+P+jRJNjJ5tsHIyAidTqeP7k83MTEx8L5LkeMxleMxleMx3VIck37C4CTgcuD2qnomydf4l0tCAFRVJZnzb8mpqi3AFoDR0dEa9BOAX3/kCb7ydz/tue31L39i0O4tWov105RzxfGYyvGYbimOST/vGewD9lXVM239m0yGw4/bJR7azwNt+37g/K79V7Xa0eqretQlSfPkmGFQVW8Be5Nc2EpXAy8D24HDM4I2AE+05e3ALW1W0Vrg3XY5aQdwTZKz2hvH1wA72rb3kqxts4hu6TqWJGke9HujutuBR5KcArwGfIbJIHk8ya3AG8CNre2TwPXAOPCz1paqOpjkS8Czrd0Xq+pgW/4c8BBwGvCd9pAkzZO+wqCqXgBGe2y6ukfbAm6b4Thbga096s8BF/fTF0nS7PMTyJIkw0CSZBhIkjAMJEkYBpIkDANJEoaBJAnDQJKEYSBJwjCQJGEYSJIwDCRJGAaSJAwDSRKGgSQJw0CShGEgScIwkCRhGEiSMAwkSRgGkiQMA0kShoEkCcNAkoRhIEnCMJAk0WcYJHk9ye4kLyR5rtXOTrIzyavt51mtniT3JRlP8mKSy7uOs6G1fzXJhq76x9rxx9u+me0XKkma2fGcGfz7qrqsqkbb+p3AU1W1BniqrQNcB6xpj43AAzAZHsBm4ErgCmDz4QBpbT7btd+6gV+RJOm4nchlovXAtra8Dbihq/5wTdoFnJnkPOBaYGdVHayqt4GdwLq27Yyq2lVVBTzcdSxJ0jw4qc92BfzvJAX8j6raAoxU1Ztt+1vASFteCezt2ndfqx2tvq9HfZokG5k822BkZIROp9Nn96caOQ2+cMmhntsGPeZiNjExsSxf90wcj6kcj+mW4pj0Gwb/tqr2J/lXwM4kP+zeWFXVgmJOtRDaAjA6OlpjY2MDHefrjzzBV3b3fumvf2qwYy5mnU6HQcdyKXI8pnI8pluKY9LXZaKq2t9+HgC+xeQ1/x+3Szy0nwda8/3A+V27r2q1o9VX9ahLkubJMcMgyQeS/NrhZeAa4AfAduDwjKANwBNteTtwS5tVtBZ4t11O2gFck+Ss9sbxNcCOtu29JGvbLKJbuo4lSZoH/VwmGgG+1WZ7ngT8r6r6myTPAo8nuRV4A7ixtX8SuB4YB34GfAagqg4m+RLwbGv3xao62JY/BzwEnAZ8pz0kSfPkmGFQVa8Bl/ao/wS4uke9gNtmONZWYGuP+nPAxX30V5I0B/wEsiTJMJAkGQaSJAwDSRKGgSQJw0CShGEgScIwkCRhGEiSMAwkSRgGkiQMA0kShoEkCcNAkoRhIEnCMJAkYRhIkjAMJEkYBpIkDANJEoaBJAnDQJKEYSBJwjCQJGEYSJI4jjBIsiLJ95N8u61fkOSZJONJ/jLJKa1+alsfb9tXdx3jrlZ/Jcm1XfV1rTae5M5ZfH2SpD4cz5nBHcCervU/Ab5aVR8G3gZubfVbgbdb/autHUkuAm4CfhNYB/xZC5gVwP3AdcBFwM2trSRpnvQVBklWAZ8AvtHWA1wFfLM12Qbc0JbXt3Xa9qtb+/XAY1X1i6r6ETAOXNEe41X1WlX9EnistZUkzZOT+mx3L/BHwK+19V8H3qmqQ219H7CyLa8E9gJU1aEk77b2K4FdXcfs3mfvEfUre3UiyUZgI8DIyAidTqfP7k81chp84ZJDPbcNeszFbGJiYlm+7pk4HlM5HtMtxTE5Zhgk+R3gQFU9n2Rsznt0FFW1BdgCMDo6WmNjg3Xn6488wVd2937pr39qsGMuZp1Oh0HHcilyPKZyPKZbimPSz5nBx4HfTXI98H7gDOBrwJlJTmpnB6uA/a39fuB8YF+Sk4APAj/pqh/Wvc9MdUnSPDjmewZVdVdVraqq1Uy+AfzdqvoU8DTwydZsA/BEW97e1mnbv1tV1eo3tdlGFwBrgO8BzwJr2uykU9pzbJ+VVydJ6ku/7xn08p+Bx5L8MfB94MFWfxD48yTjwEEmf7lTVS8leRx4GTgE3FZVvwJI8nlgB7AC2FpVL51AvyRJx+m4wqCqOkCnLb/G5EygI9v8HPj9Gfa/B7inR/1J4Mnj6Yskafb4CWRJkmEgSTIMJEkYBpIkDANJEic2tXTRuuR9P+L192+eYeu789oXSVoIPDOQJBkGkiTDQJKEYSBJwjCQJGEYSJIwDCRJGAaSJAwDSRKGgSQJw0CShGEgScIwkCRhGEiSMAwkSRgGkiQMA0kShoEkCcNAkoRhIEmijzBI8v4k30vyj0leSnJ3q1+Q5Jkk40n+MskprX5qWx9v21d3HeuuVn8lybVd9XWtNp7kzjl4nZKko+jnzOAXwFVVdSlwGbAuyVrgT4CvVtWHgbeBW1v7W4G3W/2rrR1JLgJuAn4TWAf8WZIVSVYA9wPXARcBN7e2kqR5cswwqEkTbfXk9ijgKuCbrb4NuKEtr2/rtO1XJ0mrP1ZVv6iqHwHjwBXtMV5Vr1XVL4HHWltJ0jw5qZ9G7X/vzwMfZvJ/8f8HeKeqDrUm+4CVbXklsBegqg4leRf49Vbf1XXY7n32HlG/coZ+bAQ2AoyMjNDpdPrp/jQTp36IzoV399444DEXs4mJiYHHcilyPKZyPKZbimPSVxhU1a+Ay5KcCXwL+Mhcduoo/dgCbAEYHR2tsbGxgY7TefRexl7Z3Hvjze8O2LvFq9PpMOhYLkWOx1SOx3RLcUyOazZRVb0DPA38FnBmksNhsgrY35b3A+cDtO0fBH7SXT9in5nqkqR50s9sonPbGQFJTgN+G9jDZCh8sjXbADzRlre3ddr271ZVtfpNbbbRBcAa4HvAs8CaNjvpFCbfZN4+C69NktSnfi4TnQdsa+8bvA94vKq+neRl4LEkfwx8H3iwtX8Q+PMk48BBJn+5U1UvJXkceBk4BNzWLj+R5PPADmAFsLWqXpq1VyhJOqZjhkFVvQh8tEf9NSZnAh1Z/znw+zMc6x7gnh71J4En++jvknHJtkuG8ry7N+weyvNKWtj8BLIkyTCQJBkGkiQMA0kShoEkCcNAkoRhIEnCMJAkYRhIkjAMJEkYBpIkDANJEoaBJAnDQJKEYSBJos/vQNbS0et7FDadvonbt90+p8/r9yhIC5tnBpIkw0CSZBhIkjAMJEkYBpIkDANJEk4tne6/fnCG+rvz2w9JmkeeGUiSDANJUh9hkOT8JE8neTnJS0nuaPWzk+xM8mr7eVarJ8l9ScaTvJjk8q5jbWjtX02yoav+sSS72z73JclcvFhJUm/9nBkcAr5QVRcBa4HbklwE3Ak8VVVrgKfaOsB1wJr22Ag8AJPhAWwGrgSuADYfDpDW5rNd+6078ZcmSerXMcOgqt6sqn9oy/8M7AFWAuuBba3ZNuCGtrweeLgm7QLOTHIecC2ws6oOVtXbwE5gXdt2RlXtqqoCHu46liRpHhzXewZJVgMfBZ4BRqrqzbbpLWCkLa8E9nbttq/Vjlbf16MuSZonfU8tTXI68FfAH1bVe92X9auqktQc9O/IPmxk8tITIyMjdDqdgY4zceqH6Fx49/HtNOBzzWTT6Ztm9Xgn4twV5855fwb9sxqGiYmJRdXfueZ4TLcUx6SvMEhyMpNB8EhV/XUr/zjJeVX1ZrvUc6DV9wPnd+2+qtX2A2NH1DutvqpH+2mqaguwBWB0dLTGxsZ6NTumzqP3MvbK5uPb6ebZ/ZzBXN8y+nhsOn0TD0w8MKfPsfv3Fs8trDudDoP+3VqKHI/pluKY9DObKMCDwJ6q+tOuTduBwzOCNgBPdNVvabOK1gLvtstJO4BrkpzV3ji+BtjRtr2XZG17rlu6jiVJmgf9nBl8HPg0sDvJC632X4AvA48nuRV4A7ixbXsSuB4YB34GfAagqg4m+RLwbGv3xao62JY/BzwEnAZ8pz0kSfPkmGFQVX8HzDTv/+oe7Qu4bYZjbQW29qg/B1x8rL5IkuaGn0CWJBkGkiTDQJKEYSBJwjCQJGEYSJIwDCRJGAaSJAwDSRKGgSQJw0CSxHF8n8Fyt+cjvzHjtt/44Z557IkkzT7PDCRJhoEkyctE0+x57EPD7oIkzTvPDCRJhoEkyTCQJOF7BrPCaaeSFjvPDCRJhoEkyTCQJGEYSJIwDCRJGAaSJAwDSRJ9hEGSrUkOJPlBV+3sJDuTvNp+ntXqSXJfkvEkLya5vGufDa39q0k2dNU/lmR32+e+JJntFylJOrp+zgweAtYdUbsTeKqq1gBPtXWA64A17bEReAAmwwPYDFwJXAFsPhwgrc1nu/Y78rkkSXPsmGFQVX8LHDyivB7Y1pa3ATd01R+uSbuAM5OcB1wL7Kyqg1X1NrATWNe2nVFVu6qqgIe7jiVJmieD3o5ipKrebMtvASNteSWwt6vdvlY7Wn1fj3pPSTYyecbByMgInU5noM5PnPohOhfe3XPbz28/eaBjzuSN++/vWf/v/Ede+9cL44rYuSvOZdPpm+b0OQb9sxqGiYmJRdXfueZ4TLcUx+SE701UVZWkZqMzfTzXFmALwOjoaI2NjQ10nM6j9zL2yuae2+bz+wz+010L49ZQm07fxAMTD8zpc+z+vd1zevzZ1Ol0GPTv1lLkeEy3FMdk0NlEP26XeGg/D7T6fuD8rnarWu1o9VU96pKkeTRoGGwHDs8I2gA80VW/pc0qWgu82y4n7QCuSXJWe+P4GmBH2/ZekrVtFtEtXceSJM2TY16nSPIoMAack2Qfk7OCvgw8nuRW4A3gxtb8SeB6YBz4GfAZgKo6mORLwLOt3Rer6vCb0p9jcsbSacB32kOSNI+OGQZVdfMMm67u0baA22Y4zlZga4/6c8DFx+qHJGnu+AlkSZJhIEnyay81Ty7ZdslQnnf3hsUzpVUaJs8MJEmGgSTJMJAk4XsGQ/X4fzs047YbF8itKiQtD8vyN87PD548r/cgkqSFzstEkiTDQJJkGEiSMAwkSRgGkiQMA0kSy3Rq6WLgZxAkzSfPDCRJhoEkyTCQJGEYSJIwDCRJGAaSJJxaqiVukK/b3HT6Jm7fdvsJPa9ft6nFxjBYhGb6DIKfP5A0KC8TSZIMA0mSYSBJYgG9Z5BkHfA1YAXwjar68pC7tOh4PyNJg1oQvyGSrADuB34b2Ac8m2R7Vb083J5JgxlkFtNscSaTBrEgwgC4AhivqtcAkjwGrAcMg1lytLOGp++Zx45ozs12EM3GVNu5ZPjNjlTVsPtAkk8C66rqP7T1TwNXVtXnj2i3EdjYVi8EXhnwKc8B/mnAfZcix2Mqx2Mqx2O6xTom/6aqzu21YaGcGfSlqrYAW070OEmeq6rRWejSkuB4TOV4TOV4TLcUx2ShzCbaD5zftb6q1SRJ82ChhMGzwJokFyQ5BbgJ2D7kPknSsrEgLhNV1aEknwd2MDm1dGtVvTSHT3nCl5qWGMdjKsdjKsdjuiU3JgviDWRJ0nAtlMtEkqQhMgwkScsrDJKsS/JKkvEkdw67P8OWZGuSA0l+MOy+LARJzk/ydJKXk7yU5I5h92mYkrw/yfeS/GMbj7uH3aeFIMmKJN9P8u1h92U2LZsw6LrlxXXARcDNSS4abq+G7iFg3bA7sYAcAr5QVRcBa4HblvnfkV8AV1XVpcBlwLoka4fbpQXhDmDPsDsx25ZNGNB1y4uq+iVw+JYXy1ZV/S1wcNj9WCiq6s2q+oe2/M9M/oNfOdxeDU9NmmirJ7fHsp5xkmQV8AngG8Puy2xbTmGwEtjbtb6PZfwPXUeXZDXwUeCZIXdlqNolkReAA8DOqlrW4wHcC/wR8P+G3I9Zt5zCQOpLktOBvwL+sKreG3Z/hqmqflVVlzF5V4Arklw85C4NTZLfAQ5U1fPD7stcWE5h4C0vdExJTmYyCB6pqr8edn8Wiqp6B3ia5f0e08eB303yOpOXma9K8hfD7dLsWU5h4C0vdFRJAjwI7KmqPx12f4YtyblJzmzLpzH5fSM/HGqnhqiq7qqqVVW1msnfH9+tqj8YcrdmzbIJg6o6BBy+5cUe4PE5vuXFgpfkUeDvgQuT7Ety67D7NGQfBz7N5P/4XmiP64fdqSE6D3g6yYtM/mdqZ1UtqemU+hfejkKStHzODCRJMzMMJEmGgSTJMJAkYRhIkjAMJEkYBpIk4P8DGslSAnwyOSMAAAAASUVORK5CYII=\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAD4CAYAAAAO9oqkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAUf0lEQVR4nO3df6zddZ3n8efL8jNUBIbuDbZkSmKDIkTFG+jEyeSuZEpBMyUZJRBXuoa1ScWGyZrMwmaTLipZ5w9HfsQh20jXdoYFGx1D46KdBjmZmGyBokiFynIXIW0DdsfyY65GTd33/nE+3Tm2t+3p7e05vZznIzm53+/7+/l+vp9Pf9zX/f4456aqkCSNtrcNewCSpOEzDCRJhoEkyTCQJGEYSJKAU4Y9gJk6//zza/HixTPa95e//CVnnXXW7A5oDhjFeY/inMF5j5p+5/3UU0/9U1UtmG7bnA2DxYsXs3379hnt2+l0mJiYmN0BzQGjOO9RnDM471HT77yTvHy4bV4mkiQZBpIkw0CShGEgScIwkCTRZxgkOSfJN5P8NMnOJH+U5LwkW5O80L6e29omyT1JJpM8k+Tynn5WtvYvJFnZU/9gkh1tn3uSZPanKkk6nH7PDO4GvldV7wbeB+wEbgMeraolwKNtHeAaYEl7rQLuA0hyHrAWuBK4Alh7IEBam0/37Lf8+KYlSToWRw2DJO8A/gS4H6CqfltVrwMrgA2t2Qbgura8AthYXduAc5JcAFwNbK2qfVX1GrAVWN62nV1V26r7edobe/qSJA1AP286uwj4P8B/S/I+4CngVmCsql5pbV4FxtryQmBXz/67W+1I9d3T1A+RZBXdsw3GxsbodDp9DP9QU1NTM953LhvFeY/inMF5j5rZmHc/YXAKcDmwpqoeT3I3/3JJCICqqiQn/LfkVNU6YB3A+Ph4zfSdhvc+8DBf/sEvD6m/9KWPHM/wTnqj+O7MUZwzOO9RMxvz7ueewW5gd1U93ta/STccft4u8dC+7m3b9wAX9uy/qNWOVF80TV2SNCBHDYOqehXYleTiVroKeA7YDBx4Imgl8HBb3gzc1J4qWgq80S4nbQGWJTm33TheBmxp295MsrQ9RXRTT1+SpAHo94Pq1gAPJDkNeBH4FN0g2ZTkZuBl4PrW9hHgWmAS+FVrS1XtS/IF4MnW7vNVta8tfwb4OnAm8N32kiQNSF9hUFVPA+PTbLpqmrYF3HKYftYD66epbwcu7WcskqTZ5zuQJUmGgSTJMJAkYRhIkjAMJEkYBpIkDANJEoaBJAnDQJKEYSBJwjCQJGEYSJIwDCRJGAaSJAwDSRKGgSQJw0CShGEgScIwkCRhGEiSMAwkSRgGkiQMA0kShoEkCcNAkoRhIEmizzBI8lKSHUmeTrK91c5LsjXJC+3rua2eJPckmUzyTJLLe/pZ2dq/kGRlT/2Drf/Jtm9me6KSpMM7ljODf11V76+q8bZ+G/BoVS0BHm3rANcAS9prFXAfdMMDWAtcCVwBrD0QIK3Np3v2Wz7jGUmSjtnxXCZaAWxoyxuA63rqG6trG3BOkguAq4GtVbWvql4DtgLL27azq2pbVRWwsacvSdIAnNJnuwL+IUkB/7Wq1gFjVfVK2/4qMNaWFwK7evbd3WpHqu+epn6IJKvonm0wNjZGp9Ppc/i/b+xM+Nxl+w+pz7S/uWJqauotP8eDjeKcwXmPmtmYd79h8MdVtSfJvwK2Jvlp78aqqhYUJ1QLoXUA4+PjNTExMaN+7n3gYb6849Cpv/SJmfU3V3Q6HWb6ZzZXjeKcwXmPmtmYd1+XiapqT/u6F/g23Wv+P2+XeGhf97bme4ALe3Zf1GpHqi+api5JGpCjhkGSs5K8/cAysAz4CbAZOPBE0Erg4ba8GbipPVW0FHijXU7aAixLcm67cbwM2NK2vZlkaXuK6KaeviRJA9DPZaIx4Nvtac9TgP9eVd9L8iSwKcnNwMvA9a39I8C1wCTwK+BTAFW1L8kXgCdbu89X1b62/Bng68CZwHfbS5I0IEcNg6p6EXjfNPVfAFdNUy/glsP0tR5YP019O3BpH+OVJJ0AvgNZkmQYSJIMA0kShoEkCcNAkoRhIEnCMJAkYRhIkjAMJEkYBpIkDANJEoaBJAnDQJKEYSBJwjCQJGEYSJIwDCRJGAaSJAwDSRKGgSQJw0CShGEgScIwkCRhGEiSMAwkSRxDGCSZl+RHSb7T1i9K8niSySTfSHJaq5/e1ifb9sU9fdze6s8nubqnvrzVJpPcNovzkyT14VjODG4Fdvas/xXwlap6F/AacHOr3wy81upfae1IcglwA/BeYDnwNy1g5gFfBa4BLgFubG0lSQPSVxgkWQR8BPhaWw/wYeCbrckG4Lq2vKKt07Zf1dqvAB6qqt9U1c+ASeCK9pqsqher6rfAQ62tJGlATumz3V3AXwJvb+t/ALxeVfvb+m5gYVteCOwCqKr9Sd5o7RcC23r67N1n10H1K6cbRJJVwCqAsbExOp1On8P/fWNnwucu239Ifab9zRVTU1Nv+TkebBTnDM571MzGvI8aBkk+CuytqqeSTBzX0Y5TVa0D1gGMj4/XxMTMhnPvAw/z5R2HTv2lT8ysv7mi0+kw0z+zuWoU5wzOe9TMxrz7OTP4EPBnSa4FzgDOBu4GzklySjs7WATsae33ABcCu5OcArwD+EVP/YDefQ5XlyQNwFHvGVTV7VW1qKoW070B/P2q+gTwGPCx1mwl8HBb3tzWadu/X1XV6je0p40uApYATwBPAkva00mntWNsnpXZSZL60u89g+n8B+ChJF8EfgTc3+r3A3+bZBLYR/ebO1X1bJJNwHPAfuCWqvodQJLPAluAecD6qnr2OMYlSTpGxxQGVdUBOm35RbpPAh3c5tfAxw+z/53AndPUHwEeOZaxSJJmj+9AliQZBpIkw0CShGEgScIwkCRxfI+WzlmXve1nvHTG2mm2vDHwsUjSycAzA0mSYSBJMgwkSRgGkiQMA0kShoEkCcNAkoRhIEnCMJAkMaLvQD4ZXLbhsoEfc/X81UwwMfDjSjr5eWYgSTIMJEmGgSQJw0CShGEgScIwkCRhGEiSMAwkSRgGkiQMA0kSfYRBkjOSPJHkx0meTXJHq1+U5PEkk0m+keS0Vj+9rU+27Yt7+rq91Z9PcnVPfXmrTSa57QTMU5J0BP2cGfwG+HBVvQ94P7A8yVLgr4CvVNW7gNeAm1v7m4HXWv0rrR1JLgFuAN4LLAf+Jsm8JPOArwLXAJcAN7a2kqQBOWoYVNdUWz21vQr4MPDNVt8AXNeWV7R12varkqTVH6qq31TVz4BJ4Ir2mqyqF6vqt8BDra0kaUD6+tTS9tP7U8C76P4U/7+B16tqf2uyG1jYlhcCuwCqan+SN4A/aPVtPd327rProPqVhxnHKmAVwNjYGJ1Op5/hH2Lq9HfSufiOQzfMsL+ZWD1/9cCOdcCCeQtm/Gc2V01NTY3cnMF5j5rZmHdfYVBVvwPen+Qc4NvAu4/rqDNUVeuAdQDj4+M1MTExo346D97FxPNrD91w4xvHMbpjs2bDmoEd64DV81fz8YmPD/y4w9TpdJjpv5O5zHmPltmY9zE9TVRVrwOPAX8EnJPkQJgsAva05T3AhQBt+zuAX/TWD9rncHVJ0oD08zTRgnZGQJIzgT8FdtINhY+1ZiuBh9vy5rZO2/79qqpWv6E9bXQRsAR4AngSWNKeTjqN7k3mzbMwN0lSn/q5THQBsKHdN3gbsKmqvpPkOeChJF8EfgTc39rfD/xtkklgH91v7lTVs0k2Ac8B+4Fb2uUnknwW2ALMA9ZX1bOzNkNJ0lEdNQyq6hngA9PUX6T7JNDB9V8D016Yrqo7gTunqT8CPNLHeCVJJ4DvQJYkGQaSJMNAkoRhIEnCMJAkYRhIkjAMJEkYBpIkDANJEoaBJAnDQJKEYSBJwjCQJGEYSJIwDCRJGAaSJAwDSRKGgSQJw0CShGEgScIwkCRhGEiSgFOGPYCTyn9+x2Hqbwx2HJI0YJ4ZSJIMA0lSH5eJklwIbATGgALWVdXdSc4DvgEsBl4Crq+q15IEuBu4FvgV8G+r6oetr5XAf2pdf7GqNrT6B4GvA2cCjwC3VlXN0hzV47INlw3luDtW7hjKcSX1p58zg/3A56rqEmApcEuSS4DbgEeragnwaFsHuAZY0l6rgPsAWnisBa4ErgDWJjm37XMf8Ome/ZYf/9QkSf06ahhU1SsHfrKvqn8GdgILgRXAhtZsA3BdW14BbKyubcA5SS4Arga2VtW+qnoN2Aosb9vOrqpt7WxgY09fkqQBOKZ7BkkWAx8AHgfGquqVtulVupeRoBsUu3p2291qR6rvnqYuSRqQvh8tTTIf+BbwF1X1ZvfWQFdVVZITfo0/ySq6l54YGxuj0+nMqJ+p099J5+I7+t9hhsc5ktXzV896n0ezYN6CoRwXmPHf1fGampoa2rGHyXmPltmYd19hkORUukHwQFX9fSv/PMkFVfVKu9Szt9X3ABf27L6o1fYAEwfVO62+aJr2h6iqdcA6gPHx8ZqYmJiu2VF1HryLiefX9r/DjbP/PoM1G9bMep9Hs3r+au6bum/gxwXY8efDuYHc6XSY6b+Tucx5j5bZmPdRLxO1p4PuB3ZW1V/3bNoMrGzLK4GHe+o3pWsp8Ea7nLQFWJbk3HbjeBmwpW17M8nSdqybevqSJA1AP2cGHwI+CexI8nSr/UfgS8CmJDcDLwPXt22P0H2sdJLuo6WfAqiqfUm+ADzZ2n2+qva15c/wL4+Wfre9JEkDctQwqKofADnM5qumaV/ALYfpaz2wfpr6duDSo41FknRi+A5kSZJhIEkyDCRJGAaSJAwDSRKGgSQJw0CShGEgScIwkCRhGEiSMAwkSRzD7zMYZTvf/Z5p6+/56c4Bj0SSTgzPDCRJhoEkyctEv2fnQ+8c9hAkaSg8M5AkGQaSJMNAkoT3DI7L4R45BR87lTS3eGYgSTIMJEmGgSQJw0CShGEgScIwkCRhGEiS6CMMkqxPsjfJT3pq5yXZmuSF9vXcVk+Se5JMJnkmyeU9+6xs7V9IsrKn/sEkO9o+9yTJbE9SknRk/ZwZfB1YflDtNuDRqloCPNrWAa4BlrTXKuA+6IYHsBa4ErgCWHsgQFqbT/fsd/CxJEkn2FHDoKr+Edh3UHkFsKEtbwCu66lvrK5twDlJLgCuBrZW1b6qeg3YCixv286uqm1VVcDGnr4kSQMy04+jGKuqV9ryq8BYW14I7Oppt7vVjlTfPU19WklW0T3jYGxsjE6nM6PBT53+TjoX33FI/ddrTp1Rf9N5+atfnbZ+xnvfC8Dq+atn7Vj9WjBvwVCOC8z47+p4TU1NDe3Yw+S8R8tszPu4P5uoqipJHW8/fR5rHbAOYHx8vCYmJmbUT+fBu5h4fu0h9UH8PoMDn1m0ZsOaE36sg62ev5r7pu4b+HEBdvz5jqEct9PpMNN/J3OZ8x4tszHvmT5N9PN2iYf2dW+r7wEu7Gm3qNWOVF80TV2SNEAzDYPNwIEnglYCD/fUb2pPFS0F3miXk7YAy5Kc224cLwO2tG1vJlnaniK6qacvSdKAHPUyUZIHgQng/CS76T4V9CVgU5KbgZeB61vzR4BrgUngV8CnAKpqX5IvAE+2dp+vqgM3pT9D94mlM4HvtpckaYCOGgZVdeNhNl01TdsCbjlMP+uB9dPUtwOXHm0ckqQTx3cgS5IMA0mSYSBJwjCQJGEYSJIwDCRJzMLHUejY7Hz3ewDYdFD9+tv9q5A0PCP5HejX+04dyOcQSdJc4WUiSdJonhlo8C7bcNlQjnvvH947lONKc41nBpIkw0CSZBhIkjAMJEl4A/mksem/7J+27vsPJA2CZwaSJMNAkmQYSJIwDCRJGAaSJAwDSRKGgSQJ32dw0vP9B5IGwTMDSZJnBnpre+4Xz7Fmw5qBH3fHyh0DP6Z0PDwzkCSdPGcGSZYDdwPzgK9V1ZeGPKSTmvcSJM2mk+I7R5J5wFeBPwV2A08m2VxVzw13ZNLMDOs3u3l5SjN1UoQBcAUwWVUvAiR5CFgBGAbH6HBnDACP3TnAgWgoDoTQ6vmrB36vxCCa21JVwx4DST4GLK+qf9fWPwlcWVWfPajdKmBVW70YeH6Ghzwf+KcZ7juXjeK8R3HO4LxHTb/z/sOqWjDdhpPlzKAvVbUOWHe8/STZXlXjszCkOWUU5z2KcwbnPexxDNpszPtkeZpoD3Bhz/qiVpMkDcDJEgZPAkuSXJTkNOAGYPOQxyRJI+OkuExUVfuTfBbYQvfR0vVV9ewJPORxX2qao0Zx3qM4Z3Deo+b4L5+fDDeQJUnDdbJcJpIkDZFhIEkarTBIsjzJ80kmk9w27PEMSpL1SfYm+cmwxzIoSS5M8liS55I8m+TWYY9pEJKckeSJJD9u875j2GMalCTzkvwoyXeGPZZBSvJSkh1Jnk6yfcb9jMo9g/aRF/+Lno+8AG4chY+8SPInwBSwsaouHfZ4BiHJBcAFVfXDJG8HngKue6v/fScJcFZVTSU5FfgBcGtVbRvy0E64JP8eGAfOrqqPDns8g5LkJWC8qo7rzXajdGbw/z/yoqp+Cxz4yIu3vKr6R2DfsMcxSFX1SlX9sC3/M7ATWDjcUZ141TXVVk9tr7f8T3xJFgEfAb427LHMVaMUBguBXT3ruxmBbw6CJIuBDwCPD3koA9EulzwN7AW2VtUozPsu4C+B/zvkcQxDAf+Q5Kn2kT0zMkphoBGUZD7wLeAvqurNYY9nEKrqd1X1frrv5L8iyVv60mCSjwJ7q+qpYY9lSP64qi4HrgFuaZeFj9kohYEfeTFi2jXzbwEPVNXfD3s8g1ZVrwOPAcuHPJQT7UPAn7Vr5w8BH07yd8Md0uBU1Z72dS/wbbqXxI/ZKIWBH3kxQtqN1PuBnVX118Mez6AkWZDknLZ8Jt0HJn461EGdYFV1e1UtqqrFdP9ff7+q/s2QhzUQSc5qD0iQ5CxgGTCjpwZHJgyqaj9w4CMvdgKbTvBHXpw0kjwI/E/g4iS7k9w87DENwIeAT9L9KfHp9rp22IMagAuAx5I8Q/cHoK1VNVKPWo6YMeAHSX4MPAH8j6r63kw6GplHSyVJhzcyZwaSpMMzDCRJhoEkyTCQJGEYSJIwDCRJGAaSJOD/AVAg0kAXNGFFAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] @@ -1437,52 +1465,76 @@ " \n", " \n", " GEOID10_TRACT\n", + " Percent of tract that is HOLC Grade C\n", + " Percent of tract that is HOLC Grade C or HOLC Grade D\n", + " Tract is more than 50% Grade C or D\n", " Percent of tract that is HOLC Grade D\n", " Tract is >20% HOLC Grade D\n", " Tract is >50% HOLC Grade D\n", " Tract is >75% HOLC Grade D\n", + " Redlined share: tract had redlining and was more than 50% Grade C or D\n", " \n", " \n", " \n", " \n", " 0\n", " 01073000100\n", + " 0.26\n", + " 0.68\n", + " True\n", " 0.42\n", " True\n", " False\n", " False\n", + " True\n", " \n", " \n", " 1\n", " 01073000300\n", + " 0.01\n", + " 0.94\n", + " True\n", " 0.93\n", " True\n", " True\n", " True\n", + " True\n", " \n", " \n", " 2\n", " 01073000400\n", + " 0.10\n", + " 0.47\n", + " False\n", " 0.36\n", " True\n", " False\n", " False\n", + " False\n", " \n", " \n", " 3\n", " 01073000500\n", + " 0.00\n", + " 0.65\n", + " True\n", " 0.65\n", " True\n", " True\n", " False\n", + " True\n", " \n", " \n", " 4\n", " 01073000700\n", + " 0.00\n", + " 0.41\n", + " False\n", " 0.41\n", " True\n", " False\n", " False\n", + " False\n", " \n", " \n", " ...\n", @@ -1491,93 +1543,156 @@ " ...\n", " ...\n", " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", " \n", " \n", - " 7273\n", + " 13515\n", " 55139001100\n", + " 0.00\n", + " 0.29\n", + " False\n", " 0.29\n", " True\n", " False\n", " False\n", + " False\n", " \n", " \n", - " 7274\n", + " 13516\n", " 55139001200\n", + " 0.00\n", + " 0.42\n", + " False\n", " 0.42\n", " True\n", " False\n", " False\n", + " False\n", " \n", " \n", - " 7275\n", + " 13517\n", " 55139001300\n", + " 0.12\n", + " 0.27\n", + " False\n", " 0.16\n", " False\n", " False\n", " False\n", + " False\n", " \n", " \n", - " 7276\n", + " 13518\n", " 55139001400\n", + " 0.19\n", + " 0.23\n", + " False\n", " 0.04\n", " False\n", " False\n", " False\n", + " False\n", " \n", " \n", - " 7277\n", + " 13519\n", " 55139001500\n", + " 0.12\n", + " 0.22\n", + " False\n", " 0.10\n", " False\n", " False\n", " False\n", + " False\n", " \n", " \n", "\n", - "

7278 rows × 5 columns

\n", + "

13520 rows × 9 columns

\n", "" ], "text/plain": [ - " GEOID10_TRACT Percent of tract that is HOLC Grade D \\\n", - "0 01073000100 0.42 \n", - "1 01073000300 0.93 \n", - "2 01073000400 0.36 \n", - "3 01073000500 0.65 \n", - "4 01073000700 0.41 \n", - "... ... ... \n", - "7273 55139001100 0.29 \n", - "7274 55139001200 0.42 \n", - "7275 55139001300 0.16 \n", - "7276 55139001400 0.04 \n", - "7277 55139001500 0.10 \n", + " GEOID10_TRACT Percent of tract that is HOLC Grade C \\\n", + "0 01073000100 0.26 \n", + "1 01073000300 0.01 \n", + "2 01073000400 0.10 \n", + "3 01073000500 0.00 \n", + "4 01073000700 0.00 \n", + "... ... ... \n", + "13515 55139001100 0.00 \n", + "13516 55139001200 0.00 \n", + "13517 55139001300 0.12 \n", + "13518 55139001400 0.19 \n", + "13519 55139001500 0.12 \n", + "\n", + " Percent of tract that is HOLC Grade C or HOLC Grade D \\\n", + "0 0.68 \n", + "1 0.94 \n", + "2 0.47 \n", + "3 0.65 \n", + "4 0.41 \n", + "... ... \n", + "13515 0.29 \n", + "13516 0.42 \n", + "13517 0.27 \n", + "13518 0.23 \n", + "13519 0.22 \n", + "\n", + " Tract is more than 50% Grade C or D \\\n", + "0 True \n", + "1 True \n", + "2 False \n", + "3 True \n", + "4 False \n", + "... ... \n", + "13515 False \n", + "13516 False \n", + "13517 False \n", + "13518 False \n", + "13519 False \n", "\n", - " Tract is >20% HOLC Grade D Tract is >50% HOLC Grade D \\\n", - "0 True False \n", - "1 True True \n", - "2 True False \n", - "3 True True \n", - "4 True False \n", - "... ... ... \n", - "7273 True False \n", - "7274 True False \n", - "7275 False False \n", - "7276 False False \n", - "7277 False False \n", + " Percent of tract that is HOLC Grade D Tract is >20% HOLC Grade D \\\n", + "0 0.42 True \n", + "1 0.93 True \n", + "2 0.36 True \n", + "3 0.65 True \n", + "4 0.41 True \n", + "... ... ... \n", + "13515 0.29 True \n", + "13516 0.42 True \n", + "13517 0.16 False \n", + "13518 0.04 False \n", + "13519 0.10 False \n", "\n", - " Tract is >75% HOLC Grade D \n", - "0 False \n", - "1 True \n", - "2 False \n", - "3 False \n", - "4 False \n", - "... ... \n", - "7273 False \n", - "7274 False \n", - "7275 False \n", - "7276 False \n", - "7277 False \n", + " Tract is >50% HOLC Grade D Tract is >75% HOLC Grade D \\\n", + "0 False False \n", + "1 True True \n", + "2 False False \n", + "3 True False \n", + "4 False False \n", + "... ... ... \n", + "13515 False False \n", + "13516 False False \n", + "13517 False False \n", + "13518 False False \n", + "13519 False False \n", "\n", - "[7278 rows x 5 columns]" + " Redlined share: tract had redlining and was more than 50% Grade C or D \n", + "0 True \n", + "1 True \n", + "2 False \n", + "3 True \n", + "4 False \n", + "... ... \n", + "13515 False \n", + "13516 False \n", + "13517 False \n", + "13518 False \n", + "13519 False \n", + "\n", + "[13520 rows x 9 columns]" ] }, "execution_count": 10, @@ -1629,7 +1744,7 @@ " \n", " \n", " GEOID10_TRACT\n", - " SVI - Socioeconomic Index (percentile)\n", + " SVI - Social Vulnerability Index (percentile)\n", " SVI - Household Composition Index (percentile)\n", " SVI- Minority Status/Language Index (percentile)\n", " SVI- Housing Type/Transportation Index (percentile)\n", @@ -1693,12 +1808,12 @@ "" ], "text/plain": [ - " GEOID10_TRACT SVI - Socioeconomic Index (percentile) \\\n", - "0 01015981901 NaN \n", - "1 01015981902 NaN \n", - "2 01015981903 NaN \n", - "3 01097003605 NaN \n", - "4 01097990000 NaN \n", + " GEOID10_TRACT SVI - Social Vulnerability Index (percentile) \\\n", + "0 01015981901 NaN \n", + "1 01015981902 NaN \n", + "2 01015981903 NaN \n", + "3 01097003605 NaN \n", + "4 01097990000 NaN \n", "\n", " SVI - Household Composition Index (percentile) \\\n", "0 NaN \n", @@ -2568,18 +2683,18 @@ " \n", " \n", " GEOID10_TRACT\n", - " Persistent Poverty Census Tract\n", + " Does the tract have at least 35 acres in it?\n", + " Contains agricultural value\n", + " Names of Tribal areas within Census tract\n", " Housing burden (percent)\n", + " Share of homes with no kitchen or indoor plumbing (percent)\n", " Total population\n", " Median household income (% of state median household income)\n", " Current asthma among adults aged greater than or equal to 18 years\n", " Coronary heart disease among adults aged greater than or equal to 18 years\n", - " Cancer (excluding skin cancer) among adults aged greater than or equal to 18 years\n", - " Current lack of health insurance among adults aged 18-64 years\n", - " Diagnosed diabetes among adults aged greater than or equal to 18 years\n", " ...\n", " Michigan EJSCREEN Priority Community\n", - " SVI - Socioeconomic Index (percentile)\n", + " SVI - Social Vulnerability Index (percentile)\n", " SVI - Household Composition Index (percentile)\n", " SVI- Minority Status/Language Index (percentile)\n", " SVI- Housing Type/Transportation Index (percentile)\n", @@ -2595,14 +2710,14 @@ " 0\n", " 01073001100\n", " True\n", + " True\n", + " NaN\n", " 0.28\n", - " 4897.00\n", + " 0.00\n", + " 4781.00\n", " 0.73\n", " 11.20\n", " 7.20\n", - " 6.70\n", - " 16.60\n", - " 19.30\n", " ...\n", " NaN\n", " 0.62\n", @@ -2619,14 +2734,14 @@ " 1\n", " 01073001400\n", " True\n", + " True\n", + " NaN\n", " 0.18\n", - " 1906.00\n", + " 0.00\n", + " 1946.00\n", " 0.71\n", " 11.10\n", " 9.10\n", - " 7.30\n", - " 21.40\n", - " 22.40\n", " ...\n", " NaN\n", " 0.80\n", @@ -2642,15 +2757,15 @@ " \n", " 2\n", " 01073002000\n", - " False\n", + " True\n", + " True\n", + " NaN\n", " 0.44\n", - " 4215.00\n", + " 0.01\n", + " 4080.00\n", " 0.54\n", " 13.50\n", " 9.50\n", - " 6.10\n", - " 25.40\n", - " 22.80\n", " ...\n", " NaN\n", " 0.95\n", @@ -2666,15 +2781,15 @@ " \n", " 3\n", " 01073003802\n", - " False\n", + " True\n", + " True\n", + " NaN\n", " 0.41\n", - " 5149.00\n", + " 0.04\n", + " 5291.00\n", " 0.77\n", " 12.00\n", " 6.60\n", - " 5.60\n", - " 20.90\n", - " 18.60\n", " ...\n", " NaN\n", " 0.85\n", @@ -2691,14 +2806,14 @@ " 4\n", " 01073004000\n", " True\n", + " False\n", + " NaN\n", " 0.47\n", - " 2621.00\n", + " 0.01\n", + " 2533.00\n", " 0.37\n", " 13.10\n", " 10.00\n", - " 6.30\n", - " 24.50\n", - " 25.00\n", " ...\n", " NaN\n", " 0.96\n", @@ -2713,23 +2828,44 @@ " \n", " \n", "\n", - "

5 rows × 661 columns

\n", + "

5 rows × 367 columns

\n", "" ], "text/plain": [ - " GEOID10_TRACT Persistent Poverty Census Tract Housing burden (percent) \\\n", - "0 01073001100 True 0.28 \n", - "1 01073001400 True 0.18 \n", - "2 01073002000 False 0.44 \n", - "3 01073003802 False 0.41 \n", - "4 01073004000 True 0.47 \n", + " GEOID10_TRACT Does the tract have at least 35 acres in it? \\\n", + "0 01073001100 True \n", + "1 01073001400 True \n", + "2 01073002000 True \n", + "3 01073003802 True \n", + "4 01073004000 True \n", + "\n", + " Contains agricultural value Names of Tribal areas within Census tract \\\n", + "0 True NaN \n", + "1 True NaN \n", + "2 True NaN \n", + "3 True NaN \n", + "4 False NaN \n", + "\n", + " Housing burden (percent) \\\n", + "0 0.28 \n", + "1 0.18 \n", + "2 0.44 \n", + "3 0.41 \n", + "4 0.47 \n", + "\n", + " Share of homes with no kitchen or indoor plumbing (percent) \\\n", + "0 0.00 \n", + "1 0.00 \n", + "2 0.01 \n", + "3 0.04 \n", + "4 0.01 \n", "\n", " Total population \\\n", - "0 4897.00 \n", - "1 1906.00 \n", - "2 4215.00 \n", - "3 5149.00 \n", - "4 2621.00 \n", + "0 4781.00 \n", + "1 1946.00 \n", + "2 4080.00 \n", + "3 5291.00 \n", + "4 2533.00 \n", "\n", " Median household income (% of state median household income) \\\n", "0 0.73 \n", @@ -2752,27 +2888,6 @@ "3 6.60 \n", "4 10.00 \n", "\n", - " Cancer (excluding skin cancer) among adults aged greater than or equal to 18 years \\\n", - "0 6.70 \n", - "1 7.30 \n", - "2 6.10 \n", - "3 5.60 \n", - "4 6.30 \n", - "\n", - " Current lack of health insurance among adults aged 18-64 years \\\n", - "0 16.60 \n", - "1 21.40 \n", - "2 25.40 \n", - "3 20.90 \n", - "4 24.50 \n", - "\n", - " Diagnosed diabetes among adults aged greater than or equal to 18 years \\\n", - "0 19.30 \n", - "1 22.40 \n", - "2 22.80 \n", - "3 18.60 \n", - "4 25.00 \n", - "\n", " ... Michigan EJSCREEN Priority Community \\\n", "0 ... NaN \n", "1 ... NaN \n", @@ -2780,12 +2895,12 @@ "3 ... NaN \n", "4 ... NaN \n", "\n", - " SVI - Socioeconomic Index (percentile) \\\n", - "0 0.62 \n", - "1 0.80 \n", - "2 0.95 \n", - "3 0.85 \n", - "4 0.96 \n", + " SVI - Social Vulnerability Index (percentile) \\\n", + "0 0.62 \n", + "1 0.80 \n", + "2 0.95 \n", + "3 0.85 \n", + "4 0.96 \n", "\n", " SVI - Household Composition Index (percentile) \\\n", "0 0.98 \n", @@ -2843,7 +2958,7 @@ "3 NaN \n", "4 NaN \n", "\n", - "[5 rows x 661 columns]" + "[5 rows x 367 columns]" ] }, "execution_count": 16, @@ -2987,7 +3102,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 22, "id": "980c0f66", "metadata": { "scrolled": true @@ -3003,56 +3118,26 @@ " ],\n", ")\n", "\n", - "# Define the indices used for CEJST scoring (`census_block_group_indices`) as well as comparison\n", + "# Define the indices used for CEJST scoring as well as comparison\n", "# (`census_tract_indices`).\n", - "definition_l_factors = [\n", - " field_names.L_CLIMATE,\n", - " field_names.L_ENERGY,\n", - " field_names.L_TRANSPORTATION,\n", - " field_names.L_HOUSING,\n", - " field_names.L_POLLUTION,\n", - " field_names.L_WATER,\n", - " field_names.L_HEALTH,\n", - " field_names.L_WORKFORCE,\n", - " # Also include a combined factor for all the non-workforce elements.\n", - " field_names.L_NON_WORKFORCE,\n", - "]\n", - "\n", - "definition_m_factors = [\n", - " field_names.M_CLIMATE,\n", - " field_names.M_ENERGY,\n", - " field_names.M_TRANSPORTATION,\n", - " field_names.M_HOUSING,\n", - " field_names.M_POLLUTION,\n", - " field_names.M_WATER,\n", - " field_names.M_HEALTH,\n", - " field_names.M_WORKFORCE,\n", - " # Also include a combined factor for all the non-workforce elements.\n", - " field_names.M_NON_WORKFORCE,\n", + "definition_factors = [\n", + " field_names.N_CLIMATE,\n", + " field_names.N_ENERGY,\n", + " field_names.N_TRANSPORTATION,\n", + " field_names.N_HOUSING,\n", + " field_names.N_POLLUTION,\n", + " field_names.N_WATER,\n", + " field_names.N_HEALTH,\n", + " field_names.N_WORKFORCE,\n", "]\n", "\n", "census_tract_indices = (\n", " [\n", " Index(\n", - " method_name=\"Definition M\",\n", - " priority_communities_field=field_names.SCORE_M_COMMUNITIES,\n", + " method_name=\"Definition N\",\n", + " priority_communities_field=field_names.SCORE_N_COMMUNITIES,\n", " ),\n", " ]\n", - " + [\n", - " Index(\n", - " method_name=\"Definition L\",\n", - " priority_communities_field=field_names.SCORE_L_COMMUNITIES,\n", - " ),\n", - " ]\n", - " # Insert indices for each of the factors from Definition M.\n", - " # Note: since these involve no renaming, we write them using list comprehension.\n", - " + [\n", - " Index(\n", - " method_name=factor,\n", - " priority_communities_field=factor,\n", - " )\n", - " for factor in definition_m_factors\n", - " ]\n", " # Insert indices for each of the factors from Definition L.\n", " # Note: since these involve no renaming, we write them using list comprehension.\n", " + [\n", @@ -3060,105 +3145,105 @@ " method_name=factor,\n", " priority_communities_field=factor,\n", " )\n", - " for factor in definition_l_factors\n", - " ]\n", - " + [\n", - " Index(\n", - " # Note: we're renaming Score G as NMTC Modified for clarity, since that's what Score G is under the hood.\n", - " method_name=\"NMTC Modified\",\n", - " priority_communities_field=field_names.SCORE_G_COMMUNITIES,\n", - " ),\n", - " Index(\n", - " method_name=\"NMTC\",\n", - " priority_communities_field=\"NMTC (communities)\",\n", - " ),\n", - " Index(\n", - " method_name=\"Score C\",\n", - " priority_communities_field=\"Score C (top 25th percentile)\",\n", - " ),\n", - " Index(\n", - " method_name=\"Score D (30th percentile)\",\n", - " priority_communities_field=\"Score D (top 30th percentile)\",\n", - " ),\n", - " Index(\n", - " method_name=\"Score D (25th percentile)\",\n", - " priority_communities_field=\"Score D (top 25th percentile)\",\n", - " ),\n", - " Index(\n", - " method_name=\"Score F\",\n", - " priority_communities_field=field_names.SCORE_F_COMMUNITIES,\n", - " ),\n", - " Index(\n", - " method_name=\"CalEnviroScreen 4.0\",\n", - " priority_communities_field=\"calenviroscreen_priority_community\",\n", - " ),\n", - " Index(\n", - " method_name=\"Mapping for EJ\",\n", - " priority_communities_field=field_names.MAPPING_FOR_EJ_PRIORITY_COMMUNITY_FIELD,\n", - " ),\n", - " Index(\n", - " method_name=\"EPA RSEI Aggregate Microdata\",\n", - " priority_communities_field=field_names.EPA_RSEI_SCORE_THRESHOLD_FIELD,\n", - " ),\n", - " Index(\n", - " method_name=\"Persistent Poverty\",\n", - " priority_communities_field=PERSISTENT_POVERTY_TRACT_LEVEL_FIELD,\n", - " ),\n", - " Index(\n", - " method_name=\"Maryland EJSCREEN\",\n", - " priority_communities_field=field_names.MARYLAND_EJSCREEN_BURDENED_THRESHOLD_FIELD,\n", - " ),\n", - " Index(\n", - " method_name=field_names.ENERGY_RELATED_COMMUNITIES_DEFINITION_ALTERNATIVE,\n", - " priority_communities_field=field_names.ENERGY_RELATED_COMMUNITIES_DEFINITION_ALTERNATIVE,\n", - " ),\n", - " Index(\n", - " method_name=\"CDC SVI Index\",\n", - " priority_communities_field=field_names.CDC_SVI_INDEX_THEMES_PRIORITY_COMMUNITY,\n", - " ),\n", - " Index(\n", - " method_name=\"Michigan EJSCREEN\",\n", - " priority_communities_field=field_names.MICHIGAN_EJSCREEN_PRIORITY_COMMUNITY_FIELD,\n", - " ),\n", + " for factor in definition_factors\n", " ]\n", + " # + [\n", + " # Index(\n", + " # # Note: we're renaming Score G as NMTC Modified for clarity, since that's what Score G is under the hood.\n", + " # method_name=\"NMTC Modified\",\n", + " # priority_communities_field=field_names.SCORE_G_COMMUNITIES,\n", + " # ),\n", + " # Index(\n", + " # method_name=\"NMTC\",\n", + " # priority_communities_field=\"NMTC (communities)\",\n", + " # ),\n", + " # Index(\n", + " # method_name=\"Score C\",\n", + " # priority_communities_field=\"Score C (top 25th percentile)\",\n", + " # ),\n", + " # Index(\n", + " # method_name=\"Score D (30th percentile)\",\n", + " # priority_communities_field=\"Score D (top 30th percentile)\",\n", + " # ),\n", + " # Index(\n", + " # method_name=\"Score D (25th percentile)\",\n", + " # priority_communities_field=\"Score D (top 25th percentile)\",\n", + " # ),\n", + " # Index(\n", + " # method_name=\"Score F\",\n", + " # priority_communities_field=field_names.SCORE_F_COMMUNITIES,\n", + " # ),\n", + " # Index(\n", + " # method_name=\"CalEnviroScreen 4.0\",\n", + " # priority_communities_field=\"calenviroscreen_priority_community\",\n", + " # ),\n", + " # Index(\n", + " # method_name=\"Mapping for EJ\",\n", + " # priority_communities_field=field_names.MAPPING_FOR_EJ_PRIORITY_COMMUNITY_FIELD,\n", + " # ),\n", + " # Index(\n", + " # method_name=\"EPA RSEI Aggregate Microdata\",\n", + " # priority_communities_field=field_names.EPA_RSEI_SCORE_THRESHOLD_FIELD,\n", + " # ),\n", + " # Index(\n", + " # method_name=\"Persistent Poverty\",\n", + " # priority_communities_field=PERSISTENT_POVERTY_TRACT_LEVEL_FIELD,\n", + " # ),\n", + " # Index(\n", + " # method_name=\"Maryland EJSCREEN\",\n", + " # priority_communities_field=field_names.MARYLAND_EJSCREEN_BURDENED_THRESHOLD_FIELD,\n", + " # ),\n", + " # Index(\n", + " # method_name=field_names.ENERGY_RELATED_COMMUNITIES_DEFINITION_ALTERNATIVE,\n", + " # priority_communities_field=field_names.ENERGY_RELATED_COMMUNITIES_DEFINITION_ALTERNATIVE,\n", + " # ),\n", + " # Index(\n", + " # method_name=\"CDC SVI Index\",\n", + " # priority_communities_field=field_names.CDC_SVI_INDEX_THEMES_PRIORITY_COMMUNITY,\n", + " # ),\n", + " # Index(\n", + " # method_name=\"Michigan EJSCREEN\",\n", + " # priority_communities_field=field_names.MICHIGAN_EJSCREEN_PRIORITY_COMMUNITY_FIELD,\n", + " # ),\n", + " # ]\n", " # Insert indices for each of the HOLC factors.\n", " # Note: since these involve no renaming, we write them using list comprehension.\n", - " + [\n", - " Index(\n", - " method_name=factor,\n", - " priority_communities_field=factor,\n", - " )\n", - " for factor in HOLC_FACTORS\n", - " ]\n", + " # + [\n", + " # Index(\n", + " # method_name=factor,\n", + " # priority_communities_field=factor,\n", + " # )\n", + " # for factor in HOLC_FACTORS\n", + " # ]\n", ")\n", "\n", "\n", - "ejscreen_areas_of_concern_census_block_group_indices = [\n", - " Index(\n", - " method_name=\"EJSCREEN Areas of Concern, National, 80th percentile\",\n", - " priority_communities_field=field_names.EJSCREEN_AREAS_OF_CONCERN_NATIONAL_80TH_PERCENTILE_COMMUNITIES_FIELD,\n", - " ),\n", - " Index(\n", - " method_name=\"EJSCREEN Areas of Concern, National, 90th percentile\",\n", - " priority_communities_field=field_names.EJSCREEN_AREAS_OF_CONCERN_NATIONAL_90TH_PERCENTILE_COMMUNITIES_FIELD,\n", - " ),\n", - " Index(\n", - " method_name=\"EJSCREEN Areas of Concern, National, 95th percentile\",\n", - " priority_communities_field=field_names.EJSCREEN_AREAS_OF_CONCERN_NATIONAL_95TH_PERCENTILE_COMMUNITIES_FIELD,\n", - " ),\n", - "]\n", - "\n", - "# Before including EJSCREEN AoC indicators are included, check whether or not the EJSCREEN AoC data is available locally.\n", - "if EJSCREENAreasOfConcernETL.ejscreen_areas_of_concern_data_exists():\n", - " # Add EJSCREEN AoCs to all of the CBG indices.\n", - " # TODO: When we get AoC data at the tract level, fix this.\n", - " # Right now commenting this out to avoid merging CBG-level areas of concern on a tract-level CEJST definition.\n", - " # census_block_group_indices.extend(\n", - " # ejscreen_areas_of_concern_census_block_group_indices\n", - " # )\n", - " pass\n", - "else:\n", - " pass\n", + "# ejscreen_areas_of_concern_census_block_group_indices = [\n", + "# Index(\n", + "# method_name=\"EJSCREEN Areas of Concern, National, 80th percentile\",\n", + "# priority_communities_field=field_names.EJSCREEN_AREAS_OF_CONCERN_NATIONAL_80TH_PERCENTILE_COMMUNITIES_FIELD,\n", + "# ),\n", + "# Index(\n", + "# method_name=\"EJSCREEN Areas of Concern, National, 90th percentile\",\n", + "# priority_communities_field=field_names.EJSCREEN_AREAS_OF_CONCERN_NATIONAL_90TH_PERCENTILE_COMMUNITIES_FIELD,\n", + "# ),\n", + "# Index(\n", + "# method_name=\"EJSCREEN Areas of Concern, National, 95th percentile\",\n", + "# priority_communities_field=field_names.EJSCREEN_AREAS_OF_CONCERN_NATIONAL_95TH_PERCENTILE_COMMUNITIES_FIELD,\n", + "# ),\n", + "# ]\n", + "\n", + "# # Before including EJSCREEN AoC indicators are included, check whether or not the EJSCREEN AoC data is available locally.\n", + "# if EJSCREENAreasOfConcernETL.ejscreen_areas_of_concern_data_exists():\n", + "# # Add EJSCREEN AoCs to all of the CBG indices.\n", + "# # TODO: When we get AoC data at the tract level, fix this.\n", + "# # Right now commenting this out to avoid merging CBG-level areas of concern on a tract-level CEJST definition.\n", + "# # census_block_group_indices.extend(\n", + "# # ejscreen_areas_of_concern_census_block_group_indices\n", + "# # )\n", + "# pass\n", + "# else:\n", + "# pass\n", "\n", "# These fields will be used for statistical comparisons.\n", "comparison_fields = [\n", @@ -3175,13 +3260,12 @@ " field_names.HEALTH_INSURANCE_FIELD,\n", " field_names.PHYS_HEALTH_NOT_GOOD_FIELD,\n", " field_names.DIABETES_FIELD,\n", - " field_names.LOW_READING_FIELD + field_names.PERCENTILE_FIELD_SUFFIX,\n", "]" ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 23, "id": "4b510cb1", "metadata": { "scrolled": true @@ -3191,20 +3275,21 @@ "name": "stdout", "output_type": "stream", "text": [ - "Converting calenviroscreen_priority_community to boolean.\n", - "Converting Mapping for Environmental Justice Priority Community to boolean.\n", - "Converting At or above 75 for overall percentile for the RSEI score to boolean.\n", - "Converting Persistent Poverty, Tract Level to boolean.\n", - "Converting Maryland EJSCREEN Priority Community to boolean.\n", - "Converting Energy-related alternative definition of communities to boolean.\n", - "Converting At or above 90 for overall percentile ranking according to Social Vulnerability Indices to boolean.\n", - "Converting Michigan EJSCREEN Priority Community to boolean.\n" + "Converting Definition N (communities) to boolean.\n", + "Converting Climate Factor (Definition N) to boolean.\n", + "Converting Energy Factor (Definition N) to boolean.\n", + "Converting Transportation Factor (Definition N) to boolean.\n", + "Converting Housing Factor (Definition N) to boolean.\n", + "Converting Pollution Factor (Definition N) to boolean.\n", + "Converting Water Factor (Definition N) to boolean.\n", + "Converting Health Factor (Definition N) to boolean.\n", + "Converting Workforce Factor (Definition N) to boolean.\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "98501c61ec76447fa7b2e30d230c5886", + "model_id": "8577639f0ebe469b8df1c3d9848f4a32", "version_major": 2, "version_minor": 0 }, @@ -3218,7 +3303,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "b6c45a7c99a3499a9806a5395f6bfe8c", + "model_id": "f03770010bf44057a715d9dc17b41f0c", "version_major": 2, "version_minor": 0 }, @@ -3232,7 +3317,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "cb93489fbec44e30af9013f63a650c02", + "model_id": "e64f4b0edc3a41b29eae785f4d5255f9", "version_major": 2, "version_minor": 0 }, @@ -3246,7 +3331,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "54640ab6c9974bddaf5f7d3a06e5624c", + "model_id": "9d6e0ea85ea44410a745f578c3966ff1", "version_major": 2, "version_minor": 0 }, @@ -3260,7 +3345,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "2e85423d07404cf98daf2ef0c024b5c1", + "model_id": "8e6a363d9cd84bbbb7416af94b6cab52", "version_major": 2, "version_minor": 0 }, @@ -3539,7 +3624,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 24, "id": "2bcbcabf", "metadata": {}, "outputs": [ @@ -3547,43 +3632,15 @@ "name": "stdout", "output_type": "stream", "text": [ - "Basic stats for Definition M\n", - "Basic stats for Definition L\n", - "Basic stats for Climate Factor (Definition M)\n", - "Basic stats for Energy Factor (Definition M)\n", - "Basic stats for Transportation Factor (Definition M)\n", - "Basic stats for Housing Factor (Definition M)\n", - "Basic stats for Pollution Factor (Definition M)\n", - "Basic stats for Water Factor (Definition M)\n", - "Basic stats for Health Factor (Definition M)\n", - "Basic stats for Workforce Factor (Definition M)\n", - "Basic stats for Any Non-Workforce Factor (Definition M)\n", - "Basic stats for Climate Factor (Definition L)\n", - "Basic stats for Energy Factor (Definition L)\n", - "Basic stats for Transportation Factor (Definition L)\n", - "Basic stats for Housing Factor (Definition L)\n", - "Basic stats for Pollution Factor (Definition L)\n", - "Basic stats for Water Factor (Definition L)\n", - "Basic stats for Health Factor (Definition L)\n", - "Basic stats for Workforce Factor (Definition L)\n", - "Basic stats for Any Non-Workforce Factor (Definition L)\n", - "Basic stats for NMTC Modified\n", - "Basic stats for NMTC\n", - "Basic stats for Score C\n", - "Basic stats for Score D (30th percentile)\n", - "Basic stats for Score D (25th percentile)\n", - "Basic stats for Score F\n", - "Basic stats for CalEnviroScreen 4.0\n", - "Basic stats for Mapping for EJ\n", - "Basic stats for EPA RSEI Aggregate Microdata\n", - "Basic stats for Persistent Poverty\n", - "Basic stats for Maryland EJSCREEN\n", - "Basic stats for Energy-related alternative definition of communities\n", - "Basic stats for CDC SVI Index\n", - "Basic stats for Michigan EJSCREEN\n", - "Basic stats for Tract is >20% HOLC Grade D\n", - "Basic stats for Tract is >50% HOLC Grade D\n", - "Basic stats for Tract is >75% HOLC Grade D\n" + "Basic stats for Definition N\n", + "Basic stats for Climate Factor (Definition N)\n", + "Basic stats for Energy Factor (Definition N)\n", + "Basic stats for Transportation Factor (Definition N)\n", + "Basic stats for Housing Factor (Definition N)\n", + "Basic stats for Pollution Factor (Definition N)\n", + "Basic stats for Water Factor (Definition N)\n", + "Basic stats for Health Factor (Definition N)\n", + "Basic stats for Workforce Factor (Definition N)\n" ] } ], @@ -3675,7 +3732,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 25, "id": "d1eec560", "metadata": { "scrolled": true @@ -3685,672 +3742,42 @@ "name": "stdout", "output_type": "stream", "text": [ - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Definition L', priority_communities_field='Definition L (communities)').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='NMTC', priority_communities_field='NMTC (communities)').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Score F', priority_communities_field='Score F (communities)').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Definition M', priority_communities_field='Definition M (communities)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='NMTC', priority_communities_field='NMTC (communities)').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Score F', priority_communities_field='Score F (communities)').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Definition L', priority_communities_field='Definition L (communities)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='NMTC', priority_communities_field='NMTC (communities)').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Score F', priority_communities_field='Score F (communities)').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Climate Factor (Definition M)', priority_communities_field='Climate Factor (Definition M)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='NMTC', priority_communities_field='NMTC (communities)').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Score F', priority_communities_field='Score F (communities)').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Energy Factor (Definition M)', priority_communities_field='Energy Factor (Definition M)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='NMTC', priority_communities_field='NMTC (communities)').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Score F', priority_communities_field='Score F (communities)').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Transportation Factor (Definition M)', priority_communities_field='Transportation Factor (Definition M)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='NMTC', priority_communities_field='NMTC (communities)').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Score F', priority_communities_field='Score F (communities)').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Housing Factor (Definition M)', priority_communities_field='Housing Factor (Definition M)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='NMTC', priority_communities_field='NMTC (communities)').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='Score F', priority_communities_field='Score F (communities)').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Pollution Factor (Definition M)', priority_communities_field='Pollution Factor (Definition M)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='NMTC', priority_communities_field='NMTC (communities)').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='Score F', priority_communities_field='Score F (communities)').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Water Factor (Definition M)', priority_communities_field='Water Factor (Definition M)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='NMTC', priority_communities_field='NMTC (communities)').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='Score F', priority_communities_field='Score F (communities)').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Health Factor (Definition M)', priority_communities_field='Health Factor (Definition M)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='NMTC', priority_communities_field='NMTC (communities)').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='Score F', priority_communities_field='Score F (communities)').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Workforce Factor (Definition M)', priority_communities_field='Workforce Factor (Definition M)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='NMTC', priority_communities_field='NMTC (communities)').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='Score F', priority_communities_field='Score F (communities)').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition M)', priority_communities_field='Any Non-Workforce Factor (Definition M)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)') and Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)').\n", - "Comparing Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)') and Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)').\n", - "Comparing Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)') and Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)').\n", - "Comparing Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)') and Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)').\n", - "Comparing Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)') and Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)').\n", - "Comparing Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)') and Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)').\n", - "Comparing Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)') and Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)') and Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)') and Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)').\n", - "Comparing Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)') and Index(method_name='NMTC', priority_communities_field='NMTC (communities)').\n", - "Comparing Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)') and Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)').\n", - "Comparing Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)') and Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)').\n", - "Comparing Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)') and Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)').\n", - "Comparing Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)') and Index(method_name='Score F', priority_communities_field='Score F (communities)').\n", - "Comparing Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Climate Factor (Definition L)', priority_communities_field='Climate Factor (Definition L)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)') and Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)').\n", - "Comparing Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)') and Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)').\n", - "Comparing Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)') and Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)').\n", - "Comparing Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)') and Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)').\n", - "Comparing Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)') and Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)').\n", - "Comparing Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)') and Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)') and Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)') and Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)').\n", - "Comparing Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)') and Index(method_name='NMTC', priority_communities_field='NMTC (communities)').\n", - "Comparing Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)') and Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)').\n", - "Comparing Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)') and Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)').\n", - "Comparing Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)') and Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)').\n", - "Comparing Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)') and Index(method_name='Score F', priority_communities_field='Score F (communities)').\n", - "Comparing Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Energy Factor (Definition L)', priority_communities_field='Energy Factor (Definition L)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)') and Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)').\n", - "Comparing Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)') and Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)').\n", - "Comparing Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)') and Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)').\n", - "Comparing Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)') and Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)').\n", - "Comparing Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)') and Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)') and Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)') and Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)').\n", - "Comparing Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)') and Index(method_name='NMTC', priority_communities_field='NMTC (communities)').\n", - "Comparing Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)') and Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)').\n", - "Comparing Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)') and Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)').\n", - "Comparing Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)') and Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)').\n", - "Comparing Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)') and Index(method_name='Score F', priority_communities_field='Score F (communities)').\n", - "Comparing Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Transportation Factor (Definition L)', priority_communities_field='Transportation Factor (Definition L)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)') and Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)').\n", - "Comparing Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)') and Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)').\n", - "Comparing Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)') and Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)').\n", - "Comparing Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)') and Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)') and Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)') and Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)').\n", - "Comparing Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)') and Index(method_name='NMTC', priority_communities_field='NMTC (communities)').\n", - "Comparing Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)') and Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)').\n", - "Comparing Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)') and Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)').\n", - "Comparing Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)') and Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)').\n", - "Comparing Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)') and Index(method_name='Score F', priority_communities_field='Score F (communities)').\n", - "Comparing Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Housing Factor (Definition L)', priority_communities_field='Housing Factor (Definition L)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)') and Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)').\n", - "Comparing Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)') and Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)').\n", - "Comparing Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)') and Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)') and Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)') and Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)').\n", - "Comparing Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)') and Index(method_name='NMTC', priority_communities_field='NMTC (communities)').\n", - "Comparing Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)') and Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)').\n", - "Comparing Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)') and Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)').\n", - "Comparing Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)') and Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)').\n", - "Comparing Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)') and Index(method_name='Score F', priority_communities_field='Score F (communities)').\n", - "Comparing Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Pollution Factor (Definition L)', priority_communities_field='Pollution Factor (Definition L)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)') and Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)').\n", - "Comparing Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)') and Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)') and Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)') and Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)').\n", - "Comparing Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)') and Index(method_name='NMTC', priority_communities_field='NMTC (communities)').\n", - "Comparing Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)') and Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)').\n", - "Comparing Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)') and Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)').\n", - "Comparing Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)') and Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)').\n", - "Comparing Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)') and Index(method_name='Score F', priority_communities_field='Score F (communities)').\n", - "Comparing Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Water Factor (Definition L)', priority_communities_field='Water Factor (Definition L)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)') and Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)') and Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)') and Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)').\n", - "Comparing Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)') and Index(method_name='NMTC', priority_communities_field='NMTC (communities)').\n", - "Comparing Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)') and Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)').\n", - "Comparing Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)') and Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)').\n", - "Comparing Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)') and Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)').\n", - "Comparing Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)') and Index(method_name='Score F', priority_communities_field='Score F (communities)').\n", - "Comparing Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Health Factor (Definition L)', priority_communities_field='Health Factor (Definition L)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)') and Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)').\n", - "Comparing Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)') and Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)').\n", - "Comparing Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)') and Index(method_name='NMTC', priority_communities_field='NMTC (communities)').\n", - "Comparing Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)') and Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)').\n", - "Comparing Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)') and Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)').\n", - "Comparing Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)') and Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)').\n", - "Comparing Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)') and Index(method_name='Score F', priority_communities_field='Score F (communities)').\n", - "Comparing Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Workforce Factor (Definition L)', priority_communities_field='Workforce Factor (Definition L)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)') and Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)') and Index(method_name='NMTC', priority_communities_field='NMTC (communities)').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)') and Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)') and Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)') and Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)') and Index(method_name='Score F', priority_communities_field='Score F (communities)').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Any Non-Workforce Factor (Definition L)', priority_communities_field='Any Non-Workforce Factor (Definition L)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)') and Index(method_name='NMTC', priority_communities_field='NMTC (communities)').\n", - "Comparing Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)') and Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)').\n", - "Comparing Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)') and Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)').\n", - "Comparing Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)') and Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)').\n", - "Comparing Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)') and Index(method_name='Score F', priority_communities_field='Score F (communities)').\n", - "Comparing Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='NMTC Modified', priority_communities_field='Score G (communities)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='NMTC', priority_communities_field='NMTC (communities)') and Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)').\n", - "Comparing Index(method_name='NMTC', priority_communities_field='NMTC (communities)') and Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)').\n", - "Comparing Index(method_name='NMTC', priority_communities_field='NMTC (communities)') and Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)').\n", - "Comparing Index(method_name='NMTC', priority_communities_field='NMTC (communities)') and Index(method_name='Score F', priority_communities_field='Score F (communities)').\n", - "Comparing Index(method_name='NMTC', priority_communities_field='NMTC (communities)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='NMTC', priority_communities_field='NMTC (communities)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='NMTC', priority_communities_field='NMTC (communities)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='NMTC', priority_communities_field='NMTC (communities)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='NMTC', priority_communities_field='NMTC (communities)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='NMTC', priority_communities_field='NMTC (communities)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='NMTC', priority_communities_field='NMTC (communities)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='NMTC', priority_communities_field='NMTC (communities)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='NMTC', priority_communities_field='NMTC (communities)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='NMTC', priority_communities_field='NMTC (communities)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='NMTC', priority_communities_field='NMTC (communities)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)') and Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)').\n", - "Comparing Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)') and Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)').\n", - "Comparing Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)') and Index(method_name='Score F', priority_communities_field='Score F (communities)').\n", - "Comparing Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Score C', priority_communities_field='Score C (top 25th percentile)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)') and Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)').\n", - "Comparing Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)') and Index(method_name='Score F', priority_communities_field='Score F (communities)').\n", - "Comparing Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Score D (30th percentile)', priority_communities_field='Score D (top 30th percentile)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)') and Index(method_name='Score F', priority_communities_field='Score F (communities)').\n", - "Comparing Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Score D (25th percentile)', priority_communities_field='Score D (top 25th percentile)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Score F', priority_communities_field='Score F (communities)') and Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community').\n", - "Comparing Index(method_name='Score F', priority_communities_field='Score F (communities)') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='Score F', priority_communities_field='Score F (communities)') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='Score F', priority_communities_field='Score F (communities)') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='Score F', priority_communities_field='Score F (communities)') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Score F', priority_communities_field='Score F (communities)') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Score F', priority_communities_field='Score F (communities)') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Score F', priority_communities_field='Score F (communities)') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Score F', priority_communities_field='Score F (communities)') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Score F', priority_communities_field='Score F (communities)') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Score F', priority_communities_field='Score F (communities)') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community') and Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community').\n", - "Comparing Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='CalEnviroScreen 4.0', priority_communities_field='calenviroscreen_priority_community') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community') and Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score').\n", - "Comparing Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Mapping for EJ', priority_communities_field='Mapping for Environmental Justice Priority Community') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score') and Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level').\n", - "Comparing Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='EPA RSEI Aggregate Microdata', priority_communities_field='At or above 75 for overall percentile for the RSEI score') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level') and Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Persistent Poverty', priority_communities_field='Persistent Poverty, Tract Level') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community') and Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities').\n", - "Comparing Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Maryland EJSCREEN', priority_communities_field='Maryland EJSCREEN Priority Community') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities') and Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices').\n", - "Comparing Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Energy-related alternative definition of communities', priority_communities_field='Energy-related alternative definition of communities') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices') and Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community').\n", - "Comparing Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='CDC SVI Index', priority_communities_field='At or above 90 for overall percentile ranking according to Social Vulnerability Indices') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community') and Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D').\n", - "Comparing Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Michigan EJSCREEN', priority_communities_field='Michigan EJSCREEN Priority Community') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D') and Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D').\n", - "Comparing Index(method_name='Tract is >20% HOLC Grade D', priority_communities_field='Tract is >20% HOLC Grade D') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n", - "Comparing Index(method_name='Tract is >50% HOLC Grade D', priority_communities_field='Tract is >50% HOLC Grade D') and Index(method_name='Tract is >75% HOLC Grade D', priority_communities_field='Tract is >75% HOLC Grade D').\n" + "Comparing Index(method_name='Definition N', priority_communities_field='Definition N (communities)') and Index(method_name='Climate Factor (Definition N)', priority_communities_field='Climate Factor (Definition N)').\n", + "Comparing Index(method_name='Definition N', priority_communities_field='Definition N (communities)') and Index(method_name='Energy Factor (Definition N)', priority_communities_field='Energy Factor (Definition N)').\n", + "Comparing Index(method_name='Definition N', priority_communities_field='Definition N (communities)') and Index(method_name='Transportation Factor (Definition N)', priority_communities_field='Transportation Factor (Definition N)').\n", + "Comparing Index(method_name='Definition N', priority_communities_field='Definition N (communities)') and Index(method_name='Housing Factor (Definition N)', priority_communities_field='Housing Factor (Definition N)').\n", + "Comparing Index(method_name='Definition N', priority_communities_field='Definition N (communities)') and Index(method_name='Pollution Factor (Definition N)', priority_communities_field='Pollution Factor (Definition N)').\n", + "Comparing Index(method_name='Definition N', priority_communities_field='Definition N (communities)') and Index(method_name='Water Factor (Definition N)', priority_communities_field='Water Factor (Definition N)').\n", + "Comparing Index(method_name='Definition N', priority_communities_field='Definition N (communities)') and Index(method_name='Health Factor (Definition N)', priority_communities_field='Health Factor (Definition N)').\n", + "Comparing Index(method_name='Definition N', priority_communities_field='Definition N (communities)') and Index(method_name='Workforce Factor (Definition N)', priority_communities_field='Workforce Factor (Definition N)').\n", + "Comparing Index(method_name='Climate Factor (Definition N)', priority_communities_field='Climate Factor (Definition N)') and Index(method_name='Energy Factor (Definition N)', priority_communities_field='Energy Factor (Definition N)').\n", + "Comparing Index(method_name='Climate Factor (Definition N)', priority_communities_field='Climate Factor (Definition N)') and Index(method_name='Transportation Factor (Definition N)', priority_communities_field='Transportation Factor (Definition N)').\n", + "Comparing Index(method_name='Climate Factor (Definition N)', priority_communities_field='Climate Factor (Definition N)') and Index(method_name='Housing Factor (Definition N)', priority_communities_field='Housing Factor (Definition N)').\n", + "Comparing Index(method_name='Climate Factor (Definition N)', priority_communities_field='Climate Factor (Definition N)') and Index(method_name='Pollution Factor (Definition N)', priority_communities_field='Pollution Factor (Definition N)').\n", + "Comparing Index(method_name='Climate Factor (Definition N)', priority_communities_field='Climate Factor (Definition N)') and Index(method_name='Water Factor (Definition N)', priority_communities_field='Water Factor (Definition N)').\n", + "Comparing Index(method_name='Climate Factor (Definition N)', priority_communities_field='Climate Factor (Definition N)') and Index(method_name='Health Factor (Definition N)', priority_communities_field='Health Factor (Definition N)').\n", + "Comparing Index(method_name='Climate Factor (Definition N)', priority_communities_field='Climate Factor (Definition N)') and Index(method_name='Workforce Factor (Definition N)', priority_communities_field='Workforce Factor (Definition N)').\n", + "Comparing Index(method_name='Energy Factor (Definition N)', priority_communities_field='Energy Factor (Definition N)') and Index(method_name='Transportation Factor (Definition N)', priority_communities_field='Transportation Factor (Definition N)').\n", + "Comparing Index(method_name='Energy Factor (Definition N)', priority_communities_field='Energy Factor (Definition N)') and Index(method_name='Housing Factor (Definition N)', priority_communities_field='Housing Factor (Definition N)').\n", + "Comparing Index(method_name='Energy Factor (Definition N)', priority_communities_field='Energy Factor (Definition N)') and Index(method_name='Pollution Factor (Definition N)', priority_communities_field='Pollution Factor (Definition N)').\n", + "Comparing Index(method_name='Energy Factor (Definition N)', priority_communities_field='Energy Factor (Definition N)') and Index(method_name='Water Factor (Definition N)', priority_communities_field='Water Factor (Definition N)').\n", + "Comparing Index(method_name='Energy Factor (Definition N)', priority_communities_field='Energy Factor (Definition N)') and Index(method_name='Health Factor (Definition N)', priority_communities_field='Health Factor (Definition N)').\n", + "Comparing Index(method_name='Energy Factor (Definition N)', priority_communities_field='Energy Factor (Definition N)') and Index(method_name='Workforce Factor (Definition N)', priority_communities_field='Workforce Factor (Definition N)').\n", + "Comparing Index(method_name='Transportation Factor (Definition N)', priority_communities_field='Transportation Factor (Definition N)') and Index(method_name='Housing Factor (Definition N)', priority_communities_field='Housing Factor (Definition N)').\n", + "Comparing Index(method_name='Transportation Factor (Definition N)', priority_communities_field='Transportation Factor (Definition N)') and Index(method_name='Pollution Factor (Definition N)', priority_communities_field='Pollution Factor (Definition N)').\n", + "Comparing Index(method_name='Transportation Factor (Definition N)', priority_communities_field='Transportation Factor (Definition N)') and Index(method_name='Water Factor (Definition N)', priority_communities_field='Water Factor (Definition N)').\n", + "Comparing Index(method_name='Transportation Factor (Definition N)', priority_communities_field='Transportation Factor (Definition N)') and Index(method_name='Health Factor (Definition N)', priority_communities_field='Health Factor (Definition N)').\n", + "Comparing Index(method_name='Transportation Factor (Definition N)', priority_communities_field='Transportation Factor (Definition N)') and Index(method_name='Workforce Factor (Definition N)', priority_communities_field='Workforce Factor (Definition N)').\n", + "Comparing Index(method_name='Housing Factor (Definition N)', priority_communities_field='Housing Factor (Definition N)') and Index(method_name='Pollution Factor (Definition N)', priority_communities_field='Pollution Factor (Definition N)').\n", + "Comparing Index(method_name='Housing Factor (Definition N)', priority_communities_field='Housing Factor (Definition N)') and Index(method_name='Water Factor (Definition N)', priority_communities_field='Water Factor (Definition N)').\n", + "Comparing Index(method_name='Housing Factor (Definition N)', priority_communities_field='Housing Factor (Definition N)') and Index(method_name='Health Factor (Definition N)', priority_communities_field='Health Factor (Definition N)').\n", + "Comparing Index(method_name='Housing Factor (Definition N)', priority_communities_field='Housing Factor (Definition N)') and Index(method_name='Workforce Factor (Definition N)', priority_communities_field='Workforce Factor (Definition N)').\n", + "Comparing Index(method_name='Pollution Factor (Definition N)', priority_communities_field='Pollution Factor (Definition N)') and Index(method_name='Water Factor (Definition N)', priority_communities_field='Water Factor (Definition N)').\n", + "Comparing Index(method_name='Pollution Factor (Definition N)', priority_communities_field='Pollution Factor (Definition N)') and Index(method_name='Health Factor (Definition N)', priority_communities_field='Health Factor (Definition N)').\n", + "Comparing Index(method_name='Pollution Factor (Definition N)', priority_communities_field='Pollution Factor (Definition N)') and Index(method_name='Workforce Factor (Definition N)', priority_communities_field='Workforce Factor (Definition N)').\n", + "Comparing Index(method_name='Water Factor (Definition N)', priority_communities_field='Water Factor (Definition N)') and Index(method_name='Health Factor (Definition N)', priority_communities_field='Health Factor (Definition N)').\n", + "Comparing Index(method_name='Water Factor (Definition N)', priority_communities_field='Water Factor (Definition N)') and Index(method_name='Workforce Factor (Definition N)', priority_communities_field='Workforce Factor (Definition N)').\n", + "Comparing Index(method_name='Health Factor (Definition N)', priority_communities_field='Health Factor (Definition N)') and Index(method_name='Workforce Factor (Definition N)', priority_communities_field='Workforce Factor (Definition N)').\n" ] } ], @@ -4540,33 +3967,19 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 26, "id": "48005fad", "metadata": { "scrolled": true }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/var/folders/z6/9czv8cpx2hvcycd6slvfp4ph0000gq/T/ipykernel_35872/2594933895.py:125: RuntimeWarning: invalid value encountered in long_scalars\n", - " f\"{true_true_census_tracts} ({true_true_census_tracts / total_census_tracts:.0%}) \"\n", - "/var/folders/z6/9czv8cpx2hvcycd6slvfp4ph0000gq/T/ipykernel_35872/2594933895.py:128: RuntimeWarning: invalid value encountered in long_scalars\n", - " f\"{true_false_census_tracts} ({true_false_census_tracts / total_census_tracts:.0%}) \"\n", - "/var/folders/z6/9czv8cpx2hvcycd6slvfp4ph0000gq/T/ipykernel_35872/2594933895.py:131: RuntimeWarning: invalid value encountered in long_scalars\n", - " f\"{false_true_census_tracts} ({false_true_census_tracts / total_census_tracts:.0%}) \"\n", - "/var/folders/z6/9czv8cpx2hvcycd6slvfp4ph0000gq/T/ipykernel_35872/2594933895.py:134: RuntimeWarning: invalid value encountered in long_scalars\n", - " f\"{false_false_census_tracts} ({false_false_census_tracts / total_census_tracts:.0%}) \"\n" - ] - }, { "data": { "text/plain": [ - "PosixPath('/Users/emmausds/Desktop/justice40-tool/data/data-pipeline/data_pipeline/data/comparison_outputs/20220217-115053/Comparison report - All census tract indices.docx')" + "PosixPath('/Users/emmausds/Desktop/justice40-tool/data/data-pipeline/data_pipeline/data/comparison_outputs/20221003-131149/Comparison report - All census tract indices.docx')" ] }, - "execution_count": 22, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -4742,7 +4155,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 27, "id": "7d095ebd", "metadata": {}, "outputs": [ @@ -4752,7 +4165,7 @@ "0" ] }, - "execution_count": 23, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } 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 new file mode 100644 index 000000000..0560b5456 --- /dev/null +++ b/data/data-pipeline/data_pipeline/ipython/tribal_and_tracts_overlap.ipynb @@ -0,0 +1,1422 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "id": "f0b6f7e2", + "metadata": {}, + "outputs": [], + "source": [ + "import geopandas as gpd\n", + "import pyogrio\n", + "from data_pipeline.etl.sources.census.etl import CensusETL\n", + "from data_pipeline.etl.sources.tribal.etl import TribalETL\n", + "\n", + "import time\n", + "\n", + "begin = time.time()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "1e3e65af", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
tribalIdlandAreaNameClassificationgeometry
0LAR0001Cheyenne River LAR1MULTIPOLYGON (((-100.49935 45.47125, -100.4993...
1LAR0002Crow Creek LAR1POLYGON ((-99.42137 44.27733, -99.42138 44.273...
2LAR0003Flandreau LAR1MULTIPOLYGON (((-96.56655 44.08786, -96.57165 ...
3LAR0004Fort Berthold LAR1POLYGON ((-102.78362 47.99900, -102.78192 47.9...
4LAR0005Lake Traverse (Sisseton) LAR1MULTIPOLYGON (((-97.28946 45.76084, -97.28955 ...
...............
592{0886416F-643E-497E-89D3-E9CC0240158D}ChilkatNonePOINT (-135.88440 59.40390)
593{2029C35B-86D7-4751-A946-EA0772C81A80}ChilkootNonePOINT (-135.44500 59.23580)
594{24DF6536-95CB-4964-94DF-16E440ABCA92}CraigNonePOINT (-133.14830 55.47640)
595{ACDE097A-9BDA-4FCA-9DB7-297DA6B73F88}DouglasNonePOINT (-134.41970 58.30190)
596{5E1D1895-FF41-4B11-9EDB-0C1254A360C4}AgdaaguxNonePOINT (-162.31030 55.06170)
\n", + "

597 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " tribalId landAreaName \\\n", + "0 LAR0001 Cheyenne River LAR \n", + "1 LAR0002 Crow Creek LAR \n", + "2 LAR0003 Flandreau LAR \n", + "3 LAR0004 Fort Berthold LAR \n", + "4 LAR0005 Lake Traverse (Sisseton) LAR \n", + ".. ... ... \n", + "592 {0886416F-643E-497E-89D3-E9CC0240158D} Chilkat \n", + "593 {2029C35B-86D7-4751-A946-EA0772C81A80} Chilkoot \n", + "594 {24DF6536-95CB-4964-94DF-16E440ABCA92} Craig \n", + "595 {ACDE097A-9BDA-4FCA-9DB7-297DA6B73F88} Douglas \n", + "596 {5E1D1895-FF41-4B11-9EDB-0C1254A360C4} Agdaagux \n", + "\n", + " Classification geometry \n", + "0 1 MULTIPOLYGON (((-100.49935 45.47125, -100.4993... \n", + "1 1 POLYGON ((-99.42137 44.27733, -99.42138 44.273... \n", + "2 1 MULTIPOLYGON (((-96.56655 44.08786, -96.57165 ... \n", + "3 1 POLYGON ((-102.78362 47.99900, -102.78192 47.9... \n", + "4 1 MULTIPOLYGON (((-97.28946 45.76084, -97.28955 ... \n", + ".. ... ... \n", + "592 None POINT (-135.88440 59.40390) \n", + "593 None POINT (-135.44500 59.23580) \n", + "594 None POINT (-133.14830 55.47640) \n", + "595 None POINT (-134.41970 58.30190) \n", + "596 None POINT (-162.31030 55.06170) \n", + "\n", + "[597 rows x 4 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Load Tribal geojson\n", + "tribal_gdf = gpd.read_file(\n", + " TribalETL().NATIONAL_TRIBAL_GEOJSON_PATH,\n", + " # Use `pyogrio` because it's vectorized and faster.\n", + " engine=\"pyogrio\",\n", + ")\n", + "\n", + "tribal_gdf" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "89fedd44", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
tribalIdlandAreaNameClassificationgeometry
0LAR0001Cheyenne River LAR1MULTIPOLYGON (((-100.49935 45.47125, -100.4993...
1LAR0002Crow Creek LAR1POLYGON ((-99.42137 44.27733, -99.42138 44.273...
2LAR0003Flandreau LAR1MULTIPOLYGON (((-96.56655 44.08786, -96.57165 ...
3LAR0004Fort Berthold LAR1POLYGON ((-102.78362 47.99900, -102.78192 47.9...
4LAR0005Lake Traverse (Sisseton) LAR1MULTIPOLYGON (((-97.28946 45.76084, -97.28955 ...
...............
365TSA0354Seminole TSANonePOLYGON ((-96.49048 34.90423, -96.49146 34.903...
366TSA0355Seneca Cayuga TSANonePOLYGON ((-94.61803 36.62531, -94.62083 36.625...
367TSA0356Tonkawa TSANonePOLYGON ((-97.24698 36.68082, -97.24697 36.677...
368TSA0357Wichita Caddo and Delaware TSANonePOLYGON ((-97.99931 35.36425, -97.99948 35.360...
369TSA0358Wyandotte TSANonePOLYGON ((-94.61820 36.82030, -94.61821 36.816...
\n", + "

370 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " tribalId landAreaName Classification \\\n", + "0 LAR0001 Cheyenne River LAR 1 \n", + "1 LAR0002 Crow Creek LAR 1 \n", + "2 LAR0003 Flandreau LAR 1 \n", + "3 LAR0004 Fort Berthold LAR 1 \n", + "4 LAR0005 Lake Traverse (Sisseton) LAR 1 \n", + ".. ... ... ... \n", + "365 TSA0354 Seminole TSA None \n", + "366 TSA0355 Seneca Cayuga TSA None \n", + "367 TSA0356 Tonkawa TSA None \n", + "368 TSA0357 Wichita Caddo and Delaware TSA None \n", + "369 TSA0358 Wyandotte TSA None \n", + "\n", + " geometry \n", + "0 MULTIPOLYGON (((-100.49935 45.47125, -100.4993... \n", + "1 POLYGON ((-99.42137 44.27733, -99.42138 44.273... \n", + "2 MULTIPOLYGON (((-96.56655 44.08786, -96.57165 ... \n", + "3 POLYGON ((-102.78362 47.99900, -102.78192 47.9... \n", + "4 MULTIPOLYGON (((-97.28946 45.76084, -97.28955 ... \n", + ".. ... \n", + "365 POLYGON ((-96.49048 34.90423, -96.49146 34.903... \n", + "366 POLYGON ((-94.61803 36.62531, -94.62083 36.625... \n", + "367 POLYGON ((-97.24698 36.68082, -97.24697 36.677... \n", + "368 POLYGON ((-97.99931 35.36425, -97.99948 35.360... \n", + "369 POLYGON ((-94.61820 36.82030, -94.61821 36.816... \n", + "\n", + "[370 rows x 4 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Drop the points from the Tribal data (because these cannot be joined to a (Multi)Polygon tract data frame)\n", + "tribal_gdf = tribal_gdf[tribal_gdf.geom_type != \"Point\"]\n", + "tribal_gdf" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "5940556f", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
STATEFP10COUNTYFP10TRACTCE10GEOID10NAME10NAMELSAD10MTFCC10FUNCSTAT10ALAND10AWATER10INTPTLAT10INTPTLON10geometry
020071958100200719581009581Census Tract 9581G5020S20161768140+38.4804076-101.8059837POLYGON ((-101.79971 38.69806, -101.79097 38.6...
120175965600201759656009656Census Tract 9656G5020S16035757012204351+37.1805849-100.8547406POLYGON ((-101.06766 37.20440, -101.06768 37.2...
220175965700201759657009657Census Tract 9657G5020S9466451358282+37.0625361-100.9131437POLYGON ((-100.94250 37.06497, -100.94251 37.0...
32004302030020043020300203Census Tract 203G5020S2115932067045771+39.7881238-094.9734666POLYGON ((-94.95518 39.90129, -94.95475 39.901...
42004302020020043020200202Census Tract 202G5020S3526870262968059+39.7540484-095.1060098POLYGON ((-95.02575 39.88295, -95.02585 39.883...
..........................................
7412935049000600350490006006Census Tract 6G5020S16294710+35.6758519-105.9446097POLYGON ((-105.95207 35.67367, -105.95215 35.6...
7413035049000700350490007007Census Tract 7G5020S12855970+35.6802004-105.9558818POLYGON ((-105.96221 35.67223, -105.96245 35.6...
7413135049000800350490008008Census Tract 8G5020S19167970+35.6805095-105.9703558POLYGON ((-105.98159 35.67739, -105.98143 35.6...
7413235049000900350490009009Census Tract 9G5020S25455630+35.6692966-105.9755351POLYGON ((-105.96362 35.67616, -105.96365 35.6...
74133350490010013504900100110.01Census Tract 10.01G5020S26172810+35.6647341-105.9468629POLYGON ((-105.94510 35.65705, -105.94563 35.6...
\n", + "

74134 rows × 13 columns

\n", + "
" + ], + "text/plain": [ + " STATEFP10 COUNTYFP10 TRACTCE10 GEOID10 NAME10 NAMELSAD10 \\\n", + "0 20 071 958100 20071958100 9581 Census Tract 9581 \n", + "1 20 175 965600 20175965600 9656 Census Tract 9656 \n", + "2 20 175 965700 20175965700 9657 Census Tract 9657 \n", + "3 20 043 020300 20043020300 203 Census Tract 203 \n", + "4 20 043 020200 20043020200 202 Census Tract 202 \n", + "... ... ... ... ... ... ... \n", + "74129 35 049 000600 35049000600 6 Census Tract 6 \n", + "74130 35 049 000700 35049000700 7 Census Tract 7 \n", + "74131 35 049 000800 35049000800 8 Census Tract 8 \n", + "74132 35 049 000900 35049000900 9 Census Tract 9 \n", + "74133 35 049 001001 35049001001 10.01 Census Tract 10.01 \n", + "\n", + " MTFCC10 FUNCSTAT10 ALAND10 AWATER10 INTPTLAT10 INTPTLON10 \\\n", + "0 G5020 S 2016176814 0 +38.4804076 -101.8059837 \n", + "1 G5020 S 1603575701 2204351 +37.1805849 -100.8547406 \n", + "2 G5020 S 9466451 358282 +37.0625361 -100.9131437 \n", + "3 G5020 S 211593206 7045771 +39.7881238 -094.9734666 \n", + "4 G5020 S 352687026 2968059 +39.7540484 -095.1060098 \n", + "... ... ... ... ... ... ... \n", + "74129 G5020 S 1629471 0 +35.6758519 -105.9446097 \n", + "74130 G5020 S 1285597 0 +35.6802004 -105.9558818 \n", + "74131 G5020 S 1916797 0 +35.6805095 -105.9703558 \n", + "74132 G5020 S 2545563 0 +35.6692966 -105.9755351 \n", + "74133 G5020 S 2617281 0 +35.6647341 -105.9468629 \n", + "\n", + " geometry \n", + "0 POLYGON ((-101.79971 38.69806, -101.79097 38.6... \n", + "1 POLYGON ((-101.06766 37.20440, -101.06768 37.2... \n", + "2 POLYGON ((-100.94250 37.06497, -100.94251 37.0... \n", + "3 POLYGON ((-94.95518 39.90129, -94.95475 39.901... \n", + "4 POLYGON ((-95.02575 39.88295, -95.02585 39.883... \n", + "... ... \n", + "74129 POLYGON ((-105.95207 35.67367, -105.95215 35.6... \n", + "74130 POLYGON ((-105.96221 35.67223, -105.96245 35.6... \n", + "74131 POLYGON ((-105.98159 35.67739, -105.98143 35.6... \n", + "74132 POLYGON ((-105.96362 35.67616, -105.96365 35.6... \n", + "74133 POLYGON ((-105.94510 35.65705, -105.94563 35.6... \n", + "\n", + "[74134 rows x 13 columns]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Load Census tracts geojson\n", + "census_tract_gdf = gpd.read_file(\n", + " CensusETL.NATIONAL_TRACT_JSON_PATH,\n", + " # Use `pyogrio` because it's vectorized and faster.\n", + " engine=\"pyogrio\",\n", + ")\n", + "\n", + "census_tract_gdf" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "595b2a2a", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/lx/xmq8p65j71v9xq2bhsd2j5w40000gp/T/ipykernel_768/2956500515.py:2: UserWarning: Geometry is in a geographic CRS. Results from 'area' are likely incorrect. Use 'GeoSeries.to_crs()' to re-project geometries to a projected CRS before this operation.\n", + "\n", + " census_tract_gdf[\"area_tract\"] = census_tract_gdf.area\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
STATEFP10COUNTYFP10TRACTCE10GEOID10NAME10NAMELSAD10MTFCC10FUNCSTAT10ALAND10AWATER10INTPTLAT10INTPTLON10geometryarea_tract
020071958100200719581009581Census Tract 9581G5020S20161768140+38.4804076-101.8059837POLYGON ((-101.79971 38.69806, -101.79097 38.6...0.208156
120175965600201759656009656Census Tract 9656G5020S16035757012204351+37.1805849-100.8547406POLYGON ((-101.06766 37.20440, -101.06768 37.2...0.162976
220175965700201759657009657Census Tract 9657G5020S9466451358282+37.0625361-100.9131437POLYGON ((-100.94250 37.06497, -100.94251 37.0...0.000995
32004302030020043020300203Census Tract 203G5020S2115932067045771+39.7881238-094.9734666POLYGON ((-94.95518 39.90129, -94.95475 39.901...0.022990
42004302020020043020200202Census Tract 202G5020S3526870262968059+39.7540484-095.1060098POLYGON ((-95.02575 39.88295, -95.02585 39.883...0.037373
.............................................
7412935049000600350490006006Census Tract 6G5020S16294710+35.6758519-105.9446097POLYGON ((-105.95207 35.67367, -105.95215 35.6...0.000162
7413035049000700350490007007Census Tract 7G5020S12855970+35.6802004-105.9558818POLYGON ((-105.96221 35.67223, -105.96245 35.6...0.000128
7413135049000800350490008008Census Tract 8G5020S19167970+35.6805095-105.9703558POLYGON ((-105.98159 35.67739, -105.98143 35.6...0.000191
7413235049000900350490009009Census Tract 9G5020S25455630+35.6692966-105.9755351POLYGON ((-105.96362 35.67616, -105.96365 35.6...0.000253
74133350490010013504900100110.01Census Tract 10.01G5020S26172810+35.6647341-105.9468629POLYGON ((-105.94510 35.65705, -105.94563 35.6...0.000261
\n", + "

74134 rows × 14 columns

\n", + "
" + ], + "text/plain": [ + " STATEFP10 COUNTYFP10 TRACTCE10 GEOID10 NAME10 NAMELSAD10 \\\n", + "0 20 071 958100 20071958100 9581 Census Tract 9581 \n", + "1 20 175 965600 20175965600 9656 Census Tract 9656 \n", + "2 20 175 965700 20175965700 9657 Census Tract 9657 \n", + "3 20 043 020300 20043020300 203 Census Tract 203 \n", + "4 20 043 020200 20043020200 202 Census Tract 202 \n", + "... ... ... ... ... ... ... \n", + "74129 35 049 000600 35049000600 6 Census Tract 6 \n", + "74130 35 049 000700 35049000700 7 Census Tract 7 \n", + "74131 35 049 000800 35049000800 8 Census Tract 8 \n", + "74132 35 049 000900 35049000900 9 Census Tract 9 \n", + "74133 35 049 001001 35049001001 10.01 Census Tract 10.01 \n", + "\n", + " MTFCC10 FUNCSTAT10 ALAND10 AWATER10 INTPTLAT10 INTPTLON10 \\\n", + "0 G5020 S 2016176814 0 +38.4804076 -101.8059837 \n", + "1 G5020 S 1603575701 2204351 +37.1805849 -100.8547406 \n", + "2 G5020 S 9466451 358282 +37.0625361 -100.9131437 \n", + "3 G5020 S 211593206 7045771 +39.7881238 -094.9734666 \n", + "4 G5020 S 352687026 2968059 +39.7540484 -095.1060098 \n", + "... ... ... ... ... ... ... \n", + "74129 G5020 S 1629471 0 +35.6758519 -105.9446097 \n", + "74130 G5020 S 1285597 0 +35.6802004 -105.9558818 \n", + "74131 G5020 S 1916797 0 +35.6805095 -105.9703558 \n", + "74132 G5020 S 2545563 0 +35.6692966 -105.9755351 \n", + "74133 G5020 S 2617281 0 +35.6647341 -105.9468629 \n", + "\n", + " geometry area_tract \n", + "0 POLYGON ((-101.79971 38.69806, -101.79097 38.6... 0.208156 \n", + "1 POLYGON ((-101.06766 37.20440, -101.06768 37.2... 0.162976 \n", + "2 POLYGON ((-100.94250 37.06497, -100.94251 37.0... 0.000995 \n", + "3 POLYGON ((-94.95518 39.90129, -94.95475 39.901... 0.022990 \n", + "4 POLYGON ((-95.02575 39.88295, -95.02585 39.883... 0.037373 \n", + "... ... ... \n", + "74129 POLYGON ((-105.95207 35.67367, -105.95215 35.6... 0.000162 \n", + "74130 POLYGON ((-105.96221 35.67223, -105.96245 35.6... 0.000128 \n", + "74131 POLYGON ((-105.98159 35.67739, -105.98143 35.6... 0.000191 \n", + "74132 POLYGON ((-105.96362 35.67616, -105.96365 35.6... 0.000253 \n", + "74133 POLYGON ((-105.94510 35.65705, -105.94563 35.6... 0.000261 \n", + "\n", + "[74134 rows x 14 columns]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Create a measure for the entire census tract area\n", + "census_tract_gdf[\"area_tract\"] = census_tract_gdf.area\n", + "census_tract_gdf" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "0ea396ed", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/lx/xmq8p65j71v9xq2bhsd2j5w40000gp/T/ipykernel_768/1353983773.py:2: UserWarning: `keep_geom_type=True` in overlay resulted in 1123 dropped geometries of different geometry types than df1 has. Set `keep_geom_type=False` to retain all geometries\n", + " gdf_joined = gpd.overlay(census_tract_gdf, tribal_gdf, how=\"union\")\n" + ] + } + ], + "source": [ + "# Performing overlay funcion\n", + "gdf_joined = gpd.overlay(census_tract_gdf, tribal_gdf, how=\"union\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "7fb3ef69", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/lx/xmq8p65j71v9xq2bhsd2j5w40000gp/T/ipykernel_768/2727120487.py:3: UserWarning: Geometry is in a geographic CRS. Results from 'area' are likely incorrect. Use 'GeoSeries.to_crs()' to re-project geometries to a projected CRS before this operation.\n", + "\n", + " gdf_joined['area_joined'] = gdf_joined.area\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
STATEFP10COUNTYFP10TRACTCE10GEOID10NAME10NAMELSAD10MTFCC10FUNCSTAT10ALAND10AWATER10INTPTLAT10INTPTLON10area_tracttribalIdlandAreaNameClassificationgeometryarea_joinedtribal_area_as_a_share_of_tract_area
02004302010020043020100201Census Tract 201G5020S454634616.02601186.0+39.8206800-095.25672790.048098LAR0210Iowa LAR1POLYGON ((-95.33994 39.97506, -95.33994 39.975...4.998139e-040.010391
120013480600200134806004806Census Tract 4806G5020S882293538.01376818.0+39.8596443-095.62551870.093019LAR0210Iowa LAR1POLYGON ((-95.45656 40.00025, -95.45528 40.000...3.209294e-030.034502
231147964500311479645009645Census Tract 9645G5020S677848509.06076731.0+40.1522236-095.58588700.072289LAR0210Iowa LAR1MULTIPOLYGON (((-95.38162 40.02744, -95.38119 ...1.476624e-030.020427
329087960300290879603009603Census Tract 9603G5020S412869716.06745159.0+39.9730230-095.14797010.044239LAR0210Iowa LAR1POLYGON ((-95.38119 40.02755, -95.38162 40.027...1.965514e-070.000004
42008508260020085082600826Census Tract 826G5020S690868809.0947758.0+39.4553966-095.67314040.072404LAR0211Kickapoo (Kansas) LAR1POLYGON ((-95.71031 39.65308, -95.69902 39.653...5.285627e-060.000073
............................................................
76317NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNTSA0353Sac and Fox TSANoneMULTIPOLYGON (((-96.62002 35.75143, -96.62001 ...6.560647e-17NaN
76318NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNTSA0354Seminole TSANoneMULTIPOLYGON (((-96.77536 35.03300, -96.77536 ...7.207055e-18NaN
76319NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNTSA0355Seneca Cayuga TSANonePOLYGON ((-94.61836 36.74340, -94.61836 36.743...7.016721e-18NaN
76320NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNTSA0356Tonkawa TSANoneMULTIPOLYGON (((-97.24698 36.69942, -97.24692 ...2.612218e-17NaN
76321NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNTSA0358Wyandotte TSANonePOLYGON ((-94.61828 36.78970, -94.61834 36.795...1.555259e-18NaN
\n", + "

76322 rows × 19 columns

\n", + "
" + ], + "text/plain": [ + " STATEFP10 COUNTYFP10 TRACTCE10 GEOID10 NAME10 NAMELSAD10 \\\n", + "0 20 043 020100 20043020100 201 Census Tract 201 \n", + "1 20 013 480600 20013480600 4806 Census Tract 4806 \n", + "2 31 147 964500 31147964500 9645 Census Tract 9645 \n", + "3 29 087 960300 29087960300 9603 Census Tract 9603 \n", + "4 20 085 082600 20085082600 826 Census Tract 826 \n", + "... ... ... ... ... ... ... \n", + "76317 NaN NaN NaN NaN NaN NaN \n", + "76318 NaN NaN NaN NaN NaN NaN \n", + "76319 NaN NaN NaN NaN NaN NaN \n", + "76320 NaN NaN NaN NaN NaN NaN \n", + "76321 NaN NaN NaN NaN NaN NaN \n", + "\n", + " MTFCC10 FUNCSTAT10 ALAND10 AWATER10 INTPTLAT10 INTPTLON10 \\\n", + "0 G5020 S 454634616.0 2601186.0 +39.8206800 -095.2567279 \n", + "1 G5020 S 882293538.0 1376818.0 +39.8596443 -095.6255187 \n", + "2 G5020 S 677848509.0 6076731.0 +40.1522236 -095.5858870 \n", + "3 G5020 S 412869716.0 6745159.0 +39.9730230 -095.1479701 \n", + "4 G5020 S 690868809.0 947758.0 +39.4553966 -095.6731404 \n", + "... ... ... ... ... ... ... \n", + "76317 NaN NaN NaN NaN NaN NaN \n", + "76318 NaN NaN NaN NaN NaN NaN \n", + "76319 NaN NaN NaN NaN NaN NaN \n", + "76320 NaN NaN NaN NaN NaN NaN \n", + "76321 NaN NaN NaN NaN NaN NaN \n", + "\n", + " area_tract tribalId landAreaName Classification \\\n", + "0 0.048098 LAR0210 Iowa LAR 1 \n", + "1 0.093019 LAR0210 Iowa LAR 1 \n", + "2 0.072289 LAR0210 Iowa LAR 1 \n", + "3 0.044239 LAR0210 Iowa LAR 1 \n", + "4 0.072404 LAR0211 Kickapoo (Kansas) LAR 1 \n", + "... ... ... ... ... \n", + "76317 NaN TSA0353 Sac and Fox TSA None \n", + "76318 NaN TSA0354 Seminole TSA None \n", + "76319 NaN TSA0355 Seneca Cayuga TSA None \n", + "76320 NaN TSA0356 Tonkawa TSA None \n", + "76321 NaN TSA0358 Wyandotte TSA None \n", + "\n", + " geometry area_joined \\\n", + "0 POLYGON ((-95.33994 39.97506, -95.33994 39.975... 4.998139e-04 \n", + "1 POLYGON ((-95.45656 40.00025, -95.45528 40.000... 3.209294e-03 \n", + "2 MULTIPOLYGON (((-95.38162 40.02744, -95.38119 ... 1.476624e-03 \n", + "3 POLYGON ((-95.38119 40.02755, -95.38162 40.027... 1.965514e-07 \n", + "4 POLYGON ((-95.71031 39.65308, -95.69902 39.653... 5.285627e-06 \n", + "... ... ... \n", + "76317 MULTIPOLYGON (((-96.62002 35.75143, -96.62001 ... 6.560647e-17 \n", + "76318 MULTIPOLYGON (((-96.77536 35.03300, -96.77536 ... 7.207055e-18 \n", + "76319 POLYGON ((-94.61836 36.74340, -94.61836 36.743... 7.016721e-18 \n", + "76320 MULTIPOLYGON (((-97.24698 36.69942, -97.24692 ... 2.612218e-17 \n", + "76321 POLYGON ((-94.61828 36.78970, -94.61834 36.795... 1.555259e-18 \n", + "\n", + " tribal_area_as_a_share_of_tract_area \n", + "0 0.010391 \n", + "1 0.034502 \n", + "2 0.020427 \n", + "3 0.000004 \n", + "4 0.000073 \n", + "... ... \n", + "76317 NaN \n", + "76318 NaN \n", + "76319 NaN \n", + "76320 NaN \n", + "76321 NaN \n", + "\n", + "[76322 rows x 19 columns]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Calculate overlap\n", + "# Calculating the areas of the newly-created geometries\n", + "gdf_joined[\"area_joined\"] = gdf_joined.area\n", + "\n", + "# Calculating the areas of the newly-created geometries in relation\n", + "# to the original grid cells\n", + "gdf_joined[\"tribal_area_as_a_share_of_tract_area\"] = (\n", + " gdf_joined[\"area_joined\"] / gdf_joined[\"area_tract\"]\n", + ")\n", + "gdf_joined" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "042da05e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " GEOID10 landAreaName tribal_area_as_a_share_of_tract_area\n", + "0 01051030800 Poarch Creek LAR 0.002467\n", + "1 01053970400 Poarch Creek LAR 0.002367\n", + "2 01053970500 Poarch Creek LAR 0.000682\n", + "3 01101005408 Poarch Creek LAR 0.001391\n", + "4 02130000100 Annette Island LAR 0.000038\n", + "... ... ... ...\n", + "2585 56013940300 Wind River LAR 0.204039\n", + "2586 56013940400 Wind River LAR 0.053289\n", + "2587 56017967900 Wind River LAR 0.191189\n", + "2588 56033000600 Crow LAR 0.000565\n", + "2589 56035000102 Wind River LAR 0.000140\n", + "\n", + "[2590 rows x 3 columns]\n" + ] + } + ], + "source": [ + "# Aggregating the results\n", + "results = gdf_joined.groupby([\"GEOID10\", \"landAreaName\"]).agg(\n", + " {\"tribal_area_as_a_share_of_tract_area\": \"sum\"}\n", + ")\n", + "\n", + "results = results.reset_index()\n", + "\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)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "34524a94", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time taken to execute the function is 140.10310292243958\n" + ] + } + ], + "source": [ + "end = time.time()\n", + "\n", + "print(\"Time taken to execute the ETL is\", end - begin)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} 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 new file mode 100644 index 000000000..581cac8e3 --- /dev/null +++ b/data/data-pipeline/data_pipeline/score/adding_variables_to_score.md @@ -0,0 +1,28 @@ +# 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. + +__Updating `field_names.py`__ +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 + +__Updating `etl_score.py`__ +- add the dataframe from the source to the ScoreETL constructor and add a line to read the dataframe into memory +- then, add the dataframe into the list of `census_tract_dfs` +- finally, add columns you want to include as percentiles to the `numeric_columns` list + +__Updating `score_narwhal.py`__ (or whatever the score file is) +- per factor, add the columns that show the threshold and socioeconomic criterion is exceeded to the `eligibility_columns` list +- construct all columns specified in `field_names`, using the factor method as a guide + +__Updating `constants.py`__ +- add the columns' shortnames to the tiles dictionary (using Vim's UI sheet to guide short names) +- add the floats to the list of floats + +__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. diff --git a/data/data-pipeline/data_pipeline/score/field_names.py b/data/data-pipeline/data_pipeline/score/field_names.py index cd0a9e252..aed44c483 100644 --- a/data/data-pipeline/data_pipeline/score/field_names.py +++ b/data/data-pipeline/data_pipeline/score/field_names.py @@ -1,60 +1,29 @@ # Suffixes PERCENTILE_FIELD_SUFFIX = " (percentile)" -PERCENTILE_URBAN_RURAL_FIELD_SUFFIX = " (percentile urban/rural)" -MIN_MAX_FIELD_SUFFIX = " (min-max normalized)" -TOP_25_PERCENTILE_SUFFIX = " (top 25th percentile)" ISLAND_AREAS_PERCENTILE_ADJUSTMENT_FIELD = " for island areas" +ADJACENT_MEAN_SUFFIX = " (based on adjacency index and low income alone)" +ADJACENCY_INDEX_SUFFIX = " (average of neighbors)" +ISLAND_AREA_BACKFILL_SUFFIX = " in 2009" # Geographic field names GEOID_TRACT_FIELD = "GEOID10_TRACT" STATE_FIELD = "State/Territory" COUNTY_FIELD = "County Name" -# Score file field names -SCORE_A = "Score A" -SCORE_B = "Score B" -SCORE_C = "Score C" -C_SOCIOECONOMIC = "Socioeconomic Factors" -C_SENSITIVE = "Sensitive populations" -C_ENVIRONMENTAL = "Environmental effects" -C_EXPOSURES = "Exposures" -SCORE_D = "Score D" -SCORE_E = "Score E" -SCORE_F_COMMUNITIES = "Score F (communities)" -SCORE_G = "Score G" -SCORE_G_COMMUNITIES = "Score G (communities)" -SCORE_H = "Score H" -SCORE_H_COMMUNITIES = "Score H (communities)" -SCORE_I = "Score I" -SCORE_I_COMMUNITIES = "Score I (communities)" -SCORE_K = "NMTC (communities)" -SCORE_K_COMMUNITIES = "Score K (communities)" - -# Definition L fields -SCORE_L = "Definition L" -SCORE_L_COMMUNITIES = "Definition L (communities)" -L_CLIMATE = "Climate Factor (Definition L)" -L_ENERGY = "Energy Factor (Definition L)" -L_TRANSPORTATION = "Transportation Factor (Definition L)" -L_HOUSING = "Housing Factor (Definition L)" -L_POLLUTION = "Pollution Factor (Definition L)" -L_WATER = "Water Factor (Definition L)" -L_HEALTH = "Health Factor (Definition L)" -L_WORKFORCE = "Workforce Factor (Definition L)" -L_NON_WORKFORCE = "Any Non-Workforce Factor (Definition L)" - -# Definition M fields -SCORE_M = "Definition M" -SCORE_M_COMMUNITIES = "Definition M (communities)" -M_CLIMATE = "Climate Factor (Definition M)" -M_ENERGY = "Energy Factor (Definition M)" -M_TRANSPORTATION = "Transportation Factor (Definition M)" -M_HOUSING = "Housing Factor (Definition M)" -M_POLLUTION = "Pollution Factor (Definition M)" -M_WATER = "Water Factor (Definition M)" -M_HEALTH = "Health Factor (Definition M)" -M_WORKFORCE = "Workforce Factor (Definition M)" -M_NON_WORKFORCE = "Any Non-Workforce Factor (Definition M)" +# Definition Narwhal fields +SCORE_N_COMMUNITIES = "Definition N (communities)" +N_CLIMATE = "Climate Factor (Definition N)" +N_ENERGY = "Energy Factor (Definition N)" +N_TRANSPORTATION = "Transportation Factor (Definition N)" +N_HOUSING = "Housing Factor (Definition N)" +N_POLLUTION = "Pollution Factor (Definition N)" +N_WATER = "Water Factor (Definition N)" +N_HEALTH = "Health Factor (Definition N)" +N_WORKFORCE = "Workforce Factor (Definition N)" +N_NON_WORKFORCE = "Any Non-Workforce Factor (Definition N)" +FINAL_SCORE_N_BOOLEAN = ( + "Definition N community, including adjacency index tracts" +) PERCENTILE = 90 MEDIAN_HOUSE_VALUE_PERCENTILE = 90 @@ -72,30 +41,24 @@ "Both workforce socioeconomic indicators exceeded" ) -# For now, these are not used. Will delete after following up with Vim. -POLLUTION_SOCIO_INDICATORS_EXCEEDED = ( - "Both pollution socioeconomic indicators exceeded" -) -CLIMATE_SOCIO_INDICATORS_EXCEEDED = ( - "Both climate socioeconomic indicators exceeded" -) -ENERGY_SOCIO_INDICATORS_EXCEEDED = ( - "Both energy socioeconomic indicators exceeded" -) -HOUSING_SOCIO_INDICATORS_EXCEEDED = ( - "Both housing socioeconomic indicators exceeded" -) -WATER_SOCIO_INDICATORS_EXCEEDED = "Both water socioeconomic indicators exceeded" - -HEALTH_SOCIO_INDICATORS_EXCEEDED = ( - "Both health socioeconomic indicators exceeded" -) - # Poverty / Income POVERTY_FIELD = "Poverty (Less than 200% of federal poverty line)" + +# this is the raw, unadjusted variable POVERTY_LESS_THAN_200_FPL_FIELD = ( "Percent of individuals below 200% Federal Poverty Line" ) + +# this is for use in the donuts +ADJUSTED_POVERTY_LESS_THAN_200_PERCENT_FPL_FIELD_NAME = ( + "Adjusted percent of individuals < 200% Federal Poverty Line" +) + +# this is what gets used in the score +POVERTY_LESS_THAN_200_FPL_IMPUTED_FIELD = "Percent of individuals below 200% Federal Poverty Line, imputed and adjusted" +IMPUTED_INCOME_FLAG_FIELD_NAME = ( + "Income data has been estimated based on neighbor income" +) POVERTY_LESS_THAN_150_FPL_FIELD = ( "Percent of individuals < 150% Federal Poverty Line" ) @@ -122,6 +85,27 @@ "Low median household income as a percent of area median income" ) +# Additional ACS demographic fields. +PERCENT_PREFIX = "Percent " + +PERCENT_BLACK_FIELD_NAME = PERCENT_PREFIX + "Black or African American" +PERCENT_AMERICAN_INDIAN_FIELD_NAME = ( + PERCENT_PREFIX + "American Indian / Alaska Native" +) +PERCENT_ASIAN_FIELD_NAME = PERCENT_PREFIX + "Asian" +PERCENT_HAWAIIAN_FIELD_NAME = PERCENT_PREFIX + "Native Hawaiian or Pacific" +PERCENT_TWO_OR_MORE_RACES_FIELD_NAME = PERCENT_PREFIX + "two or more races" +PERCENT_NON_HISPANIC_WHITE_FIELD_NAME = PERCENT_PREFIX + "White" +PERCENT_HISPANIC_FIELD_NAME = PERCENT_PREFIX + "Hispanic or Latino" +# Note that `other` is lowercase because the whole field will show up in the download +# file as "Percent other races" +PERCENT_OTHER_RACE_FIELD_NAME = PERCENT_PREFIX + "other races" + +# Age +PERCENT_AGE_UNDER_10 = "Percent age under 10" +PERCENT_AGE_10_TO_64 = "Percent age 10 to 64" +PERCENT_AGE_OVER_64 = "Percent age over 64" + # Climate FEMA_RISK_FIELD = "FEMA Risk Index Expected Annual Loss Score" EXPECTED_BUILDING_LOSS_RATE_FIELD = ( @@ -133,6 +117,8 @@ EXPECTED_POPULATION_LOSS_RATE_FIELD = ( "Expected population loss rate (Natural Hazards Risk Index)" ) +FUTURE_FLOOD_RISK_FIELD = "Share of properties at risk of flood in 30 years" +FUTURE_WILDFIRE_RISK_FIELD = "Share of properties at risk of fire in 30 years" # Environment DIESEL_FIELD = "Diesel particulate matter exposure" @@ -147,11 +133,16 @@ NPL_FIELD = "Proximity to NPL sites" AIR_TOXICS_CANCER_RISK_FIELD = "Air toxics cancer risk" RESPIRATORY_HAZARD_FIELD = "Respiratory hazard index" +UST_FIELD = "Leaky underground storage tanks" LOW_INCOME_THRESHOLD = "Exceeds FPL200 threshold" # Housing HOUSING_BURDEN_FIELD = "Housing burden (percent)" +NO_KITCHEN_OR_INDOOR_PLUMBING_FIELD = ( + "Share of homes with no kitchen or indoor plumbing (percent)" +) + HT_INDEX_FIELD = ( "Housing + Transportation Costs % Income for the Regional Typical Household" ) @@ -280,7 +271,17 @@ "EJSCREEN Areas of Concern, State, 95th percentile (communities)" ) # Mapping inequality data. +REDLINED_SHARE: str = ( + "Redlined share: tract had redlining and was more than 50% Grade C or D" +) HOLC_GRADE_D_TRACT_PERCENT_FIELD: str = "Percent of tract that is HOLC Grade D" +HOLC_GRADE_C_TRACT_PERCENT_FIELD: str = "Percent of tract that is HOLC Grade C" +HOLC_GRADE_C_OR_D_TRACT_PERCENT_FIELD: str = ( + "Percent of tract that is HOLC Grade C or HOLC Grade D" +) +HOLC_GRADE_C_OR_D_TRACT_50_PERCENT_FIELD: str = ( + "Tract is more than 50% Grade C or D" +) HOLC_GRADE_D_TRACT_20_PERCENT_FIELD: str = "Tract is >20% HOLC Grade D" HOLC_GRADE_D_TRACT_50_PERCENT_FIELD: str = "Tract is >50% HOLC Grade D" HOLC_GRADE_D_TRACT_75_PERCENT_FIELD: str = "Tract is >75% HOLC Grade D" @@ -293,7 +294,7 @@ ) # CDC SVI INDEX percentile fields -CDC_SVI_INDEX_SE_THEME_FIELD: str = "SVI - Socioeconomic Index" +CDC_SVI_INDEX_SE_THEME_FIELD: str = "SVI - Social Vulnerability Index" CDC_SVI_INDEX_HOUSEHOLD_THEME_COMPOSITION_FIELD: str = ( "SVI - Household Composition Index" ) @@ -306,27 +307,15 @@ ) CDC_SVI_INDEX_THEMES_PRIORITY_COMMUNITY: str = "At or above 90 for overall percentile ranking according to Social Vulnerability Indices" +# DOT Travel Burden Data +DOT_TRAVEL_BURDEN_FIELD: str = "DOT Travel Barriers Score" + # Maryland EJSCREEN Data. MARYLAND_EJSCREEN_SCORE_FIELD: str = "Maryland Environmental Justice Score" MARYLAND_EJSCREEN_BURDENED_THRESHOLD_FIELD: str = ( "Maryland EJSCREEN Priority Community" ) -# Child Opportunity Index data -# Summer days with maximum temperature above 90F. -EXTREME_HEAT_FIELD = "Summer days above 90F" - -# Percentage households without a car located further than a half-mile from the -# nearest supermarket. -HEALTHY_FOOD_FIELD = "Percent low access to healthy food" - -# Percentage impenetrable surface areas such as rooftops, roads or parking lots. -IMPENETRABLE_SURFACES_FIELD = "Percent impenetrable surface areas" - -# Percentage third graders scoring proficient on standardized reading tests, -# converted to NAEP scale score points. -READING_FIELD = "Third grade reading proficiency" -LOW_READING_FIELD = "Low third grade reading proficiency" # Alternative energy-related definition of DACs ENERGY_RELATED_COMMUNITIES_DEFINITION_ALTERNATIVE = ( @@ -349,6 +338,36 @@ SINGLE_PARENT = "Single Parent" TRANSPORTATION_COSTS = "Transportation Costs" +# eAMLIS and FUDS variables +AML_BOOLEAN = "Is there at least one abandoned mine in this census tract?" +AML_BOOLEAN_FILLED_IN = "Is there at least one abandoned mine in this census tract, where missing data is treated as False?" + +ELIGIBLE_FUDS_BINARY_FIELD_NAME = ( + "Is there at least one Formerly Used Defense Site (FUDS) in the tract?" +) +ELIGIBLE_FUDS_FILLED_IN_FIELD_NAME = "Is there at least one Formerly Used Defense Site (FUDS) in the tract, where missing data is treated as False?" + +# Tribal variables +TRIBAL_ID = "tribalId" +TRIBAL_LAND_AREA_NAME = "landAreaName" + +# Tribal overlap variables +COUNT_OF_TRIBAL_AREAS_IN_TRACT_CONUS = ( + "Number of Tribal areas within Census tract" +) +COUNT_OF_TRIBAL_AREAS_IN_TRACT_AK = ( + "Number of Tribal areas within Census tract for Alaska" +) +NAMES_OF_TRIBAL_AREAS_IN_TRACT = "Names of Tribal areas within Census tract" +PERCENT_OF_TRIBAL_AREA_IN_TRACT = ( + "Percent of the Census tract that is within Tribal areas" +) +PERCENT_OF_TRIBAL_AREA_IN_TRACT_DISPLAY = ( + "Percent of the Census tract that is within Tribal areas, for display" +) +IS_TRIBAL_DAC = "Identified as disadvantaged due to tribal overlap" +PERCENT_OF_TRACT_IS_DAC = "Percentage of tract that is disadvantaged" + ##### # Names for individual factors being exceeded @@ -367,6 +386,15 @@ ) AGRICULTURAL_VALUE_BOOL_FIELD = "Contains agricultural value" +HIGH_FUTURE_FLOOD_RISK_LOW_INCOME_FIELD = ( + f"Greater than or equal to the {PERCENTILE}th percentile for share of " + "properties at risk of flood in 30 years and is low income?" +) +HIGH_FUTURE_WILDFIRE_RISK_LOW_INCOME_FIELD = ( + f"Greater than or equal to the {PERCENTILE}th percentile for " + "share of properties at risk of fire in 30 years and is low income?" +) + # Clean energy and efficiency PM25_EXPOSURE_LOW_INCOME_FIELD = f"Greater than or equal to the {PERCENTILE}th percentile for PM2.5 exposure and is low income?" ENERGY_BURDEN_LOW_INCOME_FIELD = f"Greater than or equal to the {PERCENTILE}th percentile for energy burden and is low income?" @@ -378,6 +406,7 @@ ) TRAFFIC_PROXIMITY_LOW_INCOME_FIELD = f"Greater than or equal to the {PERCENTILE}th percentile for traffic proximity and is low income?" + # Affordable and Sustainable Housing LEAD_PAINT_MEDIAN_HOUSE_VALUE_LOW_INCOME_FIELD = ( f"Greater than or equal to the {PERCENTILE}th percentile for lead paint and" @@ -385,6 +414,10 @@ f"percentile and is low income?" ) HOUSING_BURDEN_LOW_INCOME_FIELD = f"Greater than or equal to the {PERCENTILE}th percentile for housing burden and is low income?" +NO_KITCHEN_OR_INDOOR_PLUMBING_LOW_INCOME_FIELD = ( + f"Greater than or equal to the {PERCENTILE}th percentile for " + + "share of homes with no kitchen or indoor plumbing and is low income?" +) # Remediation and Reduction of Legacy Pollution RMP_LOW_INCOME_FIELD = f"Greater than or equal to the {PERCENTILE}th percentile for proximity to RMP sites and is low income?" @@ -394,8 +427,13 @@ f" for proximity to hazardous waste facilities and is low income?" ) +AML_LOW_INCOME_FIELD = "There is at least one abandoned mine in this census tract and the tract is low income." +ELIGIBLE_FUDS_LOW_INCOME_FIELD = "There is at least one Formerly Used Defense Site (FUDS) in the tract and the tract is low income." + + # Critical Clean Water and Waste Infrastructure WASTEWATER_DISCHARGE_LOW_INCOME_FIELD = f"Greater than or equal to the {PERCENTILE}th percentile for wastewater discharge and is low income?" +UST_LOW_INCOME_FIELD = f"Greater than or equal to the {PERCENTILE}th percentile for leaky underground storage tanks and is low income?" # Health Burdens DIABETES_LOW_INCOME_FIELD = f"Greater than or equal to the {PERCENTILE}th percentile for diabetes and is low income?" @@ -412,6 +450,7 @@ ", is low income, and has a low percent of higher ed students" ) + COLLEGE_ATTENDANCE_LESS_THAN_20_FIELD = ( "Percent higher ed enrollment rate is less than 20%" ) @@ -450,6 +489,10 @@ f"traffic proximity{SCORE_M_LOW_INCOME_SUFFIX}?" ) +DOT_TRAVEL_BURDEN_LOW_INCOME_FIELD = ( + f"Greater than or equal to the {PERCENTILE}th percentile " + f"for DOT transit barriers and is low income?" +) # Affordable and Sustainable Housing LEAD_PAINT_MEDIAN_HOUSE_VALUE_LOW_INCOME_LOW_HIGHER_ED_FIELD = ( f"Greater than or equal to the {PERCENTILE}th percentile for lead paint," @@ -497,22 +540,22 @@ # Workforce UNEMPLOYMENT_LOW_HS_EDUCATION_FIELD = ( f"Greater than or equal to the {PERCENTILE}th percentile for unemployment" - " and has low HS education?" + " and has low HS attainment?" ) LINGUISTIC_ISOLATION_LOW_HS_EDUCATION_FIELD = ( f"Greater than or equal to the {PERCENTILE}th percentile for households in linguistic isolation" - " and has low HS education?" + " and has low HS attainment?" ) POVERTY_LOW_HS_EDUCATION_FIELD = ( f"Greater than or equal to the {PERCENTILE}th percentile for households at or below 100% federal poverty level" - " and has low HS education?" + " and has low HS attainment?" ) LOW_MEDIAN_INCOME_LOW_HS_EDUCATION_FIELD = ( f"Greater than or equal to the {PERCENTILE}th percentile for low median household income as a " - f"percent of area median income and has low HS education?" + f"percent of area median income and has low HS attainment?" ) # Score M Workforce Variables @@ -580,6 +623,7 @@ ) DIESEL_EXCEEDS_PCTILE_THRESHOLD = f"Greater than or equal to the {PERCENTILE}th percentile for diesel particulate matter" TRAFFIC_PROXIMITY_PCTILE_THRESHOLD = f"Greater than or equal to the {PERCENTILE}th percentile for traffic proximity" +DOT_BURDEN_PCTILE_THRESHOLD = f"Greater than or equal to the {PERCENTILE}th percentile for DOT travel barriers" LEAD_PAINT_PROXY_PCTILE_THRESHOLD = ( f"Greater than or equal to the {PERCENTILE}th percentile for lead paint and" f" the median house value is less than {MEDIAN_HOUSE_VALUE_PERCENTILE}th " @@ -588,12 +632,19 @@ HOUSING_BURDEN_PCTILE_THRESHOLD = ( f"Greater than or equal to the {PERCENTILE}th percentile for housing burden" ) +NO_KITCHEN_OR_INDOOR_PLUMBING_PCTILE_THRESHOLD = ( + f"Greater than or equal to the {PERCENTILE}th percentile for share " + "of homes without indoor plumbing or a kitchen" +) + RMP_PCTILE_THRESHOLD = ( f"Greater than or equal to the {PERCENTILE}th percentile for RMP proximity" ) NPL_PCTILE_THRESHOLD = f"Greater than or equal to the {PERCENTILE}th percentile for NPL (superfund sites) proximity" TSDF_PCTILE_THRESHOLD = f"Greater than or equal to the {PERCENTILE}th percentile for proximity to hazardous waste sites" WASTEWATER_PCTILE_THRESHOLD = f"Greater than or equal to the {PERCENTILE}th percentile for wastewater discharge" +UST_PCTILE_THRESHOLD = f"Greater than or equal to the {PERCENTILE}th percentile for leaky underwater storage tanks" + DIABETES_PCTILE_THRESHOLD = ( f"Greater than or equal to the {PERCENTILE}th percentile for diabetes" ) @@ -610,6 +661,29 @@ UNEMPLOYMENT_PCTILE_THRESHOLD = ( f"Greater than or equal to the {PERCENTILE}th percentile for unemployment" ) +HIGH_FUTURE_FLOOD_RISK_FIELD = ( + f"Greater than or equal to the {PERCENTILE}th percentile for share of properties " + "at risk of flood in 30 years" +) +HIGH_FUTURE_WILDFIRE_RISK_FIELD = ( + f"Greater than or equal to the {PERCENTILE}th percentile for share of properties " + "at risk of fire in 30 years" +) + +# NCLD Nature Deprived +TRACT_PERCENT_NON_NATURAL_FIELD_NAME = "Share of the tract's land area that is covered by impervious surface or cropland as a percent" +NON_NATURAL_PCTILE_THRESHOLD = ( + f"Greater than or equal to the {PERCENTILE}th percentile for share of the tract's land area that is covered " + "by impervious surface or cropland as a percent" +) +NON_NATURAL_LOW_INCOME_FIELD_NAME = ( + f"Greater than or equal to the {PERCENTILE}th percentile for share of the tract's land area that is covered " + "by impervious surface or cropland as a percent and is low income?" +) +TRACT_ELIGIBLE_FOR_NONNATURAL_THRESHOLD = ( + "Does the tract have at least 35 acres in it?" +) + LINGUISTIC_ISOLATION_PCTILE_THRESHOLD = f"Greater than or equal to the {PERCENTILE}th percentile for households in linguistic isolation" POVERTY_PCTILE_THRESHOLD = f"Greater than or equal to the {PERCENTILE}th percentile for households at or below 100% federal poverty level" LOW_MEDIAN_INCOME_PCTILE_THRESHOLD = ( @@ -623,7 +697,6 @@ ISLAND_UNEMPLOYMENT_PCTILE_THRESHOLD = f"{CENSUS_DECENNIAL_UNEMPLOYMENT_FIELD_2009} exceeds {PERCENTILE}th percentile" ISLAND_POVERTY_PCTILE_THRESHOLD = f"{CENSUS_DECENNIAL_POVERTY_LESS_THAN_100_FPL_FIELD_2009} exceeds {PERCENTILE}th percentile" - # Not currently used in a factor EXTREME_HEAT_MEDIAN_HOUSE_VALUE_LOW_INCOME_FIELD = ( f"Greater than or equal to the {PERCENTILE}th percentile for summer days above 90F and " @@ -651,6 +724,10 @@ CATEGORY_COUNT = "Total categories exceeded" FPL_200_SERIES = "Is low income?" +FPL_200_SERIES_IMPUTED_AND_ADJUSTED = "Is low income (imputed and adjusted)?" +FPL_200_SERIES_IMPUTED_AND_ADJUSTED_DONUTS = ( + "Meets the less stringent low income criterion for the adjacency index?" +) FPL_200_AND_COLLEGE_ATTENDANCE_SERIES = ( "Is low income and has a low percent of higher ed students?" ) @@ -666,5 +743,19 @@ "Mapping for Environmental Justice Priority Community" ) +# Historic Redlining Score +HISTORIC_REDLINING_SCORE_EXCEEDED = ( + "Tract-level redlining score meets or exceeds 3.25" +) + +HISTORIC_REDLINING_SCORE_EXCEEDED_LOW_INCOME_FIELD = ( + "Tract-level redlining score meets or exceeds 3.25 and is low income" +) + + +ADJACENT_TRACT_SCORE_ABOVE_DONUT_THRESHOLD = ( + "Is the tract surrounded by disadvantaged communities?" +) + # End of names for individual factors being exceeded #### diff --git a/data/data-pipeline/data_pipeline/score/score_a.py b/data/data-pipeline/data_pipeline/score/score_a.py index 8f0bdde45..c1a212984 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 data_pipeline.score.field_names as field_names 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_b.py b/data/data-pipeline/data_pipeline/score/score_b.py index 449ccade6..12f7048ec 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 data_pipeline.score.field_names as field_names 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_c.py b/data/data-pipeline/data_pipeline/score/score_c.py index 57194b45c..ef10d86d7 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 22d7b4aa3..55b430a44 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 data_pipeline.score.field_names as field_names 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_f.py b/data/data-pipeline/data_pipeline/score/score_f.py index fb2547767..523f2cf1e 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 data_pipeline.score.field_names as field_names 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_g.py b/data/data-pipeline/data_pipeline/score/score_g.py index f83b8fd4c..7cd342dee 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 data_pipeline.score.field_names as field_names 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_h.py b/data/data-pipeline/data_pipeline/score/score_h.py index 67c58d229..efc24ee16 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 data_pipeline.score.field_names as field_names 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_i.py b/data/data-pipeline/data_pipeline/score/score_i.py index 948669d8f..02528ebc8 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 data_pipeline.score.field_names as field_names 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_k.py b/data/data-pipeline/data_pipeline/score/score_k.py index 44452f175..bc6b8057d 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 data_pipeline.score.field_names as field_names 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_l.py b/data/data-pipeline/data_pipeline/score/score_l.py index ca22aef95..ab935b720 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 ddaa57f58..89eef6fa3 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 new file mode 100644 index 000000000..07e2ab619 --- /dev/null +++ b/data/data-pipeline/data_pipeline/score/score_narwhal.py @@ -0,0 +1,1072 @@ +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 +from data_pipeline.score.utils import calculate_tract_adjacency_scores +from data_pipeline.utils import get_module_logger + +logger = get_module_logger(__name__) + + +class ScoreNarwhal(Score): + """Score N, aka Narwhal.""" + + LOW_INCOME_THRESHOLD: float = 0.65 + MAX_COLLEGE_ATTENDANCE_THRESHOLD: float = 0.20 + ENVIRONMENTAL_BURDEN_THRESHOLD: float = 0.90 + MEDIAN_HOUSE_VALUE_THRESHOLD: float = 0.90 + LACK_OF_HIGH_SCHOOL_MINIMUM_THRESHOLD: float = 0.10 + + # We define a donut hole DAC as a tract that is entirely surrounded by + # DACs (score threshold = 1) and above median for low income, as a starting + # point. As we ground-truth, these thresholds might change. + LOW_INCOME_THRESHOLD_DONUT: float = 0.50 + SCORE_THRESHOLD_DONUT: float = 1.00 + + def _combine_island_areas_with_states_and_set_thresholds( + self, + df: pd.DataFrame, + column_from_island_areas: str, + column_from_decennial_census: str, + combined_column_name: str, + threshold_cutoff_for_island_areas: float, + ) -> Tuple[pd.DataFrame, str]: + """Steps to set thresholds for island areas. + + This function is fairly logically complicated. It takes the following steps: + + 1. Combine the two different fields into a single field. + 2. Calculate the 90th percentile for the combined field. + 3. Create a boolean series that is true for any census tract in the island + areas (and only the island areas) that exceeds this percentile. + + For step one, it combines data that is either the island area's Decennial Census + value in 2009 or the state's value in 5-year ACS ending in 2010. + + This will be used to generate the percentile cutoff for the 90th percentile. + + The stateside decennial census stopped asking economic comparisons, + so this is as close to apples-to-apples as we get. We use 5-year ACS for data + robustness over 1-year ACS. + """ + # Create the combined field. + # TODO: move this combined field percentile calculation to `etl_score`, + # since most other percentile logic is there. + # There should only be one entry in either 2009 or 2019 fields, not one in both. + # But just to be safe, we take the mean and ignore null values so if there + # *were* entries in both, this result would make sense. + df[combined_column_name] = df[ + [column_from_island_areas, column_from_decennial_census] + ].mean(axis=1, skipna=True) + + # Create a percentile field for use in the Islands / PR visualization + # TODO: move this code + # In the code below, percentiles are constructed based on the combined column + # of census and island data, but only reported for the island areas (where there + # is no other comprehensive percentile information) + return_series_name = ( + column_from_island_areas + + field_names.ISLAND_AREAS_PERCENTILE_ADJUSTMENT_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX + ) + df[return_series_name] = np.where( + df[column_from_decennial_census].isna(), + df[combined_column_name].rank(pct=True), + np.nan, + ) + + threshold_column_name = ( + f"{column_from_island_areas} exceeds " + f"{threshold_cutoff_for_island_areas*100:.0f}th percentile" + ) + + df[threshold_column_name] = ( + df[return_series_name] >= threshold_cutoff_for_island_areas + ) + + return df, threshold_column_name + + def _increment_total_eligibility_exceeded( + self, columns_for_subset: list, skip_fips: tuple = () + ) -> None: + """ + Increments the total eligible factors for a given tract + + The new skip_fips argument specifies which (if any) fips codes to + skip over for incrementing. + This allows us to essentially skip data we think is of limited veracity, + without overriding any values in the data. + THIS IS A TEMPORARY FIX. + """ + if skip_fips: + self.df[field_names.THRESHOLD_COUNT] += np.where( + self.df[field_names.GEOID_TRACT_FIELD].str.startswith( + skip_fips + ), + 0, + self.df[columns_for_subset].sum(axis=1, skipna=True), + ) + else: + self.df[field_names.THRESHOLD_COUNT] += self.df[ + columns_for_subset + ].sum(axis=1, skipna=True) + + def _climate_factor(self) -> bool: + # In Xth percentile or above for FEMA’s Risk Index (Source: FEMA + # AND + # Low income: In Nth percentile or above for percent of block group population + # of households where household income is less than or equal to twice the federal + # poverty level and there is low higher ed attendance + # Source: Census's American Community Survey + + climate_eligibility_columns = [ + field_names.EXPECTED_POPULATION_LOSS_RATE_LOW_INCOME_FIELD, + field_names.EXPECTED_AGRICULTURE_LOSS_RATE_LOW_INCOME_FIELD, + field_names.EXPECTED_BUILDING_LOSS_RATE_LOW_INCOME_FIELD, + field_names.HIGH_FUTURE_FLOOD_RISK_LOW_INCOME_FIELD, + field_names.HIGH_FUTURE_WILDFIRE_RISK_LOW_INCOME_FIELD, + ] + + # TODO: When we refactor this... it's the same code over and over and over again + # We should make a function, _get_all_columns(), that returns all three of these columns + + self.df[ + field_names.EXPECTED_POPULATION_LOSS_EXCEEDS_PCTILE_THRESHOLD + ] = ( + self.df[ + field_names.EXPECTED_POPULATION_LOSS_RATE_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + + self.df[ + field_names.EXPECTED_AGRICULTURAL_LOSS_EXCEEDS_PCTILE_THRESHOLD + ] = ( + self.df[ + field_names.EXPECTED_AGRICULTURE_LOSS_RATE_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + + self.df[field_names.EXPECTED_BUILDING_LOSS_EXCEEDS_PCTILE_THRESHOLD] = ( + self.df[ + field_names.EXPECTED_BUILDING_LOSS_RATE_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + + self.df[field_names.HIGH_FUTURE_FLOOD_RISK_FIELD] = ( + self.df[ + field_names.FUTURE_FLOOD_RISK_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + + self.df[field_names.HIGH_FUTURE_WILDFIRE_RISK_FIELD] = ( + self.df[ + field_names.FUTURE_WILDFIRE_RISK_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + + self.df[field_names.CLIMATE_THRESHOLD_EXCEEDED] = ( + self.df[ + field_names.EXPECTED_POPULATION_LOSS_EXCEEDS_PCTILE_THRESHOLD + ] + | self.df[ + field_names.EXPECTED_AGRICULTURAL_LOSS_EXCEEDS_PCTILE_THRESHOLD + ] + | self.df[ + field_names.EXPECTED_BUILDING_LOSS_EXCEEDS_PCTILE_THRESHOLD + ] + | self.df[field_names.HIGH_FUTURE_WILDFIRE_RISK_FIELD] + | self.df[field_names.HIGH_FUTURE_FLOOD_RISK_FIELD] + ) + + self.df[field_names.EXPECTED_POPULATION_LOSS_RATE_LOW_INCOME_FIELD] = ( + self.df[ + field_names.EXPECTED_POPULATION_LOSS_EXCEEDS_PCTILE_THRESHOLD + ] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + + self.df[field_names.EXPECTED_AGRICULTURE_LOSS_RATE_LOW_INCOME_FIELD] = ( + self.df[ + field_names.EXPECTED_AGRICULTURAL_LOSS_EXCEEDS_PCTILE_THRESHOLD + ] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + + self.df[field_names.EXPECTED_BUILDING_LOSS_RATE_LOW_INCOME_FIELD] = ( + self.df[field_names.EXPECTED_BUILDING_LOSS_EXCEEDS_PCTILE_THRESHOLD] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + + self.df[field_names.HIGH_FUTURE_FLOOD_RISK_LOW_INCOME_FIELD] = ( + self.df[field_names.HIGH_FUTURE_FLOOD_RISK_FIELD] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + + self.df[field_names.HIGH_FUTURE_WILDFIRE_RISK_LOW_INCOME_FIELD] = ( + self.df[field_names.HIGH_FUTURE_WILDFIRE_RISK_FIELD] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + + self._increment_total_eligibility_exceeded( + climate_eligibility_columns, + skip_fips=constants.DROP_FIPS_FROM_NON_WTD_THRESHOLDS, + ) + + return self.df[climate_eligibility_columns].any(axis="columns") + + def _energy_factor(self) -> bool: + # In Xth percentile or above for DOE’s energy cost burden score (Source: LEAD Score) + # AND + # Low income: In Nth percentile or above for percent of block group population + # of households where household income is less than or equal to twice the federal + # poverty level and has low higher ed attendance. + # Source: Census's American Community Survey + + energy_eligibility_columns = [ + field_names.PM25_EXPOSURE_LOW_INCOME_FIELD, + field_names.ENERGY_BURDEN_LOW_INCOME_FIELD, + ] + + self.df[field_names.ENERGY_BURDEN_EXCEEDS_PCTILE_THRESHOLD] = ( + self.df[ + field_names.ENERGY_BURDEN_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + + self.df[field_names.PM25_EXCEEDS_PCTILE_THRESHOLD] = ( + self.df[ + field_names.PM25_FIELD + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + + self.df[field_names.ENERGY_THRESHOLD_EXCEEDED] = ( + self.df[field_names.ENERGY_BURDEN_EXCEEDS_PCTILE_THRESHOLD] + | self.df[field_names.PM25_EXCEEDS_PCTILE_THRESHOLD] + ) + + self.df[field_names.PM25_EXPOSURE_LOW_INCOME_FIELD] = ( + self.df[field_names.PM25_EXCEEDS_PCTILE_THRESHOLD] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + + self.df[field_names.ENERGY_BURDEN_LOW_INCOME_FIELD] = ( + self.df[field_names.ENERGY_BURDEN_EXCEEDS_PCTILE_THRESHOLD] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + + self._increment_total_eligibility_exceeded( + energy_eligibility_columns, + skip_fips=constants.DROP_FIPS_FROM_NON_WTD_THRESHOLDS, + ) + + return self.df[energy_eligibility_columns].any(axis="columns") + + def _transportation_factor(self) -> bool: + # In Xth percentile or above for diesel particulate matter (Source: EPA National Air Toxics Assessment (NATA) + # or + # In Xth percentile or above for PM 2.5 (Source: EPA, Office of Air and Radiation (OAR) fusion of model and monitor data)] + # or + # In Xth percentile or above traffic proximity and volume (Source: 2017 U.S. Department of Transportation (DOT) traffic data + # or + # In Xth percentile or above for DOT Travel Disadvantage + # AND + # Low income: In Nth percentile or above for percent of block group population + # of households where household income is less than or equal to twice the federal + # poverty level and has a low percent of higher ed students. + # Source: Census's American Community Survey + + transportion_eligibility_columns = [ + field_names.DIESEL_PARTICULATE_MATTER_LOW_INCOME_FIELD, + field_names.TRAFFIC_PROXIMITY_LOW_INCOME_FIELD, + field_names.DOT_TRAVEL_BURDEN_LOW_INCOME_FIELD, + ] + + self.df[field_names.DIESEL_EXCEEDS_PCTILE_THRESHOLD] = ( + self.df[ + field_names.DIESEL_FIELD + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + + self.df[field_names.DOT_BURDEN_PCTILE_THRESHOLD] = ( + self.df[ + field_names.DOT_TRAVEL_BURDEN_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + + self.df[field_names.TRAFFIC_PROXIMITY_PCTILE_THRESHOLD] = ( + self.df[ + field_names.TRAFFIC_FIELD + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + + self.df[field_names.TRAFFIC_THRESHOLD_EXCEEDED] = ( + self.df[field_names.TRAFFIC_PROXIMITY_PCTILE_THRESHOLD] + | self.df[field_names.DIESEL_EXCEEDS_PCTILE_THRESHOLD] + | self.df[field_names.DOT_BURDEN_PCTILE_THRESHOLD] + ) + + self.df[field_names.DIESEL_PARTICULATE_MATTER_LOW_INCOME_FIELD] = ( + self.df[field_names.DIESEL_EXCEEDS_PCTILE_THRESHOLD] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + + self.df[field_names.TRAFFIC_PROXIMITY_LOW_INCOME_FIELD] = ( + self.df[field_names.TRAFFIC_PROXIMITY_PCTILE_THRESHOLD] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + + self.df[field_names.DOT_TRAVEL_BURDEN_LOW_INCOME_FIELD] = ( + self.df[field_names.DOT_BURDEN_PCTILE_THRESHOLD] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + + self._increment_total_eligibility_exceeded( + transportion_eligibility_columns, + skip_fips=constants.DROP_FIPS_FROM_NON_WTD_THRESHOLDS, + ) + + return self.df[transportion_eligibility_columns].any(axis="columns") + + def _housing_factor(self) -> bool: + # ( + # In Xth percentile or above for lead paint (Source: Census's American Community Survey’s + # percent of housing units built pre-1960, used as an indicator of potential lead paint exposure in homes) + # AND + # In Yth percentile or below for Median House Value (Source: Census's American Community Survey) + # ) + # or + # In Xth percentile or above for housing cost burden (Source: HUD's Comprehensive Housing Affordability Strategy dataset + # AND + # Low income: In Nth percentile or above for percent of block group population + # of households where household income is less than or equal to twice the federal + # poverty level and has a low percent of higher ed students. + # Source: Census's American Community Survey + + ## Additionally, we look to see if HISTORIC_REDLINING_SCORE_EXCEEDED is True and the tract is also low income + + housing_eligibility_columns = [ + field_names.LEAD_PAINT_MEDIAN_HOUSE_VALUE_LOW_INCOME_FIELD, + field_names.HOUSING_BURDEN_LOW_INCOME_FIELD, + field_names.HISTORIC_REDLINING_SCORE_EXCEEDED_LOW_INCOME_FIELD, + field_names.NO_KITCHEN_OR_INDOOR_PLUMBING_LOW_INCOME_FIELD, + field_names.NON_NATURAL_LOW_INCOME_FIELD_NAME, + ] + + # Historic disinvestment + self.df[ + field_names.HISTORIC_REDLINING_SCORE_EXCEEDED_LOW_INCOME_FIELD + ] = ( + self.df[field_names.HISTORIC_REDLINING_SCORE_EXCEEDED] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + + # Kitchen / plumbing + self.df[field_names.NO_KITCHEN_OR_INDOOR_PLUMBING_PCTILE_THRESHOLD] = ( + self.df[ + field_names.NO_KITCHEN_OR_INDOOR_PLUMBING_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + + self.df[field_names.NO_KITCHEN_OR_INDOOR_PLUMBING_LOW_INCOME_FIELD] = ( + self.df[field_names.NO_KITCHEN_OR_INDOOR_PLUMBING_PCTILE_THRESHOLD] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + + # Lead paint + self.df[field_names.LEAD_PAINT_PROXY_PCTILE_THRESHOLD] = ( + self.df[ + field_names.LEAD_PAINT_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) & ( + self.df[ + field_names.MEDIAN_HOUSE_VALUE_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX + ] + <= self.MEDIAN_HOUSE_VALUE_THRESHOLD + ) + + self.df[field_names.LEAD_PAINT_MEDIAN_HOUSE_VALUE_LOW_INCOME_FIELD] = ( + self.df[field_names.LEAD_PAINT_PROXY_PCTILE_THRESHOLD] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + + # Housing burden + self.df[field_names.HOUSING_BURDEN_PCTILE_THRESHOLD] = ( + self.df[ + field_names.HOUSING_BURDEN_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + self.df[field_names.HOUSING_BURDEN_LOW_INCOME_FIELD] = ( + self.df[field_names.HOUSING_BURDEN_PCTILE_THRESHOLD] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + + # High non-natural space + self.df[field_names.NON_NATURAL_PCTILE_THRESHOLD] = ( + self.df[ + field_names.TRACT_PERCENT_NON_NATURAL_FIELD_NAME + + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + self.df[field_names.NON_NATURAL_LOW_INCOME_FIELD_NAME] = ( + self.df[field_names.NON_NATURAL_PCTILE_THRESHOLD] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + + # any of the burdens + self.df[field_names.HOUSING_THREHSOLD_EXCEEDED] = self.df[ + housing_eligibility_columns + ].any(axis="columns") + + self._increment_total_eligibility_exceeded( + housing_eligibility_columns, + skip_fips=constants.DROP_FIPS_FROM_NON_WTD_THRESHOLDS, + ) + + return self.df[field_names.HOUSING_THREHSOLD_EXCEEDED] + + def _pollution_factor(self) -> bool: + # Proximity to Risk Management Plan sites is > X + # AND + # Low income: In Nth percentile or above for percent of block group population + # of households where household income is less than or equal to twice the federal + # poverty level and has a low percent of higher ed students. + # Source: Census's American Community Survey + + pollution_eligibility_columns = [ + field_names.RMP_LOW_INCOME_FIELD, + field_names.SUPERFUND_LOW_INCOME_FIELD, + field_names.HAZARDOUS_WASTE_LOW_INCOME_FIELD, + field_names.AML_LOW_INCOME_FIELD, + field_names.ELIGIBLE_FUDS_LOW_INCOME_FIELD, + ] + + self.df[field_names.RMP_PCTILE_THRESHOLD] = ( + self.df[field_names.RMP_FIELD + field_names.PERCENTILE_FIELD_SUFFIX] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + + self.df[field_names.NPL_PCTILE_THRESHOLD] = ( + self.df[field_names.NPL_FIELD + field_names.PERCENTILE_FIELD_SUFFIX] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + + self.df[field_names.TSDF_PCTILE_THRESHOLD] = ( + self.df[ + field_names.TSDF_FIELD + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + + self.df[field_names.ELIGIBLE_FUDS_FILLED_IN_FIELD_NAME] = self.df[ + field_names.ELIGIBLE_FUDS_BINARY_FIELD_NAME + ].fillna(False) + + self.df[field_names.AML_BOOLEAN_FILLED_IN] = self.df[ + field_names.AML_BOOLEAN + ].fillna(False) + + self.df[field_names.POLLUTION_THRESHOLD_EXCEEDED] = self.df[ + [ + field_names.RMP_PCTILE_THRESHOLD, + field_names.NPL_PCTILE_THRESHOLD, + field_names.TSDF_PCTILE_THRESHOLD, + field_names.AML_BOOLEAN_FILLED_IN, + field_names.ELIGIBLE_FUDS_FILLED_IN_FIELD_NAME, + ] + ].any(axis="columns") + + # individual series-by-series + self.df[field_names.RMP_LOW_INCOME_FIELD] = ( + self.df[field_names.RMP_PCTILE_THRESHOLD] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + self.df[field_names.SUPERFUND_LOW_INCOME_FIELD] = ( + self.df[field_names.NPL_PCTILE_THRESHOLD] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + self.df[field_names.HAZARDOUS_WASTE_LOW_INCOME_FIELD] = ( + self.df[field_names.TSDF_PCTILE_THRESHOLD] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + + self.df[field_names.AML_LOW_INCOME_FIELD] = ( + self.df[field_names.AML_BOOLEAN_FILLED_IN] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + + self.df[field_names.ELIGIBLE_FUDS_LOW_INCOME_FIELD] = ( + self.df[field_names.ELIGIBLE_FUDS_BINARY_FIELD_NAME] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + + self._increment_total_eligibility_exceeded( + pollution_eligibility_columns, + skip_fips=constants.DROP_FIPS_FROM_NON_WTD_THRESHOLDS, + ) + + return self.df[pollution_eligibility_columns].any(axis="columns") + + def _water_factor(self) -> bool: + # In Xth percentile or above for wastewater discharge (Source: EPA Risk-Screening Environmental Indicators (RSEI) Model) + # AND + # Low income: In Nth percentile or above for percent of block group population + # of households where household income is less than or equal to twice the federal + # poverty level and has a low percent of higher ed students + # Source: Census's American Community Survey + + eligibility_columns = [ + field_names.WASTEWATER_DISCHARGE_LOW_INCOME_FIELD, + field_names.UST_LOW_INCOME_FIELD, + ] + + self.df[field_names.WASTEWATER_PCTILE_THRESHOLD] = ( + self.df[ + field_names.WASTEWATER_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + self.df[field_names.UST_PCTILE_THRESHOLD] = ( + self.df[field_names.UST_FIELD + field_names.PERCENTILE_FIELD_SUFFIX] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + + self.df[field_names.WASTEWATER_DISCHARGE_LOW_INCOME_FIELD] = ( + self.df[field_names.WASTEWATER_PCTILE_THRESHOLD] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + + self.df[field_names.UST_LOW_INCOME_FIELD] = ( + self.df[field_names.UST_PCTILE_THRESHOLD] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + + self._increment_total_eligibility_exceeded( + eligibility_columns, + skip_fips=constants.DROP_FIPS_FROM_NON_WTD_THRESHOLDS, + ) + + self.df[field_names.WATER_THRESHOLD_EXCEEDED] = self.df[ + eligibility_columns + ].any(axis=1) + + return self.df[field_names.WATER_THRESHOLD_EXCEEDED] + + def _health_factor(self) -> bool: + # In Xth percentile or above for diabetes (Source: CDC Places) + # or + # In Xth percentile or above for asthma (Source: CDC Places) + # or + # In Xth percentile or above for heart disease + # or + # In Xth percentile or above for low life expectancy (Source: CDC Places) + # AND + # Low income: In Nth percentile or above for percent of block group population + # of households where household income is less than or equal to twice the federal + # poverty level and has a low percent of higher ed students + # Source: Census's American Community Survey + + health_eligibility_columns = [ + field_names.DIABETES_LOW_INCOME_FIELD, + field_names.ASTHMA_LOW_INCOME_FIELD, + field_names.HEART_DISEASE_LOW_INCOME_FIELD, + field_names.LOW_LIFE_EXPECTANCY_LOW_INCOME_FIELD, + ] + + self.df[field_names.DIABETES_PCTILE_THRESHOLD] = ( + self.df[ + field_names.DIABETES_FIELD + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + + self.df[field_names.ASTHMA_PCTILE_THRESHOLD] = ( + self.df[ + field_names.ASTHMA_FIELD + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + + self.df[field_names.HEART_DISEASE_PCTILE_THRESHOLD] = ( + self.df[ + field_names.HEART_DISEASE_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + + self.df[field_names.LOW_LIFE_EXPECTANCY_PCTILE_THRESHOLD] = ( + self.df[ + field_names.LOW_LIFE_EXPECTANCY_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + + self.df[field_names.HEALTH_THRESHOLD_EXCEEDED] = ( + ( + self.df[field_names.DIABETES_PCTILE_THRESHOLD] + | self.df[field_names.ASTHMA_PCTILE_THRESHOLD] + ) + | self.df[field_names.HEART_DISEASE_PCTILE_THRESHOLD] + ) | self.df[field_names.LOW_LIFE_EXPECTANCY_PCTILE_THRESHOLD] + + self.df[field_names.DIABETES_LOW_INCOME_FIELD] = ( + self.df[field_names.DIABETES_PCTILE_THRESHOLD] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + self.df[field_names.ASTHMA_LOW_INCOME_FIELD] = ( + self.df[field_names.ASTHMA_PCTILE_THRESHOLD] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + self.df[field_names.HEART_DISEASE_LOW_INCOME_FIELD] = ( + self.df[field_names.HEART_DISEASE_PCTILE_THRESHOLD] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + self.df[field_names.LOW_LIFE_EXPECTANCY_LOW_INCOME_FIELD] = ( + self.df[field_names.LOW_LIFE_EXPECTANCY_PCTILE_THRESHOLD] + & self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] + ) + + self._increment_total_eligibility_exceeded( + health_eligibility_columns, + skip_fips=constants.DROP_FIPS_FROM_NON_WTD_THRESHOLDS, + ) + + return self.df[health_eligibility_columns].any(axis="columns") + + def _workforce_factor(self) -> bool: + # Where unemployment is above Xth percentile + # or + # Where median income as a percent of area median income is above Xth percentile + # or + # Where the percent of households at or below 100% of the federal poverty level + # is above Xth percentile + # or + # Where linguistic isolation is above Xth percentile (except PR) + # AND + # Where the high school degree achievement rates for adults 25 years and older + # is less than Y% + # AND the higher ed attendance rates are under Z% + # (necessary to screen out university tracts) + + # Workforce criteria for states fields. + workforce_eligibility_columns = [ + field_names.UNEMPLOYMENT_LOW_HS_EDUCATION_FIELD, + field_names.POVERTY_LOW_HS_EDUCATION_FIELD, + field_names.LINGUISTIC_ISOLATION_LOW_HS_EDUCATION_FIELD, + field_names.LOW_MEDIAN_INCOME_LOW_HS_EDUCATION_FIELD, + ] + + pr_workforce_eligibility_columns = [ + field_names.UNEMPLOYMENT_LOW_HS_EDUCATION_FIELD, + field_names.POVERTY_LOW_HS_EDUCATION_FIELD, + field_names.LOW_MEDIAN_INCOME_LOW_HS_EDUCATION_FIELD, + ] + + self.df[field_names.LOW_HS_EDUCATION_FIELD] = ( + self.df[field_names.HIGH_SCHOOL_ED_FIELD] + >= self.LACK_OF_HIGH_SCHOOL_MINIMUM_THRESHOLD + ) + self.df[field_names.UNEMPLOYMENT_PCTILE_THRESHOLD] = ( + self.df[ + field_names.UNEMPLOYMENT_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + + self.df[field_names.LOW_MEDIAN_INCOME_PCTILE_THRESHOLD] = ( + self.df[ + field_names.LOW_MEDIAN_INCOME_AS_PERCENT_OF_AMI_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + + self.df[field_names.LINGUISTIC_ISOLATION_PCTILE_THRESHOLD] = ( + self.df[ + field_names.LINGUISTIC_ISO_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + + self.df[field_names.POVERTY_PCTILE_THRESHOLD] = ( + self.df[ + field_names.POVERTY_LESS_THAN_100_FPL_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + + self.df[field_names.LINGUISTIC_ISOLATION_LOW_HS_EDUCATION_FIELD] = ( + self.df[field_names.LINGUISTIC_ISOLATION_PCTILE_THRESHOLD] + & self.df[field_names.LOW_HS_EDUCATION_FIELD] + ) + + self.df[field_names.POVERTY_LOW_HS_EDUCATION_FIELD] = ( + self.df[field_names.POVERTY_PCTILE_THRESHOLD] + & self.df[field_names.LOW_HS_EDUCATION_FIELD] + ) + + self.df[field_names.LOW_MEDIAN_INCOME_LOW_HS_EDUCATION_FIELD] = ( + self.df[field_names.LOW_MEDIAN_INCOME_PCTILE_THRESHOLD] + & self.df[field_names.LOW_HS_EDUCATION_FIELD] + ) + + self.df[field_names.UNEMPLOYMENT_LOW_HS_EDUCATION_FIELD] = ( + self.df[field_names.UNEMPLOYMENT_PCTILE_THRESHOLD] + & self.df[field_names.LOW_HS_EDUCATION_FIELD] + ) + + self.df[field_names.WORKFORCE_THRESHOLD_EXCEEDED] = ( + ## First we calculate for the non-island areas + ( + ( + self.df[field_names.POVERTY_PCTILE_THRESHOLD] + | self.df[field_names.UNEMPLOYMENT_PCTILE_THRESHOLD] + ) + | self.df[field_names.LOW_MEDIAN_INCOME_PCTILE_THRESHOLD] + ) + | ( + self.df[field_names.LINGUISTIC_ISOLATION_PCTILE_THRESHOLD] + & ( + self.df[field_names.GEOID_TRACT_FIELD].str[:2] + != constants.TILES_PUERTO_RICO_FIPS_CODE[0] + ) + ) + ) + + # Use only PR combined criteria for rows with PR FIPS code; + # otherwise use all criteria. + workforce_combined_criteria_for_states = ( + ( + self.df[field_names.GEOID_TRACT_FIELD].str[:2] + == constants.TILES_PUERTO_RICO_FIPS_CODE[0] + ) + & self.df[pr_workforce_eligibility_columns].any(axis="columns") + ) | ( + ( + self.df[field_names.GEOID_TRACT_FIELD].str[:2] + != constants.TILES_PUERTO_RICO_FIPS_CODE[0] + ) + & self.df[workforce_eligibility_columns].any(axis="columns") + ) + + self._increment_total_eligibility_exceeded( + workforce_eligibility_columns + ) + + # Now, calculate workforce criteria for island territories. + island_areas_workforce_eligibility_columns = [ + field_names.ISLAND_AREAS_UNEMPLOYMENT_LOW_HS_EDUCATION_FIELD, + field_names.ISLAND_AREAS_POVERTY_LOW_HS_EDUCATION_FIELD, + field_names.ISLAND_AREAS_LOW_MEDIAN_INCOME_LOW_HS_EDUCATION_FIELD, + ] + + # First, combine unemployment. + # This will include an adjusted percentile column for the island areas + # to be used by the front end. + ( + self.df, + island_areas_unemployment_criteria_field_name, + ) = self._combine_island_areas_with_states_and_set_thresholds( + df=self.df, + column_from_island_areas=field_names.CENSUS_DECENNIAL_UNEMPLOYMENT_FIELD_2009, + column_from_decennial_census=field_names.CENSUS_UNEMPLOYMENT_FIELD_2010, + combined_column_name=field_names.COMBINED_UNEMPLOYMENT_2010, + threshold_cutoff_for_island_areas=self.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + + # TODO: Remove this, it's for checking only + assert ( + island_areas_unemployment_criteria_field_name + == field_names.ISLAND_UNEMPLOYMENT_PCTILE_THRESHOLD + ), "Error combining island columns" + + # Next, combine poverty. + # This will include an adjusted percentile column for the island areas + # to be used by the front end. + ( + self.df, + island_areas_poverty_criteria_field_name, + ) = self._combine_island_areas_with_states_and_set_thresholds( + df=self.df, + column_from_island_areas=field_names.CENSUS_DECENNIAL_POVERTY_LESS_THAN_100_FPL_FIELD_2009, + column_from_decennial_census=field_names.CENSUS_POVERTY_LESS_THAN_100_FPL_FIELD_2010, + combined_column_name=field_names.COMBINED_POVERTY_LESS_THAN_100_FPL_FIELD_2010, + threshold_cutoff_for_island_areas=self.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + + # TODO: Remove this, it's for checking only + assert ( + island_areas_poverty_criteria_field_name + == field_names.ISLAND_POVERTY_PCTILE_THRESHOLD + ), "Error combining island columns" + + # Also check whether low area median income is 90th percentile or higher + # within the islands. + + # Note that because the field for low median does not have to be combined, + # unlike the other fields, we do not need to create a new percentile + # column. This code should probably be refactored when (TODO) we do the big + # refactor. + self.df[field_names.ISLAND_LOW_MEDIAN_INCOME_PCTILE_THRESHOLD] = ( + self.df[ + field_names.LOW_CENSUS_DECENNIAL_AREA_MEDIAN_INCOME_PERCENT_FIELD_2009 + + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + + self.df[field_names.ISLAND_AREAS_LOW_HS_EDUCATION_FIELD] = ( + self.df[field_names.CENSUS_DECENNIAL_HIGH_SCHOOL_ED_FIELD_2009] + >= self.LACK_OF_HIGH_SCHOOL_MINIMUM_THRESHOLD + ) + + self.df[ + field_names.ISLAND_AREAS_UNEMPLOYMENT_LOW_HS_EDUCATION_FIELD + ] = ( + self.df[island_areas_unemployment_criteria_field_name] + & self.df[field_names.ISLAND_AREAS_LOW_HS_EDUCATION_FIELD] + ) + + self.df[field_names.ISLAND_AREAS_POVERTY_LOW_HS_EDUCATION_FIELD] = ( + self.df[island_areas_poverty_criteria_field_name] + & self.df[field_names.ISLAND_AREAS_LOW_HS_EDUCATION_FIELD] + ) + + self.df[ + field_names.ISLAND_AREAS_LOW_MEDIAN_INCOME_LOW_HS_EDUCATION_FIELD + ] = ( + self.df[field_names.ISLAND_LOW_MEDIAN_INCOME_PCTILE_THRESHOLD] + & self.df[field_names.ISLAND_AREAS_LOW_HS_EDUCATION_FIELD] + ) + + workforce_combined_criteria_for_island_areas = self.df[ + island_areas_workforce_eligibility_columns + ].any(axis="columns") + + self._increment_total_eligibility_exceeded( + island_areas_workforce_eligibility_columns + ) + + percent_of_island_tracts_highlighted = ( + 100 + * workforce_combined_criteria_for_island_areas.sum() + # Choosing a random column from island areas to calculate the denominator. + / self.df[field_names.CENSUS_DECENNIAL_UNEMPLOYMENT_FIELD_2009] + .notnull() + .sum() + ) + + logger.info( + f"For workforce criteria in island areas, " + f"{workforce_combined_criteria_for_island_areas.sum()} (" + f"{percent_of_island_tracts_highlighted:.2f}% of tracts that have non-null data " + f"in the column) have a value of TRUE." + ) + + # Because these criteria are calculated differently for the islands, we also calculate the + # thresholds to pass to the FE slightly differently + # If it's PR, we don't use linguistic isolation. + + self.df[field_names.WORKFORCE_THRESHOLD_EXCEEDED] = ( + ## First we calculate for the non-island areas + ( + ( + self.df[field_names.POVERTY_PCTILE_THRESHOLD] + | self.df[field_names.UNEMPLOYMENT_PCTILE_THRESHOLD] + ) + | self.df[field_names.LOW_MEDIAN_INCOME_PCTILE_THRESHOLD] + ) + | ( + self.df[field_names.LINGUISTIC_ISOLATION_PCTILE_THRESHOLD] + & ( + self.df[field_names.GEOID_TRACT_FIELD].str[:2] + != constants.TILES_PUERTO_RICO_FIPS_CODE[0] + ) + ) + ) | ( + ## then we calculate just for the island areas + ( + self.df[field_names.ISLAND_UNEMPLOYMENT_PCTILE_THRESHOLD] + | self.df[field_names.ISLAND_POVERTY_PCTILE_THRESHOLD] + ) + | self.df[field_names.ISLAND_LOW_MEDIAN_INCOME_PCTILE_THRESHOLD] + ) + + # Because of the island complications, we also have to separately calculate the threshold for + # socioeconomic thresholds + self.df[field_names.WORKFORCE_SOCIO_INDICATORS_EXCEEDED] = ( + self.df[field_names.ISLAND_AREAS_LOW_HS_EDUCATION_FIELD] + | self.df[field_names.LOW_HS_EDUCATION_FIELD] + ) + + # A tract is included if it meets either the states tract criteria or the + # island areas tract criteria. + return ( + workforce_combined_criteria_for_states + | workforce_combined_criteria_for_island_areas + ) + + def _mark_donut_hole_tracts(self) -> pd.DataFrame: + """Mark tracts that do not qualify on their own, but are surrounded by those that do + + A donut hole is a tract surrounded by tracts that are marked for inclusion + by the scoring system AND meet a less stringent low-income threshhold. + + We calculate "donut holes" after the initial score generation + """ + logger.info("Marking donut hole tracts") + + # This is the boolean we pass to the front end for the donut-hole-specific + # low income criterion + self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED_DONUTS] = ( + self.df[ + field_names.POVERTY_LESS_THAN_200_FPL_IMPUTED_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.LOW_INCOME_THRESHOLD_DONUT + ) + + self.df = self.df.merge( + calculate_tract_adjacency_scores( + self.df, field_names.SCORE_N_COMMUNITIES + ), + how="left", + on=field_names.GEOID_TRACT_FIELD, + ) + + # This is the boolean we pass to the front end for color + self.df[field_names.ADJACENT_TRACT_SCORE_ABOVE_DONUT_THRESHOLD] = ( + self.df[ + ( + field_names.SCORE_N_COMMUNITIES + + field_names.ADJACENCY_INDEX_SUFFIX + ) + ] + >= self.SCORE_THRESHOLD_DONUT + ) + + # This constructs the boolean for whether it's a donut hole community + # This can also be true when the tract itself is a DAC on its own + self.df[ + field_names.SCORE_N_COMMUNITIES + field_names.ADJACENT_MEAN_SUFFIX + ] = ( + self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED_DONUTS] + & self.df[field_names.ADJACENT_TRACT_SCORE_ABOVE_DONUT_THRESHOLD] + ) + + # This should be the "final list" of Score Narwhal communities, meaning that we would + # expect this to be True if either the tract is a donut hole community OR the tract is a DAC + self.df[field_names.FINAL_SCORE_N_BOOLEAN] = ( + self.df[field_names.SCORE_N_COMMUNITIES] + | self.df[ + field_names.SCORE_N_COMMUNITIES + + field_names.ADJACENT_MEAN_SUFFIX + ] + ) + + def _mark_tribal_dacs(self) -> None: + """Per the October 7th compromise (#1988), + tracts that are approx 100% tribal are Score N communities. + """ + self.df[field_names.SCORE_N_COMMUNITIES] = np.where( + self.df[field_names.IS_TRIBAL_DAC], + True, + self.df[field_names.SCORE_N_COMMUNITIES], + ) + + def _get_percent_of_tract_that_is_dac(self) -> float: + """Per the October 7th compromise (#1988), + tracts can be partially DACs if some portion of the tract is tribal land. + + Rules are as follows: + If a tract is a SCORE_N_COMMUNITY, it is 100% a DAC + If a tract is not, but contains tribal land, the percent that is tribal land is a DAC. + """ + tribal_percent = self.df[ + field_names.PERCENT_OF_TRIBAL_AREA_IN_TRACT + ].fillna(0.0) + return np.where( + self.df[field_names.FINAL_SCORE_N_BOOLEAN], + 1.0, + tribal_percent, + ) + + def add_columns(self) -> pd.DataFrame: + logger.info("Adding Score Narhwal") + self.df[field_names.THRESHOLD_COUNT] = 0 + + self.df[field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED] = ( + self.df[ + # UPDATE: Pull the imputed poverty statistic + field_names.POVERTY_LESS_THAN_200_FPL_IMPUTED_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX + ] + >= self.LOW_INCOME_THRESHOLD + ) + + self.df[field_names.N_CLIMATE] = self._climate_factor() + self.df[field_names.N_ENERGY] = self._energy_factor() + self.df[field_names.N_TRANSPORTATION] = self._transportation_factor() + self.df[field_names.N_HOUSING] = self._housing_factor() + self.df[field_names.N_POLLUTION] = self._pollution_factor() + self.df[field_names.N_WATER] = self._water_factor() + self.df[field_names.N_HEALTH] = self._health_factor() + self.df[field_names.N_WORKFORCE] = self._workforce_factor() + + factors = [ + field_names.N_CLIMATE, + field_names.N_ENERGY, + field_names.N_TRANSPORTATION, + field_names.N_HOUSING, + field_names.N_POLLUTION, + field_names.N_WATER, + field_names.N_HEALTH, + field_names.N_WORKFORCE, + ] + self.df[field_names.CATEGORY_COUNT] = self.df[factors].sum(axis=1) + self.df[field_names.SCORE_N_COMMUNITIES] = self.df[factors].any(axis=1) + self._mark_tribal_dacs() + self.df[ + field_names.SCORE_N_COMMUNITIES + + field_names.PERCENTILE_FIELD_SUFFIX + ] = self.df[field_names.SCORE_N_COMMUNITIES].astype(int) + + self._mark_donut_hole_tracts() + self.df[ + field_names.PERCENT_OF_TRACT_IS_DAC + ] = self._get_percent_of_tract_that_is_dac() + + return self.df diff --git a/data/data-pipeline/data_pipeline/score/score_runner.py b/data/data-pipeline/data_pipeline/score/score_runner.py index b22e2d510..e88c3c29e 100644 --- a/data/data-pipeline/data_pipeline/score/score_runner.py +++ b/data/data-pipeline/data_pipeline/score/score_runner.py @@ -1,17 +1,5 @@ import pandas as pd -from data_pipeline.score.score_a import ScoreA -from data_pipeline.score.score_b import ScoreB -from data_pipeline.score.score_c import ScoreC -from data_pipeline.score.score_d import ScoreD -from data_pipeline.score.score_f import ScoreF -from data_pipeline.score.score_g import ScoreG -from data_pipeline.score.score_h import ScoreH -from data_pipeline.score.score_i import ScoreI -from data_pipeline.score.score_k import ScoreK -from data_pipeline.score.score_l import ScoreL -from data_pipeline.score.score_m import ScoreM -from data_pipeline.score import field_names - +from data_pipeline.score.score_narwhal import ScoreNarwhal from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) @@ -23,46 +11,6 @@ def __init__(self, df: pd.DataFrame): self.df = df def calculate_scores(self) -> pd.DataFrame: - # Index scores - self.df = ScoreA(df=self.df).add_columns() - self.df = ScoreB(df=self.df).add_columns() - self.df = ScoreC(df=self.df).add_columns() - self.df = ScoreD(df=self.df).add_columns() - self.df = ScoreF(df=self.df).add_columns() - self.df = ScoreG(df=self.df).add_columns() - self.df = ScoreH(df=self.df).add_columns() - self.df = ScoreI(df=self.df).add_columns() - self.df = ScoreK(df=self.df).add_columns() - self.df = ScoreL(df=self.df).add_columns() - self.df = ScoreM(df=self.df).add_columns() - - # TODO do this with each score instead of in a bundle - # Create percentiles for these index scores - self.df = self._add_score_percentiles() - - return self.df - - def _add_score_percentiles(self) -> pd.DataFrame: - logger.info("Adding Score Percentiles") - for score_field in [ - field_names.SCORE_A, - field_names.SCORE_B, - field_names.SCORE_C, - field_names.SCORE_D, - field_names.SCORE_E, - ]: - self.df[ - f"{score_field}{field_names.PERCENTILE_FIELD_SUFFIX}" - ] = self.df[score_field].rank(pct=True) + self.df = ScoreNarwhal(df=self.df).add_columns() - for threshold in [0.25, 0.3, 0.35, 0.4]: - fraction_converted_to_percent = int(100 * threshold) - self.df[ - f"{score_field} (top {fraction_converted_to_percent}th percentile)" - ] = ( - self.df[ - f"{score_field}{field_names.PERCENTILE_FIELD_SUFFIX}" - ] - >= 1 - threshold - ) return self.df diff --git a/data/data-pipeline/data_pipeline/score/utils.py b/data/data-pipeline/data_pipeline/score/utils.py new file mode 100644 index 000000000..5450faf6b --- /dev/null +++ b/data/data-pipeline/data_pipeline/score/utils.py @@ -0,0 +1,56 @@ +"""Utilities to help generate the score.""" +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? + +logger = get_module_logger(__name__) + + +def calculate_tract_adjacency_scores( + df: pd.DataFrame, score_column: str +) -> pd.DataFrame: + """Calculate the mean score of each tract in df based on its neighbors + + Args: + df (pandas.DataFrame): A dataframe with at least the following columns: + * field_names.GEOID_TRACT_FIELD + * score_column + + score_column (str): The name of the column that contains the scores + to average + Returns: + df (pandas.DataFrame): A dataframe with two columns: + * field_names.GEOID_TRACT_FIELD + * {score_column}_ADJACENT_MEAN, which is the average of score_column for + each tract that touches the tract identified + in field_names.GEOID_TRACT_FIELD + """ + ORIGINAL_TRACT = "ORIGINAL_TRACT" + logger.debug("Calculating tract adjacency scores") + tract_data = get_tract_geojson() + df: gpd.GeoDataFrame = tract_data.merge( + df, on=field_names.GEOID_TRACT_FIELD + ) + df = df.rename(columns={field_names.GEOID_TRACT_FIELD: ORIGINAL_TRACT}) + + logger.debug("Perfoming spatial join to find all adjacent tracts") + adjacent_tracts: gpd.GeoDataFrame = df.sjoin( + tract_data, predicate="touches" + ) + + logger.debug("Calculating means based on adjacency") + return ( + adjacent_tracts.groupby(field_names.GEOID_TRACT_FIELD)[[score_column]] + .mean() + .reset_index() + .rename( + columns={ + score_column: f"{score_column}{field_names.ADJACENCY_INDEX_SUFFIX}", + } + ) + ) diff --git a/data/data-pipeline/data_pipeline/tests/conftest.py b/data/data-pipeline/data_pipeline/tests/conftest.py index f1dc63ac0..8c68375a0 100644 --- a/data/data-pipeline/data_pipeline/tests/conftest.py +++ b/data/data-pipeline/data_pipeline/tests/conftest.py @@ -3,7 +3,6 @@ from shutil import copyfile import pytest - from data_pipeline.config import settings from data_pipeline.etl.base import ExtractTransformLoad @@ -52,3 +51,16 @@ def mock_etl(monkeypatch, mock_paths) -> None: data_path, tmp_path = mock_paths monkeypatch.setattr(ExtractTransformLoad, "DATA_PATH", data_path) monkeypatch.setattr(ExtractTransformLoad, "TMP_PATH", tmp_path) + + +def pytest_collection_modifyitems(config, items): + keywordexpr = config.option.keyword + markexpr = config.option.markexpr + if keywordexpr or markexpr: + return # let pytest handle this + + smoketest = "smoketest" + skip_mymarker = pytest.mark.skip(reason=f"{smoketest} not selected") + for item in items: + if smoketest in item.keywords: + item.add_marker(skip_mymarker) diff --git a/data/data-pipeline/data_pipeline/tests/score/__init__.py b/data/data-pipeline/data_pipeline/tests/score/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/data/data-pipeline/data_pipeline/tests/score/fixtures.py b/data/data-pipeline/data_pipeline/tests/score/fixtures.py new file mode 100644 index 000000000..d591454f8 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/score/fixtures.py @@ -0,0 +1,230 @@ +import pandas as pd +import pytest +from data_pipeline.config import settings +from data_pipeline.etl.score import constants +from data_pipeline.score.field_names import GEOID_TRACT_FIELD + + +@pytest.fixture(scope="session") +def final_score_df(): + return pd.read_csv( + settings.APP_ROOT / "data" / "score" / "csv" / "full" / "usa.csv", + dtype={GEOID_TRACT_FIELD: str}, + low_memory=False, + ) + + +@pytest.fixture() +def census_acs_df(): + census_acs_csv = constants.DATA_PATH / "dataset" / "census_acs" / "usa.csv" + return pd.read_csv( + census_acs_csv, + dtype={GEOID_TRACT_FIELD: "string"}, + low_memory=False, + ) + + +@pytest.fixture() +def ejscreen_df(): + ejscreen_csv = constants.DATA_PATH / "dataset" / "ejscreen" / "usa.csv" + return pd.read_csv( + ejscreen_csv, + dtype={GEOID_TRACT_FIELD: "string"}, + low_memory=False, + ) + + +@pytest.fixture() +def hud_housing_df(): + hud_housing_csv = ( + constants.DATA_PATH / "dataset" / "hud_housing" / "usa.csv" + ) + return pd.read_csv( + hud_housing_csv, + dtype={GEOID_TRACT_FIELD: "string"}, + low_memory=False, + ) + + +@pytest.fixture() +def cdc_places_df(): + cdc_places_csv = constants.DATA_PATH / "dataset" / "cdc_places" / "usa.csv" + return pd.read_csv( + cdc_places_csv, + dtype={GEOID_TRACT_FIELD: "string"}, + low_memory=False, + ) + + +@pytest.fixture() +def census_acs_median_incomes_df(): + census_acs_median_incomes_csv = ( + constants.DATA_PATH + / "dataset" + / "census_acs_median_income_2019" + / "usa.csv" + ) + return pd.read_csv( + census_acs_median_incomes_csv, + dtype={GEOID_TRACT_FIELD: "string"}, + low_memory=False, + ) + + +@pytest.fixture() +def cdc_life_expectancy_df(): + cdc_life_expectancy_csv = ( + constants.DATA_PATH / "dataset" / "cdc_life_expectancy" / "usa.csv" + ) + return pd.read_csv( + cdc_life_expectancy_csv, + dtype={GEOID_TRACT_FIELD: "string"}, + low_memory=False, + ) + + +@pytest.fixture() +def doe_energy_burden_df(): + doe_energy_burden_csv = ( + constants.DATA_PATH / "dataset" / "doe_energy_burden" / "usa.csv" + ) + return pd.read_csv( + doe_energy_burden_csv, + dtype={GEOID_TRACT_FIELD: "string"}, + low_memory=False, + ) + + +@pytest.fixture() +def national_risk_index_df(): + return pd.read_csv( + constants.DATA_PATH / "dataset" / "national_risk_index" / "usa.csv", + dtype={GEOID_TRACT_FIELD: "string"}, + low_memory=False, + ) + + +@pytest.fixture() +def dot_travel_disadvantage_df(): + return pd.read_csv( + constants.DATA_PATH / "dataset" / "travel_composite" / "usa.csv", + dtype={GEOID_TRACT_FIELD: "string"}, + low_memory=False, + ) + + +@pytest.fixture() +def fsf_fire_df(): + return pd.read_csv( + constants.DATA_PATH / "dataset" / "fsf_wildfire_risk" / "usa.csv", + dtype={GEOID_TRACT_FIELD: "string"}, + low_memory=False, + ) + + +@pytest.fixture() +def fsf_flood_df(): + return pd.read_csv( + constants.DATA_PATH / "dataset" / "fsf_flood_risk" / "usa.csv", + dtype={GEOID_TRACT_FIELD: "string"}, + low_memory=False, + ) + + +@pytest.fixture() +def nature_deprived_df(): + return pd.read_csv( + constants.DATA_PATH / "dataset" / "nlcd_nature_deprived" / "usa.csv", + dtype={GEOID_TRACT_FIELD: "string"}, + low_memory=False, + ) + + +@pytest.fixture() +def eamlis_df(): + return pd.read_csv( + constants.DATA_PATH / "dataset" / "eamlis" / "usa.csv", + dtype={GEOID_TRACT_FIELD: "string"}, + low_memory=False, + ) + + +@pytest.fixture() +def fuds_df(): + return pd.read_csv( + constants.DATA_PATH / "dataset" / "us_army_fuds" / "usa.csv", + dtype={GEOID_TRACT_FIELD: "string"}, + low_memory=False, + ) + + +@pytest.fixture() +def geocorr_urban_rural_df(): + geocorr_urban_rural_csv = ( + constants.DATA_PATH / "dataset" / "geocorr" / "usa.csv" + ) + return pd.read_csv( + geocorr_urban_rural_csv, + dtype={GEOID_TRACT_FIELD: "string"}, + low_memory=False, + ) + + +@pytest.fixture() +def census_decennial_df(): + census_decennial_csv = ( + constants.DATA_PATH / "dataset" / "census_decennial_2010" / "usa.csv" + ) + return pd.read_csv( + census_decennial_csv, + dtype={GEOID_TRACT_FIELD: "string"}, + low_memory=False, + ) + + +@pytest.fixture() +def census_2010_df(): + census_2010_csv = ( + constants.DATA_PATH / "dataset" / "census_acs_2010" / "usa.csv" + ) + return pd.read_csv( + census_2010_csv, + dtype={GEOID_TRACT_FIELD: "string"}, + low_memory=False, + ) + + +@pytest.fixture() +def hrs_df(): + hrs_csv = constants.DATA_PATH / "dataset" / "historic_redlining" / "usa.csv" + + return pd.read_csv( + hrs_csv, + dtype={GEOID_TRACT_FIELD: "string"}, + low_memory=False, + ) + + +@pytest.fixture() +def national_tract_df(): + national_tract_csv = constants.DATA_CENSUS_CSV_FILE_PATH + return pd.read_csv( + national_tract_csv, + names=[GEOID_TRACT_FIELD], + dtype={GEOID_TRACT_FIELD: "string"}, + low_memory=False, + header=None, + ) + + +@pytest.fixture() +def tribal_overlap(): + tribal_overlap = ( + constants.DATA_PATH / "dataset" / "tribal_overlap" / "usa.csv" + ) + + return pd.read_csv( + tribal_overlap, + dtype={GEOID_TRACT_FIELD: "string"}, + low_memory=False, + ) diff --git a/data/data-pipeline/data_pipeline/tests/score/test_calculation.py b/data/data-pipeline/data_pipeline/tests/score/test_calculation.py new file mode 100644 index 000000000..f2cb494d3 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/score/test_calculation.py @@ -0,0 +1,292 @@ +# flake8: noqa: W0613,W0611,F811 +from dataclasses import dataclass + +import pytest +from data_pipeline.score import field_names +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__) + +pytestmark = pytest.mark.smoketest + + +@dataclass +class PercentileTestConfig: + percentile_column_name: str + threshold_column_name: str + threshold: float + percentile_column_need_suffix: bool = True + + @property + def full_percentile_column_name(self): + if self.percentile_column_need_suffix: + return ( + self.percentile_column_name + + field_names.PERCENTILE_FIELD_SUFFIX + ) + return self.percentile_column_name + + +def _check_percentile_against_threshold(df, config: PercentileTestConfig): + """Note - for the purpose of testing, this fills with False""" + is_minimum_flagged_ok = ( + df[df[config.threshold_column_name].fillna(False)][ + config.full_percentile_column_name + ].min() + >= config.threshold + ) + + is_maximum_not_flagged_ok = ( + df[~df[config.threshold_column_name].fillna(False)][ + config.full_percentile_column_name + ].max() + < config.threshold + ) + errors = [] + if not is_minimum_flagged_ok: + errors.append( + f"For column {config.threshold_column_name}, there is someone flagged below {config.threshold} percentile!" + ) + if not is_maximum_not_flagged_ok: + errors.append( + f"For column {config.threshold_column_name}, there is someone not flagged above {config.threshold} percentile!" + ) + return errors + + +def test_percentile_columns(final_score_df): + low_income = PercentileTestConfig( + field_names.POVERTY_LESS_THAN_200_FPL_IMPUTED_FIELD, + field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED, + ScoreNarwhal.LOW_INCOME_THRESHOLD, + ) + population_loss = PercentileTestConfig( + field_names.EXPECTED_POPULATION_LOSS_RATE_FIELD, + field_names.EXPECTED_POPULATION_LOSS_EXCEEDS_PCTILE_THRESHOLD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + agricultural_loss = PercentileTestConfig( + field_names.EXPECTED_AGRICULTURE_LOSS_RATE_FIELD, + field_names.EXPECTED_AGRICULTURAL_LOSS_EXCEEDS_PCTILE_THRESHOLD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + building_loss = PercentileTestConfig( + field_names.EXPECTED_BUILDING_LOSS_RATE_FIELD, + field_names.EXPECTED_BUILDING_LOSS_EXCEEDS_PCTILE_THRESHOLD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + flood = PercentileTestConfig( + field_names.FUTURE_FLOOD_RISK_FIELD, + field_names.HIGH_FUTURE_FLOOD_RISK_FIELD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + wildfire = PercentileTestConfig( + field_names.FUTURE_WILDFIRE_RISK_FIELD, + field_names.HIGH_FUTURE_WILDFIRE_RISK_FIELD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + low_high_school = PercentileTestConfig( + field_names.HIGH_SCHOOL_ED_FIELD, + field_names.LOW_HS_EDUCATION_FIELD, + ScoreNarwhal.LACK_OF_HIGH_SCHOOL_MINIMUM_THRESHOLD, + percentile_column_need_suffix=False, + ) + donut_hole_income = PercentileTestConfig( + field_names.POVERTY_LESS_THAN_200_FPL_IMPUTED_FIELD, + field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED_DONUTS, + ScoreNarwhal.LOW_INCOME_THRESHOLD_DONUT, + ) + donut_hole_adjacency = PercentileTestConfig( + (field_names.SCORE_N_COMMUNITIES + field_names.ADJACENCY_INDEX_SUFFIX), + field_names.ADJACENT_TRACT_SCORE_ABOVE_DONUT_THRESHOLD, + ScoreNarwhal.SCORE_THRESHOLD_DONUT, + percentile_column_need_suffix=False, + ) + diesel = PercentileTestConfig( + field_names.DIESEL_FIELD, + field_names.DIESEL_EXCEEDS_PCTILE_THRESHOLD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + dot_burden = PercentileTestConfig( + field_names.DOT_TRAVEL_BURDEN_FIELD, + field_names.DOT_BURDEN_PCTILE_THRESHOLD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + traffic_proximity = PercentileTestConfig( + field_names.TRAFFIC_FIELD, + field_names.TRAFFIC_PROXIMITY_PCTILE_THRESHOLD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + energy_burden = PercentileTestConfig( + field_names.ENERGY_BURDEN_FIELD, + field_names.ENERGY_BURDEN_EXCEEDS_PCTILE_THRESHOLD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + pm25 = PercentileTestConfig( + field_names.PM25_FIELD, + field_names.PM25_EXCEEDS_PCTILE_THRESHOLD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + kitchen_plumbing = PercentileTestConfig( + field_names.NO_KITCHEN_OR_INDOOR_PLUMBING_FIELD, + field_names.NO_KITCHEN_OR_INDOOR_PLUMBING_PCTILE_THRESHOLD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + # Leadpaint is handled below in a separate method + housing = PercentileTestConfig( + field_names.HOUSING_BURDEN_FIELD, + field_names.HOUSING_BURDEN_PCTILE_THRESHOLD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + non_natural_space = PercentileTestConfig( + field_names.TRACT_PERCENT_NON_NATURAL_FIELD_NAME, + field_names.NON_NATURAL_PCTILE_THRESHOLD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + rmp = PercentileTestConfig( + field_names.RMP_FIELD, + field_names.RMP_PCTILE_THRESHOLD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + npl = PercentileTestConfig( + field_names.NPL_FIELD, + field_names.NPL_PCTILE_THRESHOLD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + tsdf = PercentileTestConfig( + field_names.TSDF_FIELD, + field_names.TSDF_PCTILE_THRESHOLD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + wastewater = PercentileTestConfig( + field_names.WASTEWATER_FIELD, + field_names.WASTEWATER_PCTILE_THRESHOLD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + ust = PercentileTestConfig( + field_names.UST_FIELD, + field_names.UST_PCTILE_THRESHOLD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + diabetes = PercentileTestConfig( + field_names.DIABETES_FIELD, + field_names.DIABETES_PCTILE_THRESHOLD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + asthma = PercentileTestConfig( + field_names.ASTHMA_FIELD, + field_names.ASTHMA_PCTILE_THRESHOLD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + heart_disease = PercentileTestConfig( + field_names.HEART_DISEASE_FIELD, + field_names.HEART_DISEASE_PCTILE_THRESHOLD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + low_life_expectancy = PercentileTestConfig( + field_names.LOW_LIFE_EXPECTANCY_FIELD, + field_names.LOW_LIFE_EXPECTANCY_PCTILE_THRESHOLD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + unemployment = PercentileTestConfig( + field_names.UNEMPLOYMENT_FIELD, + field_names.UNEMPLOYMENT_PCTILE_THRESHOLD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + low_median_income = PercentileTestConfig( + field_names.LOW_MEDIAN_INCOME_AS_PERCENT_OF_AMI_FIELD, + field_names.LOW_MEDIAN_INCOME_PCTILE_THRESHOLD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + linguist_isolation = PercentileTestConfig( + field_names.LINGUISTIC_ISO_FIELD, + field_names.LINGUISTIC_ISOLATION_PCTILE_THRESHOLD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + poverty = PercentileTestConfig( + field_names.POVERTY_LESS_THAN_100_FPL_FIELD, + field_names.POVERTY_PCTILE_THRESHOLD, + ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD, + ) + errors = [] + for threshhold_config in ( + low_income, + population_loss, + agricultural_loss, + building_loss, + flood, + wildfire, + low_high_school, + donut_hole_income, + donut_hole_adjacency, + dot_burden, + diesel, + traffic_proximity, + energy_burden, + pm25, + kitchen_plumbing, + housing, + non_natural_space, + rmp, + npl, + tsdf, + wastewater, + ust, + diabetes, + asthma, + heart_disease, + low_life_expectancy, + unemployment, + low_median_income, + linguist_isolation, + poverty, + ): + errors.extend( + _check_percentile_against_threshold( + final_score_df, threshhold_config + ) + ) + error_text = "\n".join(errors) + assert not errors, error_text + + +def test_lead_paint_indicator( + final_score_df, +): + """We need special logic here because this is a combined threshold, so we need this test to have two parts. + + 1. We construct our own threshold columns + 2. We make sure it's the same as the threshold column in the dataframe + """ + lead_pfs = ( + field_names.LEAD_PAINT_FIELD + field_names.PERCENTILE_FIELD_SUFFIX + ) + home_val_pfs = ( + field_names.MEDIAN_HOUSE_VALUE_FIELD + + field_names.PERCENTILE_FIELD_SUFFIX + ) + combined_proxy_boolean = field_names.LEAD_PAINT_PROXY_PCTILE_THRESHOLD + + tmp_lead_threshold = ( + final_score_df[lead_pfs] >= ScoreNarwhal.ENVIRONMENTAL_BURDEN_THRESHOLD + ) + tmp_mhv_threshold = ( + final_score_df[home_val_pfs] + <= ScoreNarwhal.MEDIAN_HOUSE_VALUE_THRESHOLD + ) + + true_combined_proxy = tmp_lead_threshold & tmp_mhv_threshold + + assert ( + tmp_mhv_threshold.sum() > 0 + ), "MHV threshold alone does not capture any homes" + + assert final_score_df[combined_proxy_boolean].equals( + true_combined_proxy + ), "Lead proxy calculated improperly" + assert ( + tmp_lead_threshold.sum() > true_combined_proxy.sum() + ), "House value is not further limiting this proxy" diff --git a/data/data-pipeline/data_pipeline/tests/score/test_output.py b/data/data-pipeline/data_pipeline/tests/score/test_output.py new file mode 100644 index 000000000..cb9f8d5cc --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/score/test_output.py @@ -0,0 +1,473 @@ +# flake8: noqa: W0613,W0611,F811, +# pylint: disable=unused-import,too-many-arguments +from dataclasses import dataclass +from typing import List + +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 .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 + + +def _helper_test_count_exceeding_threshold(df, col, error_check=1000): + """Fills NA with False""" + return df[df[col].fillna(False)].shape[0] >= error_check + + +def _helper_single_threshold_test(df, col, socioeconomic_column, score_column): + """Note that this fills nulls in the threshold column where nulls exist""" + nulls_dont_exist = ( + df[df[col].fillna(False) & df[socioeconomic_column]][score_column] + .isna() + .sum() + == 0 + ) + only_trues = df[df[col].fillna(False) & df[socioeconomic_column]][ + score_column + ].min() + return nulls_dont_exist, only_trues + + +@dataclass +class ThresholdTestConfig: + name: str + threshhold_columns: List[str] + ses_column_name: str = field_names.FPL_200_SERIES_IMPUTED_AND_ADJUSTED + score_column_name: str = field_names.SCORE_N_COMMUNITIES + + @property + def error_message(self): + return f"Eligibility columns have an error, {self.name}" + + +def check_for_threshhold_errors( + df: pd.DataFrame, config: ThresholdTestConfig +) -> List[str]: + errors = [] + for col in config.threshhold_columns: + nulls_dont_exist, only_trues = _helper_single_threshold_test( + df, + col, + config.ses_column_name, + config.score_column_name, + ) + proper_threshold_identification = ( + _helper_test_count_exceeding_threshold(df, col) + ) + if not nulls_dont_exist: + errors.append( + f"For {col}, threshold is not calculated right -- there are NaNs in Score" + ) + if not only_trues: + errors.append( + f"For {col} and {config.ses_column_name}, threshold is not calculated right " + f"-- there are Falses where there should only be Trues" + ) + if not proper_threshold_identification: + errors.append( + f"Threshold {col} returns too few tracts, are you sure it's nationally-representative?" + ) + if errors: + errors.append(config.error_message) + return errors + + +def test_threshholds(final_score_df): + climate_thresholds = ThresholdTestConfig( + "climate", + [ + field_names.EXPECTED_POPULATION_LOSS_EXCEEDS_PCTILE_THRESHOLD, + field_names.EXPECTED_AGRICULTURAL_LOSS_EXCEEDS_PCTILE_THRESHOLD, + field_names.EXPECTED_BUILDING_LOSS_EXCEEDS_PCTILE_THRESHOLD, + field_names.HIGH_FUTURE_FLOOD_RISK_FIELD, + field_names.HIGH_FUTURE_WILDFIRE_RISK_FIELD, + ], + ) + energy_thresholds = ThresholdTestConfig( + "energy", + [ + field_names.ENERGY_BURDEN_EXCEEDS_PCTILE_THRESHOLD, + field_names.PM25_EXCEEDS_PCTILE_THRESHOLD, + ], + ) + transportation_thresholds = ThresholdTestConfig( + "transportation", + [ + field_names.DIESEL_EXCEEDS_PCTILE_THRESHOLD, + field_names.DOT_BURDEN_PCTILE_THRESHOLD, + field_names.TRAFFIC_PROXIMITY_PCTILE_THRESHOLD, + ], + ) + housing_thresholds = ThresholdTestConfig( + "housing", + [ + field_names.HISTORIC_REDLINING_SCORE_EXCEEDED, + field_names.NO_KITCHEN_OR_INDOOR_PLUMBING_PCTILE_THRESHOLD, + field_names.LEAD_PAINT_PROXY_PCTILE_THRESHOLD, + field_names.HOUSING_BURDEN_PCTILE_THRESHOLD, + field_names.NON_NATURAL_PCTILE_THRESHOLD, + ], + ) + pollution_thresholds = ThresholdTestConfig( + "pollution", + [ + field_names.RMP_PCTILE_THRESHOLD, + field_names.NPL_PCTILE_THRESHOLD, + field_names.TSDF_PCTILE_THRESHOLD, + field_names.AML_BOOLEAN, + field_names.ELIGIBLE_FUDS_BINARY_FIELD_NAME, + ], + ) + water_thresholds = ThresholdTestConfig( + "water", + [ + field_names.WASTEWATER_PCTILE_THRESHOLD, + field_names.UST_PCTILE_THRESHOLD, + ], + ) + health_thresholds = ThresholdTestConfig( + "health", + [ + field_names.DIABETES_PCTILE_THRESHOLD, + field_names.ASTHMA_PCTILE_THRESHOLD, + field_names.HEART_DISEASE_PCTILE_THRESHOLD, + field_names.LOW_LIFE_EXPECTANCY_PCTILE_THRESHOLD, + ], + ) + workforce_base_thresholds = ThresholdTestConfig( + "workforce (not island areas)", + [ + field_names.UNEMPLOYMENT_PCTILE_THRESHOLD, + field_names.LOW_MEDIAN_INCOME_PCTILE_THRESHOLD, + field_names.LINGUISTIC_ISOLATION_PCTILE_THRESHOLD, + field_names.POVERTY_PCTILE_THRESHOLD, + ], + ses_column_name=field_names.LOW_HS_EDUCATION_FIELD, + ) + errors = [] + for threshhold_config in [ + climate_thresholds, + energy_thresholds, + transportation_thresholds, + housing_thresholds, + pollution_thresholds, + water_thresholds, + health_thresholds, + workforce_base_thresholds, + ]: + errors.extend( + check_for_threshhold_errors(final_score_df, threshhold_config) + ) + error_text = "\n".join(errors) + assert not errors, error_text + + +def test_max_40_percent_DAC(final_score_df): + score_col_with_donuts = field_names.FINAL_SCORE_N_BOOLEAN + total_population_col = field_names.TOTAL_POP_FIELD + assert ( + final_score_df[score_col_with_donuts].isna().sum() == 0 + ), f"Error: {score_col_with_donuts} contains NULLs" + assert ( + final_score_df[final_score_df[score_col_with_donuts]][ + total_population_col + ].sum() + / final_score_df[total_population_col].sum() + ) < 0.4, "Error: the scoring methodology identifies >40% of people in the US as disadvantaged" + assert ( + final_score_df[score_col_with_donuts].sum() > 0 + ), "FYI: You've identified no tracts at all!" + + +def test_donut_hole_addition_to_score_n(final_score_df): + score_col_with_donuts = field_names.FINAL_SCORE_N_BOOLEAN + score_col = field_names.SCORE_N_COMMUNITIES + donut_hole_score_only = ( + field_names.SCORE_N_COMMUNITIES + field_names.ADJACENT_MEAN_SUFFIX + ) + count_donuts = final_score_df[donut_hole_score_only].sum() + count_n = final_score_df[score_col].sum() + count_n_with_donuts = final_score_df[score_col_with_donuts].sum() + new_donuts = final_score_df[ + final_score_df[donut_hole_score_only] & ~final_score_df[score_col] + ].shape[0] + + assert ( + new_donuts + count_n == count_n_with_donuts + ), "The math doesn't work! The number of new donut hole tracts plus score tracts (base) does not equal the total number of tracts identified" + + assert ( + count_donuts < count_n + ), "There are more donut hole tracts than base tracts. How can it be?" + + assert ( + new_donuts > 0 + ), "FYI: The adjacency index is doing nothing. Consider removing it?" + + +def test_data_sources( + final_score_df, + hud_housing_df, + ejscreen_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, + tribal_overlap, +): + data_sources = { + key: value for key, value in locals().items() if key != "final_score_df" + } + + # For each data source that's injected via the fixtures, do the following: + # * Ensure at least one column from the source shows up in the score + # * Ensure any tracts NOT in the data source are NA/null in the score + # * Ensure the data source doesn't have a large number of tract IDs that are not + # included in the final score, since that implies the source is using 2020 + # tract IDs + # * Verify that the data from the source that's in the final score output + # is the "equal" to the data from the ETL, allowing for the minor + # differences that come from floating point comparisons + for data_source_name, data_source in data_sources.items(): + final = "_final" + df: pd.DataFrame = final_score_df.merge( + data_source, + on=GEOID_TRACT_FIELD, + indicator="MERGE", + suffixes=(final, f"_{data_source_name}"), + how="outer", + ) + + # Make our lists of columns for later comparison + core_cols = data_source.columns.intersection( + final_score_df.columns + ).drop(GEOID_TRACT_FIELD) + data_source_columns = [f"{col}_{data_source_name}" for col in core_cols] + final_columns = [f"{col}{final}" for col in core_cols] + assert ( + final_columns + ), f"No columns from data source show up in final score in source {data_source_name}" + + # Make sure we have NAs for any tracts in the final data that aren't + # included in the data source + has_additional_non_null_tracts = not np.all( + df[df.MERGE == "left_only"][final_columns].isna() + ) + if has_additional_non_null_tracts: + # We backfill island areas with data from the 2010 census, so if THOSE tracts + # have data beyond the data source, that's to be expected and is fine to pass. + # If some other state or territory does though, this should fail + left_only = df.loc[(df.MERGE == "left_only")] + left_only_has_value = left_only.loc[ + ~df[final_columns].isna().all(axis=1) + ] + fips_with_values = set( + left_only_has_value[field_names.GEOID_TRACT_FIELD].str[0:2] + ) + non_island_fips_codes = fips_with_values.difference( + TILES_ISLAND_AREA_FIPS_CODES + ) + assert not non_island_fips_codes + + # Make sure the datasource doesn't have a ton of unmatched tracts, implying it + # has moved to 2020 tracts + assert len(df[df.MERGE == "right_only"]) < UNMATCHED_TRACT_THRESHOLD + + df = df[df.MERGE == "both"] + + # Compare every column for equality, using close equality for numerics and + # `equals` equality for non-numeric columns + for final_column, data_source_column in zip( + data_source_columns, final_columns + ): + error_message = ( + f"Column {final_column} not equal " + f"between {data_source_name} and final score" + ) + # For non-numeric types, we can use the built-in equals from pandas + if df[final_column].dtype in [ + np.dtype(object), + np.dtype(bool), + np.dtype(str), + ]: + assert df[final_column].equals( + df[data_source_column] + ), error_message + # For numeric sources, use np.close so we don't get harmed by + # float equaity weirdness + else: + assert np.allclose( + df[final_column], + df[data_source_column], + equal_nan=True, + ), error_message + + +def test_island_demographic_backfill(final_score_df, census_decennial_df): + # Copied from score_etl because there's no better source of truth for it + ISLAND_DEMOGRAPHIC_BACKFILL_FIELDS = [ + field_names.PERCENT_BLACK_FIELD_NAME + + field_names.ISLAND_AREA_BACKFILL_SUFFIX, + field_names.PERCENT_AMERICAN_INDIAN_FIELD_NAME + + field_names.ISLAND_AREA_BACKFILL_SUFFIX, + field_names.PERCENT_ASIAN_FIELD_NAME + + field_names.ISLAND_AREA_BACKFILL_SUFFIX, + field_names.PERCENT_HAWAIIAN_FIELD_NAME + + field_names.ISLAND_AREA_BACKFILL_SUFFIX, + field_names.PERCENT_TWO_OR_MORE_RACES_FIELD_NAME + + field_names.ISLAND_AREA_BACKFILL_SUFFIX, + field_names.PERCENT_NON_HISPANIC_WHITE_FIELD_NAME + + field_names.ISLAND_AREA_BACKFILL_SUFFIX, + field_names.PERCENT_HISPANIC_FIELD_NAME + + field_names.ISLAND_AREA_BACKFILL_SUFFIX, + field_names.PERCENT_OTHER_RACE_FIELD_NAME + + field_names.ISLAND_AREA_BACKFILL_SUFFIX, + field_names.TOTAL_POP_FIELD + field_names.ISLAND_AREA_BACKFILL_SUFFIX, + ] + + # rename the columns from the decennial census to be their final score names + decennial_cols = { + col_name: col_name.replace(field_names.ISLAND_AREA_BACKFILL_SUFFIX, "") + for col_name in ISLAND_DEMOGRAPHIC_BACKFILL_FIELDS + } + census_decennial_df: pd.DataFrame = census_decennial_df.rename( + columns=decennial_cols + ) + + # Merge decennial data with the final score + df: pd.DataFrame = final_score_df.merge( + census_decennial_df, + on=GEOID_TRACT_FIELD, + indicator="MERGE", + suffixes=("_final", "_decennial"), + how="outer", + ) + + # Make sure columns from both the decennial census and final score overlap + core_cols = census_decennial_df.columns.intersection( + final_score_df.columns + ).drop(GEOID_TRACT_FIELD) + final_columns = [f"{col}_final" for col in core_cols] + assert ( + final_columns + ), "No columns from decennial census show up in final score, extremely weird" + + # Make sure we're only grabbing island tracts for the decennial data + assert ( + sorted( + df[df.MERGE == "both"][field_names.GEOID_TRACT_FIELD] + .str[:2] + .unique() + ) + == constants.TILES_ISLAND_AREA_FIPS_CODES + ), "2010 Decennial census contributed unexpected tracts" + + df = df[df.MERGE == "both"] + + # Make sure for all the backfill tracts, the data made it into the + # final score. This can be simple since it's all perenctages and an int + for col in final_columns: + assert np.allclose( + df[col], + df[col.replace("_final", "_decennial")], + equal_nan=True, + ), f"Data mismatch in decennial census backfill for {col}" + + +def test_output_tracts(final_score_df, national_tract_df): + df = final_score_df.merge( + national_tract_df, + on=GEOID_TRACT_FIELD, + how="outer", + indicator="MERGE", + ) + counts = df.value_counts("MERGE") + assert counts.loc["left_only"] == 0 + assert counts.loc["right_only"] == 0 + + +def test_all_tracts_have_scores(final_score_df): + assert not final_score_df[field_names.SCORE_N_COMMUNITIES].isna().any() + + +def test_imputed_tracts(final_score_df): + # Make sure that any tracts with zero population have null imputed income + tracts_with_zero_population_df = final_score_df[ + final_score_df[field_names.TOTAL_POP_FIELD] == 0 + ] + assert ( + tracts_with_zero_population_df[ + field_names.POVERTY_LESS_THAN_200_FPL_IMPUTED_FIELD + ] + .isna() + .all() + ) + + # Make sure that any tracts with null population have null imputed income + tracts_with_null_population_df = final_score_df[ + final_score_df[field_names.TOTAL_POP_FIELD].isnull() + ] + assert ( + tracts_with_null_population_df[ + field_names.POVERTY_LESS_THAN_200_FPL_IMPUTED_FIELD + ] + .isna() + .all() + ) + + # Make sure that no tracts with population have null imputed income + # We DO NOT impute income for island areas, so remove those from the test + is_island_area = ( + final_score_df[field_names.GEOID_TRACT_FIELD] + .str[:2] + .isin(constants.TILES_ISLAND_AREA_FIPS_CODES) + ) + + tracts_with_some_population_df = final_score_df[ + (final_score_df[field_names.TOTAL_POP_FIELD] > 0) & ~is_island_area + ] + assert ( + not tracts_with_some_population_df[ + field_names.POVERTY_LESS_THAN_200_FPL_IMPUTED_FIELD + ] + .isna() + .any() + ) 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 new file mode 100644 index 000000000..df7c1b4bf --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/score/test_score_narwhal_methods.py @@ -0,0 +1,85 @@ +# pylint: disable=protected-access +import pandas as pd +import pytest +from data_pipeline.config import settings +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__) + + +@pytest.fixture +def toy_score_df(scope="module"): + return pd.read_csv( + settings.APP_ROOT + / "tests" + / "score" + / "test_utils" + / "data" + / "test_drop_tracts_from_percentile.csv", + dtype={field_names.GEOID_TRACT_FIELD: str}, + ) + + +def _helper_test_dropping_tracts(toy_score_df, drop_tracts): + logger.info(drop_tracts) + test_frame = toy_score_df[ + ~toy_score_df[field_names.GEOID_TRACT_FIELD].isin(drop_tracts) + ] + return_df = ScoreETL._add_percentiles_to_df( + df=toy_score_df, + input_column_name="to_rank", + output_column_name_root="to_rank_auto", + drop_tracts=drop_tracts, + ) + + test_frame = test_frame.assign( + true_rank=test_frame["to_rank"].rank(pct=True) + ) + + check_frame = test_frame.merge( + return_df[ + [ + field_names.GEOID_TRACT_FIELD, + "to_rank_auto" + field_names.PERCENTILE_FIELD_SUFFIX, + ] + ], + on=[field_names.GEOID_TRACT_FIELD], + ) + + return check_frame["true_rank"].equals( + check_frame["to_rank_auto" + field_names.PERCENTILE_FIELD_SUFFIX] + ) + + +def test_drop_0_tracts(toy_score_df): + assert _helper_test_dropping_tracts( + toy_score_df, drop_tracts=[] + ), "Percentile in score fails when we do not drop any tracts" + + +def test_drop_1_tract(toy_score_df): + assert _helper_test_dropping_tracts( + toy_score_df, drop_tracts=["1"] + ), "Percentile in score fails when we do drop a single tract" + + +def test_drop_2_tracts(toy_score_df): + assert _helper_test_dropping_tracts( + toy_score_df, drop_tracts=["1", "2"] + ), "Percentile in score fails when we drop two tracts" + + +def test_drop_many_tracts(toy_score_df): + assert _helper_test_dropping_tracts( + toy_score_df, + drop_tracts=toy_score_df[field_names.GEOID_TRACT_FIELD].to_list()[:5], + ), "Percentile in score fails when we drop many tracts" + + +def test_drop_all_tracts(toy_score_df): + assert _helper_test_dropping_tracts( + toy_score_df, + drop_tracts=toy_score_df[field_names.GEOID_TRACT_FIELD].to_list(), + ), "Percentile in score fails when we drop all tracts" 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 new file mode 100644 index 000000000..c6176b28a --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/score/test_tiles_smoketests.py @@ -0,0 +1,276 @@ +# flake8: noqa: W0613,W0611,F811 +from dataclasses import dataclass +from typing import Optional + +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.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 ( + 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 + + +@pytest.fixture +def tiles_df(scope="session"): + return pd.read_csv( + settings.APP_ROOT / "data" / "score" / "csv" / "tiles" / "usa.csv", + dtype={"GTF": str}, + low_memory=False, + ) + + +@pytest.fixture() +def tiles_geojson_df(): + return gpd.read_file( + settings.APP_ROOT / "data" / "score" / "geojson" / "usa-high.json" + ) + + +PERCENTILE_FIELDS = [ + "DF_PFS", + "AF_PFS", + "HDF_PFS", + "DSF_PFS", + "EBF_PFS", + "EALR_PFS", + "EBLR_PFS", + "EPLR_PFS", + "HBF_PFS", + "LLEF_PFS", + "LIF_PFS", + "LMI_PFS", + "PM25F_PFS", + "P100_PFS", + "P200_I_PFS", + "LPF_PFS", + "KP_PFS", + "NPL_PFS", + "RMP_PFS", + "TSDF_PFS", + "TF_PFS", + "UF_PFS", + "WF_PFS", + "UST_PFS", +] + + +def test_percentiles(tiles_df): + for col in PERCENTILE_FIELDS: + assert tiles_df[col].min() >= 0, f"Negative percentile exists for {col}" + assert ( + tiles_df[col].max() <= 1 + ), f"Percentile over 100th exists for {col}" + assert (tiles_df[col].median() >= 0.4) & ( + tiles_df[col].median() <= 0.6 + ), f"Percentile distribution for {col} is decidedly not uniform" + return True + + +def test_count_of_fips_codes(tiles_df, final_score_df): + final_score_state_count = ( + final_score_df[field_names.GEOID_TRACT_FIELD].str[:2].nunique() + ) + assert ( + tiles_df["GTF"].str[:2].nunique() == final_score_state_count + ), "Some states are missing from tiles" + pfs_columns = tiles_df.filter(like="PFS").columns.to_list() + assert ( + tiles_df.dropna(how="all", subset=pfs_columns)["GTF"].str[:2].nunique() + == 56 + ), "Some states do not have any percentile data" + + +def test_column_presence(tiles_df): + expected_column_names = set(TILES_SCORE_COLUMNS.values()) | { + THRESHOLD_COUNT_TO_SHOW_FIELD_NAME, + USER_INTERFACE_EXPERIENCE_FIELD_NAME, + } + actual_column_names = set(tiles_df.columns) + extra_columns = actual_column_names - expected_column_names + missing_columns = expected_column_names - expected_column_names + assert not ( + extra_columns + ), f"tiles/usa.csv has columns not specified in TILE_SCORE_COLUMNS: {extra_columns}" + assert not ( + missing_columns + ), f"tiles/usa.csv is missing columns from TILE_SCORE_COLUMNS: {missing_columns}" + + +def test_tract_equality(tiles_df, final_score_df): + assert tiles_df.shape[0] == final_score_df.shape[0] + + +def is_col_fake_bool(col) -> bool: + if col.dtype == np.dtype("float64"): + fake_bool = {1.0, 0.0, None} + # Replace the nans in the column values with None for + # so we can just use issubset below + col_values = set( + not np.isnan(val) and val or None + for val in col.value_counts(dropna=False).index + ) + return len(col_values) <= 3 and col_values.issubset(fake_bool) + return False + + +@dataclass +class ColumnValueComparison: + final_score_column: pd.Series + tiles_column: pd.Series + col_name: str + + @property + def _is_tiles_column_fake_bool(self) -> bool: + return is_col_fake_bool(self.tiles_column) + + @property + def _is_dtype_ok(self) -> bool: + if self.final_score_column.dtype == self.tiles_column.dtype: + return True + if ( + self.final_score_column.dtype == np.dtype("O") + and self.tiles_column.dtype == np.dtype("float64") + and self._is_tiles_column_fake_bool + ): + return True + return False + + def __post_init__(self): + self._is_value_ok = False + if self._is_dtype_ok: + if self._is_tiles_column_fake_bool: + # Cast to actual bool for useful comparison + self.tiles_column = self.tiles_column.apply( + lambda val: bool(val) if not np.isnan(val) else np.nan + ) + if self.tiles_column.dtype == np.dtype("float64"): + self._is_value_ok = np.allclose( + self.final_score_column, + self.tiles_column, + atol=float(f"1e-{constants.TILES_ROUND_NUM_DECIMALS}"), + equal_nan=True, + ) + else: + self._is_value_ok = self.final_score_column.equals( + self.tiles_column + ) + + def __bool__(self) -> bool: + return self._is_dtype_ok and bool(self._is_value_ok) + + @property + def error_message(self) -> Optional[str]: + if not self._is_dtype_ok: + return ( + f"Column {self.col_name} dtype mismatch: " + f"score_df: {self.final_score_column.dtype}, " + f"tile_df: {self.tiles_column.dtype}" + ) + if not self._is_value_ok: + return f"Column {self.col_name} value mismatch" + return None + + +def test_for_column_fidelitiy_from_score(tiles_df, final_score_df): + # Verify the following: + # * Shape and tracts match between score csv and tile csv + # * If you rename score CSV columns, you are able to make the tile csv + # * The dtypes and values of every renamed score column is "equal" to + # every tile column + # * Because tiles use rounded floats, we use close with a tolerance + assert ( + set(TILES_SCORE_COLUMNS.values()) - set(tiles_df.columns) == set() + ), "Some TILES_SCORE_COLUMNS are missing from the tiles dataframe" + + # Keep only the tiles score columns in the final score data + final_score_df = final_score_df.rename(columns=TILES_SCORE_COLUMNS).drop( + final_score_df.columns.difference(TILES_SCORE_COLUMNS.values()), + axis=1, + errors="ignore", + ) + + # Drop the UI-specific fields from the tiles dataframe + tiles_df = tiles_df.drop( + columns=[ + "SF", # State field, added at geoscore + "CF", # County field, added at geoscore, + constants.THRESHOLD_COUNT_TO_SHOW_FIELD_NAME, + constants.USER_INTERFACE_EXPERIENCE_FIELD_NAME, + ] + ) + errors = [] + + # Are the dataframes the same shape truly + assert tiles_df.shape == final_score_df.shape + assert tiles_df["GTF"].equals(final_score_df["GTF"]) + assert sorted(tiles_df.columns) == sorted(final_score_df.columns) + + # Are all the dtypes and values the same? + comparisons = [] + for col_name in final_score_df.columns: + value_comparison = ColumnValueComparison( + final_score_df[col_name], tiles_df[col_name], col_name + ) + comparisons.append(value_comparison) + errors = [comp for comp in comparisons if not comp] + error_message = "\n".join(error.error_message for error in errors) + assert not errors, error_message + + +def test_for_geojson_fidelity_from_tiles_csv(tiles_df, tiles_geojson_df): + tiles_geojson_df = tiles_geojson_df.drop(columns=["geometry"]).rename( + columns={"GEOID10": "GTF"} + ) + assert tiles_df.shape == tiles_geojson_df.shape + assert tiles_df["GTF"].equals(tiles_geojson_df["GTF"]) + assert sorted(tiles_df.columns) == sorted(tiles_geojson_df.columns) + + # Are all the dtypes and values the same? + for col_name in tiles_geojson_df.columns: + if is_col_fake_bool(tiles_df[col_name]): + tiles_df[col_name] = ( + tiles_df[col_name] + .astype("float64") + .replace({0.0: False, 1.0: True}) + ) + if is_col_fake_bool(tiles_geojson_df[col_name]): + tiles_geojson_df[col_name] = ( + tiles_geojson_df[col_name] + .astype("float64") + .replace({0.0: False, 1.0: True}) + ) + tiles_geojson_df[col_name] = tiles_df[col_name].replace({None: np.nan}) + error_message = f"Column {col_name} not equal " + # For non-numeric types, we can use the built-in equals from pandas + if tiles_df[col_name].dtype in [ + np.dtype(object), + np.dtype(bool), + np.dtype(str), + ]: + assert tiles_df[col_name].equals( + tiles_geojson_df[col_name] + ), error_message + # For numeric sources, use np.close so we don't get harmed by + # float equaity weirdness + else: + assert np.allclose( + tiles_df[col_name], + tiles_geojson_df[col_name], + equal_nan=True, + ), error_message + + +def test_for_state_names(tiles_df): + states = tiles_df["SF"].value_counts(dropna=False).index + assert np.nan not in states + assert states.all() diff --git a/data/data-pipeline/data_pipeline/tests/score/test_utils/__init__.py b/data/data-pipeline/data_pipeline/tests/score/test_utils/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/data/data-pipeline/data_pipeline/tests/score/test_utils/data/scores.csv b/data/data-pipeline/data_pipeline/tests/score/test_utils/data/scores.csv new file mode 100644 index 000000000..d11e7ff4f --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/score/test_utils/data/scores.csv @@ -0,0 +1,10 @@ +GEOID10_TRACT,included +24027602100,True +24027602303,True +24027605503,True +24027605502,True +24027603004,False +24027605104,True +24027603003,True +24027603001,True +24027602201,True diff --git a/data/data-pipeline/data_pipeline/tests/score/test_utils/data/test_drop_tracts_from_percentile.csv b/data/data-pipeline/data_pipeline/tests/score/test_utils/data/test_drop_tracts_from_percentile.csv new file mode 100644 index 000000000..5177546cc --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/score/test_utils/data/test_drop_tracts_from_percentile.csv @@ -0,0 +1,101 @@ +GEOID10_TRACT,to_rank +1,1 +2,2 +3,3 +4,4 +5,5 +6,6 +7,7 +8,8 +9,9 +10,10 +11,11 +12,12 +13,13 +14,14 +15,15 +16,16 +17,17 +18,18 +19,19 +20,20 +21,21 +22,22 +23,23 +24,24 +25,25 +26,26 +27,27 +28,28 +29,29 +30,30 +31,31 +32,32 +33,33 +34,34 +35,35 +36,36 +37,37 +38,38 +39,39 +40,40 +41,41 +42,42 +43,43 +44,44 +45,45 +46,46 +47,47 +48,48 +49,49 +50,50 +51,51 +52,52 +53,53 +54,54 +55,55 +56,56 +57,57 +58,58 +59,59 +60,60 +61,61 +62,62 +63,63 +64,64 +65,65 +66,66 +67,67 +68,68 +69,69 +70,70 +71,71 +72,72 +73,73 +74,74 +75,75 +76,76 +77,77 +78,78 +79,79 +80,80 +81,81 +82,82 +83,83 +84,84 +85,85 +86,86 +87,87 +88,88 +89,89 +90,90 +91,91 +92,92 +93,93 +94,94 +95,95 +96,96 +97,97 +98,98 +99,99 +100,100 diff --git a/data/data-pipeline/data_pipeline/tests/score/test_utils/data/us.geojson b/data/data-pipeline/data_pipeline/tests/score/test_utils/data/us.geojson new file mode 100644 index 000000000..51b54c74c --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/score/test_utils/data/us.geojson @@ -0,0 +1,15 @@ +{ +"type": "FeatureCollection", +"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, +"features": [ +{ "type": "Feature", "properties": { "STATEFP10": "24", "COUNTYFP10": "027", "TRACTCE10": "602100", "GEOID10": "24027602100", "NAME10": "6021", "NAMELSAD10": "Census Tract 6021", "MTFCC10": "G5020", "FUNCSTAT10": "S", "ALAND10": 13769934, "AWATER10": 3674, "INTPTLAT10": "+39.3076905", "INTPTLON10": "-076.8349752" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -76.863049, 39.31484 ], [ -76.863078, 39.315008 ], [ -76.863131, 39.315303 ], [ -76.863199, 39.315573 ], [ -76.863322, 39.315985 ], [ -76.863365, 39.316098 ], [ -76.863447, 39.316311 ], [ -76.863791, 39.317575 ], [ -76.863169, 39.318198 ], [ -76.861878, 39.319552 ], [ -76.861097, 39.320404 ], [ -76.858475, 39.322622 ], [ -76.856653, 39.323775 ], [ -76.856606, 39.323823 ], [ -76.856331, 39.324016 ], [ -76.855603, 39.323367 ], [ -76.855439, 39.323224 ], [ -76.855382, 39.323082 ], [ -76.85531, 39.322804 ], [ -76.85531, 39.322407 ], [ -76.855263, 39.321945 ], [ -76.855201, 39.321529 ], [ -76.855193, 39.320992 ], [ -76.855232, 39.320651 ], [ -76.855252, 39.320449 ], [ -76.855141, 39.320282 ], [ -76.855093, 39.320199 ], [ -76.855069, 39.320086 ], [ -76.855014, 39.320018 ], [ -76.854927, 39.319798 ], [ -76.854836, 39.319444 ], [ -76.854786, 39.319234 ], [ -76.854686, 39.318939 ], [ -76.854222, 39.318135 ], [ -76.85408, 39.317851 ], [ -76.853915, 39.317662 ], [ -76.853701, 39.317489 ], [ -76.853443, 39.317383 ], [ -76.853135, 39.317255 ], [ -76.852777, 39.317166 ], [ -76.852591, 39.317093 ], [ -76.852426, 39.316959 ], [ -76.852334, 39.316848 ], [ -76.852191, 39.316648 ], [ -76.852098, 39.316509 ], [ -76.85164, 39.316174 ], [ -76.851168, 39.315935 ], [ -76.850924, 39.315862 ], [ -76.850766, 39.315848 ], [ -76.850609, 39.315834 ], [ -76.850193, 39.315872 ], [ -76.849362, 39.315894 ], [ -76.848975, 39.316004 ], [ -76.848495, 39.316176 ], [ -76.847999, 39.316665 ], [ -76.847237, 39.31787 ], [ -76.846922, 39.318115 ], [ -76.846889, 39.318124 ], [ -76.846642, 39.318192 ], [ -76.846291, 39.318219 ], [ -76.846047, 39.31828 ], [ -76.845567, 39.318319 ], [ -76.844908, 39.318345 ], [ -76.844277, 39.318333 ], [ -76.844013, 39.318177 ], [ -76.843719, 39.31796 ], [ -76.843512, 39.317788 ], [ -76.843134, 39.317214 ], [ -76.842891, 39.316919 ], [ -76.84264, 39.316736 ], [ -76.84246, 39.31647 ], [ -76.842324, 39.316342 ], [ -76.842195, 39.316309 ], [ -76.842088, 39.31632 ], [ -76.841923, 39.316303 ], [ -76.841708, 39.316269 ], [ -76.841579, 39.316197 ], [ -76.841493, 39.316113 ], [ -76.841394, 39.315952 ], [ -76.841215, 39.315746 ], [ -76.840993, 39.31564 ], [ -76.840871, 39.315606 ], [ -76.840456, 39.315478 ], [ -76.839796, 39.315288 ], [ -76.839737, 39.315274 ], [ -76.839667, 39.315272 ], [ -76.839563, 39.315275 ], [ -76.839423, 39.315294 ], [ -76.83878, 39.315346 ], [ -76.83836, 39.315372 ], [ -76.838004, 39.315401 ], [ -76.837677, 39.315438 ], [ -76.837564, 39.315461 ], [ -76.837457, 39.315507 ], [ -76.837338, 39.315586 ], [ -76.837258, 39.31563 ], [ -76.837179, 39.315662 ], [ -76.837072, 39.31569 ], [ -76.837, 39.315709 ], [ -76.836168, 39.315782 ], [ -76.835962, 39.315804 ], [ -76.835779, 39.315838 ], [ -76.83565, 39.315845 ], [ -76.835563, 39.315837 ], [ -76.835472, 39.315804 ], [ -76.835342, 39.315725 ], [ -76.835211, 39.315602 ], [ -76.835163, 39.315542 ], [ -76.835134, 39.315509 ], [ -76.83511, 39.315427 ], [ -76.83509, 39.314909 ], [ -76.835081, 39.314763 ], [ -76.835076, 39.314692 ], [ -76.835095, 39.31461 ], [ -76.835144, 39.314521 ], [ -76.835416, 39.314201 ], [ -76.835493, 39.314081 ], [ -76.835507, 39.313973 ], [ -76.835498, 39.313921 ], [ -76.835479, 39.313862 ], [ -76.835421, 39.313783 ], [ -76.835398, 39.313716 ], [ -76.835407, 39.313664 ], [ -76.835482, 39.313504 ], [ -76.83555, 39.313161 ], [ -76.835574, 39.313101 ], [ -76.835608, 39.313049 ], [ -76.835613, 39.313004 ], [ -76.83558, 39.312911 ], [ -76.835565, 39.312814 ], [ -76.835633, 39.312717 ], [ -76.835657, 39.312605 ], [ -76.83566, 39.312419 ], [ -76.835579, 39.31208 ], [ -76.835522, 39.311972 ], [ -76.835387, 39.311848 ], [ -76.835253, 39.311777 ], [ -76.835025, 39.311695 ], [ -76.834785, 39.311613 ], [ -76.834756, 39.311605 ], [ -76.834454, 39.311526 ], [ -76.834089, 39.311496 ], [ -76.833674, 39.311507 ], [ -76.833626, 39.311507 ], [ -76.833568, 39.311514 ], [ -76.833501, 39.311555 ], [ -76.833467, 39.311588 ], [ -76.833404, 39.311622 ], [ -76.833251, 39.311692 ], [ -76.833092, 39.311767 ], [ -76.832948, 39.311796 ], [ -76.832864, 39.311808 ], [ -76.832748, 39.311848 ], [ -76.832691, 39.311882 ], [ -76.832563, 39.312001 ], [ -76.832515, 39.312042 ], [ -76.832409, 39.312124 ], [ -76.832356, 39.312172 ], [ -76.832332, 39.312217 ], [ -76.832284, 39.31231 ], [ -76.832236, 39.312373 ], [ -76.832183, 39.312407 ], [ -76.83213, 39.312422 ], [ -76.832072, 39.312436 ], [ -76.832029, 39.312481 ], [ -76.831947, 39.312563 ], [ -76.831904, 39.312645 ], [ -76.83185, 39.312749 ], [ -76.831788, 39.312913 ], [ -76.831739, 39.313032 ], [ -76.831706, 39.313066 ], [ -76.831532, 39.313144 ], [ -76.831446, 39.313177 ], [ -76.831417, 39.3132 ], [ -76.831311, 39.313393 ], [ -76.831258, 39.313542 ], [ -76.831233, 39.313684 ], [ -76.831204, 39.313967 ], [ -76.831185, 39.314019 ], [ -76.831141, 39.314049 ], [ -76.831108, 39.314075 ], [ -76.831009, 39.314303 ], [ -76.830741, 39.314899 ], [ -76.83062, 39.31513 ], [ -76.830456, 39.315476 ], [ -76.830318, 39.31577 ], [ -76.830198, 39.315983 ], [ -76.830044, 39.31618 ], [ -76.830014, 39.316266 ], [ -76.830014, 39.316359 ], [ -76.83, 39.316411 ], [ -76.82999, 39.316437 ], [ -76.829947, 39.316452 ], [ -76.82986, 39.316456 ], [ -76.829798, 39.316467 ], [ -76.829747, 39.316564 ], [ -76.829554, 39.316847 ], [ -76.829453, 39.317025 ], [ -76.829395, 39.317122 ], [ -76.829333, 39.317204 ], [ -76.829265, 39.317245 ], [ -76.829184, 39.317278 ], [ -76.829107, 39.317308 ], [ -76.829022, 39.317356 ], [ -76.828455, 39.317781 ], [ -76.827793, 39.318261 ], [ -76.827172, 39.318685 ], [ -76.826735, 39.3189 ], [ -76.826415, 39.319049 ], [ -76.825713, 39.319271 ], [ -76.825526, 39.319312 ], [ -76.825206, 39.319349 ], [ -76.82487, 39.319349 ], [ -76.824493, 39.319311 ], [ -76.824099, 39.319236 ], [ -76.823806, 39.319172 ], [ -76.823538, 39.319089 ], [ -76.823326, 39.319011 ], [ -76.822937, 39.318834 ], [ -76.822809, 39.318634 ], [ -76.822688, 39.318473 ], [ -76.822465, 39.318243 ], [ -76.822332, 39.318117 ], [ -76.822102, 39.317878 ], [ -76.821843, 39.317462 ], [ -76.82171, 39.317307 ], [ -76.821648, 39.317252 ], [ -76.821582, 39.317216 ], [ -76.821536, 39.317174 ], [ -76.821507, 39.317139 ], [ -76.821478, 39.317042 ], [ -76.821458, 39.316951 ], [ -76.821425, 39.316903 ], [ -76.821391, 39.31688 ], [ -76.821354, 39.316858 ], [ -76.821327, 39.316813 ], [ -76.821307, 39.316751 ], [ -76.82129, 39.316654 ], [ -76.821274, 39.316625 ], [ -76.82122, 39.31659 ], [ -76.821174, 39.316561 ], [ -76.821133, 39.316538 ], [ -76.821103, 39.316509 ], [ -76.821079, 39.316464 ], [ -76.820982, 39.316173 ], [ -76.820957, 39.316102 ], [ -76.820899, 39.316015 ], [ -76.820857, 39.315986 ], [ -76.820824, 39.31597 ], [ -76.820808, 39.315947 ], [ -76.820779, 39.315896 ], [ -76.820771, 39.315834 ], [ -76.820767, 39.315783 ], [ -76.820763, 39.315718 ], [ -76.820729, 39.315673 ], [ -76.820688, 39.315647 ], [ -76.820638, 39.315624 ], [ -76.820574, 39.31555 ], [ -76.820504, 39.31544 ], [ -76.82047, 39.315356 ], [ -76.820433, 39.315272 ], [ -76.820409, 39.315179 ], [ -76.820388, 39.315147 ], [ -76.820346, 39.315101 ], [ -76.820263, 39.315027 ], [ -76.820125, 39.314856 ], [ -76.820062, 39.314791 ], [ -76.820038, 39.314746 ], [ -76.81998, 39.314656 ], [ -76.819943, 39.314568 ], [ -76.819918, 39.314491 ], [ -76.819885, 39.314426 ], [ -76.819847, 39.314365 ], [ -76.819802, 39.314336 ], [ -76.819752, 39.314323 ], [ -76.819686, 39.314303 ], [ -76.819621, 39.314249 ], [ -76.819584, 39.314207 ], [ -76.819555, 39.31411 ], [ -76.819543, 39.314071 ], [ -76.819472, 39.314013 ], [ -76.819422, 39.313997 ], [ -76.819182, 39.313893 ], [ -76.819111, 39.313851 ], [ -76.819053, 39.313786 ], [ -76.818968, 39.313654 ], [ -76.818922, 39.313618 ], [ -76.818844, 39.313534 ], [ -76.818715, 39.313473 ], [ -76.818674, 39.31346 ], [ -76.818545, 39.313444 ], [ -76.81847, 39.313437 ], [ -76.818408, 39.31343 ], [ -76.81837, 39.313408 ], [ -76.818358, 39.313369 ], [ -76.818341, 39.313347 ], [ -76.8183, 39.313324 ], [ -76.818213, 39.313311 ], [ -76.818113, 39.313275 ], [ -76.818005, 39.313243 ], [ -76.817843, 39.313201 ], [ -76.817434, 39.313129 ], [ -76.817043, 39.313086 ], [ -76.816862, 39.313086 ], [ -76.816721, 39.313109 ], [ -76.816451, 39.313176 ], [ -76.816288, 39.31325 ], [ -76.816171, 39.313331 ], [ -76.815997, 39.313485 ], [ -76.815951, 39.313559 ], [ -76.815925, 39.31363 ], [ -76.815938, 39.313708 ], [ -76.815985, 39.313889 ], [ -76.816022, 39.314005 ], [ -76.81603, 39.314085 ], [ -76.816021, 39.314343 ], [ -76.815998, 39.314482 ], [ -76.815986, 39.314514 ], [ -76.815956, 39.314537 ], [ -76.815948, 39.314563 ], [ -76.815965, 39.314585 ], [ -76.815998, 39.314598 ], [ -76.816068, 39.314605 ], [ -76.816106, 39.314615 ], [ -76.816122, 39.314644 ], [ -76.81611, 39.314682 ], [ -76.816093, 39.314737 ], [ -76.816072, 39.314808 ], [ -76.816076, 39.314869 ], [ -76.816088, 39.314921 ], [ -76.816113, 39.314966 ], [ -76.816185, 39.315044 ], [ -76.816211, 39.315073 ], [ -76.816248, 39.315118 ], [ -76.81626, 39.31516 ], [ -76.816239, 39.315289 ], [ -76.816218, 39.315357 ], [ -76.816197, 39.315399 ], [ -76.815974, 39.315689 ], [ -76.81587, 39.315866 ], [ -76.815832, 39.315914 ], [ -76.815799, 39.315959 ], [ -76.815678, 39.316117 ], [ -76.815553, 39.316291 ], [ -76.815453, 39.316407 ], [ -76.815349, 39.316497 ], [ -76.815307, 39.316536 ], [ -76.815278, 39.316584 ], [ -76.815245, 39.316659 ], [ -76.815193, 39.316756 ], [ -76.815204, 39.316837 ], [ -76.815196, 39.3169 ], [ -76.81516, 39.316982 ], [ -76.815086, 39.317151 ], [ -76.815045, 39.317383 ], [ -76.815009, 39.317496 ], [ -76.814968, 39.317555 ], [ -76.814928, 39.31758 ], [ -76.814901, 39.317612 ], [ -76.814828, 39.31774 ], [ -76.814763, 39.317834 ], [ -76.814686, 39.317884 ], [ -76.814502, 39.317953 ], [ -76.814361, 39.317978 ], [ -76.814268, 39.317994 ], [ -76.814054, 39.318006 ], [ -76.813696, 39.31799 ], [ -76.813356, 39.317992 ], [ -76.812859, 39.317985 ], [ -76.81254, 39.31795 ], [ -76.812342, 39.317903 ], [ -76.812271, 39.317859 ], [ -76.812215, 39.317768 ], [ -76.812151, 39.317589 ], [ -76.812075, 39.317168 ], [ -76.812039, 39.316962 ], [ -76.812015, 39.316868 ], [ -76.811911, 39.316711 ], [ -76.811776, 39.316482 ], [ -76.811748, 39.316404 ], [ -76.811756, 39.316341 ], [ -76.811772, 39.31625 ], [ -76.811756, 39.316193 ], [ -76.81168, 39.316102 ], [ -76.811629, 39.316045 ], [ -76.811571, 39.31598 ], [ -76.811414, 39.315851 ], [ -76.811212, 39.315706 ], [ -76.811024, 39.315602 ], [ -76.810578, 39.31541 ], [ -76.810251, 39.315272 ], [ -76.81013, 39.315237 ], [ -76.810009, 39.315221 ], [ -76.809688, 39.315186 ], [ -76.809293, 39.31514 ], [ -76.808952, 39.315157 ], [ -76.808786, 39.315182 ], [ -76.808677, 39.3152 ], [ -76.808616, 39.315235 ], [ -76.808588, 39.315257 ], [ -76.808572, 39.315272 ], [ -76.808543, 39.315326 ], [ -76.808511, 39.315373 ], [ -76.808434, 39.315448 ], [ -76.808308, 39.315526 ], [ -76.808078, 39.31566 ], [ -76.808029, 39.315689 ], [ -76.80794, 39.31571 ], [ -76.807855, 39.31571 ], [ -76.807787, 39.315716 ], [ -76.807746, 39.315729 ], [ -76.807659, 39.315757 ], [ -76.807498, 39.315842 ], [ -76.807405, 39.315876 ], [ -76.80729, 39.315889 ], [ -76.807096, 39.315882 ], [ -76.807031, 39.315888 ], [ -76.806966, 39.31591 ], [ -76.806914, 39.315954 ], [ -76.806877, 39.315995 ], [ -76.806839, 39.316036 ], [ -76.806764, 39.316086 ], [ -76.806562, 39.316167 ], [ -76.806383, 39.316257 ], [ -76.806157, 39.316348 ], [ -76.806052, 39.316398 ], [ -76.805991, 39.316426 ], [ -76.805926, 39.316442 ], [ -76.805777, 39.316451 ], [ -76.805243, 39.316618 ], [ -76.805037, 39.316673 ], [ -76.804858, 39.316703 ], [ -76.804518, 39.316733 ], [ -76.804396, 39.316604 ], [ -76.804234, 39.316702 ], [ -76.803967, 39.316658 ], [ -76.803789, 39.31661 ], [ -76.803683, 39.316576 ], [ -76.803527, 39.316502 ], [ -76.803272, 39.316333 ], [ -76.80306, 39.316216 ], [ -76.802854, 39.316164 ], [ -76.802654, 39.316142 ], [ -76.802526, 39.316154 ], [ -76.802389, 39.316176 ], [ -76.802283, 39.316184 ], [ -76.802024, 39.316149 ], [ -76.801852, 39.316088 ], [ -76.801574, 39.315976 ], [ -76.801496, 39.315898 ], [ -76.801435, 39.315837 ], [ -76.801385, 39.315811 ], [ -76.801324, 39.315785 ], [ -76.801257, 39.31578 ], [ -76.801151, 39.315741 ], [ -76.800742, 39.315563 ], [ -76.800314, 39.315334 ], [ -76.800197, 39.315286 ], [ -76.800064, 39.315255 ], [ -76.799799, 39.315225 ], [ -76.799404, 39.31512 ], [ -76.799187, 39.315042 ], [ -76.799109, 39.315007 ], [ -76.79897, 39.314994 ], [ -76.798769, 39.315011 ], [ -76.798636, 39.315011 ], [ -76.79817, 39.315062 ], [ -76.79797, 39.315126 ], [ -76.797908, 39.315152 ], [ -76.797719, 39.315208 ], [ -76.797602, 39.315208 ], [ -76.797429, 39.315177 ], [ -76.797257, 39.315121 ], [ -76.79708, 39.315055 ], [ -76.796788, 39.314981 ], [ -76.796398, 39.314894 ], [ -76.795875, 39.314746 ], [ -76.795741, 39.314729 ], [ -76.795652, 39.314733 ], [ -76.795618, 39.314728 ], [ -76.795596, 39.314718 ], [ -76.795391, 39.314607 ], [ -76.795118, 39.314451 ], [ -76.794901, 39.314355 ], [ -76.794718, 39.314277 ], [ -76.7946, 39.314232 ], [ -76.794498, 39.314153 ], [ -76.794453, 39.314073 ], [ -76.794407, 39.313936 ], [ -76.794325, 39.313831 ], [ -76.794202, 39.313747 ], [ -76.794141, 39.313723 ], [ -76.794102, 39.313723 ], [ -76.794016, 39.313716 ], [ -76.793886, 39.313709 ], [ -76.793626, 39.313655 ], [ -76.793474, 39.313588 ], [ -76.793388, 39.31351 ], [ -76.793349, 39.313446 ], [ -76.793308, 39.313298 ], [ -76.793265, 39.31321 ], [ -76.793166, 39.312985 ], [ -76.793088, 39.312809 ], [ -76.792769, 39.312159 ], [ -76.792709, 39.312065 ], [ -76.792622, 39.311961 ], [ -76.792575, 39.31187 ], [ -76.792479, 39.311483 ], [ -76.792484, 39.311136 ], [ -76.792502, 39.311008 ], [ -76.792528, 39.3109 ], [ -76.792621, 39.310777 ], [ -76.792871, 39.31035 ], [ -76.793066, 39.310013 ], [ -76.793182, 39.309904 ], [ -76.79328, 39.309823 ], [ -76.79334, 39.30975 ], [ -76.793439, 39.309561 ], [ -76.793458, 39.309465 ], [ -76.79348, 39.309296 ], [ -76.793423, 39.30842 ], [ -76.793417, 39.307887 ], [ -76.793414, 39.307801 ], [ -76.793433, 39.307715 ], [ -76.793628, 39.307378 ], [ -76.793797, 39.307045 ], [ -76.793946, 39.306834 ], [ -76.794031, 39.306798 ], [ -76.794191, 39.306785 ], [ -76.794466, 39.306797 ], [ -76.794799, 39.306784 ], [ -76.795125, 39.306758 ], [ -76.795374, 39.306682 ], [ -76.795537, 39.306617 ], [ -76.795724, 39.306508 ], [ -76.796009, 39.306236 ], [ -76.796228, 39.306067 ], [ -76.796342, 39.305994 ], [ -76.796457, 39.305885 ], [ -76.796597, 39.305659 ], [ -76.796632, 39.305571 ], [ -76.79663, 39.305509 ], [ -76.79661, 39.305363 ], [ -76.796511, 39.305045 ], [ -76.796813, 39.304922 ], [ -76.797816, 39.304469 ], [ -76.798116, 39.304336 ], [ -76.798508, 39.304148 ], [ -76.799366, 39.30368 ], [ -76.79965, 39.30351 ], [ -76.800132, 39.303201 ], [ -76.800334, 39.30305 ], [ -76.800733, 39.302713 ], [ -76.800925, 39.302541 ], [ -76.801301, 39.302162 ], [ -76.801466, 39.301987 ], [ -76.801671, 39.301754 ], [ -76.801858, 39.301536 ], [ -76.80232, 39.300924 ], [ -76.802529, 39.300667 ], [ -76.802903, 39.300245 ], [ -76.803197, 39.299922 ], [ -76.803516, 39.299612 ], [ -76.803887, 39.299305 ], [ -76.80437, 39.298958 ], [ -76.804845, 39.29867 ], [ -76.805352, 39.298397 ], [ -76.805996, 39.29812 ], [ -76.806617, 39.297886 ], [ -76.807251, 39.297667 ], [ -76.807798, 39.29751 ], [ -76.808441, 39.297349 ], [ -76.809147, 39.297208 ], [ -76.809798, 39.297097 ], [ -76.810484, 39.29699 ], [ -76.811238, 39.296891 ], [ -76.811748, 39.296846 ], [ -76.812737, 39.296736 ], [ -76.813301, 39.29669 ], [ -76.814143, 39.296617 ], [ -76.815314, 39.296609 ], [ -76.816029, 39.29661 ], [ -76.816749, 39.29665 ], [ -76.817691, 39.296753 ], [ -76.818141, 39.296779 ], [ -76.818386, 39.296794 ], [ -76.818628, 39.296804 ], [ -76.818861, 39.296805 ], [ -76.81962, 39.296781 ], [ -76.820341, 39.29674 ], [ -76.821557, 39.296627 ], [ -76.822439, 39.296584 ], [ -76.823306, 39.296569 ], [ -76.824645, 39.296599 ], [ -76.824856, 39.296598 ], [ -76.825503, 39.296619 ], [ -76.82605, 39.296617 ], [ -76.826506, 39.296623 ], [ -76.833032, 39.296569 ], [ -76.834454, 39.296513 ], [ -76.835779, 39.296463 ], [ -76.837182, 39.296414 ], [ -76.840925, 39.296269 ], [ -76.846458, 39.296053 ], [ -76.847385, 39.296009 ], [ -76.848616, 39.295953 ], [ -76.85006, 39.295947 ], [ -76.851894, 39.295995 ], [ -76.853487, 39.296105 ], [ -76.854745, 39.296225 ], [ -76.855258, 39.29629 ], [ -76.855857, 39.29638 ], [ -76.856944, 39.296531 ], [ -76.857948, 39.296713 ], [ -76.85898, 39.296931 ], [ -76.859642, 39.297082 ], [ -76.8603, 39.297254 ], [ -76.861513, 39.297574 ], [ -76.862788, 39.29796 ], [ -76.864048, 39.298387 ], [ -76.865139, 39.298813 ], [ -76.86639, 39.299345 ], [ -76.867603, 39.299888 ], [ -76.86793, 39.300013 ], [ -76.868661, 39.300336 ], [ -76.869016, 39.300494 ], [ -76.869593, 39.300737 ], [ -76.870822, 39.301262 ], [ -76.87273, 39.302082 ], [ -76.87337, 39.302359 ], [ -76.874166, 39.302697 ], [ -76.874962, 39.303044 ], [ -76.875485, 39.303304 ], [ -76.875803, 39.303442 ], [ -76.876392, 39.303677 ], [ -76.876493, 39.303717 ], [ -76.876886, 39.303853 ], [ -76.877627, 39.304125 ], [ -76.878326, 39.304351 ], [ -76.878916, 39.304525 ], [ -76.879667, 39.304732 ], [ -76.880261, 39.304878 ], [ -76.880578, 39.304954 ], [ -76.88072, 39.304984 ], [ -76.880733, 39.305174 ], [ -76.880735, 39.305263 ], [ -76.880547, 39.305504 ], [ -76.879848, 39.305738 ], [ -76.87922, 39.305965 ], [ -76.877891, 39.306433 ], [ -76.877241, 39.306642 ], [ -76.87623, 39.306966 ], [ -76.875149, 39.307313 ], [ -76.874586, 39.3075 ], [ -76.870653, 39.308758 ], [ -76.87045, 39.308843 ], [ -76.870392, 39.30884 ], [ -76.869161, 39.308786 ], [ -76.869153, 39.308799 ], [ -76.869122, 39.308816 ], [ -76.869013, 39.308862 ], [ -76.868485, 39.309055 ], [ -76.867978, 39.309239 ], [ -76.867705, 39.309347 ], [ -76.867261, 39.309502 ], [ -76.866102, 39.309894 ], [ -76.866101, 39.309894 ], [ -76.865669, 39.310066 ], [ -76.864234, 39.310568 ], [ -76.863039, 39.310937 ], [ -76.862618, 39.311062 ], [ -76.86255, 39.311114 ], [ -76.862538, 39.311172 ], [ -76.862581, 39.311225 ], [ -76.862677, 39.311297 ], [ -76.862787, 39.311386 ], [ -76.862929, 39.311549 ], [ -76.863046, 39.311741 ], [ -76.863144, 39.311933 ], [ -76.863206, 39.312082 ], [ -76.863267, 39.312264 ], [ -76.86331, 39.31248 ], [ -76.86334, 39.312713 ], [ -76.863359, 39.313026 ], [ -76.863314, 39.313502 ], [ -76.863203, 39.314109 ], [ -76.863106, 39.314569 ], [ -76.863049, 39.31484 ] ] ] } }, +{ "type": "Feature", "properties": { "STATEFP10": "24", "COUNTYFP10": "027", "TRACTCE10": "602303", "GEOID10": "24027602303", "NAME10": "6023.03", "NAMELSAD10": "Census Tract 6023.03", "MTFCC10": "G5020", "FUNCSTAT10": "S", "ALAND10": 11740756, "AWATER10": 26901, "INTPTLAT10": "+39.2600506", "INTPTLON10": "-076.8754102" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -76.867498, 39.251702 ], [ -76.867537, 39.251363 ], [ -76.867542, 39.251137 ], [ -76.867547, 39.250948 ], [ -76.867551, 39.250735 ], [ -76.867571, 39.249715 ], [ -76.867587, 39.24866 ], [ -76.867563, 39.24726 ], [ -76.867551, 39.246539 ], [ -76.867545, 39.246374 ], [ -76.86753, 39.245874 ], [ -76.867524, 39.245519 ], [ -76.867513, 39.244852 ], [ -76.867508, 39.244569 ], [ -76.867494, 39.243752 ], [ -76.867464, 39.243254 ], [ -76.867459, 39.243021 ], [ -76.867491, 39.242734 ], [ -76.867527, 39.242574 ], [ -76.867606, 39.242323 ], [ -76.867733, 39.241979 ], [ -76.867789, 39.241874 ], [ -76.867887, 39.241707 ], [ -76.868088, 39.241397 ], [ -76.868319, 39.241012 ], [ -76.868406, 39.240819 ], [ -76.868436, 39.240755 ], [ -76.868517, 39.240547 ], [ -76.868561, 39.240399 ], [ -76.868589, 39.240301 ], [ -76.868621, 39.240145 ], [ -76.868629, 39.240066 ], [ -76.868641, 39.239875 ], [ -76.868623, 39.238958 ], [ -76.868615, 39.23887 ], [ -76.868554, 39.238179 ], [ -76.868554, 39.238066 ], [ -76.868555, 39.237674 ], [ -76.868571, 39.237198 ], [ -76.868561, 39.23667 ], [ -76.868552, 39.236125 ], [ -76.868546, 39.235658 ], [ -76.86878, 39.235675 ], [ -76.869588, 39.235778 ], [ -76.869847, 39.235808 ], [ -76.870245, 39.235855 ], [ -76.870766, 39.235881 ], [ -76.871369, 39.235869 ], [ -76.871573, 39.235861 ], [ -76.87345, 39.235787 ], [ -76.875368, 39.235696 ], [ -76.875646, 39.235687 ], [ -76.877313, 39.235635 ], [ -76.878161, 39.23561 ], [ -76.879152, 39.235581 ], [ -76.879839, 39.235561 ], [ -76.880951, 39.235524 ], [ -76.883983, 39.235429 ], [ -76.884053, 39.235427 ], [ -76.884272, 39.235399 ], [ -76.884876, 39.23532 ], [ -76.885061, 39.235297 ], [ -76.886926, 39.235007 ], [ -76.886964, 39.235238 ], [ -76.886987, 39.235552 ], [ -76.88701, 39.235716 ], [ -76.887038, 39.23583 ], [ -76.887089, 39.235956 ], [ -76.887246, 39.236325 ], [ -76.887364, 39.236659 ], [ -76.887473, 39.236965 ], [ -76.887565, 39.237225 ], [ -76.887781, 39.237825 ], [ -76.887906, 39.238185 ], [ -76.888091, 39.238782 ], [ -76.888283, 39.239401 ], [ -76.888328, 39.239546 ], [ -76.888388, 39.239729 ], [ -76.888452, 39.239925 ], [ -76.888569, 39.24027 ], [ -76.888689, 39.240617 ], [ -76.888805, 39.240963 ], [ -76.888849, 39.241105 ], [ -76.889019, 39.241664 ], [ -76.889512, 39.243139 ], [ -76.889674, 39.243623 ], [ -76.889757, 39.243938 ], [ -76.889796, 39.244105 ], [ -76.889852, 39.244662 ], [ -76.889927, 39.245411 ], [ -76.890066, 39.24679 ], [ -76.890386, 39.249972 ], [ -76.890404, 39.250156 ], [ -76.891167, 39.250894 ], [ -76.891834, 39.251539 ], [ -76.893979, 39.251355 ], [ -76.893811, 39.252927 ], [ -76.893722, 39.253641 ], [ -76.893596, 39.254762 ], [ -76.893579, 39.254976 ], [ -76.89355, 39.255294 ], [ -76.893523, 39.25562 ], [ -76.893473, 39.255937 ], [ -76.89343, 39.256247 ], [ -76.893383, 39.256556 ], [ -76.893349, 39.256858 ], [ -76.893322, 39.257178 ], [ -76.893276, 39.257485 ], [ -76.893237, 39.257716 ], [ -76.893225, 39.257766 ], [ -76.893209, 39.257858 ], [ -76.893163, 39.258261 ], [ -76.8931, 39.258765 ], [ -76.893054, 39.259291 ], [ -76.893033, 39.259451 ], [ -76.892998, 39.259755 ], [ -76.892961, 39.260096 ], [ -76.892887, 39.260737 ], [ -76.892788, 39.261153 ], [ -76.892659, 39.261512 ], [ -76.89255, 39.261842 ], [ -76.892336, 39.262507 ], [ -76.89222, 39.26283 ], [ -76.892107, 39.263171 ], [ -76.892106, 39.263171 ], [ -76.891997, 39.263486 ], [ -76.891813, 39.264007 ], [ -76.891303, 39.265528 ], [ -76.891279, 39.2656 ], [ -76.891191, 39.265868 ], [ -76.890978, 39.266501 ], [ -76.890775, 39.267142 ], [ -76.890556, 39.26778 ], [ -76.890127, 39.268997 ], [ -76.890003, 39.269336 ], [ -76.889925, 39.269549 ], [ -76.889705, 39.270143 ], [ -76.889628, 39.270361 ], [ -76.889491, 39.270729 ], [ -76.889323, 39.271261 ], [ -76.889234, 39.271588 ], [ -76.889038, 39.272185 ], [ -76.888832, 39.272795 ], [ -76.888659, 39.273323 ], [ -76.888499, 39.273796 ], [ -76.888414, 39.274103 ], [ -76.888144, 39.274975 ], [ -76.888143, 39.275178 ], [ -76.888149, 39.275634 ], [ -76.888141, 39.275972 ], [ -76.888135, 39.276203 ], [ -76.888106, 39.276999 ], [ -76.888106, 39.27724 ], [ -76.888183, 39.277746 ], [ -76.888344, 39.278588 ], [ -76.888519, 39.279431 ], [ -76.888685, 39.280251 ], [ -76.88886, 39.281024 ], [ -76.889016, 39.281823 ], [ -76.889177, 39.282592 ], [ -76.889339, 39.283318 ], [ -76.889408, 39.283789 ], [ -76.88942, 39.28405 ], [ -76.8894, 39.284507 ], [ -76.889353, 39.284891 ], [ -76.889272, 39.285147 ], [ -76.889218, 39.28524 ], [ -76.889396, 39.28528 ], [ -76.88966, 39.285318 ], [ -76.889832, 39.285337 ], [ -76.890173, 39.285375 ], [ -76.890913, 39.285453 ], [ -76.891613, 39.285534 ], [ -76.892779, 39.285684 ], [ -76.894114, 39.285804 ], [ -76.89437, 39.285828 ], [ -76.89448, 39.285837 ], [ -76.890823, 39.289173 ], [ -76.889975, 39.289948 ], [ -76.889806, 39.290103 ], [ -76.889729, 39.290065 ], [ -76.889613, 39.29001 ], [ -76.88911, 39.289772 ], [ -76.888796, 39.289621 ], [ -76.887773, 39.289128 ], [ -76.887661, 39.289074 ], [ -76.886098, 39.288336 ], [ -76.884595, 39.287649 ], [ -76.883825, 39.287277 ], [ -76.883128, 39.28694 ], [ -76.881729, 39.286274 ], [ -76.880399, 39.285636 ], [ -76.879398, 39.285165 ], [ -76.878118, 39.284545 ], [ -76.876769, 39.283851 ], [ -76.876647, 39.283789 ], [ -76.87634, 39.283634 ], [ -76.875409, 39.283105 ], [ -76.874609, 39.282655 ], [ -76.874382, 39.282527 ], [ -76.874056, 39.282319 ], [ -76.873448, 39.281984 ], [ -76.873267, 39.281885 ], [ -76.872481, 39.281469 ], [ -76.872155, 39.28135 ], [ -76.871936, 39.281275 ], [ -76.871374, 39.281081 ], [ -76.870703, 39.280897 ], [ -76.870132, 39.28075 ], [ -76.869799, 39.280679 ], [ -76.868465, 39.280437 ], [ -76.8679, 39.280363 ], [ -76.867262, 39.280267 ], [ -76.86667, 39.280177 ], [ -76.866008, 39.28009 ], [ -76.865352, 39.280007 ], [ -76.86472, 39.27992 ], [ -76.863834, 39.279826 ], [ -76.863616, 39.279806 ], [ -76.863218, 39.279769 ], [ -76.862832, 39.279734 ], [ -76.862409, 39.279695 ], [ -76.862262, 39.279682 ], [ -76.861319, 39.279613 ], [ -76.860231, 39.279532 ], [ -76.860358, 39.279352 ], [ -76.861245, 39.277897 ], [ -76.861667, 39.276437 ], [ -76.861821, 39.27589 ], [ -76.861964, 39.275491 ], [ -76.862094, 39.27529 ], [ -76.862277, 39.275041 ], [ -76.862597, 39.274729 ], [ -76.86297, 39.274395 ], [ -76.863236, 39.274175 ], [ -76.863504, 39.273962 ], [ -76.864083, 39.273473 ], [ -76.864273, 39.273322 ], [ -76.86446, 39.273174 ], [ -76.864617, 39.273052 ], [ -76.864748, 39.272917 ], [ -76.864893, 39.27276 ], [ -76.865004, 39.272603 ], [ -76.865096, 39.272442 ], [ -76.865186, 39.2722 ], [ -76.865244, 39.271998 ], [ -76.865273, 39.271814 ], [ -76.865303, 39.271601 ], [ -76.865317, 39.271294 ], [ -76.865267, 39.271102 ], [ -76.865205, 39.270947 ], [ -76.865154, 39.270825 ], [ -76.865094, 39.270695 ], [ -76.865048, 39.270606 ], [ -76.864963, 39.27045 ], [ -76.864871, 39.270295 ], [ -76.864735, 39.270073 ], [ -76.864452, 39.26958 ], [ -76.864244, 39.269159 ], [ -76.864084, 39.268812 ], [ -76.863939, 39.268534 ], [ -76.86371, 39.268139 ], [ -76.863425, 39.267654 ], [ -76.863267, 39.267393 ], [ -76.862744, 39.266485 ], [ -76.862395, 39.265864 ], [ -76.862222, 39.265484 ], [ -76.862181, 39.265371 ], [ -76.862109, 39.265029 ], [ -76.862076, 39.264846 ], [ -76.862056, 39.264605 ], [ -76.862064, 39.264419 ], [ -76.862078, 39.264297 ], [ -76.86211, 39.26414 ], [ -76.862148, 39.263997 ], [ -76.862229, 39.263825 ], [ -76.862423, 39.263409 ], [ -76.862979, 39.262309 ], [ -76.863159, 39.261933 ], [ -76.863622, 39.261021 ], [ -76.863842, 39.260488 ], [ -76.864054, 39.260003 ], [ -76.865498, 39.256784 ], [ -76.866081, 39.255518 ], [ -76.866543, 39.254515 ], [ -76.866826, 39.253967 ], [ -76.866925, 39.253738 ], [ -76.867014, 39.253513 ], [ -76.867091, 39.253317 ], [ -76.867197, 39.253021 ], [ -76.86731, 39.252548 ], [ -76.867386, 39.252249 ], [ -76.867413, 39.252143 ], [ -76.867494, 39.251734 ], [ -76.867498, 39.251702 ] ] ] } }, +{ "type": "Feature", "properties": { "STATEFP10": "24", "COUNTYFP10": "027", "TRACTCE10": "605503", "GEOID10": "24027605503", "NAME10": "6055.03", "NAMELSAD10": "Census Tract 6055.03", "MTFCC10": "G5020", "FUNCSTAT10": "S", "ALAND10": 3158645, "AWATER10": 8444, "INTPTLAT10": "+39.2274469", "INTPTLON10": "-076.8803625" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -76.884053, 39.235427 ], [ -76.883983, 39.235429 ], [ -76.880951, 39.235524 ], [ -76.879839, 39.235561 ], [ -76.879152, 39.235581 ], [ -76.878161, 39.23561 ], [ -76.877313, 39.235635 ], [ -76.875646, 39.235687 ], [ -76.875368, 39.235696 ], [ -76.87345, 39.235787 ], [ -76.871573, 39.235861 ], [ -76.871369, 39.235869 ], [ -76.870766, 39.235881 ], [ -76.870245, 39.235855 ], [ -76.869847, 39.235808 ], [ -76.869588, 39.235778 ], [ -76.86878, 39.235675 ], [ -76.868546, 39.235658 ], [ -76.868474, 39.234553 ], [ -76.868431, 39.233877 ], [ -76.868354, 39.23388 ], [ -76.867631, 39.233946 ], [ -76.867162, 39.233989 ], [ -76.866848, 39.233997 ], [ -76.866664, 39.233982 ], [ -76.866443, 39.233937 ], [ -76.866238, 39.233889 ], [ -76.86605, 39.233827 ], [ -76.865887, 39.233747 ], [ -76.865675, 39.233638 ], [ -76.865531, 39.233543 ], [ -76.865429, 39.233464 ], [ -76.865274, 39.233322 ], [ -76.865191, 39.23322 ], [ -76.864982, 39.232941 ], [ -76.864657, 39.232448 ], [ -76.864197, 39.231762 ], [ -76.863933, 39.231376 ], [ -76.864652, 39.230976 ], [ -76.865181, 39.23063 ], [ -76.86569, 39.230272 ], [ -76.866187, 39.229899 ], [ -76.866092, 39.22931 ], [ -76.866063, 39.229107 ], [ -76.866036, 39.228961 ], [ -76.866004, 39.228772 ], [ -76.865986, 39.228622 ], [ -76.865982, 39.228537 ], [ -76.866001, 39.22838 ], [ -76.866038, 39.228252 ], [ -76.866107, 39.228099 ], [ -76.866188, 39.227951 ], [ -76.866245, 39.227853 ], [ -76.866288, 39.227754 ], [ -76.866326, 39.227632 ], [ -76.866347, 39.227556 ], [ -76.866363, 39.227482 ], [ -76.867636, 39.227627 ], [ -76.867771, 39.226876 ], [ -76.867808, 39.226889 ], [ -76.867822, 39.22689 ], [ -76.867841, 39.226889 ], [ -76.867866, 39.226881 ], [ -76.867901, 39.226864 ], [ -76.868056, 39.226792 ], [ -76.868143, 39.226747 ], [ -76.868248, 39.226678 ], [ -76.868326, 39.226608 ], [ -76.868405, 39.226515 ], [ -76.868447, 39.22647 ], [ -76.868537, 39.226413 ], [ -76.868647, 39.226368 ], [ -76.868757, 39.226344 ], [ -76.868993, 39.226307 ], [ -76.869106, 39.226291 ], [ -76.869148, 39.226246 ], [ -76.869154, 39.226197 ], [ -76.869154, 39.226136 ], [ -76.869159, 39.226091 ], [ -76.869233, 39.226071 ], [ -76.869379, 39.226104 ], [ -76.869432, 39.226112 ], [ -76.869484, 39.22608 ], [ -76.8695, 39.226031 ], [ -76.869485, 39.225982 ], [ -76.869474, 39.225937 ], [ -76.869485, 39.225884 ], [ -76.869537, 39.225843 ], [ -76.869606, 39.225811 ], [ -76.869721, 39.225803 ], [ -76.869742, 39.225839 ], [ -76.869779, 39.225872 ], [ -76.869823, 39.22588 ], [ -76.869902, 39.22586 ], [ -76.870316, 39.225815 ], [ -76.870547, 39.225803 ], [ -76.870684, 39.225808 ], [ -76.870799, 39.22584 ], [ -76.87103, 39.22589 ], [ -76.871171, 39.225955 ], [ -76.871216, 39.226024 ], [ -76.871284, 39.226049 ], [ -76.871378, 39.226061 ], [ -76.871483, 39.226123 ], [ -76.871567, 39.226155 ], [ -76.87163, 39.226172 ], [ -76.871672, 39.226212 ], [ -76.871714, 39.226261 ], [ -76.871735, 39.226278 ], [ -76.871804, 39.226285 ], [ -76.871884, 39.22625 ], [ -76.871928, 39.226235 ], [ -76.871992, 39.226232 ], [ -76.87207, 39.226251 ], [ -76.87213, 39.226285 ], [ -76.872158, 39.226322 ], [ -76.87217, 39.226359 ], [ -76.87219, 39.226412 ], [ -76.872198, 39.226506 ], [ -76.872214, 39.226524 ], [ -76.872242, 39.226524 ], [ -76.872314, 39.226512 ], [ -76.872378, 39.226478 ], [ -76.872422, 39.226462 ], [ -76.87247, 39.226462 ], [ -76.872506, 39.226487 ], [ -76.872522, 39.226522 ], [ -76.872518, 39.226556 ], [ -76.872506, 39.226599 ], [ -76.872494, 39.226661 ], [ -76.872502, 39.226727 ], [ -76.872518, 39.226773 ], [ -76.87257, 39.226843 ], [ -76.872679, 39.226779 ], [ -76.872712, 39.226767 ], [ -76.87274, 39.226748 ], [ -76.872758, 39.226733 ], [ -76.872788, 39.226725 ], [ -76.872838, 39.226724 ], [ -76.872887, 39.226731 ], [ -76.872948, 39.226743 ], [ -76.873029, 39.226763 ], [ -76.873177, 39.226784 ], [ -76.873285, 39.226787 ], [ -76.873383, 39.226782 ], [ -76.873442, 39.226773 ], [ -76.87351, 39.226756 ], [ -76.87363, 39.226724 ], [ -76.873757, 39.226707 ], [ -76.873822, 39.22669 ], [ -76.873916, 39.226669 ], [ -76.873998, 39.226669 ], [ -76.874157, 39.226699 ], [ -76.874255, 39.226738 ], [ -76.87437, 39.22678 ], [ -76.874501, 39.226836 ], [ -76.874645, 39.226774 ], [ -76.874811, 39.226723 ], [ -76.874962, 39.226684 ], [ -76.875098, 39.226641 ], [ -76.875194, 39.226587 ], [ -76.875264, 39.226501 ], [ -76.87531, 39.226419 ], [ -76.875395, 39.22638 ], [ -76.875531, 39.226368 ], [ -76.875692, 39.226325 ], [ -76.875823, 39.226283 ], [ -76.875949, 39.226228 ], [ -76.876158, 39.226134 ], [ -76.876273, 39.226111 ], [ -76.876384, 39.226111 ], [ -76.876465, 39.226123 ], [ -76.876525, 39.226119 ], [ -76.876565, 39.226115 ], [ -76.876641, 39.226096 ], [ -76.876701, 39.226072 ], [ -76.876762, 39.225994 ], [ -76.876782, 39.22592 ], [ -76.876807, 39.225838 ], [ -76.876883, 39.225697 ], [ -76.877047, 39.225494 ], [ -76.877107, 39.225432 ], [ -76.877167, 39.225373 ], [ -76.877218, 39.225338 ], [ -76.877298, 39.225299 ], [ -76.877394, 39.225225 ], [ -76.87751, 39.225147 ], [ -76.877596, 39.225061 ], [ -76.877999, 39.224448 ], [ -76.877999, 39.224369 ], [ -76.877994, 39.224311 ], [ -76.877969, 39.224237 ], [ -76.877969, 39.224154 ], [ -76.87804, 39.224078 ], [ -76.878095, 39.224022 ], [ -76.878251, 39.223994 ], [ -76.878332, 39.223963 ], [ -76.878397, 39.223909 ], [ -76.878473, 39.223842 ], [ -76.878569, 39.223745 ], [ -76.878649, 39.223616 ], [ -76.878689, 39.2236 ], [ -76.878805, 39.2236 ], [ -76.878871, 39.223596 ], [ -76.878906, 39.223569 ], [ -76.878956, 39.223507 ], [ -76.878992, 39.223444 ], [ -76.879034, 39.223386 ], [ -76.879045, 39.223327 ], [ -76.87904, 39.22326 ], [ -76.87902, 39.223182 ], [ -76.879, 39.223096 ], [ -76.879005, 39.223006 ], [ -76.87904, 39.222913 ], [ -76.879065, 39.222858 ], [ -76.879081, 39.222784 ], [ -76.879101, 39.222564 ], [ -76.879081, 39.222285 ], [ -76.879051, 39.222093 ], [ -76.879051, 39.221854 ], [ -76.879082, 39.221767 ], [ -76.879144, 39.221687 ], [ -76.879257, 39.221599 ], [ -76.879411, 39.221496 ], [ -76.879555, 39.221408 ], [ -76.87977, 39.221305 ], [ -76.880017, 39.221122 ], [ -76.880253, 39.220938 ], [ -76.880438, 39.220795 ], [ -76.880736, 39.22062 ], [ -76.880808, 39.220588 ], [ -76.880911, 39.220548 ], [ -76.881065, 39.220445 ], [ -76.88126, 39.22036 ], [ -76.881301, 39.220349 ], [ -76.881383, 39.220355 ], [ -76.881444, 39.220342 ], [ -76.881507, 39.220326 ], [ -76.881578, 39.220328 ], [ -76.881696, 39.220335 ], [ -76.881814, 39.220326 ], [ -76.881886, 39.220302 ], [ -76.881968, 39.220278 ], [ -76.882035, 39.220252 ], [ -76.881948, 39.22012 ], [ -76.881889, 39.220035 ], [ -76.881788, 39.21993 ], [ -76.881655, 39.21983 ], [ -76.881476, 39.219727 ], [ -76.881328, 39.219663 ], [ -76.881146, 39.2196 ], [ -76.881087, 39.219576 ], [ -76.881, 39.21954 ], [ -76.880876, 39.219485 ], [ -76.880758, 39.219397 ], [ -76.88061, 39.219293 ], [ -76.880507, 39.219208 ], [ -76.880396, 39.219113 ], [ -76.880298, 39.218997 ], [ -76.880228, 39.218898 ], [ -76.880157, 39.218764 ], [ -76.880097, 39.218618 ], [ -76.880056, 39.218458 ], [ -76.88003, 39.218308 ], [ -76.880016, 39.218129 ], [ -76.880021, 39.217982 ], [ -76.880034, 39.217795 ], [ -76.880052, 39.217625 ], [ -76.880071, 39.217495 ], [ -76.880124, 39.217062 ], [ -76.880192, 39.21651 ], [ -76.880209, 39.216246 ], [ -76.880703, 39.216272 ], [ -76.881043, 39.21629 ], [ -76.881236, 39.216294 ], [ -76.88147, 39.216299 ], [ -76.88156, 39.2163 ], [ -76.881841, 39.216303 ], [ -76.882125, 39.216307 ], [ -76.882476, 39.216292 ], [ -76.882946, 39.216253 ], [ -76.883282, 39.216206 ], [ -76.883617, 39.216151 ], [ -76.883905, 39.216087 ], [ -76.883979, 39.216301 ], [ -76.884188, 39.216261 ], [ -76.884364, 39.216219 ], [ -76.884521, 39.21617 ], [ -76.884959, 39.216016 ], [ -76.885339, 39.215879 ], [ -76.885547, 39.215802 ], [ -76.885466, 39.215629 ], [ -76.885728, 39.215551 ], [ -76.886416, 39.215306 ], [ -76.88696, 39.215124 ], [ -76.887318, 39.215006 ], [ -76.88745, 39.214962 ], [ -76.887483, 39.215136 ], [ -76.887614, 39.215822 ], [ -76.887719, 39.216376 ], [ -76.887751, 39.216569 ], [ -76.8879, 39.217235 ], [ -76.88796, 39.217576 ], [ -76.887999, 39.217826 ], [ -76.888031, 39.218163 ], [ -76.888235, 39.219402 ], [ -76.88825, 39.219529 ], [ -76.888316, 39.220107 ], [ -76.888322, 39.220205 ], [ -76.888355, 39.220515 ], [ -76.888435, 39.221126 ], [ -76.888458, 39.221366 ], [ -76.888452, 39.221538 ], [ -76.888899, 39.221561 ], [ -76.890292, 39.221641 ], [ -76.890953, 39.221677 ], [ -76.891369, 39.221713 ], [ -76.891753, 39.221768 ], [ -76.891918, 39.221809 ], [ -76.892111, 39.221879 ], [ -76.892353, 39.222014 ], [ -76.892448, 39.222086 ], [ -76.892496, 39.222122 ], [ -76.892619, 39.222231 ], [ -76.892744, 39.222386 ], [ -76.892808, 39.222478 ], [ -76.892859, 39.222593 ], [ -76.89294, 39.222798 ], [ -76.893069, 39.223233 ], [ -76.893206, 39.223659 ], [ -76.893414, 39.224302 ], [ -76.893613, 39.224891 ], [ -76.89376, 39.225212 ], [ -76.894045, 39.225836 ], [ -76.89385, 39.225884 ], [ -76.893684, 39.225936 ], [ -76.893489, 39.225976 ], [ -76.893375, 39.225998 ], [ -76.893252, 39.225998 ], [ -76.893114, 39.225994 ], [ -76.892991, 39.225987 ], [ -76.892834, 39.225964 ], [ -76.892522, 39.225898 ], [ -76.892442, 39.225878 ], [ -76.892361, 39.225863 ], [ -76.892274, 39.225859 ], [ -76.892179, 39.225859 ], [ -76.892094, 39.225862 ], [ -76.892021, 39.22587 ], [ -76.891916, 39.225889 ], [ -76.891839, 39.22591 ], [ -76.891579, 39.225985 ], [ -76.891069, 39.226163 ], [ -76.890558, 39.226349 ], [ -76.890123, 39.226517 ], [ -76.889981, 39.226577 ], [ -76.88985, 39.226646 ], [ -76.889731, 39.226722 ], [ -76.889646, 39.226788 ], [ -76.889553, 39.226865 ], [ -76.889496, 39.226927 ], [ -76.889437, 39.226997 ], [ -76.889389, 39.227074 ], [ -76.889331, 39.227157 ], [ -76.889285, 39.227327 ], [ -76.889279, 39.227403 ], [ -76.889279, 39.227497 ], [ -76.889282, 39.22769 ], [ -76.8893, 39.227975 ], [ -76.889347, 39.228373 ], [ -76.889386, 39.228701 ], [ -76.889489, 39.229117 ], [ -76.889556, 39.229397 ], [ -76.889599, 39.229575 ], [ -76.889664, 39.229824 ], [ -76.889758, 39.230222 ], [ -76.889788, 39.23033 ], [ -76.889896, 39.230726 ], [ -76.890198, 39.231898 ], [ -76.890484, 39.232946 ], [ -76.890596, 39.233322 ], [ -76.890697, 39.233653 ], [ -76.890824, 39.234054 ], [ -76.890949, 39.234416 ], [ -76.888182, 39.234822 ], [ -76.887931, 39.234859 ], [ -76.886926, 39.235007 ], [ -76.885061, 39.235297 ], [ -76.884876, 39.23532 ], [ -76.884272, 39.235399 ], [ -76.884053, 39.235427 ] ] ] } }, +{ "type": "Feature", "properties": { "STATEFP10": "24", "COUNTYFP10": "027", "TRACTCE10": "605502", "GEOID10": "24027605502", "NAME10": "6055.02", "NAMELSAD10": "Census Tract 6055.02", "MTFCC10": "G5020", "FUNCSTAT10": "S", "ALAND10": 5260984, "AWATER10": 16405, "INTPTLAT10": "+39.2257617", "INTPTLON10": "-076.9054701" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -76.908812, 39.21739 ], [ -76.90882, 39.217394 ], [ -76.909061, 39.217453 ], [ -76.909194, 39.217499 ], [ -76.909264, 39.217557 ], [ -76.909307, 39.217628 ], [ -76.90936, 39.217728 ], [ -76.909408, 39.217815 ], [ -76.909483, 39.217894 ], [ -76.909692, 39.218011 ], [ -76.909892, 39.21809 ], [ -76.910042, 39.218173 ], [ -76.910165, 39.218278 ], [ -76.910267, 39.218394 ], [ -76.910384, 39.218573 ], [ -76.910448, 39.218631 ], [ -76.910507, 39.218669 ], [ -76.910812, 39.218769 ], [ -76.911147, 39.218998 ], [ -76.911227, 39.219073 ], [ -76.911259, 39.219111 ], [ -76.91128, 39.219177 ], [ -76.911296, 39.21929 ], [ -76.911333, 39.219439 ], [ -76.911333, 39.219523 ], [ -76.911365, 39.219606 ], [ -76.91144, 39.219685 ], [ -76.91155, 39.219747 ], [ -76.911646, 39.219822 ], [ -76.911775, 39.21991 ], [ -76.911823, 39.21996 ], [ -76.911855, 39.220022 ], [ -76.911855, 39.220085 ], [ -76.911844, 39.220147 ], [ -76.91179, 39.220235 ], [ -76.911715, 39.220289 ], [ -76.911714, 39.220289 ], [ -76.911629, 39.220359 ], [ -76.911549, 39.220447 ], [ -76.911455, 39.220513 ], [ -76.911418, 39.220613 ], [ -76.911396, 39.220713 ], [ -76.911401, 39.220808 ], [ -76.911423, 39.220888 ], [ -76.911455, 39.220942 ], [ -76.911514, 39.220987 ], [ -76.911621, 39.221037 ], [ -76.911749, 39.221079 ], [ -76.911899, 39.221121 ], [ -76.912092, 39.22115 ], [ -76.912204, 39.221204 ], [ -76.912284, 39.221271 ], [ -76.912324, 39.221325 ], [ -76.912335, 39.2214 ], [ -76.912335, 39.221433 ], [ -76.912329, 39.221458 ], [ -76.912249, 39.221521 ], [ -76.912045, 39.221629 ], [ -76.911853, 39.22172 ], [ -76.911804, 39.221766 ], [ -76.911783, 39.221816 ], [ -76.91181, 39.221878 ], [ -76.911973, 39.222086 ], [ -76.912026, 39.22219 ], [ -76.912058, 39.222286 ], [ -76.91209, 39.222415 ], [ -76.912063, 39.222511 ], [ -76.912015, 39.222582 ], [ -76.911972, 39.222661 ], [ -76.911945, 39.222765 ], [ -76.911958, 39.222885 ], [ -76.911964, 39.222981 ], [ -76.912006, 39.223073 ], [ -76.912065, 39.223139 ], [ -76.912193, 39.223206 ], [ -76.912279, 39.223289 ], [ -76.912375, 39.223377 ], [ -76.912493, 39.223502 ], [ -76.912536, 39.223576 ], [ -76.91256, 39.223664 ], [ -76.912544, 39.223726 ], [ -76.912485, 39.223818 ], [ -76.91242, 39.223951 ], [ -76.912393, 39.224051 ], [ -76.91243, 39.224205 ], [ -76.912524, 39.224442 ], [ -76.912609, 39.224567 ], [ -76.912679, 39.224667 ], [ -76.91277, 39.224758 ], [ -76.912839, 39.224846 ], [ -76.912861, 39.224937 ], [ -76.912882, 39.22505 ], [ -76.9129, 39.225216 ], [ -76.912906, 39.225387 ], [ -76.912916, 39.225624 ], [ -76.912916, 39.225761 ], [ -76.912948, 39.225865 ], [ -76.913025, 39.225986 ], [ -76.913116, 39.226057 ], [ -76.913239, 39.226115 ], [ -76.913416, 39.226178 ], [ -76.913635, 39.226236 ], [ -76.913949, 39.226316 ], [ -76.914077, 39.226357 ], [ -76.914157, 39.226411 ], [ -76.914243, 39.226495 ], [ -76.914307, 39.226603 ], [ -76.914366, 39.226707 ], [ -76.914446, 39.226811 ], [ -76.914521, 39.226894 ], [ -76.914649, 39.226994 ], [ -76.914748, 39.227082 ], [ -76.914828, 39.227182 ], [ -76.91485, 39.22724 ], [ -76.914903, 39.227336 ], [ -76.914962, 39.22739 ], [ -76.91509, 39.227473 ], [ -76.915187, 39.227532 ], [ -76.915385, 39.227656 ], [ -76.915443, 39.227711 ], [ -76.915574, 39.227844 ], [ -76.915703, 39.227997 ], [ -76.915806, 39.228094 ], [ -76.915874, 39.228147 ], [ -76.915954, 39.228188 ], [ -76.91609, 39.228255 ], [ -76.916204, 39.228297 ], [ -76.916342, 39.228352 ], [ -76.91648, 39.228447 ], [ -76.916564, 39.22853 ], [ -76.916625, 39.228637 ], [ -76.916632, 39.228732 ], [ -76.916643, 39.228914 ], [ -76.916647, 39.229065 ], [ -76.916669, 39.22916 ], [ -76.916696, 39.229211 ], [ -76.917049, 39.229446 ], [ -76.91672, 39.229819 ], [ -76.916556, 39.229975 ], [ -76.916328, 39.23016 ], [ -76.916091, 39.230309 ], [ -76.915948, 39.230389 ], [ -76.91581, 39.230453 ], [ -76.915602, 39.230544 ], [ -76.915432, 39.230603 ], [ -76.915217, 39.230669 ], [ -76.914954, 39.230728 ], [ -76.914825, 39.230749 ], [ -76.914623, 39.230773 ], [ -76.914417, 39.230787 ], [ -76.91399, 39.230818 ], [ -76.913462, 39.230851 ], [ -76.912914, 39.230906 ], [ -76.912687, 39.230926 ], [ -76.912552, 39.230947 ], [ -76.91226, 39.231015 ], [ -76.911909, 39.231142 ], [ -76.911291, 39.231429 ], [ -76.911039, 39.231532 ], [ -76.910706, 39.231669 ], [ -76.910482, 39.231744 ], [ -76.910117, 39.231879 ], [ -76.90995, 39.231938 ], [ -76.909795, 39.231984 ], [ -76.909621, 39.232034 ], [ -76.909443, 39.232076 ], [ -76.909281, 39.232106 ], [ -76.909044, 39.232132 ], [ -76.908921, 39.232146 ], [ -76.908188, 39.232231 ], [ -76.906062, 39.232486 ], [ -76.904183, 39.232719 ], [ -76.903472, 39.232798 ], [ -76.902909, 39.23286 ], [ -76.902559, 39.232909 ], [ -76.901778, 39.233021 ], [ -76.900781, 39.233182 ], [ -76.900751, 39.233187 ], [ -76.899982, 39.233296 ], [ -76.899037, 39.233428 ], [ -76.897826, 39.233589 ], [ -76.897353, 39.233637 ], [ -76.896697, 39.233705 ], [ -76.895342, 39.233878 ], [ -76.894645, 39.233948 ], [ -76.894297, 39.233978 ], [ -76.894039, 39.234002 ], [ -76.893433, 39.234059 ], [ -76.89318, 39.234093 ], [ -76.892438, 39.234191 ], [ -76.891674, 39.234305 ], [ -76.890949, 39.234416 ], [ -76.890824, 39.234054 ], [ -76.890697, 39.233653 ], [ -76.890596, 39.233322 ], [ -76.890484, 39.232946 ], [ -76.890198, 39.231898 ], [ -76.889896, 39.230726 ], [ -76.889788, 39.23033 ], [ -76.889758, 39.230222 ], [ -76.889664, 39.229824 ], [ -76.889599, 39.229575 ], [ -76.889556, 39.229397 ], [ -76.889489, 39.229117 ], [ -76.889386, 39.228701 ], [ -76.889347, 39.228373 ], [ -76.8893, 39.227975 ], [ -76.889282, 39.22769 ], [ -76.889279, 39.227497 ], [ -76.889279, 39.227403 ], [ -76.889285, 39.227327 ], [ -76.889331, 39.227157 ], [ -76.889389, 39.227074 ], [ -76.889437, 39.226997 ], [ -76.889496, 39.226927 ], [ -76.889553, 39.226865 ], [ -76.889646, 39.226788 ], [ -76.889731, 39.226722 ], [ -76.88985, 39.226646 ], [ -76.889981, 39.226577 ], [ -76.890123, 39.226517 ], [ -76.890558, 39.226349 ], [ -76.891069, 39.226163 ], [ -76.891579, 39.225985 ], [ -76.891839, 39.22591 ], [ -76.891916, 39.225889 ], [ -76.892021, 39.22587 ], [ -76.892094, 39.225862 ], [ -76.892179, 39.225859 ], [ -76.892274, 39.225859 ], [ -76.892361, 39.225863 ], [ -76.892442, 39.225878 ], [ -76.892522, 39.225898 ], [ -76.892834, 39.225964 ], [ -76.892991, 39.225987 ], [ -76.893114, 39.225994 ], [ -76.893252, 39.225998 ], [ -76.893375, 39.225998 ], [ -76.893489, 39.225976 ], [ -76.893684, 39.225936 ], [ -76.89385, 39.225884 ], [ -76.894045, 39.225836 ], [ -76.89376, 39.225212 ], [ -76.893613, 39.224891 ], [ -76.893414, 39.224302 ], [ -76.893206, 39.223659 ], [ -76.893069, 39.223233 ], [ -76.89294, 39.222798 ], [ -76.892859, 39.222593 ], [ -76.892808, 39.222478 ], [ -76.892744, 39.222386 ], [ -76.892619, 39.222231 ], [ -76.892496, 39.222122 ], [ -76.892448, 39.222086 ], [ -76.892353, 39.222014 ], [ -76.892111, 39.221879 ], [ -76.891918, 39.221809 ], [ -76.891753, 39.221768 ], [ -76.891369, 39.221713 ], [ -76.890953, 39.221677 ], [ -76.890292, 39.221641 ], [ -76.888899, 39.221561 ], [ -76.888452, 39.221538 ], [ -76.888458, 39.221366 ], [ -76.888435, 39.221126 ], [ -76.888355, 39.220515 ], [ -76.888322, 39.220205 ], [ -76.888316, 39.220107 ], [ -76.88825, 39.219529 ], [ -76.888235, 39.219402 ], [ -76.888031, 39.218163 ], [ -76.887999, 39.217826 ], [ -76.88796, 39.217576 ], [ -76.8879, 39.217235 ], [ -76.887751, 39.216569 ], [ -76.887719, 39.216376 ], [ -76.887614, 39.215822 ], [ -76.887483, 39.215136 ], [ -76.88745, 39.214962 ], [ -76.887831, 39.214814 ], [ -76.88811, 39.214712 ], [ -76.888451, 39.214544 ], [ -76.888699, 39.214412 ], [ -76.888955, 39.214291 ], [ -76.889255, 39.214118 ], [ -76.891175, 39.212763 ], [ -76.891805, 39.212344 ], [ -76.892623, 39.211791 ], [ -76.892847, 39.211638 ], [ -76.892975, 39.211554 ], [ -76.893114, 39.211465 ], [ -76.893257, 39.211394 ], [ -76.893316, 39.211431 ], [ -76.89356, 39.211581 ], [ -76.893793, 39.211715 ], [ -76.893877, 39.211756 ], [ -76.894018, 39.211822 ], [ -76.894167, 39.211878 ], [ -76.894319, 39.211929 ], [ -76.894448, 39.211963 ], [ -76.894625, 39.211994 ], [ -76.894764, 39.21201 ], [ -76.89484, 39.212007 ], [ -76.894892, 39.212012 ], [ -76.895955, 39.212182 ], [ -76.89617, 39.212205 ], [ -76.896316, 39.21222 ], [ -76.8966, 39.212258 ], [ -76.897452, 39.212375 ], [ -76.897899, 39.212437 ], [ -76.898713, 39.212553 ], [ -76.899126, 39.212613 ], [ -76.899187, 39.21262 ], [ -76.899389, 39.212647 ], [ -76.89953, 39.212657 ], [ -76.899674, 39.212657 ], [ -76.899827, 39.212654 ], [ -76.900038, 39.212631 ], [ -76.90014, 39.212621 ], [ -76.900318, 39.212585 ], [ -76.900476, 39.212552 ], [ -76.900648, 39.212499 ], [ -76.900798, 39.212436 ], [ -76.900851, 39.21253 ], [ -76.900929, 39.212646 ], [ -76.901074, 39.21279 ], [ -76.901155, 39.212851 ], [ -76.901237, 39.212898 ], [ -76.901249, 39.212905 ], [ -76.901384, 39.212977 ], [ -76.901541, 39.213065 ], [ -76.901658, 39.213121 ], [ -76.901808, 39.213184 ], [ -76.901969, 39.213258 ], [ -76.902077, 39.213314 ], [ -76.90219, 39.213375 ], [ -76.902316, 39.213465 ], [ -76.902565, 39.213312 ], [ -76.902677, 39.213232 ], [ -76.902803, 39.213137 ], [ -76.902886, 39.21306 ], [ -76.902909, 39.213016 ], [ -76.902951, 39.212942 ], [ -76.903024, 39.212786 ], [ -76.903055, 39.212696 ], [ -76.903061, 39.212645 ], [ -76.903068, 39.212598 ], [ -76.903091, 39.212165 ], [ -76.903099, 39.212055 ], [ -76.903107, 39.212008 ], [ -76.903228, 39.211646 ], [ -76.903244, 39.211538 ], [ -76.903242, 39.211456 ], [ -76.903229, 39.211375 ], [ -76.903191, 39.211275 ], [ -76.903144, 39.211185 ], [ -76.903084, 39.211112 ], [ -76.903005, 39.211041 ], [ -76.902916, 39.210988 ], [ -76.902783, 39.210941 ], [ -76.90269, 39.210912 ], [ -76.90259, 39.210896 ], [ -76.902396, 39.210883 ], [ -76.902075, 39.210869 ], [ -76.902071, 39.210695 ], [ -76.902055, 39.210531 ], [ -76.902007, 39.210358 ], [ -76.901953, 39.210195 ], [ -76.901717, 39.209768 ], [ -76.901501, 39.209416 ], [ -76.901234, 39.208926 ], [ -76.901121, 39.208712 ], [ -76.901065, 39.208614 ], [ -76.900697, 39.207977 ], [ -76.900332, 39.207367 ], [ -76.900234, 39.207232 ], [ -76.900142, 39.207118 ], [ -76.900028, 39.20701 ], [ -76.899978, 39.206966 ], [ -76.899714, 39.206725 ], [ -76.899528, 39.206566 ], [ -76.899391, 39.206462 ], [ -76.89924, 39.206364 ], [ -76.899128, 39.206299 ], [ -76.89905, 39.206257 ], [ -76.898874, 39.206185 ], [ -76.898665, 39.206107 ], [ -76.898584, 39.206086 ], [ -76.89851, 39.206067 ], [ -76.898342, 39.206035 ], [ -76.898156, 39.206002 ], [ -76.897948, 39.205973 ], [ -76.897569, 39.205956 ], [ -76.897424, 39.205959 ], [ -76.897227, 39.205975 ], [ -76.896923, 39.206019 ], [ -76.896695, 39.206066 ], [ -76.896481, 39.206125 ], [ -76.896265, 39.206192 ], [ -76.89597, 39.206292 ], [ -76.895836, 39.206039 ], [ -76.895801, 39.205996 ], [ -76.895766, 39.205972 ], [ -76.895689, 39.205924 ], [ -76.895634, 39.205885 ], [ -76.895593, 39.205814 ], [ -76.895588, 39.205723 ], [ -76.895599, 39.205553 ], [ -76.895621, 39.205461 ], [ -76.895639, 39.205388 ], [ -76.895691, 39.205194 ], [ -76.895725, 39.205034 ], [ -76.895714, 39.204871 ], [ -76.895714, 39.20476 ], [ -76.895725, 39.204667 ], [ -76.895843, 39.204346 ], [ -76.895874, 39.203669 ], [ -76.895938, 39.203426 ], [ -76.895888, 39.203284 ], [ -76.89585, 39.203195 ], [ -76.895838, 39.203143 ], [ -76.895855, 39.203071 ], [ -76.895884, 39.203018 ], [ -76.895906, 39.202972 ], [ -76.89591, 39.20295 ], [ -76.895889, 39.202927 ], [ -76.895855, 39.20291 ], [ -76.89583, 39.202891 ], [ -76.89583, 39.202841 ], [ -76.895843, 39.20274 ], [ -76.89586, 39.202707 ], [ -76.895923, 39.202668 ], [ -76.895999, 39.202593 ], [ -76.896058, 39.20253 ], [ -76.896159, 39.202507 ], [ -76.896235, 39.202485 ], [ -76.896286, 39.202449 ], [ -76.89634, 39.20239 ], [ -76.896419, 39.202108 ], [ -76.896462, 39.201942 ], [ -76.896529, 39.201734 ], [ -76.896576, 39.201433 ], [ -76.896602, 39.201292 ], [ -76.896602, 39.2012 ], [ -76.896582, 39.201139 ], [ -76.896525, 39.201079 ], [ -76.896459, 39.201041 ], [ -76.896442, 39.201031 ], [ -76.896288, 39.200979 ], [ -76.896195, 39.200946 ], [ -76.896128, 39.200894 ], [ -76.896066, 39.200822 ], [ -76.896019, 39.200729 ], [ -76.895989, 39.200561 ], [ -76.895989, 39.200388 ], [ -76.896028, 39.200199 ], [ -76.896054, 39.200111 ], [ -76.896126, 39.199975 ], [ -76.896194, 39.199806 ], [ -76.896226, 39.199694 ], [ -76.896246, 39.199625 ], [ -76.896324, 39.199292 ], [ -76.896347, 39.199196 ], [ -76.896358, 39.198866 ], [ -76.896345, 39.198746 ], [ -76.896304, 39.198646 ], [ -76.896227, 39.198549 ], [ -76.896123, 39.198433 ], [ -76.896036, 39.198316 ], [ -76.895958, 39.198183 ], [ -76.895897, 39.198015 ], [ -76.895874, 39.197834 ], [ -76.895864, 39.197424 ], [ -76.89589, 39.197332 ], [ -76.895993, 39.1972 ], [ -76.896163, 39.197042 ], [ -76.896345, 39.196925 ], [ -76.896445, 39.196858 ], [ -76.896502, 39.196802 ], [ -76.89654, 39.196729 ], [ -76.896562, 39.19666 ], [ -76.896555, 39.196508 ], [ -76.896565, 39.196334 ], [ -76.896584, 39.196244 ], [ -76.896613, 39.196181 ], [ -76.896651, 39.196138 ], [ -76.896725, 39.196096 ], [ -76.896815, 39.196063 ], [ -76.896946, 39.196028 ], [ -76.897147, 39.19598 ], [ -76.897369, 39.195924 ], [ -76.897617, 39.195856 ], [ -76.898003, 39.195703 ], [ -76.898294, 39.195931 ], [ -76.898441, 39.196067 ], [ -76.898556, 39.196184 ], [ -76.898653, 39.196291 ], [ -76.898742, 39.196405 ], [ -76.898847, 39.196556 ], [ -76.898944, 39.196771 ], [ -76.899154, 39.197061 ], [ -76.899268, 39.197187 ], [ -76.899373, 39.197269 ], [ -76.899486, 39.197351 ], [ -76.899603, 39.197398 ], [ -76.899678, 39.197428 ], [ -76.899814, 39.197487 ], [ -76.899958, 39.197515 ], [ -76.900109, 39.197548 ], [ -76.900273, 39.1976 ], [ -76.900418, 39.197653 ], [ -76.900532, 39.197716 ], [ -76.900722, 39.197827 ], [ -76.900859, 39.197939 ], [ -76.90096, 39.198068 ], [ -76.900974, 39.198129 ], [ -76.900952, 39.198185 ], [ -76.900895, 39.19824 ], [ -76.900823, 39.198268 ], [ -76.900644, 39.198301 ], [ -76.900479, 39.198335 ], [ -76.90035, 39.198351 ], [ -76.900272, 39.198396 ], [ -76.900264, 39.198485 ], [ -76.900278, 39.198574 ], [ -76.900343, 39.198674 ], [ -76.900463, 39.198786 ], [ -76.900565, 39.19888 ], [ -76.900665, 39.198958 ], [ -76.900844, 39.199053 ], [ -76.90103, 39.199137 ], [ -76.901173, 39.199165 ], [ -76.901396, 39.199172 ], [ -76.901632, 39.199206 ], [ -76.901778, 39.199254 ], [ -76.902106, 39.199298 ], [ -76.902193, 39.199322 ], [ -76.902306, 39.199394 ], [ -76.902388, 39.199482 ], [ -76.902475, 39.199606 ], [ -76.902613, 39.199789 ], [ -76.902762, 39.200013 ], [ -76.902857, 39.200139 ], [ -76.903168, 39.200556 ], [ -76.903409, 39.200847 ], [ -76.903515, 39.200988 ], [ -76.903613, 39.201123 ], [ -76.903733, 39.201275 ], [ -76.903899, 39.201522 ], [ -76.904019, 39.20161 ], [ -76.904309, 39.201686 ], [ -76.904536, 39.201727 ], [ -76.904656, 39.201774 ], [ -76.904784, 39.201857 ], [ -76.904886, 39.201999 ], [ -76.904997, 39.202163 ], [ -76.90507, 39.202281 ], [ -76.905108, 39.202373 ], [ -76.905101, 39.202462 ], [ -76.905057, 39.202553 ], [ -76.905022, 39.202652 ], [ -76.905012, 39.202727 ], [ -76.905021, 39.202813 ], [ -76.905066, 39.202907 ], [ -76.905152, 39.203009 ], [ -76.905272, 39.203115 ], [ -76.905406, 39.203219 ], [ -76.905638, 39.203368 ], [ -76.905807, 39.203494 ], [ -76.906088, 39.203729 ], [ -76.906362, 39.203883 ], [ -76.90665, 39.204006 ], [ -76.906942, 39.204118 ], [ -76.907264, 39.204211 ], [ -76.907937, 39.204368 ], [ -76.908157, 39.204438 ], [ -76.908294, 39.204512 ], [ -76.908361, 39.204589 ], [ -76.908404, 39.204651 ], [ -76.908423, 39.204745 ], [ -76.908417, 39.20485 ], [ -76.908382, 39.204961 ], [ -76.908308, 39.205132 ], [ -76.908113, 39.205509 ], [ -76.907906, 39.205961 ], [ -76.907645, 39.206534 ], [ -76.907572, 39.206742 ], [ -76.907441, 39.206928 ], [ -76.907345, 39.207035 ], [ -76.907239, 39.207101 ], [ -76.907097, 39.207181 ], [ -76.906947, 39.20723 ], [ -76.906746, 39.207307 ], [ -76.906503, 39.207391 ], [ -76.906356, 39.207455 ], [ -76.906257, 39.207532 ], [ -76.906129, 39.207651 ], [ -76.90597, 39.20783 ], [ -76.905873, 39.208013 ], [ -76.905839, 39.208158 ], [ -76.905838, 39.208428 ], [ -76.905881, 39.20858 ], [ -76.905889, 39.208666 ], [ -76.90588, 39.208804 ], [ -76.905855, 39.208903 ], [ -76.905804, 39.209015 ], [ -76.905804, 39.209154 ], [ -76.905829, 39.209246 ], [ -76.90588, 39.209345 ], [ -76.905939, 39.209404 ], [ -76.906048, 39.209476 ], [ -76.906193, 39.209577 ], [ -76.906377, 39.209729 ], [ -76.906468, 39.209817 ], [ -76.906511, 39.20986 ], [ -76.906547, 39.209896 ], [ -76.906709, 39.210069 ], [ -76.906769, 39.210134 ], [ -76.906799, 39.210194 ], [ -76.906824, 39.210294 ], [ -76.906828, 39.210462 ], [ -76.906807, 39.210633 ], [ -76.906761, 39.210837 ], [ -76.906703, 39.211111 ], [ -76.906621, 39.211247 ], [ -76.906587, 39.211329 ], [ -76.906539, 39.211451 ], [ -76.906493, 39.211652 ], [ -76.906455, 39.211936 ], [ -76.906379, 39.212177 ], [ -76.906328, 39.212262 ], [ -76.906267, 39.212315 ], [ -76.906198, 39.212368 ], [ -76.906116, 39.21241 ], [ -76.906048, 39.212455 ], [ -76.90597, 39.212524 ], [ -76.905881, 39.21262 ], [ -76.905779, 39.212701 ], [ -76.905676, 39.212738 ], [ -76.905616, 39.212768 ], [ -76.905481, 39.212812 ], [ -76.90537, 39.212842 ], [ -76.905279, 39.212879 ], [ -76.905235, 39.212922 ], [ -76.905207, 39.212997 ], [ -76.905195, 39.213049 ], [ -76.905195, 39.213117 ], [ -76.905201, 39.213206 ], [ -76.905213, 39.21328 ], [ -76.905212, 39.213367 ], [ -76.905185, 39.213422 ], [ -76.905133, 39.213475 ], [ -76.905065, 39.213527 ], [ -76.90501, 39.213592 ], [ -76.904978, 39.213685 ], [ -76.904926, 39.213753 ], [ -76.90486, 39.213833 ], [ -76.904828, 39.213901 ], [ -76.904789, 39.213993 ], [ -76.904773, 39.21408 ], [ -76.904777, 39.21416 ], [ -76.904816, 39.214252 ], [ -76.904864, 39.214324 ], [ -76.904999, 39.214429 ], [ -76.905042, 39.214478 ], [ -76.905094, 39.214543 ], [ -76.905145, 39.214614 ], [ -76.905225, 39.214688 ], [ -76.905276, 39.214728 ], [ -76.905363, 39.214778 ], [ -76.905471, 39.214816 ], [ -76.905607, 39.214842 ], [ -76.905769, 39.214859 ], [ -76.905921, 39.214888 ], [ -76.906052, 39.214954 ], [ -76.906143, 39.21502 ], [ -76.906247, 39.215094 ], [ -76.906355, 39.21518 ], [ -76.906436, 39.215264 ], [ -76.906745, 39.215595 ], [ -76.90698, 39.215932 ], [ -76.907049, 39.216049 ], [ -76.907097, 39.216116 ], [ -76.907204, 39.216182 ], [ -76.90729, 39.216207 ], [ -76.907419, 39.216216 ], [ -76.907542, 39.216241 ], [ -76.907665, 39.216278 ], [ -76.907729, 39.216337 ], [ -76.907788, 39.216403 ], [ -76.907852, 39.216499 ], [ -76.90787, 39.216624 ], [ -76.907892, 39.216819 ], [ -76.907924, 39.21694 ], [ -76.908004, 39.217032 ], [ -76.908089, 39.217123 ], [ -76.908212, 39.217202 ], [ -76.908325, 39.217252 ], [ -76.908485, 39.217278 ], [ -76.908624, 39.21729 ], [ -76.908812, 39.21739 ] ] ] } }, +{ "type": "Feature", "properties": { "STATEFP10": "24", "COUNTYFP10": "027", "TRACTCE10": "603004", "GEOID10": "24027603004", "NAME10": "6030.04", "NAMELSAD10": "Census Tract 6030.04", "MTFCC10": "G5020", "FUNCSTAT10": "S", "ALAND10": 44425097, "AWATER10": 99882, "INTPTLAT10": "+39.2817022", "INTPTLON10": "-076.9188315" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -76.985392, 39.266096 ], [ -76.985574, 39.266727 ], [ -76.985885, 39.267675 ], [ -76.985993, 39.268062 ], [ -76.986343, 39.26926 ], [ -76.986469, 39.269658 ], [ -76.986959, 39.27135 ], [ -76.987091, 39.271847 ], [ -76.987186, 39.272269 ], [ -76.987198, 39.272432 ], [ -76.987207, 39.272642 ], [ -76.987206, 39.273074 ], [ -76.987177, 39.273304 ], [ -76.987147, 39.273477 ], [ -76.98709, 39.273701 ], [ -76.98703, 39.273898 ], [ -76.986965, 39.274064 ], [ -76.986896, 39.274222 ], [ -76.986767, 39.274469 ], [ -76.986731, 39.274538 ], [ -76.986592, 39.274766 ], [ -76.986408, 39.275049 ], [ -76.986203, 39.275309 ], [ -76.986129, 39.275407 ], [ -76.986045, 39.275505 ], [ -76.985896, 39.275663 ], [ -76.985612, 39.275928 ], [ -76.985395, 39.276116 ], [ -76.985198, 39.276268 ], [ -76.985017, 39.276409 ], [ -76.984805, 39.276561 ], [ -76.983694, 39.277373 ], [ -76.983262, 39.277677 ], [ -76.982491, 39.27824 ], [ -76.981045, 39.279298 ], [ -76.980871, 39.279414 ], [ -76.980573, 39.279618 ], [ -76.980379, 39.279735 ], [ -76.980081, 39.279918 ], [ -76.979546, 39.280215 ], [ -76.979029, 39.280473 ], [ -76.978812, 39.280572 ], [ -76.978394, 39.280754 ], [ -76.977677, 39.281042 ], [ -76.977254, 39.281206 ], [ -76.976695, 39.281415 ], [ -76.97642, 39.281521 ], [ -76.975709, 39.281799 ], [ -76.975534, 39.281864 ], [ -76.974848, 39.282122 ], [ -76.974677, 39.282187 ], [ -76.973704, 39.282562 ], [ -76.973075, 39.282816 ], [ -76.972639, 39.282993 ], [ -76.97225, 39.283131 ], [ -76.971947, 39.283226 ], [ -76.971642, 39.283331 ], [ -76.971327, 39.283411 ], [ -76.970862, 39.283515 ], [ -76.970354, 39.283601 ], [ -76.969764, 39.283656 ], [ -76.969433, 39.283677 ], [ -76.969125, 39.283687 ], [ -76.968581, 39.283687 ], [ -76.968042, 39.283678 ], [ -76.967562, 39.283688 ], [ -76.967122, 39.283712 ], [ -76.966578, 39.283775 ], [ -76.96649, 39.283786 ], [ -76.966106, 39.283836 ], [ -76.965611, 39.283928 ], [ -76.96524, 39.28401 ], [ -76.964729, 39.284136 ], [ -76.964328, 39.284257 ], [ -76.96411, 39.284326 ], [ -76.963886, 39.284402 ], [ -76.96373, 39.284454 ], [ -76.963153, 39.284696 ], [ -76.962721, 39.284902 ], [ -76.962453, 39.285046 ], [ -76.961849, 39.285376 ], [ -76.961479, 39.285616 ], [ -76.961241, 39.285793 ], [ -76.96122, 39.285809 ], [ -76.96061, 39.286214 ], [ -76.959916, 39.286699 ], [ -76.959664, 39.28686 ], [ -76.9594, 39.287023 ], [ -76.959036, 39.287264 ], [ -76.958903, 39.287361 ], [ -76.956846, 39.28874 ], [ -76.956494, 39.288984 ], [ -76.95626, 39.289149 ], [ -76.956086, 39.289286 ], [ -76.956059, 39.289308 ], [ -76.955906, 39.28943 ], [ -76.955794, 39.289523 ], [ -76.955678, 39.289617 ], [ -76.955428, 39.289858 ], [ -76.955331, 39.28996 ], [ -76.955044, 39.290277 ], [ -76.954912, 39.290439 ], [ -76.954759, 39.290637 ], [ -76.954644, 39.290799 ], [ -76.954601, 39.290867 ], [ -76.954522, 39.290979 ], [ -76.95439, 39.291203 ], [ -76.954185, 39.291551 ], [ -76.953981, 39.292004 ], [ -76.953868, 39.292321 ], [ -76.953794, 39.292595 ], [ -76.953727, 39.292965 ], [ -76.953658, 39.293415 ], [ -76.953597, 39.293762 ], [ -76.953557, 39.294086 ], [ -76.953512, 39.294353 ], [ -76.953441, 39.294776 ], [ -76.953382, 39.295237 ], [ -76.953303, 39.295798 ], [ -76.953259, 39.29613 ], [ -76.953033, 39.297703 ], [ -76.952891, 39.298644 ], [ -76.95288, 39.298799 ], [ -76.952849, 39.299112 ], [ -76.952845, 39.299163 ], [ -76.952821, 39.299521 ], [ -76.95279, 39.300077 ], [ -76.952779, 39.300831 ], [ -76.95282, 39.301094 ], [ -76.952856, 39.301266 ], [ -76.952914, 39.301489 ], [ -76.953007, 39.30181 ], [ -76.953123, 39.302159 ], [ -76.953176, 39.302397 ], [ -76.953235, 39.302753 ], [ -76.953266, 39.30321 ], [ -76.953276, 39.303413 ], [ -76.953281, 39.303691 ], [ -76.953266, 39.304281 ], [ -76.953238, 39.304851 ], [ -76.95299, 39.306589 ], [ -76.952658, 39.308803 ], [ -76.952623, 39.309039 ], [ -76.952357, 39.309009 ], [ -76.952092, 39.30898 ], [ -76.951321, 39.308892 ], [ -76.95038, 39.308793 ], [ -76.949424, 39.308686 ], [ -76.948442, 39.308572 ], [ -76.946457, 39.30835 ], [ -76.945448, 39.308248 ], [ -76.944942, 39.308186 ], [ -76.94364, 39.308039 ], [ -76.942737, 39.307943 ], [ -76.942157, 39.307876 ], [ -76.941596, 39.307814 ], [ -76.941049, 39.307751 ], [ -76.940487, 39.307682 ], [ -76.939914, 39.307617 ], [ -76.939326, 39.30756 ], [ -76.93874, 39.307509 ], [ -76.93818, 39.307451 ], [ -76.937639, 39.307397 ], [ -76.937118, 39.307342 ], [ -76.936758, 39.3073 ], [ -76.936177, 39.307229 ], [ -76.934904, 39.307098 ], [ -76.933917, 39.306983 ], [ -76.93295, 39.306878 ], [ -76.931998, 39.306779 ], [ -76.931268, 39.306694 ], [ -76.930549, 39.306607 ], [ -76.930238, 39.306561 ], [ -76.929088, 39.30644 ], [ -76.928368, 39.306378 ], [ -76.927648, 39.306306 ], [ -76.927019, 39.306238 ], [ -76.926522, 39.306188 ], [ -76.926091, 39.306156 ], [ -76.924915, 39.30602 ], [ -76.924538, 39.305961 ], [ -76.923102, 39.305786 ], [ -76.922207, 39.305692 ], [ -76.921195, 39.305587 ], [ -76.92018, 39.305484 ], [ -76.91925, 39.305374 ], [ -76.918421, 39.305259 ], [ -76.91755, 39.305086 ], [ -76.916732, 39.304892 ], [ -76.916174, 39.304741 ], [ -76.916003, 39.304685 ], [ -76.915253, 39.304423 ], [ -76.914732, 39.304219 ], [ -76.914355, 39.304049 ], [ -76.913819, 39.303787 ], [ -76.913458, 39.303609 ], [ -76.912721, 39.303287 ], [ -76.912057, 39.303046 ], [ -76.911134, 39.302762 ], [ -76.910383, 39.302592 ], [ -76.909909, 39.302507 ], [ -76.909721, 39.302479 ], [ -76.909033, 39.302404 ], [ -76.908336, 39.302338 ], [ -76.907701, 39.302312 ], [ -76.907152, 39.302312 ], [ -76.906815, 39.302316 ], [ -76.906492, 39.30234 ], [ -76.905906, 39.302395 ], [ -76.90551, 39.302443 ], [ -76.905136, 39.302505 ], [ -76.904479, 39.302643 ], [ -76.904243, 39.302694 ], [ -76.903662, 39.30285 ], [ -76.903422, 39.302918 ], [ -76.903123, 39.303015 ], [ -76.902765, 39.303129 ], [ -76.901627, 39.303532 ], [ -76.900525, 39.303894 ], [ -76.899812, 39.304108 ], [ -76.899172, 39.304288 ], [ -76.89811, 39.304572 ], [ -76.896894, 39.304867 ], [ -76.895878, 39.305093 ], [ -76.895331, 39.305212 ], [ -76.894462, 39.305373 ], [ -76.893442, 39.305509 ], [ -76.892412, 39.305635 ], [ -76.891829, 39.305695 ], [ -76.891221, 39.305748 ], [ -76.890979, 39.305765 ], [ -76.8903, 39.305807 ], [ -76.88963, 39.30584 ], [ -76.889012, 39.305863 ], [ -76.888401, 39.305863 ], [ -76.887795, 39.30585 ], [ -76.887181, 39.30584 ], [ -76.886588, 39.305812 ], [ -76.88604, 39.30578 ], [ -76.885075, 39.305698 ], [ -76.884599, 39.305647 ], [ -76.884197, 39.305597 ], [ -76.883947, 39.305568 ], [ -76.883608, 39.305518 ], [ -76.882851, 39.305396 ], [ -76.882233, 39.305279 ], [ -76.881703, 39.305181 ], [ -76.881151, 39.305076 ], [ -76.88072, 39.304984 ], [ -76.880578, 39.304954 ], [ -76.880261, 39.304878 ], [ -76.879667, 39.304732 ], [ -76.878916, 39.304525 ], [ -76.878326, 39.304351 ], [ -76.877627, 39.304125 ], [ -76.876886, 39.303853 ], [ -76.876493, 39.303717 ], [ -76.876703, 39.303485 ], [ -76.876877, 39.303292 ], [ -76.876993, 39.303189 ], [ -76.877074, 39.303153 ], [ -76.877237, 39.303065 ], [ -76.877342, 39.302995 ], [ -76.877377, 39.302975 ], [ -76.877412, 39.302971 ], [ -76.877444, 39.302953 ], [ -76.877473, 39.302921 ], [ -76.877496, 39.302901 ], [ -76.877569, 39.3028 ], [ -76.877693, 39.302711 ], [ -76.877842, 39.302501 ], [ -76.877992, 39.302313 ], [ -76.878, 39.302105 ], [ -76.877768, 39.301814 ], [ -76.877798, 39.301377 ], [ -76.877597, 39.301217 ], [ -76.877409, 39.301012 ], [ -76.877474, 39.300815 ], [ -76.87747, 39.300602 ], [ -76.877619, 39.300517 ], [ -76.877999, 39.300256 ], [ -76.878723, 39.299756 ], [ -76.878869, 39.299664 ], [ -76.879091, 39.299501 ], [ -76.879562, 39.299174 ], [ -76.879848, 39.29899 ], [ -76.880121, 39.298805 ], [ -76.880867, 39.29833 ], [ -76.881123, 39.298204 ], [ -76.881371, 39.298108 ], [ -76.881785, 39.297911 ], [ -76.88216, 39.297661 ], [ -76.882446, 39.297462 ], [ -76.882608, 39.297264 ], [ -76.882747, 39.29707 ], [ -76.882924, 39.296817 ], [ -76.883223, 39.296424 ], [ -76.883456, 39.296145 ], [ -76.884069, 39.29544 ], [ -76.884199, 39.295296 ], [ -76.884379, 39.295033 ], [ -76.884513, 39.294809 ], [ -76.884609, 39.294636 ], [ -76.884767, 39.294293 ], [ -76.884903, 39.294 ], [ -76.884951, 39.293858 ], [ -76.885004, 39.293736 ], [ -76.885056, 39.293646 ], [ -76.885133, 39.293576 ], [ -76.885241, 39.293487 ], [ -76.885588, 39.29327 ], [ -76.885804, 39.293124 ], [ -76.885965, 39.292988 ], [ -76.886129, 39.292856 ], [ -76.886311, 39.292658 ], [ -76.886589, 39.292308 ], [ -76.886718, 39.292148 ], [ -76.886833, 39.292029 ], [ -76.887026, 39.291856 ], [ -76.889806, 39.290103 ], [ -76.889975, 39.289948 ], [ -76.890823, 39.289173 ], [ -76.89448, 39.285837 ], [ -76.89437, 39.285828 ], [ -76.894114, 39.285804 ], [ -76.892779, 39.285684 ], [ -76.891613, 39.285534 ], [ -76.890913, 39.285453 ], [ -76.890173, 39.285375 ], [ -76.889832, 39.285337 ], [ -76.88966, 39.285318 ], [ -76.889396, 39.28528 ], [ -76.889218, 39.28524 ], [ -76.889272, 39.285147 ], [ -76.889353, 39.284891 ], [ -76.8894, 39.284507 ], [ -76.88942, 39.28405 ], [ -76.889408, 39.283789 ], [ -76.889339, 39.283318 ], [ -76.889177, 39.282592 ], [ -76.889016, 39.281823 ], [ -76.88886, 39.281024 ], [ -76.888685, 39.280251 ], [ -76.888519, 39.279431 ], [ -76.888344, 39.278588 ], [ -76.888183, 39.277746 ], [ -76.888106, 39.27724 ], [ -76.888106, 39.276999 ], [ -76.888135, 39.276203 ], [ -76.888141, 39.275972 ], [ -76.888149, 39.275634 ], [ -76.888143, 39.275178 ], [ -76.888144, 39.274975 ], [ -76.888414, 39.274103 ], [ -76.888499, 39.273796 ], [ -76.888659, 39.273323 ], [ -76.888832, 39.272795 ], [ -76.889038, 39.272185 ], [ -76.889234, 39.271588 ], [ -76.889323, 39.271261 ], [ -76.889491, 39.270729 ], [ -76.889628, 39.270361 ], [ -76.889705, 39.270143 ], [ -76.889925, 39.269549 ], [ -76.890003, 39.269336 ], [ -76.890127, 39.268997 ], [ -76.890556, 39.26778 ], [ -76.890775, 39.267142 ], [ -76.890978, 39.266501 ], [ -76.891191, 39.265868 ], [ -76.891279, 39.2656 ], [ -76.891303, 39.265528 ], [ -76.891813, 39.264007 ], [ -76.891997, 39.263486 ], [ -76.892106, 39.263171 ], [ -76.892107, 39.263171 ], [ -76.89222, 39.26283 ], [ -76.892336, 39.262507 ], [ -76.89255, 39.261842 ], [ -76.892659, 39.261512 ], [ -76.892788, 39.261153 ], [ -76.892887, 39.260737 ], [ -76.892961, 39.260096 ], [ -76.892998, 39.259755 ], [ -76.893033, 39.259451 ], [ -76.893054, 39.259291 ], [ -76.8931, 39.258765 ], [ -76.893163, 39.258261 ], [ -76.893209, 39.257858 ], [ -76.893225, 39.257766 ], [ -76.893237, 39.257716 ], [ -76.893276, 39.257485 ], [ -76.893322, 39.257178 ], [ -76.893349, 39.256858 ], [ -76.893383, 39.256556 ], [ -76.89343, 39.256247 ], [ -76.893473, 39.255937 ], [ -76.893523, 39.25562 ], [ -76.89355, 39.255294 ], [ -76.893579, 39.254976 ], [ -76.893596, 39.254762 ], [ -76.893722, 39.253641 ], [ -76.893811, 39.252927 ], [ -76.893979, 39.251355 ], [ -76.891834, 39.251539 ], [ -76.891167, 39.250894 ], [ -76.890404, 39.250156 ], [ -76.890386, 39.249972 ], [ -76.890066, 39.24679 ], [ -76.889927, 39.245411 ], [ -76.889852, 39.244662 ], [ -76.889796, 39.244105 ], [ -76.889757, 39.243938 ], [ -76.889674, 39.243623 ], [ -76.889512, 39.243139 ], [ -76.889019, 39.241664 ], [ -76.888849, 39.241105 ], [ -76.888805, 39.240963 ], [ -76.888689, 39.240617 ], [ -76.888569, 39.24027 ], [ -76.888452, 39.239925 ], [ -76.888388, 39.239729 ], [ -76.888328, 39.239546 ], [ -76.888283, 39.239401 ], [ -76.888091, 39.238782 ], [ -76.887906, 39.238185 ], [ -76.887781, 39.237825 ], [ -76.887565, 39.237225 ], [ -76.887473, 39.236965 ], [ -76.887364, 39.236659 ], [ -76.887246, 39.236325 ], [ -76.887089, 39.235956 ], [ -76.887038, 39.23583 ], [ -76.88701, 39.235716 ], [ -76.886987, 39.235552 ], [ -76.886964, 39.235238 ], [ -76.886926, 39.235007 ], [ -76.887931, 39.234859 ], [ -76.888182, 39.234822 ], [ -76.890949, 39.234416 ], [ -76.891674, 39.234305 ], [ -76.892438, 39.234191 ], [ -76.89318, 39.234093 ], [ -76.893433, 39.234059 ], [ -76.894039, 39.234002 ], [ -76.894297, 39.233978 ], [ -76.894645, 39.233948 ], [ -76.895342, 39.233878 ], [ -76.896697, 39.233705 ], [ -76.897353, 39.233637 ], [ -76.897826, 39.233589 ], [ -76.899037, 39.233428 ], [ -76.899438, 39.23529 ], [ -76.899449, 39.235341 ], [ -76.899644, 39.235734 ], [ -76.899764, 39.235936 ], [ -76.899948, 39.236167 ], [ -76.900152, 39.236369 ], [ -76.900392, 39.236581 ], [ -76.900714, 39.23684 ], [ -76.900769, 39.236883 ], [ -76.900902, 39.236986 ], [ -76.90115, 39.23716 ], [ -76.90138, 39.237288 ], [ -76.901612, 39.2374 ], [ -76.901908, 39.237528 ], [ -76.90235, 39.237686 ], [ -76.9028, 39.237835 ], [ -76.902959, 39.237885 ], [ -76.903132, 39.237959 ], [ -76.903373, 39.238083 ], [ -76.90365, 39.238228 ], [ -76.903943, 39.238418 ], [ -76.904241, 39.23861 ], [ -76.905193, 39.239251 ], [ -76.905931, 39.239781 ], [ -76.906054, 39.239873 ], [ -76.906152, 39.239958 ], [ -76.906233, 39.240043 ], [ -76.906324, 39.240156 ], [ -76.906429, 39.240305 ], [ -76.906615, 39.240694 ], [ -76.90683, 39.2411 ], [ -76.906907, 39.241217 ], [ -76.907005, 39.241343 ], [ -76.907559, 39.242059 ], [ -76.908102, 39.242784 ], [ -76.908372, 39.243127 ], [ -76.908463, 39.243226 ], [ -76.908572, 39.243332 ], [ -76.908694, 39.243427 ], [ -76.908879, 39.243551 ], [ -76.908983, 39.243615 ], [ -76.909165, 39.243697 ], [ -76.909799, 39.244022 ], [ -76.910104, 39.244174 ], [ -76.910331, 39.24427 ], [ -76.910561, 39.244344 ], [ -76.910906, 39.244447 ], [ -76.911634, 39.244638 ], [ -76.913116, 39.244986 ], [ -76.913462, 39.245071 ], [ -76.913708, 39.245127 ], [ -76.913828, 39.245159 ], [ -76.914078, 39.245237 ], [ -76.91461, 39.245439 ], [ -76.915406, 39.245786 ], [ -76.916072, 39.246059 ], [ -76.916375, 39.246152 ], [ -76.91653, 39.246193 ], [ -76.916691, 39.246222 ], [ -76.917192, 39.246281 ], [ -76.917862, 39.246332 ], [ -76.919019, 39.246448 ], [ -76.919412, 39.246494 ], [ -76.919684, 39.246547 ], [ -76.919921, 39.246602 ], [ -76.920292, 39.246714 ], [ -76.920775, 39.246893 ], [ -76.92099, 39.246976 ], [ -76.921233, 39.247073 ], [ -76.92134, 39.247109 ], [ -76.921448, 39.247139 ], [ -76.921774, 39.247201 ], [ -76.922359, 39.247302 ], [ -76.922451, 39.247318 ], [ -76.922594, 39.247342 ], [ -76.923406, 39.247497 ], [ -76.924245, 39.247653 ], [ -76.925002, 39.24784 ], [ -76.925782, 39.248059 ], [ -76.926757, 39.248334 ], [ -76.927755, 39.248612 ], [ -76.92878, 39.248881 ], [ -76.929734, 39.24913 ], [ -76.930729, 39.249397 ], [ -76.931747, 39.249651 ], [ -76.931976, 39.249713 ], [ -76.933213, 39.250062 ], [ -76.934104, 39.250302 ], [ -76.934586, 39.250433 ], [ -76.93529, 39.250605 ], [ -76.935398, 39.250633 ], [ -76.936259, 39.250834 ], [ -76.937088, 39.251041 ], [ -76.938695, 39.25144 ], [ -76.938918, 39.251502 ], [ -76.93918, 39.251584 ], [ -76.939304, 39.251623 ], [ -76.939612, 39.251754 ], [ -76.940047, 39.251958 ], [ -76.941237, 39.252488 ], [ -76.942443, 39.253098 ], [ -76.943679, 39.253689 ], [ -76.944102, 39.253898 ], [ -76.944307, 39.254015 ], [ -76.9447, 39.254276 ], [ -76.945218, 39.254695 ], [ -76.945386, 39.254835 ], [ -76.945657, 39.255021 ], [ -76.945982, 39.255212 ], [ -76.946762, 39.25571 ], [ -76.947052, 39.255886 ], [ -76.94731, 39.256038 ], [ -76.947555, 39.256183 ], [ -76.947887, 39.256387 ], [ -76.948329, 39.256657 ], [ -76.948429, 39.256712 ], [ -76.948557, 39.256771 ], [ -76.948723, 39.25685 ], [ -76.948857, 39.256899 ], [ -76.948946, 39.256924 ], [ -76.949026, 39.256936 ], [ -76.949732, 39.256974 ], [ -76.950565, 39.256988 ], [ -76.951095, 39.256991 ], [ -76.951459, 39.256991 ], [ -76.951965, 39.256965 ], [ -76.952571, 39.256939 ], [ -76.953393, 39.256911 ], [ -76.954632, 39.256849 ], [ -76.955173, 39.256839 ], [ -76.955459, 39.256839 ], [ -76.955779, 39.256857 ], [ -76.956037, 39.256865 ], [ -76.956304, 39.256892 ], [ -76.956481, 39.25691 ], [ -76.956946, 39.256947 ], [ -76.957454, 39.256977 ], [ -76.957718, 39.25698 ], [ -76.958431, 39.256898 ], [ -76.959318, 39.256722 ], [ -76.959602, 39.256667 ], [ -76.95989, 39.256622 ], [ -76.960292, 39.25657 ], [ -76.96046, 39.256547 ], [ -76.960837, 39.256535 ], [ -76.96116, 39.256533 ], [ -76.961399, 39.256557 ], [ -76.961704, 39.256608 ], [ -76.961907, 39.256638 ], [ -76.96213, 39.256667 ], [ -76.963746, 39.256903 ], [ -76.965388, 39.257148 ], [ -76.965942, 39.257238 ], [ -76.966185, 39.257286 ], [ -76.966705, 39.257391 ], [ -76.967435, 39.257573 ], [ -76.96782, 39.257679 ], [ -76.968144, 39.257804 ], [ -76.968163, 39.257814 ], [ -76.968466, 39.257975 ], [ -76.96877, 39.258179 ], [ -76.969025, 39.258339 ], [ -76.969626, 39.258836 ], [ -76.970231, 39.25936 ], [ -76.970574, 39.259651 ], [ -76.970849, 39.259884 ], [ -76.971481, 39.260408 ], [ -76.972273, 39.261131 ], [ -76.973038, 39.261761 ], [ -76.973295, 39.261965 ], [ -76.973561, 39.262169 ], [ -76.973806, 39.262367 ], [ -76.974116, 39.262596 ], [ -76.974275, 39.2627 ], [ -76.974495, 39.262827 ], [ -76.974821, 39.262973 ], [ -76.975083, 39.263075 ], [ -76.975337, 39.263165 ], [ -76.975892, 39.263344 ], [ -76.977919, 39.263991 ], [ -76.979535, 39.264537 ], [ -76.979922, 39.264594 ], [ -76.980056, 39.26461 ], [ -76.980141, 39.264619 ], [ -76.980213, 39.264624 ], [ -76.980279, 39.264627 ], [ -76.980802, 39.264636 ], [ -76.98088, 39.264634 ], [ -76.981407, 39.264569 ], [ -76.981977, 39.264484 ], [ -76.982585, 39.26438 ], [ -76.983126, 39.264297 ], [ -76.983443, 39.26426 ], [ -76.983707, 39.264231 ], [ -76.984273, 39.264176 ], [ -76.984827, 39.26414 ], [ -76.985392, 39.266096 ] ] ] } }, +{ "type": "Feature", "properties": { "STATEFP10": "24", "COUNTYFP10": "027", "TRACTCE10": "605104", "GEOID10": "24027605104", "NAME10": "6051.04", "NAMELSAD10": "Census Tract 6051.04", "MTFCC10": "G5020", "FUNCSTAT10": "S", "ALAND10": 39969526, "AWATER10": 1553493, "INTPTLAT10": "+39.2369323", "INTPTLON10": "-076.9735549" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -76.979794, 39.23322 ], [ -76.980182, 39.233564 ], [ -76.980281, 39.233645 ], [ -76.980433, 39.23377 ], [ -76.981287, 39.234471 ], [ -76.981502, 39.234651 ], [ -76.981607, 39.234738 ], [ -76.9823, 39.235332 ], [ -76.983034, 39.235973 ], [ -76.983426, 39.236282 ], [ -76.983974, 39.236649 ], [ -76.98452, 39.237022 ], [ -76.984631, 39.237097 ], [ -76.984947, 39.237313 ], [ -76.985231, 39.237509 ], [ -76.985652, 39.237834 ], [ -76.985736, 39.237916 ], [ -76.985891, 39.238088 ], [ -76.986289, 39.238649 ], [ -76.986781, 39.239354 ], [ -76.987624, 39.238757 ], [ -76.988555, 39.238125 ], [ -76.988705, 39.238015 ], [ -76.988923, 39.237852 ], [ -76.989062, 39.237687 ], [ -76.989122, 39.237613 ], [ -76.989194, 39.237473 ], [ -76.989287, 39.23721 ], [ -76.989423, 39.236725 ], [ -76.989511, 39.236542 ], [ -76.989527, 39.236517 ], [ -76.989619, 39.236377 ], [ -76.989763, 39.236181 ], [ -76.9901, 39.235847 ], [ -76.991289, 39.234987 ], [ -76.991698, 39.234704 ], [ -76.991877, 39.234565 ], [ -76.99205, 39.234418 ], [ -76.992194, 39.234281 ], [ -76.992305, 39.234166 ], [ -76.992374, 39.234065 ], [ -76.992456, 39.233925 ], [ -76.992515, 39.23382 ], [ -76.992951, 39.232906 ], [ -76.992994, 39.232814 ], [ -76.993281, 39.232204 ], [ -76.993321, 39.232118 ], [ -76.993669, 39.23141 ], [ -76.993795, 39.231154 ], [ -76.994248, 39.23029 ], [ -76.994391, 39.230049 ], [ -76.994423, 39.229996 ], [ -76.994803, 39.229358 ], [ -76.995346, 39.228514 ], [ -76.995659, 39.228027 ], [ -76.995691, 39.227988 ], [ -76.995828, 39.227816 ], [ -76.995962, 39.22767 ], [ -76.996184, 39.227468 ], [ -76.996295, 39.227383 ], [ -76.996485, 39.227257 ], [ -76.996733, 39.227111 ], [ -76.996869, 39.22703 ], [ -76.997153, 39.226867 ], [ -76.997448, 39.226687 ], [ -76.997958, 39.226382 ], [ -76.998436, 39.226099 ], [ -76.998925, 39.225806 ], [ -76.999375, 39.225522 ], [ -76.999715, 39.225313 ], [ -76.999861, 39.225223 ], [ -77.00018, 39.225047 ], [ -77.000434, 39.22491 ], [ -77.000673, 39.224779 ], [ -77.000918, 39.224659 ], [ -77.001036, 39.224609 ], [ -77.001232, 39.22453 ], [ -77.00149, 39.224445 ], [ -77.001739, 39.224362 ], [ -77.002104, 39.224236 ], [ -77.002254, 39.22418 ], [ -77.002364, 39.224136 ], [ -77.002449, 39.2241 ], [ -77.002523, 39.224061 ], [ -77.002597, 39.224013 ], [ -77.002779, 39.223858 ], [ -77.00294, 39.223698 ], [ -77.003058, 39.223579 ], [ -77.003339, 39.223248 ], [ -77.003629, 39.222906 ], [ -77.003694, 39.222836 ], [ -77.00391, 39.222629 ], [ -77.003973, 39.222571 ], [ -77.00403, 39.222506 ], [ -77.004143, 39.22239 ], [ -77.004206, 39.222313 ], [ -77.004278, 39.222218 ], [ -77.004418, 39.22199 ], [ -77.004475, 39.221869 ], [ -77.00459, 39.221576 ], [ -77.004644, 39.221404 ], [ -77.004694, 39.221223 ], [ -77.004765, 39.221033 ], [ -77.004835, 39.220864 ], [ -77.005021, 39.220484 ], [ -77.005089, 39.220349 ], [ -77.005189, 39.220213 ], [ -77.005331, 39.220055 ], [ -77.005411, 39.219982 ], [ -77.005472, 39.219917 ], [ -77.005518, 39.219864 ], [ -77.005584, 39.219765 ], [ -77.005699, 39.219537 ], [ -77.005838, 39.219223 ], [ -77.005937, 39.218996 ], [ -77.005964, 39.218941 ], [ -77.006029, 39.218807 ], [ -77.006128, 39.218633 ], [ -77.00624, 39.218474 ], [ -77.006473, 39.218285 ], [ -77.006387, 39.218016 ], [ -77.006549, 39.216358 ], [ -77.006956, 39.215363 ], [ -77.008294, 39.212648 ], [ -77.009865, 39.210296 ], [ -77.011448, 39.207539 ], [ -77.01757, 39.209751 ], [ -77.019293, 39.21292 ], [ -77.022292, 39.213991 ], [ -77.032325, 39.220317 ], [ -77.032074, 39.224405 ], [ -77.034516, 39.226144 ], [ -77.03588, 39.229674 ], [ -77.037497, 39.230801 ], [ -77.038488, 39.231446 ], [ -77.041001, 39.234191 ], [ -77.040354, 39.234684 ], [ -77.0366, 39.237904 ], [ -77.036501, 39.237805 ], [ -77.035825, 39.237862 ], [ -77.035144, 39.23792 ], [ -77.034741, 39.238069 ], [ -77.033827, 39.238386 ], [ -77.033105, 39.23864 ], [ -77.03288, 39.238729 ], [ -77.032407, 39.238916 ], [ -77.030909, 39.239625 ], [ -77.030036, 39.23999 ], [ -77.029793, 39.240105 ], [ -77.029489, 39.240276 ], [ -77.028822, 39.240923 ], [ -77.028556, 39.241209 ], [ -77.027843, 39.241981 ], [ -77.027573, 39.242311 ], [ -77.027393, 39.242597 ], [ -77.027288, 39.242803 ], [ -77.027234, 39.24294 ], [ -77.027221, 39.242974 ], [ -77.027192, 39.243056 ], [ -77.02706, 39.243427 ], [ -77.026903, 39.24383 ], [ -77.026825, 39.243988 ], [ -77.026723, 39.244142 ], [ -77.026495, 39.244399 ], [ -77.026125, 39.244757 ], [ -77.025833, 39.245037 ], [ -77.025642, 39.245182 ], [ -77.025465, 39.24531 ], [ -77.025249, 39.245435 ], [ -77.024901, 39.245614 ], [ -77.02449, 39.245847 ], [ -77.024363, 39.245937 ], [ -77.024289, 39.245989 ], [ -77.024177, 39.246075 ], [ -77.023938, 39.246258 ], [ -77.023521, 39.24665 ], [ -77.023318, 39.246844 ], [ -77.022591, 39.247495 ], [ -77.02203, 39.248019 ], [ -77.02183, 39.248302 ], [ -77.021701, 39.248507 ], [ -77.021475, 39.24897 ], [ -77.021373, 39.249205 ], [ -77.02103, 39.249998 ], [ -77.020928, 39.250263 ], [ -77.02063, 39.251038 ], [ -77.020487, 39.251406 ], [ -77.02022, 39.252093 ], [ -77.020143, 39.252287 ], [ -77.019837, 39.253063 ], [ -77.019774, 39.253201 ], [ -77.019707, 39.253315 ], [ -77.019597, 39.253443 ], [ -77.019359, 39.253678 ], [ -77.019139, 39.253858 ], [ -77.018047, 39.254615 ], [ -77.01734, 39.255121 ], [ -77.017238, 39.255187 ], [ -77.017012, 39.255314 ], [ -77.01677, 39.255326 ], [ -77.016594, 39.255352 ], [ -77.016328, 39.255397 ], [ -77.016046, 39.255463 ], [ -77.015597, 39.255608 ], [ -77.015187, 39.255725 ], [ -77.014912, 39.255802 ], [ -77.014738, 39.255859 ], [ -77.014349, 39.256007 ], [ -77.013983, 39.256212 ], [ -77.01295, 39.256859 ], [ -77.012806, 39.256957 ], [ -77.012545, 39.257187 ], [ -77.012425, 39.257312 ], [ -77.01202, 39.257875 ], [ -77.011901, 39.258043 ], [ -77.011722, 39.258256 ], [ -77.011558, 39.258395 ], [ -77.01145, 39.258469 ], [ -77.011306, 39.258562 ], [ -77.0112, 39.258649 ], [ -77.010921, 39.258916 ], [ -77.010651, 39.259186 ], [ -77.010245, 39.259612 ], [ -77.01007, 39.259767 ], [ -77.009985, 39.25983 ], [ -77.009949, 39.25985 ], [ -77.009898, 39.259877 ], [ -77.009799, 39.259912 ], [ -77.009694, 39.259939 ], [ -77.009452, 39.25998 ], [ -77.008872, 39.260065 ], [ -77.008614, 39.260118 ], [ -77.008223, 39.260186 ], [ -77.007454, 39.26031 ], [ -77.006723, 39.260413 ], [ -77.006462, 39.260464 ], [ -77.006295, 39.260504 ], [ -77.006023, 39.260588 ], [ -77.005347, 39.260815 ], [ -77.004415, 39.261149 ], [ -77.003569, 39.261395 ], [ -77.003445, 39.261435 ], [ -77.002678, 39.261684 ], [ -77.001754, 39.261959 ], [ -77.001587, 39.262013 ], [ -77.00067, 39.262312 ], [ -77.000155, 39.262467 ], [ -76.999874, 39.262555 ], [ -76.999769, 39.26258 ], [ -76.999705, 39.262595 ], [ -76.999579, 39.262615 ], [ -76.999331, 39.262659 ], [ -76.999049, 39.262718 ], [ -76.998821, 39.262785 ], [ -76.998579, 39.262872 ], [ -76.998503, 39.262906 ], [ -76.997968, 39.263148 ], [ -76.997838, 39.263193 ], [ -76.997659, 39.263247 ], [ -76.997398, 39.263305 ], [ -76.997118, 39.263363 ], [ -76.996945, 39.263399 ], [ -76.994915, 39.263809 ], [ -76.993733, 39.264057 ], [ -76.993514, 39.264104 ], [ -76.993363, 39.264127 ], [ -76.993105, 39.264146 ], [ -76.992966, 39.264146 ], [ -76.992819, 39.26413 ], [ -76.992399, 39.264057 ], [ -76.991316, 39.2639 ], [ -76.990711, 39.263801 ], [ -76.989945, 39.263637 ], [ -76.989779, 39.263616 ], [ -76.989611, 39.263602 ], [ -76.989408, 39.263598 ], [ -76.989163, 39.263597 ], [ -76.988831, 39.263608 ], [ -76.988226, 39.263668 ], [ -76.98798, 39.263698 ], [ -76.987908, 39.263707 ], [ -76.987171, 39.263814 ], [ -76.987093, 39.263826 ], [ -76.986191, 39.263967 ], [ -76.985846, 39.264026 ], [ -76.985659, 39.26405 ], [ -76.984827, 39.26414 ], [ -76.984273, 39.264176 ], [ -76.983707, 39.264231 ], [ -76.983443, 39.26426 ], [ -76.983126, 39.264297 ], [ -76.982585, 39.26438 ], [ -76.981977, 39.264484 ], [ -76.981407, 39.264569 ], [ -76.98088, 39.264634 ], [ -76.980802, 39.264636 ], [ -76.980279, 39.264627 ], [ -76.980213, 39.264624 ], [ -76.980141, 39.264619 ], [ -76.980056, 39.26461 ], [ -76.979922, 39.264594 ], [ -76.979535, 39.264537 ], [ -76.977919, 39.263991 ], [ -76.975892, 39.263344 ], [ -76.975337, 39.263165 ], [ -76.975083, 39.263075 ], [ -76.974821, 39.262973 ], [ -76.974495, 39.262827 ], [ -76.974275, 39.2627 ], [ -76.974116, 39.262596 ], [ -76.973806, 39.262367 ], [ -76.973561, 39.262169 ], [ -76.973295, 39.261965 ], [ -76.973038, 39.261761 ], [ -76.972273, 39.261131 ], [ -76.971481, 39.260408 ], [ -76.970849, 39.259884 ], [ -76.970574, 39.259651 ], [ -76.970231, 39.25936 ], [ -76.969626, 39.258836 ], [ -76.969025, 39.258339 ], [ -76.96877, 39.258179 ], [ -76.968466, 39.257975 ], [ -76.968163, 39.257814 ], [ -76.968144, 39.257804 ], [ -76.96782, 39.257679 ], [ -76.967435, 39.257573 ], [ -76.966705, 39.257391 ], [ -76.966185, 39.257286 ], [ -76.965942, 39.257238 ], [ -76.965388, 39.257148 ], [ -76.963746, 39.256903 ], [ -76.96213, 39.256667 ], [ -76.961907, 39.256638 ], [ -76.961704, 39.256608 ], [ -76.961399, 39.256557 ], [ -76.96116, 39.256533 ], [ -76.960837, 39.256535 ], [ -76.96046, 39.256547 ], [ -76.960292, 39.25657 ], [ -76.95989, 39.256622 ], [ -76.959602, 39.256667 ], [ -76.959318, 39.256722 ], [ -76.958431, 39.256898 ], [ -76.957718, 39.25698 ], [ -76.957454, 39.256977 ], [ -76.956946, 39.256947 ], [ -76.956481, 39.25691 ], [ -76.956304, 39.256892 ], [ -76.956037, 39.256865 ], [ -76.955779, 39.256857 ], [ -76.955459, 39.256839 ], [ -76.955173, 39.256839 ], [ -76.954632, 39.256849 ], [ -76.953393, 39.256911 ], [ -76.952571, 39.256939 ], [ -76.951965, 39.256965 ], [ -76.951459, 39.256991 ], [ -76.951095, 39.256991 ], [ -76.950565, 39.256988 ], [ -76.949732, 39.256974 ], [ -76.949026, 39.256936 ], [ -76.948946, 39.256924 ], [ -76.948857, 39.256899 ], [ -76.948723, 39.25685 ], [ -76.948557, 39.256771 ], [ -76.948429, 39.256712 ], [ -76.948329, 39.256657 ], [ -76.947887, 39.256387 ], [ -76.947555, 39.256183 ], [ -76.94731, 39.256038 ], [ -76.947052, 39.255886 ], [ -76.946762, 39.25571 ], [ -76.945982, 39.255212 ], [ -76.945657, 39.255021 ], [ -76.945386, 39.254835 ], [ -76.945218, 39.254695 ], [ -76.9447, 39.254276 ], [ -76.944307, 39.254015 ], [ -76.944102, 39.253898 ], [ -76.943679, 39.253689 ], [ -76.942443, 39.253098 ], [ -76.941237, 39.252488 ], [ -76.940047, 39.251958 ], [ -76.939612, 39.251754 ], [ -76.939304, 39.251623 ], [ -76.93918, 39.251584 ], [ -76.938918, 39.251502 ], [ -76.938695, 39.25144 ], [ -76.937088, 39.251041 ], [ -76.936259, 39.250834 ], [ -76.935398, 39.250633 ], [ -76.93529, 39.250605 ], [ -76.934586, 39.250433 ], [ -76.934104, 39.250302 ], [ -76.933213, 39.250062 ], [ -76.931976, 39.249713 ], [ -76.931747, 39.249651 ], [ -76.930729, 39.249397 ], [ -76.929734, 39.24913 ], [ -76.92878, 39.248881 ], [ -76.927755, 39.248612 ], [ -76.926757, 39.248334 ], [ -76.925782, 39.248059 ], [ -76.925002, 39.24784 ], [ -76.924245, 39.247653 ], [ -76.923406, 39.247497 ], [ -76.922594, 39.247342 ], [ -76.922451, 39.247318 ], [ -76.922359, 39.247302 ], [ -76.921774, 39.247201 ], [ -76.921448, 39.247139 ], [ -76.92134, 39.247109 ], [ -76.921233, 39.247073 ], [ -76.92099, 39.246976 ], [ -76.920775, 39.246893 ], [ -76.920292, 39.246714 ], [ -76.919921, 39.246602 ], [ -76.919684, 39.246547 ], [ -76.919412, 39.246494 ], [ -76.919019, 39.246448 ], [ -76.917862, 39.246332 ], [ -76.917192, 39.246281 ], [ -76.916691, 39.246222 ], [ -76.91653, 39.246193 ], [ -76.916375, 39.246152 ], [ -76.916072, 39.246059 ], [ -76.915406, 39.245786 ], [ -76.91461, 39.245439 ], [ -76.914078, 39.245237 ], [ -76.913828, 39.245159 ], [ -76.913708, 39.245127 ], [ -76.913462, 39.245071 ], [ -76.913116, 39.244986 ], [ -76.911634, 39.244638 ], [ -76.910906, 39.244447 ], [ -76.910561, 39.244344 ], [ -76.910331, 39.24427 ], [ -76.910104, 39.244174 ], [ -76.909799, 39.244022 ], [ -76.909165, 39.243697 ], [ -76.908983, 39.243615 ], [ -76.908879, 39.243551 ], [ -76.908694, 39.243427 ], [ -76.908572, 39.243332 ], [ -76.908463, 39.243226 ], [ -76.908372, 39.243127 ], [ -76.908102, 39.242784 ], [ -76.907559, 39.242059 ], [ -76.907005, 39.241343 ], [ -76.906907, 39.241217 ], [ -76.90683, 39.2411 ], [ -76.906615, 39.240694 ], [ -76.906429, 39.240305 ], [ -76.906324, 39.240156 ], [ -76.906233, 39.240043 ], [ -76.906152, 39.239958 ], [ -76.906054, 39.239873 ], [ -76.905931, 39.239781 ], [ -76.905193, 39.239251 ], [ -76.904241, 39.23861 ], [ -76.903943, 39.238418 ], [ -76.90365, 39.238228 ], [ -76.903373, 39.238083 ], [ -76.903132, 39.237959 ], [ -76.902959, 39.237885 ], [ -76.9028, 39.237835 ], [ -76.90235, 39.237686 ], [ -76.901908, 39.237528 ], [ -76.901612, 39.2374 ], [ -76.90138, 39.237288 ], [ -76.90115, 39.23716 ], [ -76.900902, 39.236986 ], [ -76.900769, 39.236883 ], [ -76.900714, 39.23684 ], [ -76.900392, 39.236581 ], [ -76.900152, 39.236369 ], [ -76.899948, 39.236167 ], [ -76.899764, 39.235936 ], [ -76.899644, 39.235734 ], [ -76.899449, 39.235341 ], [ -76.899438, 39.23529 ], [ -76.899037, 39.233428 ], [ -76.899982, 39.233296 ], [ -76.900751, 39.233187 ], [ -76.900781, 39.233182 ], [ -76.901778, 39.233021 ], [ -76.902559, 39.232909 ], [ -76.902909, 39.23286 ], [ -76.903472, 39.232798 ], [ -76.904183, 39.232719 ], [ -76.906062, 39.232486 ], [ -76.908188, 39.232231 ], [ -76.908921, 39.232146 ], [ -76.909044, 39.232132 ], [ -76.909281, 39.232106 ], [ -76.909443, 39.232076 ], [ -76.909621, 39.232034 ], [ -76.909795, 39.231984 ], [ -76.90995, 39.231938 ], [ -76.910117, 39.231879 ], [ -76.910482, 39.231744 ], [ -76.910706, 39.231669 ], [ -76.911039, 39.231532 ], [ -76.911291, 39.231429 ], [ -76.911909, 39.231142 ], [ -76.91226, 39.231015 ], [ -76.912552, 39.230947 ], [ -76.912687, 39.230926 ], [ -76.912914, 39.230906 ], [ -76.913462, 39.230851 ], [ -76.91399, 39.230818 ], [ -76.914417, 39.230787 ], [ -76.914623, 39.230773 ], [ -76.914825, 39.230749 ], [ -76.914954, 39.230728 ], [ -76.915217, 39.230669 ], [ -76.915432, 39.230603 ], [ -76.915602, 39.230544 ], [ -76.91581, 39.230453 ], [ -76.915948, 39.230389 ], [ -76.916091, 39.230309 ], [ -76.916328, 39.23016 ], [ -76.916556, 39.229975 ], [ -76.91672, 39.229819 ], [ -76.917049, 39.229446 ], [ -76.918112, 39.228176 ], [ -76.918478, 39.227752 ], [ -76.918833, 39.227347 ], [ -76.919072, 39.227078 ], [ -76.919215, 39.226942 ], [ -76.91939, 39.226796 ], [ -76.919412, 39.226779 ], [ -76.919662, 39.226602 ], [ -76.919866, 39.226479 ], [ -76.921681, 39.225473 ], [ -76.921981, 39.225309 ], [ -76.922301, 39.225138 ], [ -76.922488, 39.225036 ], [ -76.922609, 39.224978 ], [ -76.923095, 39.224729 ], [ -76.923328, 39.2246 ], [ -76.923728, 39.224384 ], [ -76.924127, 39.224177 ], [ -76.924181, 39.22415 ], [ -76.924338, 39.224073 ], [ -76.924529, 39.223978 ], [ -76.924777, 39.22387 ], [ -76.925038, 39.223746 ], [ -76.925227, 39.223646 ], [ -76.925372, 39.223555 ], [ -76.925493, 39.223467 ], [ -76.925603, 39.223376 ], [ -76.925761, 39.223227 ], [ -76.926207, 39.222803 ], [ -76.926531, 39.222489 ], [ -76.926911, 39.222083 ], [ -76.927233, 39.221766 ], [ -76.927575, 39.221434 ], [ -76.928164, 39.220852 ], [ -76.928262, 39.220788 ], [ -76.928338, 39.220721 ], [ -76.928633, 39.220448 ], [ -76.929094, 39.220009 ], [ -76.929476, 39.219641 ], [ -76.929904, 39.219233 ], [ -76.930329, 39.218817 ], [ -76.9306, 39.218553 ], [ -76.930811, 39.218339 ], [ -76.931072, 39.218064 ], [ -76.931814, 39.2173 ], [ -76.931904, 39.217215 ], [ -76.932306, 39.216804 ], [ -76.932463, 39.216617 ], [ -76.932571, 39.216477 ], [ -76.932705, 39.216342 ], [ -76.932932, 39.216137 ], [ -76.933404, 39.215657 ], [ -76.93377, 39.215321 ], [ -76.933909, 39.215206 ], [ -76.934025, 39.215103 ], [ -76.934088, 39.215046 ], [ -76.934324, 39.214843 ], [ -76.934626, 39.214566 ], [ -76.934946, 39.214279 ], [ -76.935169, 39.214054 ], [ -76.935751, 39.213492 ], [ -76.935831, 39.213416 ], [ -76.936438, 39.212833 ], [ -76.936845, 39.212441 ], [ -76.937145, 39.212153 ], [ -76.937204, 39.212094 ], [ -76.937464, 39.211833 ], [ -76.937811, 39.211487 ], [ -76.938794, 39.210567 ], [ -76.940319, 39.209147 ], [ -76.940389, 39.209081 ], [ -76.940869, 39.208651 ], [ -76.941045, 39.208494 ], [ -76.94132, 39.20825 ], [ -76.941714, 39.207858 ], [ -76.945573, 39.209651 ], [ -76.945897, 39.209802 ], [ -76.946798, 39.210223 ], [ -76.946916, 39.210279 ], [ -76.950177, 39.211831 ], [ -76.952256, 39.212812 ], [ -76.953747, 39.213523 ], [ -76.955233, 39.214229 ], [ -76.956718, 39.214936 ], [ -76.958193, 39.215631 ], [ -76.959658, 39.216329 ], [ -76.961108, 39.217028 ], [ -76.962471, 39.217675 ], [ -76.963818, 39.218322 ], [ -76.965165, 39.218972 ], [ -76.965611, 39.2192 ], [ -76.966425, 39.219683 ], [ -76.966902, 39.219974 ], [ -76.967246, 39.220218 ], [ -76.967787, 39.220621 ], [ -76.968095, 39.220852 ], [ -76.968449, 39.221167 ], [ -76.968883, 39.221546 ], [ -76.969165, 39.22181 ], [ -76.969629, 39.222293 ], [ -76.969911, 39.222616 ], [ -76.970081, 39.222819 ], [ -76.970317, 39.223115 ], [ -76.970671, 39.223606 ], [ -76.971041, 39.224145 ], [ -76.971172, 39.224366 ], [ -76.971408, 39.224781 ], [ -76.971675, 39.225303 ], [ -76.971922, 39.225817 ], [ -76.972364, 39.226726 ], [ -76.972543, 39.227097 ], [ -76.97272, 39.227528 ], [ -76.972774, 39.227669 ], [ -76.972911, 39.228024 ], [ -76.972965, 39.228183 ], [ -76.973021, 39.228359 ], [ -76.973087, 39.228541 ], [ -76.973153, 39.228742 ], [ -76.9733, 39.229245 ], [ -76.973505, 39.229919 ], [ -76.97598, 39.230227 ], [ -76.97607, 39.230521 ], [ -76.976272, 39.230901 ], [ -76.976423, 39.231142 ], [ -76.976603, 39.231354 ], [ -76.976959, 39.231688 ], [ -76.977291, 39.23187 ], [ -76.97914, 39.232754 ], [ -76.979287, 39.232847 ], [ -76.979483, 39.232978 ], [ -76.979794, 39.23322 ] ] ] } }, +{ "type": "Feature", "properties": { "STATEFP10": "24", "COUNTYFP10": "027", "TRACTCE10": "603003", "GEOID10": "24027603003", "NAME10": "6030.03", "NAMELSAD10": "Census Tract 6030.03", "MTFCC10": "G5020", "FUNCSTAT10": "S", "ALAND10": 45161338, "AWATER10": 174904, "INTPTLAT10": "+39.3192333", "INTPTLON10": "-076.9680454" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -76.933499, 39.357602 ], [ -76.933409, 39.35756 ], [ -76.933305, 39.357502 ], [ -76.933213, 39.357448 ], [ -76.933124, 39.357401 ], [ -76.933052, 39.357343 ], [ -76.932917, 39.357247 ], [ -76.932699, 39.357065 ], [ -76.932616, 39.357003 ], [ -76.932564, 39.356949 ], [ -76.932501, 39.356879 ], [ -76.932492, 39.356869 ], [ -76.932417, 39.356799 ], [ -76.932331, 39.356719 ], [ -76.932256, 39.356625 ], [ -76.932148, 39.35643 ], [ -76.932073, 39.356265 ], [ -76.931978, 39.35611 ], [ -76.931915, 39.356003 ], [ -76.931858, 39.355938 ], [ -76.9318, 39.355878 ], [ -76.931708, 39.355802 ], [ -76.931565, 39.355672 ], [ -76.931502, 39.355614 ], [ -76.931413, 39.355551 ], [ -76.931384, 39.355527 ], [ -76.931338, 39.355457 ], [ -76.931309, 39.355404 ], [ -76.931249, 39.355343 ], [ -76.931165, 39.35531 ], [ -76.931062, 39.355296 ], [ -76.930952, 39.355289 ], [ -76.930831, 39.355276 ], [ -76.930769, 39.355274 ], [ -76.93066, 39.355314 ], [ -76.930576, 39.355334 ], [ -76.930513, 39.355343 ], [ -76.930467, 39.35534 ], [ -76.930406, 39.355329 ], [ -76.930375, 39.355311 ], [ -76.930346, 39.355273 ], [ -76.930308, 39.355217 ], [ -76.930277, 39.355177 ], [ -76.930219, 39.355141 ], [ -76.930153, 39.355094 ], [ -76.929987, 39.354906 ], [ -76.929904, 39.354799 ], [ -76.929832, 39.354707 ], [ -76.929772, 39.354618 ], [ -76.929589, 39.354209 ], [ -76.929463, 39.354061 ], [ -76.929385, 39.353996 ], [ -76.929313, 39.353951 ], [ -76.929252, 39.353925 ], [ -76.929169, 39.353898 ], [ -76.929068, 39.353875 ], [ -76.92899, 39.353853 ], [ -76.928898, 39.35383 ], [ -76.928825, 39.353822 ], [ -76.928776, 39.353816 ], [ -76.928675, 39.353814 ], [ -76.928556, 39.353787 ], [ -76.92846, 39.353794 ], [ -76.928401, 39.353799 ], [ -76.928349, 39.3538 ], [ -76.928303, 39.353799 ], [ -76.928208, 39.353779 ], [ -76.928148, 39.353751 ], [ -76.928019, 39.353655 ], [ -76.927985, 39.353607 ], [ -76.927945, 39.35355 ], [ -76.927902, 39.353502 ], [ -76.927834, 39.353451 ], [ -76.927779, 39.353425 ], [ -76.927719, 39.35342 ], [ -76.927623, 39.353419 ], [ -76.927554, 39.353429 ], [ -76.927478, 39.353448 ], [ -76.927376, 39.353486 ], [ -76.927314, 39.353514 ], [ -76.92727, 39.353561 ], [ -76.927243, 39.353606 ], [ -76.927233, 39.353653 ], [ -76.927221, 39.353691 ], [ -76.927209, 39.353733 ], [ -76.927182, 39.353758 ], [ -76.92713, 39.35377 ], [ -76.927063, 39.353776 ], [ -76.927005, 39.353755 ], [ -76.926988, 39.353734 ], [ -76.926968, 39.353729 ], [ -76.926936, 39.353736 ], [ -76.926882, 39.353748 ], [ -76.926835, 39.353756 ], [ -76.92676, 39.353744 ], [ -76.92663, 39.35371 ], [ -76.926506, 39.353674 ], [ -76.92642, 39.353648 ], [ -76.926316, 39.353608 ], [ -76.926232, 39.353591 ], [ -76.92616, 39.353587 ], [ -76.926108, 39.353591 ], [ -76.926009, 39.35363 ], [ -76.925886, 39.353705 ], [ -76.925876, 39.353708 ], [ -76.925722, 39.353764 ], [ -76.925472, 39.353668 ], [ -76.925354, 39.353575 ], [ -76.925246, 39.35349 ], [ -76.924932, 39.353171 ], [ -76.92468, 39.353025 ], [ -76.924119, 39.352808 ], [ -76.923916, 39.352635 ], [ -76.923809, 39.352544 ], [ -76.923614, 39.352255 ], [ -76.923534, 39.35221 ], [ -76.923282, 39.352068 ], [ -76.922839, 39.352033 ], [ -76.922706, 39.352013 ], [ -76.922335, 39.351957 ], [ -76.921768, 39.351726 ], [ -76.92061, 39.351537 ], [ -76.920175, 39.351462 ], [ -76.919921, 39.351419 ], [ -76.919324, 39.351299 ], [ -76.919305, 39.351295 ], [ -76.918843, 39.351039 ], [ -76.918595, 39.350922 ], [ -76.918288, 39.350856 ], [ -76.918268, 39.350856 ], [ -76.917268, 39.350875 ], [ -76.917011, 39.350792 ], [ -76.916762, 39.350643 ], [ -76.916602, 39.350636 ], [ -76.916244, 39.350755 ], [ -76.916021, 39.350917 ], [ -76.915814, 39.351036 ], [ -76.915604, 39.351109 ], [ -76.915145, 39.35131 ], [ -76.915016, 39.351294 ], [ -76.914917, 39.351282 ], [ -76.91464, 39.351093 ], [ -76.91434, 39.350916 ], [ -76.91397, 39.350893 ], [ -76.914072, 39.350481 ], [ -76.914112, 39.350404 ], [ -76.91421, 39.350352 ], [ -76.914362, 39.3503 ], [ -76.914491, 39.350238 ], [ -76.914582, 39.350177 ], [ -76.914658, 39.350115 ], [ -76.914711, 39.350049 ], [ -76.914759, 39.349971 ], [ -76.914775, 39.349884 ], [ -76.914774, 39.349789 ], [ -76.914746, 39.349679 ], [ -76.91467, 39.349481 ], [ -76.914501, 39.34937 ], [ -76.914421, 39.349247 ], [ -76.914385, 39.349119 ], [ -76.9144, 39.348985 ], [ -76.914436, 39.348857 ], [ -76.914566, 39.348732 ], [ -76.914788, 39.348612 ], [ -76.915119, 39.348484 ], [ -76.915349, 39.348389 ], [ -76.915507, 39.348289 ], [ -76.915637, 39.348144 ], [ -76.91577, 39.348021 ], [ -76.915842, 39.347943 ], [ -76.915919, 39.347828 ], [ -76.915974, 39.347711 ], [ -76.916019, 39.347548 ], [ -76.916029, 39.347391 ], [ -76.91608, 39.347281 ], [ -76.916237, 39.347204 ], [ -76.916561, 39.346969 ], [ -76.916874, 39.346675 ], [ -76.917035, 39.346509 ], [ -76.917206, 39.346373 ], [ -76.917781, 39.345762 ], [ -76.918151, 39.34534 ], [ -76.918306, 39.345161 ], [ -76.918434, 39.345015 ], [ -76.918663, 39.344776 ], [ -76.918874, 39.344617 ], [ -76.919115, 39.344481 ], [ -76.919269, 39.344389 ], [ -76.919433, 39.344297 ], [ -76.919544, 39.344219 ], [ -76.919767, 39.343977 ], [ -76.91994, 39.343774 ], [ -76.920352, 39.343252 ], [ -76.920588, 39.342874 ], [ -76.920674, 39.342667 ], [ -76.920854, 39.34238 ], [ -76.921027, 39.342104 ], [ -76.921396, 39.341609 ], [ -76.921944, 39.340866 ], [ -76.92251, 39.340156 ], [ -76.922875, 39.339707 ], [ -76.923047, 39.339489 ], [ -76.923199, 39.339264 ], [ -76.923333, 39.338933 ], [ -76.923402, 39.338704 ], [ -76.92349, 39.338243 ], [ -76.9238, 39.337803 ], [ -76.924068, 39.337451 ], [ -76.924299, 39.337003 ], [ -76.924607, 39.336458 ], [ -76.925137, 39.335566 ], [ -76.925289, 39.335288 ], [ -76.92563, 39.334897 ], [ -76.925796, 39.334709 ], [ -76.926098, 39.334468 ], [ -76.926129, 39.334443 ], [ -76.926394, 39.334291 ], [ -76.927298, 39.333685 ], [ -76.927629, 39.333368 ], [ -76.927826, 39.333071 ], [ -76.927937, 39.332863 ], [ -76.927995, 39.332613 ], [ -76.928005, 39.332452 ], [ -76.927985, 39.332349 ], [ -76.92797, 39.332272 ], [ -76.927905, 39.332139 ], [ -76.927572, 39.331818 ], [ -76.927075, 39.331419 ], [ -76.926222, 39.330947 ], [ -76.925602, 39.330662 ], [ -76.924948, 39.330405 ], [ -76.924707, 39.33027 ], [ -76.924512, 39.330152 ], [ -76.924338, 39.33001 ], [ -76.924191, 39.329854 ], [ -76.92412, 39.329726 ], [ -76.924035, 39.329549 ], [ -76.923958, 39.328973 ], [ -76.92394, 39.328751 ], [ -76.923927, 39.328314 ], [ -76.923883, 39.32755 ], [ -76.923862, 39.326648 ], [ -76.923909, 39.326342 ], [ -76.923963, 39.32609 ], [ -76.923969, 39.326073 ], [ -76.923994, 39.326007 ], [ -76.924059, 39.325837 ], [ -76.924251, 39.325539 ], [ -76.924413, 39.325351 ], [ -76.924725, 39.325048 ], [ -76.925256, 39.324586 ], [ -76.925547, 39.324351 ], [ -76.92563, 39.324277 ], [ -76.925785, 39.324114 ], [ -76.925888, 39.323962 ], [ -76.925954, 39.323801 ], [ -76.926009, 39.323639 ], [ -76.926111, 39.323312 ], [ -76.926165, 39.322982 ], [ -76.926265, 39.322309 ], [ -76.926302, 39.32197 ], [ -76.926313, 39.321621 ], [ -76.926352, 39.321251 ], [ -76.927788, 39.321346 ], [ -76.927867, 39.320936 ], [ -76.927924, 39.320547 ], [ -76.927953, 39.320359 ], [ -76.928011, 39.319769 ], [ -76.928096, 39.31918 ], [ -76.928162, 39.318787 ], [ -76.928223, 39.318269 ], [ -76.928254, 39.317768 ], [ -76.928279, 39.317337 ], [ -76.928284, 39.316942 ], [ -76.928311, 39.31656 ], [ -76.928337, 39.316321 ], [ -76.928361, 39.316195 ], [ -76.928413, 39.316045 ], [ -76.928499, 39.315842 ], [ -76.928809, 39.315147 ], [ -76.929029, 39.314601 ], [ -76.929268, 39.314032 ], [ -76.929583, 39.313305 ], [ -76.929737, 39.312927 ], [ -76.929794, 39.312786 ], [ -76.929887, 39.312549 ], [ -76.930146, 39.311954 ], [ -76.930229, 39.311728 ], [ -76.930258, 39.311636 ], [ -76.930292, 39.311526 ], [ -76.930341, 39.311308 ], [ -76.930415, 39.31095 ], [ -76.930483, 39.310587 ], [ -76.93056, 39.310217 ], [ -76.930591, 39.310062 ], [ -76.930601, 39.30963 ], [ -76.930595, 39.309257 ], [ -76.930553, 39.308275 ], [ -76.930539, 39.307937 ], [ -76.930535, 39.307857 ], [ -76.930519, 39.307566 ], [ -76.930526, 39.307072 ], [ -76.930535, 39.306729 ], [ -76.930549, 39.306607 ], [ -76.931268, 39.306694 ], [ -76.931998, 39.306779 ], [ -76.93295, 39.306878 ], [ -76.933917, 39.306983 ], [ -76.934904, 39.307098 ], [ -76.936177, 39.307229 ], [ -76.936758, 39.3073 ], [ -76.937118, 39.307342 ], [ -76.937639, 39.307397 ], [ -76.93818, 39.307451 ], [ -76.93874, 39.307509 ], [ -76.939326, 39.30756 ], [ -76.939914, 39.307617 ], [ -76.940487, 39.307682 ], [ -76.941049, 39.307751 ], [ -76.941596, 39.307814 ], [ -76.942157, 39.307876 ], [ -76.942737, 39.307943 ], [ -76.94364, 39.308039 ], [ -76.944942, 39.308186 ], [ -76.945448, 39.308248 ], [ -76.946457, 39.30835 ], [ -76.948442, 39.308572 ], [ -76.949424, 39.308686 ], [ -76.95038, 39.308793 ], [ -76.951321, 39.308892 ], [ -76.952092, 39.30898 ], [ -76.952357, 39.309009 ], [ -76.952623, 39.309039 ], [ -76.952658, 39.308803 ], [ -76.95299, 39.306589 ], [ -76.953238, 39.304851 ], [ -76.953266, 39.304281 ], [ -76.953281, 39.303691 ], [ -76.953276, 39.303413 ], [ -76.953266, 39.30321 ], [ -76.953235, 39.302753 ], [ -76.953176, 39.302397 ], [ -76.953123, 39.302159 ], [ -76.953007, 39.30181 ], [ -76.952914, 39.301489 ], [ -76.952856, 39.301266 ], [ -76.95282, 39.301094 ], [ -76.952779, 39.300831 ], [ -76.95279, 39.300077 ], [ -76.952821, 39.299521 ], [ -76.952845, 39.299163 ], [ -76.952849, 39.299112 ], [ -76.95288, 39.298799 ], [ -76.952891, 39.298644 ], [ -76.953033, 39.297703 ], [ -76.953259, 39.29613 ], [ -76.953303, 39.295798 ], [ -76.953382, 39.295237 ], [ -76.953441, 39.294776 ], [ -76.953512, 39.294353 ], [ -76.953557, 39.294086 ], [ -76.953597, 39.293762 ], [ -76.953658, 39.293415 ], [ -76.953727, 39.292965 ], [ -76.953794, 39.292595 ], [ -76.953868, 39.292321 ], [ -76.953981, 39.292004 ], [ -76.954185, 39.291551 ], [ -76.95439, 39.291203 ], [ -76.954522, 39.290979 ], [ -76.954601, 39.290867 ], [ -76.954644, 39.290799 ], [ -76.954759, 39.290637 ], [ -76.954912, 39.290439 ], [ -76.955044, 39.290277 ], [ -76.955331, 39.28996 ], [ -76.955428, 39.289858 ], [ -76.955678, 39.289617 ], [ -76.955794, 39.289523 ], [ -76.955906, 39.28943 ], [ -76.956059, 39.289308 ], [ -76.956086, 39.289286 ], [ -76.95626, 39.289149 ], [ -76.956494, 39.288984 ], [ -76.956846, 39.28874 ], [ -76.958903, 39.287361 ], [ -76.959036, 39.287264 ], [ -76.9594, 39.287023 ], [ -76.959664, 39.28686 ], [ -76.959916, 39.286699 ], [ -76.96061, 39.286214 ], [ -76.96122, 39.285809 ], [ -76.961241, 39.285793 ], [ -76.961479, 39.285616 ], [ -76.961849, 39.285376 ], [ -76.962453, 39.285046 ], [ -76.962721, 39.284902 ], [ -76.963153, 39.284696 ], [ -76.96373, 39.284454 ], [ -76.963886, 39.284402 ], [ -76.96411, 39.284326 ], [ -76.964328, 39.284257 ], [ -76.964729, 39.284136 ], [ -76.96524, 39.28401 ], [ -76.965611, 39.283928 ], [ -76.966106, 39.283836 ], [ -76.96649, 39.283786 ], [ -76.966578, 39.283775 ], [ -76.967122, 39.283712 ], [ -76.967562, 39.283688 ], [ -76.968042, 39.283678 ], [ -76.968581, 39.283687 ], [ -76.969125, 39.283687 ], [ -76.969433, 39.283677 ], [ -76.969764, 39.283656 ], [ -76.970354, 39.283601 ], [ -76.970862, 39.283515 ], [ -76.971327, 39.283411 ], [ -76.971642, 39.283331 ], [ -76.971947, 39.283226 ], [ -76.97225, 39.283131 ], [ -76.972639, 39.282993 ], [ -76.973075, 39.282816 ], [ -76.973704, 39.282562 ], [ -76.974677, 39.282187 ], [ -76.974848, 39.282122 ], [ -76.975534, 39.281864 ], [ -76.975709, 39.281799 ], [ -76.97642, 39.281521 ], [ -76.976695, 39.281415 ], [ -76.977254, 39.281206 ], [ -76.977677, 39.281042 ], [ -76.978394, 39.280754 ], [ -76.978812, 39.280572 ], [ -76.979029, 39.280473 ], [ -76.979546, 39.280215 ], [ -76.980081, 39.279918 ], [ -76.980379, 39.279735 ], [ -76.980573, 39.279618 ], [ -76.980871, 39.279414 ], [ -76.981045, 39.279298 ], [ -76.982491, 39.27824 ], [ -76.983262, 39.277677 ], [ -76.983694, 39.277373 ], [ -76.984805, 39.276561 ], [ -76.985017, 39.276409 ], [ -76.985198, 39.276268 ], [ -76.985395, 39.276116 ], [ -76.985612, 39.275928 ], [ -76.985896, 39.275663 ], [ -76.986045, 39.275505 ], [ -76.986129, 39.275407 ], [ -76.986203, 39.275309 ], [ -76.986408, 39.275049 ], [ -76.986592, 39.274766 ], [ -76.986731, 39.274538 ], [ -76.986767, 39.274469 ], [ -76.986896, 39.274222 ], [ -76.986965, 39.274064 ], [ -76.98703, 39.273898 ], [ -76.98709, 39.273701 ], [ -76.987147, 39.273477 ], [ -76.987177, 39.273304 ], [ -76.987206, 39.273074 ], [ -76.987207, 39.272642 ], [ -76.987198, 39.272432 ], [ -76.987186, 39.272269 ], [ -76.987091, 39.271847 ], [ -76.986959, 39.27135 ], [ -76.986469, 39.269658 ], [ -76.986343, 39.26926 ], [ -76.985993, 39.268062 ], [ -76.985885, 39.267675 ], [ -76.985574, 39.266727 ], [ -76.985392, 39.266096 ], [ -76.984827, 39.26414 ], [ -76.985659, 39.26405 ], [ -76.985846, 39.264026 ], [ -76.986191, 39.263967 ], [ -76.987093, 39.263826 ], [ -76.987171, 39.263814 ], [ -76.987908, 39.263707 ], [ -76.98798, 39.263698 ], [ -76.988226, 39.263668 ], [ -76.988831, 39.263608 ], [ -76.989163, 39.263597 ], [ -76.989408, 39.263598 ], [ -76.989611, 39.263602 ], [ -76.989779, 39.263616 ], [ -76.989945, 39.263637 ], [ -76.990711, 39.263801 ], [ -76.991316, 39.2639 ], [ -76.992399, 39.264057 ], [ -76.992819, 39.26413 ], [ -76.992966, 39.264146 ], [ -76.993105, 39.264146 ], [ -76.993363, 39.264127 ], [ -76.993514, 39.264104 ], [ -76.993733, 39.264057 ], [ -76.994915, 39.263809 ], [ -76.996945, 39.263399 ], [ -76.997118, 39.263363 ], [ -76.997398, 39.263305 ], [ -76.997659, 39.263247 ], [ -76.997838, 39.263193 ], [ -76.997968, 39.263148 ], [ -76.998503, 39.262906 ], [ -76.998845, 39.264196 ], [ -76.999135, 39.26541 ], [ -76.999218, 39.265758 ], [ -76.999442, 39.267073 ], [ -76.999586, 39.267919 ], [ -76.999656, 39.268311 ], [ -76.999679, 39.26849 ], [ -76.999704, 39.270969 ], [ -76.999742, 39.271032 ], [ -77.000626, 39.271425 ], [ -77.001102, 39.27162 ], [ -77.00119, 39.271694 ], [ -77.001239, 39.271756 ], [ -77.001273, 39.271874 ], [ -77.0013, 39.272118 ], [ -77.001317, 39.272307 ], [ -77.00129, 39.272475 ], [ -77.00122, 39.272779 ], [ -77.001055, 39.273393 ], [ -77.000994, 39.273614 ], [ -77.000968, 39.273767 ], [ -77.000971, 39.273841 ], [ -77.000998, 39.273897 ], [ -77.001032, 39.273947 ], [ -77.001044, 39.274 ], [ -77.001046, 39.274086 ], [ -77.000846, 39.274828 ], [ -77.000759, 39.275038 ], [ -77.000664, 39.275256 ], [ -77.000649, 39.275333 ], [ -77.000656, 39.275386 ], [ -77.000717, 39.275492 ], [ -77.000725, 39.275522 ], [ -77.000717, 39.275575 ], [ -77.000623, 39.275802 ], [ -76.999674, 39.275563 ], [ -76.999846, 39.277653 ], [ -76.999868, 39.277925 ], [ -76.999868, 39.277929 ], [ -76.999854, 39.278265 ], [ -76.999776, 39.280159 ], [ -76.99972, 39.282866 ], [ -76.9997, 39.283804 ], [ -76.9997, 39.285403 ], [ -76.999607, 39.289715 ], [ -76.999486, 39.289898 ], [ -76.999151, 39.290369 ], [ -76.998959, 39.290675 ], [ -76.998741, 39.291037 ], [ -76.998389, 39.291634 ], [ -76.998257, 39.291863 ], [ -76.997903, 39.292647 ], [ -76.997848, 39.292768 ], [ -76.997688, 39.293182 ], [ -76.997556, 39.293634 ], [ -76.997434, 39.294094 ], [ -76.997286, 39.294584 ], [ -76.997125, 39.295086 ], [ -76.997035, 39.295353 ], [ -76.997015, 39.295504 ], [ -76.997, 39.295671 ], [ -76.996996, 39.296092 ], [ -76.996998, 39.296262 ], [ -76.997005, 39.296413 ], [ -76.997008, 39.296477 ], [ -76.997035, 39.296716 ], [ -76.997061, 39.296968 ], [ -76.997084, 39.297276 ], [ -76.997095, 39.297479 ], [ -76.9971, 39.297563 ], [ -76.997101, 39.298051 ], [ -76.997103, 39.298304 ], [ -76.997125, 39.29878 ], [ -76.997144, 39.299136 ], [ -76.997166, 39.300087 ], [ -76.99717, 39.300137 ], [ -76.997208, 39.300579 ], [ -76.997237, 39.301003 ], [ -76.997258, 39.301095 ], [ -76.99729, 39.301159 ], [ -76.997335, 39.301204 ], [ -76.997432, 39.301265 ], [ -76.997734, 39.301368 ], [ -76.998118, 39.301505 ], [ -76.998195, 39.301527 ], [ -76.998271, 39.301555 ], [ -76.998317, 39.301589 ], [ -76.99836, 39.301633 ], [ -76.998396, 39.301708 ], [ -76.998448, 39.301809 ], [ -76.998475, 39.301848 ], [ -76.998554, 39.301898 ], [ -76.998662, 39.301951 ], [ -76.999305, 39.302127 ], [ -76.999257, 39.302233 ], [ -76.9984, 39.307403 ], [ -76.99732, 39.31118 ], [ -76.9972, 39.311603 ], [ -76.997139, 39.313119 ], [ -76.997018, 39.313259 ], [ -76.996878, 39.313484 ], [ -76.996786, 39.313737 ], [ -76.996697, 39.313961 ], [ -76.996631, 39.314115 ], [ -76.996576, 39.314395 ], [ -76.996546, 39.314467 ], [ -76.996504, 39.314549 ], [ -76.996429, 39.314651 ], [ -76.996347, 39.314755 ], [ -76.996296, 39.314824 ], [ -76.996134, 39.315046 ], [ -76.995804, 39.315562 ], [ -76.995611, 39.315873 ], [ -76.99547, 39.316101 ], [ -76.995143, 39.316621 ], [ -76.99501, 39.316834 ], [ -76.994812, 39.317152 ], [ -76.994508, 39.317627 ], [ -76.99422, 39.318117 ], [ -76.994105, 39.318301 ], [ -76.993993, 39.318447 ], [ -76.993884, 39.318577 ], [ -76.993815, 39.318658 ], [ -76.993731, 39.318735 ], [ -76.993603, 39.318842 ], [ -76.993442, 39.31897 ], [ -76.993055, 39.319248 ], [ -76.99235, 39.319787 ], [ -76.99209, 39.319993 ], [ -76.991909, 39.320162 ], [ -76.99181, 39.320264 ], [ -76.991728, 39.320376 ], [ -76.991662, 39.320476 ], [ -76.991626, 39.320545 ], [ -76.99156, 39.320747 ], [ -76.991259, 39.321038 ], [ -76.991049, 39.321241 ], [ -76.9912, 39.322803 ], [ -76.991143, 39.322905 ], [ -76.988385, 39.327839 ], [ -76.985165, 39.334401 ], [ -76.985114, 39.334504 ], [ -76.985153, 39.334546 ], [ -76.985167, 39.334579 ], [ -76.985192, 39.33467 ], [ -76.985299, 39.335031 ], [ -76.985453, 39.335584 ], [ -76.98556, 39.33586 ], [ -76.985658, 39.336173 ], [ -76.985774, 39.336566 ], [ -76.98596, 39.337132 ], [ -76.986119, 39.337664 ], [ -76.986296, 39.33828 ], [ -76.986356, 39.338519 ], [ -76.986449, 39.338836 ], [ -76.98683, 39.340101 ], [ -76.986937, 39.340465 ], [ -76.987066, 39.340993 ], [ -76.987105, 39.341308 ], [ -76.98712, 39.341474 ], [ -76.987121, 39.341485 ], [ -76.987114, 39.341869 ], [ -76.987111, 39.341977 ], [ -76.987114, 39.342502 ], [ -76.987153, 39.342937 ], [ -76.987192, 39.343479 ], [ -76.987205, 39.343861 ], [ -76.987241, 39.344366 ], [ -76.987234, 39.344522 ], [ -76.987229, 39.344721 ], [ -76.987056, 39.344778 ], [ -76.986432, 39.344984 ], [ -76.986117, 39.345093 ], [ -76.985558, 39.345297 ], [ -76.985325, 39.345388 ], [ -76.985154, 39.345479 ], [ -76.985066, 39.345543 ], [ -76.984985, 39.345625 ], [ -76.984886, 39.345756 ], [ -76.984735, 39.346044 ], [ -76.984567, 39.346398 ], [ -76.98439, 39.346753 ], [ -76.984243, 39.347093 ], [ -76.984184, 39.347245 ], [ -76.984038, 39.347719 ], [ -76.984029, 39.347749 ], [ -76.983974, 39.347962 ], [ -76.983919, 39.348136 ], [ -76.983778, 39.348458 ], [ -76.983656, 39.348663 ], [ -76.983475, 39.349004 ], [ -76.983166, 39.349705 ], [ -76.983096, 39.349796 ], [ -76.982854, 39.350068 ], [ -76.983477, 39.350338 ], [ -76.984079, 39.350599 ], [ -76.9851, 39.351042 ], [ -76.985556, 39.35124 ], [ -76.985781, 39.351353 ], [ -76.985999, 39.351449 ], [ -76.986416, 39.351632 ], [ -76.987425, 39.352063 ], [ -76.988416, 39.352497 ], [ -76.989406, 39.352919 ], [ -76.989918, 39.35316 ], [ -76.99011, 39.353281 ], [ -76.990229, 39.35337 ], [ -76.99028, 39.353439 ], [ -76.990321, 39.353525 ], [ -76.990384, 39.353706 ], [ -76.990388, 39.353782 ], [ -76.990388, 39.353961 ], [ -76.990386, 39.354179 ], [ -76.990376, 39.354379 ], [ -76.990358, 39.354759 ], [ -76.990362, 39.355066 ], [ -76.990365, 39.355124 ], [ -76.990365, 39.355169 ], [ -76.99037, 39.355221 ], [ -76.990382, 39.355295 ], [ -76.990588, 39.356547 ], [ -76.990644, 39.356875 ], [ -76.990656, 39.356977 ], [ -76.990661, 39.35701 ], [ -76.990692, 39.357232 ], [ -76.990703, 39.357275 ], [ -76.990734, 39.357342 ], [ -76.990764, 39.357394 ], [ -76.990792, 39.35744 ], [ -76.990827, 39.35748 ], [ -76.990944, 39.357575 ], [ -76.991244, 39.357782 ], [ -76.991444, 39.357941 ], [ -76.991599, 39.358077 ], [ -76.991679, 39.358155 ], [ -76.991758, 39.358253 ], [ -76.991869, 39.358423 ], [ -76.992046, 39.358748 ], [ -76.9921, 39.358878 ], [ -76.992103, 39.358881 ], [ -76.992135, 39.358972 ], [ -76.992161, 39.359097 ], [ -76.99217, 39.359159 ], [ -76.992174, 39.359239 ], [ -76.992182, 39.359376 ], [ -76.992166, 39.359664 ], [ -76.992153, 39.359806 ], [ -76.992095, 39.35981 ], [ -76.991303, 39.359842 ], [ -76.991017, 39.35997 ], [ -76.990904, 39.360022 ], [ -76.990518, 39.360601 ], [ -76.990011, 39.361048 ], [ -76.989404, 39.361338 ], [ -76.989, 39.361435 ], [ -76.988335, 39.361514 ], [ -76.988097, 39.361521 ], [ -76.988006, 39.361524 ], [ -76.987514, 39.361552 ], [ -76.987208, 39.361535 ], [ -76.986946, 39.361459 ], [ -76.98685, 39.361431 ], [ -76.986633, 39.361339 ], [ -76.986512, 39.361296 ], [ -76.986337, 39.361234 ], [ -76.986254, 39.361233 ], [ -76.98615, 39.361242 ], [ -76.985758, 39.361318 ], [ -76.985347, 39.361493 ], [ -76.985215, 39.361605 ], [ -76.985085, 39.361717 ], [ -76.984919, 39.361957 ], [ -76.984869, 39.36203 ], [ -76.984578, 39.362219 ], [ -76.984335, 39.362378 ], [ -76.983729, 39.36272 ], [ -76.983432, 39.362834 ], [ -76.983383, 39.362853 ], [ -76.983001, 39.36286 ], [ -76.982869, 39.36283 ], [ -76.982607, 39.362771 ], [ -76.982488, 39.362701 ], [ -76.982372, 39.362633 ], [ -76.98232, 39.362602 ], [ -76.982279, 39.362526 ], [ -76.982096, 39.362181 ], [ -76.98207, 39.362139 ], [ -76.981994, 39.362015 ], [ -76.981927, 39.361906 ], [ -76.981905, 39.36187 ], [ -76.98173, 39.361709 ], [ -76.981634, 39.361674 ], [ -76.981613, 39.361667 ], [ -76.981508, 39.361668 ], [ -76.981007, 39.3617 ], [ -76.980861, 39.36171 ], [ -76.980101, 39.361726 ], [ -76.979502, 39.361712 ], [ -76.979163, 39.361705 ], [ -76.979001, 39.361718 ], [ -76.978852, 39.36173 ], [ -76.978407, 39.361767 ], [ -76.978259, 39.36178 ], [ -76.978194, 39.361784 ], [ -76.978001, 39.3618 ], [ -76.977937, 39.361806 ], [ -76.977848, 39.361813 ], [ -76.97764, 39.361831 ], [ -76.977583, 39.361834 ], [ -76.977495, 39.361841 ], [ -76.976946, 39.361877 ], [ -76.976697, 39.361894 ], [ -76.976665, 39.361897 ], [ -76.976113, 39.361838 ], [ -76.975727, 39.361702 ], [ -76.975452, 39.361451 ], [ -76.97519, 39.361197 ], [ -76.974893, 39.361152 ], [ -76.974589, 39.361202 ], [ -76.974553, 39.361243 ], [ -76.974425, 39.361392 ], [ -76.974116, 39.36191 ], [ -76.973705, 39.36257 ], [ -76.973696, 39.362586 ], [ -76.973253, 39.362915 ], [ -76.972392, 39.363309 ], [ -76.971774, 39.363457 ], [ -76.9716, 39.363503 ], [ -76.970863, 39.363701 ], [ -76.970849, 39.363702 ], [ -76.970464, 39.363729 ], [ -76.970375, 39.363736 ], [ -76.970022, 39.363824 ], [ -76.969843, 39.36398 ], [ -76.969697, 39.363982 ], [ -76.969388, 39.363898 ], [ -76.969074, 39.363814 ], [ -76.969017, 39.363798 ], [ -76.96898, 39.363766 ], [ -76.968884, 39.363685 ], [ -76.968815, 39.363624 ], [ -76.968381, 39.36324 ], [ -76.968204, 39.363109 ], [ -76.968096, 39.363029 ], [ -76.967994, 39.362946 ], [ -76.967914, 39.362884 ], [ -76.967674, 39.362701 ], [ -76.967594, 39.36264 ], [ -76.96755, 39.362606 ], [ -76.967454, 39.362533 ], [ -76.967417, 39.362511 ], [ -76.967371, 39.362483 ], [ -76.967273, 39.362425 ], [ -76.967057, 39.362297 ], [ -76.966974, 39.362267 ], [ -76.966868, 39.362229 ], [ -76.966679, 39.362161 ], [ -76.966576, 39.362131 ], [ -76.966157, 39.362011 ], [ -76.965688, 39.361882 ], [ -76.965392, 39.361801 ], [ -76.965196, 39.361698 ], [ -76.964979, 39.361584 ], [ -76.964638, 39.361341 ], [ -76.964552, 39.36128 ], [ -76.96449, 39.361183 ], [ -76.964457, 39.361131 ], [ -76.964455, 39.360939 ], [ -76.964442, 39.36078 ], [ -76.964419, 39.360715 ], [ -76.96433, 39.360593 ], [ -76.964197, 39.360428 ], [ -76.964066, 39.360265 ], [ -76.963861, 39.359937 ], [ -76.963422, 39.359638 ], [ -76.963304, 39.359445 ], [ -76.963002, 39.358778 ], [ -76.962832, 39.358544 ], [ -76.962716, 39.358433 ], [ -76.962311, 39.358049 ], [ -76.962092, 39.357865 ], [ -76.962001, 39.357788 ], [ -76.961775, 39.35772 ], [ -76.961585, 39.357675 ], [ -76.961423, 39.357637 ], [ -76.960756, 39.357274 ], [ -76.960392, 39.357129 ], [ -76.960151, 39.356912 ], [ -76.960147, 39.356906 ], [ -76.959955, 39.356636 ], [ -76.959741, 39.356594 ], [ -76.959206, 39.356683 ], [ -76.958959, 39.356856 ], [ -76.958678, 39.357106 ], [ -76.95853, 39.357168 ], [ -76.958329, 39.357254 ], [ -76.957806, 39.357576 ], [ -76.957138, 39.357733 ], [ -76.955723, 39.357806 ], [ -76.955038, 39.357805 ], [ -76.954748, 39.357881 ], [ -76.95453, 39.357877 ], [ -76.954188, 39.357872 ], [ -76.953629, 39.357752 ], [ -76.953312, 39.35771 ], [ -76.953166, 39.357711 ], [ -76.952889, 39.357741 ], [ -76.952665, 39.357842 ], [ -76.952515, 39.357884 ], [ -76.952273, 39.357954 ], [ -76.95102, 39.357767 ], [ -76.950741, 39.357764 ], [ -76.950502, 39.357791 ], [ -76.950484, 39.357794 ], [ -76.95037, 39.357975 ], [ -76.950508, 39.3584 ], [ -76.950552, 39.358537 ], [ -76.950768, 39.35862 ], [ -76.950899, 39.358664 ], [ -76.951046, 39.358715 ], [ -76.951183, 39.358887 ], [ -76.951136, 39.359149 ], [ -76.95102, 39.359356 ], [ -76.950725, 39.359617 ], [ -76.950474, 39.359719 ], [ -76.950005, 39.359911 ], [ -76.949999, 39.359915 ], [ -76.949571, 39.360188 ], [ -76.949029, 39.360371 ], [ -76.948411, 39.360426 ], [ -76.947786, 39.360428 ], [ -76.947198, 39.360454 ], [ -76.947005, 39.360605 ], [ -76.946942, 39.360804 ], [ -76.946913, 39.360981 ], [ -76.946733, 39.361063 ], [ -76.946429, 39.361039 ], [ -76.946067, 39.36095 ], [ -76.94583, 39.360751 ], [ -76.945638, 39.360443 ], [ -76.945494, 39.360008 ], [ -76.945334, 39.359768 ], [ -76.945145, 39.359547 ], [ -76.945018, 39.359391 ], [ -76.944929, 39.35905 ], [ -76.944847, 39.358917 ], [ -76.944441, 39.358607 ], [ -76.944184, 39.358493 ], [ -76.943614, 39.358389 ], [ -76.943208, 39.358293 ], [ -76.942055, 39.35773 ], [ -76.941374, 39.357472 ], [ -76.941036, 39.357417 ], [ -76.940797, 39.357403 ], [ -76.940372, 39.357478 ], [ -76.939979, 39.35763 ], [ -76.939759, 39.357778 ], [ -76.939415, 39.358217 ], [ -76.939041, 39.358568 ], [ -76.938577, 39.358861 ], [ -76.938246, 39.35894 ], [ -76.937827, 39.358965 ], [ -76.937407, 39.358848 ], [ -76.936523, 39.358349 ], [ -76.936371, 39.358294 ], [ -76.936257, 39.3583 ], [ -76.936242, 39.358301 ], [ -76.936035, 39.35823 ], [ -76.935888, 39.358185 ], [ -76.935715, 39.358127 ], [ -76.935365, 39.358053 ], [ -76.935143, 39.358015 ], [ -76.935005, 39.357979 ], [ -76.934892, 39.357965 ], [ -76.93476, 39.357956 ], [ -76.934607, 39.357932 ], [ -76.934462, 39.357898 ], [ -76.934364, 39.35786 ], [ -76.934315, 39.357824 ], [ -76.934231, 39.357817 ], [ -76.934142, 39.35782 ], [ -76.934058, 39.35782 ], [ -76.933989, 39.357808 ], [ -76.933909, 39.357777 ], [ -76.933814, 39.357743 ], [ -76.933596, 39.357647 ], [ -76.933499, 39.357602 ] ] ] } }, +{ "type": "Feature", "properties": { "STATEFP10": "24", "COUNTYFP10": "027", "TRACTCE10": "603001", "GEOID10": "24027603001", "NAME10": "6030.01", "NAMELSAD10": "Census Tract 6030.01", "MTFCC10": "G5020", "FUNCSTAT10": "S", "ALAND10": 24726303, "AWATER10": 57708, "INTPTLAT10": "+39.3279761", "INTPTLON10": "-076.8942412" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -76.863078, 39.315008 ], [ -76.863049, 39.31484 ], [ -76.863106, 39.314569 ], [ -76.863203, 39.314109 ], [ -76.863314, 39.313502 ], [ -76.863359, 39.313026 ], [ -76.86334, 39.312713 ], [ -76.86331, 39.31248 ], [ -76.863267, 39.312264 ], [ -76.863206, 39.312082 ], [ -76.863144, 39.311933 ], [ -76.863046, 39.311741 ], [ -76.862929, 39.311549 ], [ -76.862787, 39.311386 ], [ -76.862677, 39.311297 ], [ -76.862581, 39.311225 ], [ -76.862538, 39.311172 ], [ -76.86255, 39.311114 ], [ -76.862618, 39.311062 ], [ -76.863039, 39.310937 ], [ -76.864234, 39.310568 ], [ -76.865669, 39.310066 ], [ -76.866101, 39.309894 ], [ -76.866102, 39.309894 ], [ -76.867261, 39.309502 ], [ -76.867705, 39.309347 ], [ -76.867978, 39.309239 ], [ -76.868485, 39.309055 ], [ -76.869013, 39.308862 ], [ -76.869122, 39.308816 ], [ -76.869153, 39.308799 ], [ -76.869161, 39.308786 ], [ -76.870392, 39.30884 ], [ -76.87045, 39.308843 ], [ -76.870653, 39.308758 ], [ -76.874586, 39.3075 ], [ -76.875149, 39.307313 ], [ -76.87623, 39.306966 ], [ -76.877241, 39.306642 ], [ -76.877891, 39.306433 ], [ -76.87922, 39.305965 ], [ -76.879848, 39.305738 ], [ -76.880547, 39.305504 ], [ -76.880735, 39.305263 ], [ -76.880733, 39.305174 ], [ -76.88072, 39.304984 ], [ -76.881151, 39.305076 ], [ -76.881703, 39.305181 ], [ -76.882233, 39.305279 ], [ -76.882851, 39.305396 ], [ -76.883608, 39.305518 ], [ -76.883947, 39.305568 ], [ -76.884197, 39.305597 ], [ -76.884599, 39.305647 ], [ -76.885075, 39.305698 ], [ -76.88604, 39.30578 ], [ -76.886588, 39.305812 ], [ -76.887181, 39.30584 ], [ -76.887795, 39.30585 ], [ -76.888401, 39.305863 ], [ -76.889012, 39.305863 ], [ -76.88963, 39.30584 ], [ -76.8903, 39.305807 ], [ -76.890979, 39.305765 ], [ -76.891221, 39.305748 ], [ -76.891829, 39.305695 ], [ -76.892412, 39.305635 ], [ -76.893442, 39.305509 ], [ -76.894462, 39.305373 ], [ -76.895331, 39.305212 ], [ -76.895878, 39.305093 ], [ -76.896894, 39.304867 ], [ -76.89811, 39.304572 ], [ -76.899172, 39.304288 ], [ -76.899812, 39.304108 ], [ -76.900525, 39.303894 ], [ -76.901627, 39.303532 ], [ -76.902765, 39.303129 ], [ -76.903123, 39.303015 ], [ -76.903422, 39.302918 ], [ -76.903662, 39.30285 ], [ -76.904243, 39.302694 ], [ -76.904479, 39.302643 ], [ -76.905136, 39.302505 ], [ -76.90551, 39.302443 ], [ -76.905906, 39.302395 ], [ -76.906492, 39.30234 ], [ -76.906815, 39.302316 ], [ -76.907152, 39.302312 ], [ -76.907701, 39.302312 ], [ -76.908336, 39.302338 ], [ -76.909033, 39.302404 ], [ -76.909721, 39.302479 ], [ -76.909909, 39.302507 ], [ -76.910383, 39.302592 ], [ -76.911134, 39.302762 ], [ -76.912057, 39.303046 ], [ -76.912721, 39.303287 ], [ -76.913458, 39.303609 ], [ -76.913819, 39.303787 ], [ -76.914355, 39.304049 ], [ -76.914732, 39.304219 ], [ -76.915253, 39.304423 ], [ -76.916003, 39.304685 ], [ -76.916174, 39.304741 ], [ -76.916732, 39.304892 ], [ -76.91755, 39.305086 ], [ -76.918421, 39.305259 ], [ -76.91925, 39.305374 ], [ -76.92018, 39.305484 ], [ -76.921195, 39.305587 ], [ -76.922207, 39.305692 ], [ -76.923102, 39.305786 ], [ -76.924538, 39.305961 ], [ -76.924915, 39.30602 ], [ -76.926091, 39.306156 ], [ -76.926522, 39.306188 ], [ -76.927019, 39.306238 ], [ -76.927648, 39.306306 ], [ -76.928368, 39.306378 ], [ -76.929088, 39.30644 ], [ -76.930238, 39.306561 ], [ -76.930549, 39.306607 ], [ -76.930535, 39.306729 ], [ -76.930526, 39.307072 ], [ -76.930519, 39.307566 ], [ -76.930535, 39.307857 ], [ -76.930539, 39.307937 ], [ -76.930553, 39.308275 ], [ -76.930595, 39.309257 ], [ -76.930601, 39.30963 ], [ -76.930591, 39.310062 ], [ -76.93056, 39.310217 ], [ -76.930483, 39.310587 ], [ -76.930415, 39.31095 ], [ -76.930341, 39.311308 ], [ -76.930292, 39.311526 ], [ -76.930258, 39.311636 ], [ -76.930229, 39.311728 ], [ -76.930146, 39.311954 ], [ -76.929887, 39.312549 ], [ -76.929794, 39.312786 ], [ -76.929737, 39.312927 ], [ -76.929583, 39.313305 ], [ -76.929268, 39.314032 ], [ -76.929029, 39.314601 ], [ -76.928809, 39.315147 ], [ -76.928499, 39.315842 ], [ -76.928413, 39.316045 ], [ -76.928361, 39.316195 ], [ -76.928337, 39.316321 ], [ -76.928311, 39.31656 ], [ -76.928284, 39.316942 ], [ -76.928279, 39.317337 ], [ -76.928254, 39.317768 ], [ -76.928223, 39.318269 ], [ -76.928162, 39.318787 ], [ -76.928096, 39.31918 ], [ -76.928011, 39.319769 ], [ -76.927953, 39.320359 ], [ -76.927924, 39.320547 ], [ -76.927867, 39.320936 ], [ -76.927788, 39.321346 ], [ -76.926352, 39.321251 ], [ -76.926313, 39.321621 ], [ -76.926302, 39.32197 ], [ -76.926265, 39.322309 ], [ -76.926165, 39.322982 ], [ -76.926111, 39.323312 ], [ -76.926009, 39.323639 ], [ -76.925954, 39.323801 ], [ -76.925888, 39.323962 ], [ -76.925785, 39.324114 ], [ -76.92563, 39.324277 ], [ -76.925547, 39.324351 ], [ -76.925256, 39.324586 ], [ -76.924725, 39.325048 ], [ -76.924413, 39.325351 ], [ -76.924251, 39.325539 ], [ -76.924059, 39.325837 ], [ -76.923994, 39.326007 ], [ -76.923969, 39.326073 ], [ -76.923963, 39.32609 ], [ -76.923909, 39.326342 ], [ -76.923862, 39.326648 ], [ -76.923883, 39.32755 ], [ -76.923927, 39.328314 ], [ -76.92394, 39.328751 ], [ -76.923958, 39.328973 ], [ -76.924035, 39.329549 ], [ -76.92412, 39.329726 ], [ -76.924191, 39.329854 ], [ -76.924338, 39.33001 ], [ -76.924512, 39.330152 ], [ -76.924707, 39.33027 ], [ -76.924948, 39.330405 ], [ -76.925602, 39.330662 ], [ -76.926222, 39.330947 ], [ -76.927075, 39.331419 ], [ -76.927572, 39.331818 ], [ -76.927905, 39.332139 ], [ -76.92797, 39.332272 ], [ -76.927985, 39.332349 ], [ -76.928005, 39.332452 ], [ -76.927995, 39.332613 ], [ -76.927937, 39.332863 ], [ -76.927826, 39.333071 ], [ -76.927629, 39.333368 ], [ -76.927298, 39.333685 ], [ -76.926394, 39.334291 ], [ -76.926129, 39.334443 ], [ -76.926098, 39.334468 ], [ -76.925796, 39.334709 ], [ -76.92563, 39.334897 ], [ -76.925289, 39.335288 ], [ -76.925137, 39.335566 ], [ -76.924607, 39.336458 ], [ -76.924299, 39.337003 ], [ -76.924068, 39.337451 ], [ -76.9238, 39.337803 ], [ -76.92349, 39.338243 ], [ -76.923402, 39.338704 ], [ -76.923333, 39.338933 ], [ -76.923199, 39.339264 ], [ -76.923047, 39.339489 ], [ -76.922875, 39.339707 ], [ -76.92251, 39.340156 ], [ -76.921944, 39.340866 ], [ -76.921396, 39.341609 ], [ -76.921027, 39.342104 ], [ -76.920854, 39.34238 ], [ -76.920674, 39.342667 ], [ -76.920588, 39.342874 ], [ -76.920352, 39.343252 ], [ -76.91994, 39.343774 ], [ -76.919767, 39.343977 ], [ -76.919544, 39.344219 ], [ -76.919433, 39.344297 ], [ -76.919269, 39.344389 ], [ -76.919115, 39.344481 ], [ -76.918874, 39.344617 ], [ -76.918663, 39.344776 ], [ -76.918434, 39.345015 ], [ -76.918306, 39.345161 ], [ -76.918151, 39.34534 ], [ -76.917781, 39.345762 ], [ -76.917206, 39.346373 ], [ -76.917035, 39.346509 ], [ -76.916874, 39.346675 ], [ -76.916561, 39.346969 ], [ -76.916237, 39.347204 ], [ -76.91608, 39.347281 ], [ -76.916029, 39.347391 ], [ -76.916019, 39.347548 ], [ -76.915974, 39.347711 ], [ -76.915919, 39.347828 ], [ -76.915842, 39.347943 ], [ -76.91577, 39.348021 ], [ -76.915637, 39.348144 ], [ -76.915507, 39.348289 ], [ -76.915349, 39.348389 ], [ -76.915119, 39.348484 ], [ -76.914788, 39.348612 ], [ -76.914566, 39.348732 ], [ -76.914436, 39.348857 ], [ -76.9144, 39.348985 ], [ -76.914385, 39.349119 ], [ -76.914421, 39.349247 ], [ -76.914501, 39.34937 ], [ -76.91467, 39.349481 ], [ -76.914746, 39.349679 ], [ -76.914774, 39.349789 ], [ -76.914775, 39.349884 ], [ -76.914759, 39.349971 ], [ -76.914711, 39.350049 ], [ -76.914658, 39.350115 ], [ -76.914582, 39.350177 ], [ -76.914491, 39.350238 ], [ -76.914362, 39.3503 ], [ -76.91421, 39.350352 ], [ -76.914112, 39.350404 ], [ -76.914072, 39.350481 ], [ -76.91397, 39.350893 ], [ -76.913927, 39.35089 ], [ -76.913618, 39.35093 ], [ -76.913586, 39.350937 ], [ -76.913404, 39.350981 ], [ -76.912915, 39.350968 ], [ -76.912461, 39.350796 ], [ -76.912287, 39.35073 ], [ -76.912119, 39.35062 ], [ -76.911949, 39.350509 ], [ -76.911792, 39.350256 ], [ -76.911733, 39.349817 ], [ -76.911608, 39.349589 ], [ -76.911169, 39.349299 ], [ -76.910721, 39.349003 ], [ -76.910154, 39.348656 ], [ -76.909577, 39.348463 ], [ -76.909262, 39.3485 ], [ -76.909031, 39.348598 ], [ -76.908677, 39.34881 ], [ -76.908417, 39.349004 ], [ -76.908001, 39.349382 ], [ -76.907981, 39.34963 ], [ -76.908048, 39.349846 ], [ -76.908259, 39.349998 ], [ -76.908525, 39.350175 ], [ -76.908811, 39.350376 ], [ -76.90885, 39.350473 ], [ -76.908909, 39.35062 ], [ -76.908925, 39.351083 ], [ -76.908904, 39.351977 ], [ -76.908896, 39.352191 ], [ -76.90888, 39.352653 ], [ -76.908672, 39.352891 ], [ -76.908241, 39.353096 ], [ -76.907715, 39.353202 ], [ -76.907421, 39.35331 ], [ -76.907261, 39.35337 ], [ -76.90701, 39.35353 ], [ -76.906414, 39.353764 ], [ -76.905975, 39.353992 ], [ -76.905803, 39.354145 ], [ -76.905571, 39.35422 ], [ -76.905106, 39.354317 ], [ -76.904421, 39.354323 ], [ -76.903802, 39.354236 ], [ -76.903586, 39.354274 ], [ -76.903337, 39.354381 ], [ -76.903019, 39.354407 ], [ -76.902777, 39.354377 ], [ -76.902227, 39.354206 ], [ -76.901996, 39.354197 ], [ -76.901668, 39.354245 ], [ -76.901411, 39.354199 ], [ -76.901323, 39.354184 ], [ -76.901095, 39.35403 ], [ -76.900541, 39.353575 ], [ -76.90021, 39.353264 ], [ -76.899956, 39.35291 ], [ -76.899903, 39.352787 ], [ -76.899813, 39.35258 ], [ -76.899795, 39.352538 ], [ -76.899595, 39.35233 ], [ -76.899396, 39.352236 ], [ -76.899282, 39.352199 ], [ -76.89916, 39.352161 ], [ -76.899068, 39.352133 ], [ -76.898873, 39.352075 ], [ -76.898846, 39.352067 ], [ -76.898313, 39.351838 ], [ -76.898215, 39.351796 ], [ -76.89813, 39.351751 ], [ -76.897901, 39.35163 ], [ -76.897629, 39.351624 ], [ -76.89757, 39.351623 ], [ -76.897045, 39.351793 ], [ -76.896269, 39.352036 ], [ -76.896115, 39.352098 ], [ -76.895951, 39.352165 ], [ -76.895602, 39.352218 ], [ -76.895061, 39.352159 ], [ -76.894621, 39.352203 ], [ -76.894232, 39.352326 ], [ -76.894166, 39.352348 ], [ -76.893652, 39.352546 ], [ -76.893188, 39.352704 ], [ -76.891643, 39.352903 ], [ -76.891132, 39.353077 ], [ -76.89083, 39.353106 ], [ -76.890514, 39.353161 ], [ -76.890188, 39.353287 ], [ -76.890181, 39.35329 ], [ -76.889354, 39.353704 ], [ -76.889029, 39.353805 ], [ -76.888912, 39.353775 ], [ -76.888831, 39.353755 ], [ -76.888536, 39.353554 ], [ -76.888105, 39.353153 ], [ -76.888055, 39.35294 ], [ -76.88813, 39.352778 ], [ -76.888365, 39.352435 ], [ -76.888562, 39.352151 ], [ -76.888592, 39.352024 ], [ -76.888406, 39.351743 ], [ -76.887606, 39.351154 ], [ -76.886714, 39.350613 ], [ -76.886526, 39.350563 ], [ -76.886421, 39.350588 ], [ -76.886324, 39.350636 ], [ -76.886126, 39.350788 ], [ -76.886142, 39.351397 ], [ -76.886175, 39.352237 ], [ -76.886097, 39.352552 ], [ -76.88586, 39.352604 ], [ -76.885753, 39.352629 ], [ -76.884656, 39.352399 ], [ -76.884252, 39.352258 ], [ -76.884092, 39.352168 ], [ -76.884069, 39.352156 ], [ -76.884049, 39.352139 ], [ -76.884001, 39.3521 ], [ -76.883939, 39.352045 ], [ -76.883888, 39.351995 ], [ -76.883837, 39.35195 ], [ -76.883775, 39.351882 ], [ -76.883721, 39.351823 ], [ -76.883629, 39.35173 ], [ -76.883557, 39.351661 ], [ -76.883501, 39.351617 ], [ -76.883448, 39.35157 ], [ -76.883388, 39.351527 ], [ -76.883334, 39.351486 ], [ -76.883316, 39.351466 ], [ -76.883301, 39.351441 ], [ -76.883299, 39.351424 ], [ -76.8833, 39.351404 ], [ -76.883304, 39.351384 ], [ -76.883297, 39.351361 ], [ -76.883291, 39.351336 ], [ -76.883216, 39.351249 ], [ -76.88288, 39.350932 ], [ -76.882763, 39.350829 ], [ -76.882684, 39.350756 ], [ -76.882615, 39.350696 ], [ -76.882554, 39.35064 ], [ -76.882508, 39.350593 ], [ -76.882432, 39.3505 ], [ -76.882356, 39.350401 ], [ -76.882281, 39.350307 ], [ -76.882263, 39.350282 ], [ -76.882239, 39.350239 ], [ -76.882274, 39.350185 ], [ -76.882202, 39.349881 ], [ -76.882107, 39.349588 ], [ -76.882067, 39.349371 ], [ -76.882032, 39.349072 ], [ -76.881959, 39.348743 ], [ -76.881906, 39.34855 ], [ -76.881829, 39.348402 ], [ -76.88171, 39.348296 ], [ -76.881513, 39.348204 ], [ -76.881376, 39.348081 ], [ -76.88114, 39.347778 ], [ -76.880966, 39.347517 ], [ -76.880747, 39.347199 ], [ -76.88055, 39.34682 ], [ -76.880395, 39.346634 ], [ -76.88027, 39.346507 ], [ -76.880145, 39.346425 ], [ -76.879986, 39.346367 ], [ -76.879878, 39.346268 ], [ -76.879814, 39.346183 ], [ -76.879656, 39.345981 ], [ -76.879488, 39.345771 ], [ -76.879326, 39.345482 ], [ -76.879224, 39.345281 ], [ -76.879165, 39.345048 ], [ -76.879153, 39.344838 ], [ -76.879075, 39.344545 ], [ -76.878956, 39.344293 ], [ -76.878827, 39.343941 ], [ -76.878699, 39.343492 ], [ -76.878552, 39.343064 ], [ -76.878405, 39.342695 ], [ -76.878253, 39.34242 ], [ -76.878105, 39.342267 ], [ -76.877762, 39.342072 ], [ -76.87738, 39.341919 ], [ -76.876911, 39.341626 ], [ -76.876518, 39.341342 ], [ -76.876322, 39.341219 ], [ -76.876098, 39.340973 ], [ -76.875662, 39.340527 ], [ -76.875438, 39.34032 ], [ -76.875297, 39.340108 ], [ -76.875134, 39.339747 ], [ -76.875069, 39.339451 ], [ -76.875031, 39.339107 ], [ -76.875026, 39.338777 ], [ -76.875032, 39.338476 ], [ -76.875109, 39.338226 ], [ -76.875148, 39.33804 ], [ -76.875121, 39.337858 ], [ -76.875148, 39.337718 ], [ -76.875197, 39.337646 ], [ -76.875274, 39.33757 ], [ -76.875378, 39.337472 ], [ -76.875487, 39.337379 ], [ -76.875602, 39.337282 ], [ -76.875728, 39.33721 ], [ -76.875821, 39.337164 ], [ -76.875908, 39.337143 ], [ -76.876012, 39.33713 ], [ -76.876121, 39.337189 ], [ -76.87623, 39.337283 ], [ -76.876279, 39.337304 ], [ -76.876368, 39.337311 ], [ -76.876647, 39.337317 ], [ -76.877075, 39.33724 ], [ -76.877361, 39.337151 ], [ -76.877776, 39.33693 ], [ -76.878119, 39.336714 ], [ -76.878276, 39.336592 ], [ -76.87837, 39.336454 ], [ -76.878363, 39.336288 ], [ -76.878085, 39.335916 ], [ -76.877671, 39.335506 ], [ -76.877165, 39.335189 ], [ -76.876986, 39.335062 ], [ -76.876822, 39.334868 ], [ -76.876502, 39.334546 ], [ -76.876288, 39.334363 ], [ -76.875981, 39.334168 ], [ -76.875867, 39.333991 ], [ -76.875689, 39.333586 ], [ -76.87554, 39.333065 ], [ -76.875419, 39.33276 ], [ -76.875327, 39.332583 ], [ -76.875041, 39.332154 ], [ -76.874791, 39.331954 ], [ -76.874477, 39.331776 ], [ -76.874285, 39.331693 ], [ -76.874106, 39.331693 ], [ -76.873828, 39.331709 ], [ -76.873485, 39.331825 ], [ -76.87332, 39.331858 ], [ -76.873013, 39.331886 ], [ -76.872684, 39.331957 ], [ -76.87237, 39.33199 ], [ -76.872013, 39.331984 ], [ -76.871728, 39.331945 ], [ -76.871356, 39.331878 ], [ -76.870985, 39.331778 ], [ -76.870614, 39.331678 ], [ -76.870227, 39.331611 ], [ -76.869932, 39.331573 ], [ -76.869628, 39.331475 ], [ -76.869391, 39.331385 ], [ -76.869251, 39.331351 ], [ -76.869053, 39.331351 ], [ -76.868889, 39.331392 ], [ -76.868647, 39.331436 ], [ -76.868337, 39.331522 ], [ -76.868076, 39.331586 ], [ -76.867743, 39.331619 ], [ -76.867312, 39.331686 ], [ -76.867017, 39.331705 ], [ -76.866607, 39.331708 ], [ -76.866191, 39.331629 ], [ -76.86578, 39.331501 ], [ -76.865375, 39.331403 ], [ -76.865123, 39.331305 ], [ -76.864993, 39.331252 ], [ -76.864027, 39.330794 ], [ -76.86338, 39.330451 ], [ -76.862796, 39.330079 ], [ -76.862444, 39.329813 ], [ -76.861995, 39.329415 ], [ -76.861561, 39.328979 ], [ -76.861126, 39.3286 ], [ -76.860905, 39.328344 ], [ -76.860833, 39.328134 ], [ -76.860693, 39.327898 ], [ -76.860399, 39.327541 ], [ -76.860093, 39.327325 ], [ -76.86008, 39.327316 ], [ -76.859593, 39.327004 ], [ -76.859279, 39.326865 ], [ -76.858989, 39.326703 ], [ -76.858608, 39.32632 ], [ -76.858323, 39.326001 ], [ -76.85774, 39.325464 ], [ -76.857498, 39.325201 ], [ -76.856862, 39.324683 ], [ -76.85663, 39.324427 ], [ -76.856414, 39.324091 ], [ -76.856331, 39.324016 ], [ -76.856606, 39.323823 ], [ -76.856653, 39.323775 ], [ -76.858475, 39.322622 ], [ -76.861097, 39.320404 ], [ -76.861878, 39.319552 ], [ -76.863169, 39.318198 ], [ -76.863791, 39.317575 ], [ -76.863447, 39.316311 ], [ -76.863365, 39.316098 ], [ -76.863322, 39.315985 ], [ -76.863199, 39.315573 ], [ -76.863131, 39.315303 ], [ -76.863078, 39.315008 ] ] ] } }, +{ "type": "Feature", "properties": { "STATEFP10": "24", "COUNTYFP10": "027", "TRACTCE10": "602201", "GEOID10": "24027602201", "NAME10": "6022.01", "NAMELSAD10": "Census Tract 6022.01", "MTFCC10": "G5020", "FUNCSTAT10": "S", "ALAND10": 4611549, "AWATER10": 6125, "INTPTLAT10": "+39.2900228", "INTPTLON10": "-076.8721238" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -76.877496, 39.302901 ], [ -76.877473, 39.302921 ], [ -76.877444, 39.302953 ], [ -76.877412, 39.302971 ], [ -76.877377, 39.302975 ], [ -76.877342, 39.302995 ], [ -76.877237, 39.303065 ], [ -76.877074, 39.303153 ], [ -76.876993, 39.303189 ], [ -76.876877, 39.303292 ], [ -76.876703, 39.303485 ], [ -76.876493, 39.303717 ], [ -76.876392, 39.303677 ], [ -76.875803, 39.303442 ], [ -76.875485, 39.303304 ], [ -76.874962, 39.303044 ], [ -76.874166, 39.302697 ], [ -76.87337, 39.302359 ], [ -76.87273, 39.302082 ], [ -76.870822, 39.301262 ], [ -76.869593, 39.300737 ], [ -76.869016, 39.300494 ], [ -76.868661, 39.300336 ], [ -76.86793, 39.300013 ], [ -76.867603, 39.299888 ], [ -76.86639, 39.299345 ], [ -76.865139, 39.298813 ], [ -76.864048, 39.298387 ], [ -76.862788, 39.29796 ], [ -76.861513, 39.297574 ], [ -76.8603, 39.297254 ], [ -76.859642, 39.297082 ], [ -76.85898, 39.296931 ], [ -76.857948, 39.296713 ], [ -76.856944, 39.296531 ], [ -76.855857, 39.29638 ], [ -76.855908, 39.296094 ], [ -76.855981, 39.295678 ], [ -76.856063, 39.29522 ], [ -76.856189, 39.294589 ], [ -76.856387, 39.293907 ], [ -76.856418, 39.293731 ], [ -76.856645, 39.292447 ], [ -76.856869, 39.291341 ], [ -76.857125, 39.290075 ], [ -76.857304, 39.289352 ], [ -76.857405, 39.289047 ], [ -76.857549, 39.288533 ], [ -76.857606, 39.28822 ], [ -76.858093, 39.286203 ], [ -76.858132, 39.286042 ], [ -76.858565, 39.284547 ], [ -76.858697, 39.284104 ], [ -76.85882, 39.283107 ], [ -76.858877, 39.282786 ], [ -76.858997, 39.282204 ], [ -76.85905, 39.282088 ], [ -76.860231, 39.279532 ], [ -76.861319, 39.279613 ], [ -76.862262, 39.279682 ], [ -76.862409, 39.279695 ], [ -76.862832, 39.279734 ], [ -76.863218, 39.279769 ], [ -76.863616, 39.279806 ], [ -76.863834, 39.279826 ], [ -76.86472, 39.27992 ], [ -76.865352, 39.280007 ], [ -76.866008, 39.28009 ], [ -76.86667, 39.280177 ], [ -76.867262, 39.280267 ], [ -76.8679, 39.280363 ], [ -76.868465, 39.280437 ], [ -76.869799, 39.280679 ], [ -76.870132, 39.28075 ], [ -76.870703, 39.280897 ], [ -76.871374, 39.281081 ], [ -76.871936, 39.281275 ], [ -76.872155, 39.28135 ], [ -76.872481, 39.281469 ], [ -76.873267, 39.281885 ], [ -76.873448, 39.281984 ], [ -76.874056, 39.282319 ], [ -76.874382, 39.282527 ], [ -76.874609, 39.282655 ], [ -76.875409, 39.283105 ], [ -76.87634, 39.283634 ], [ -76.876647, 39.283789 ], [ -76.876769, 39.283851 ], [ -76.878118, 39.284545 ], [ -76.879398, 39.285165 ], [ -76.880399, 39.285636 ], [ -76.881729, 39.286274 ], [ -76.883128, 39.28694 ], [ -76.883825, 39.287277 ], [ -76.884595, 39.287649 ], [ -76.886098, 39.288336 ], [ -76.887661, 39.289074 ], [ -76.887773, 39.289128 ], [ -76.888796, 39.289621 ], [ -76.88911, 39.289772 ], [ -76.889613, 39.29001 ], [ -76.889729, 39.290065 ], [ -76.889806, 39.290103 ], [ -76.887026, 39.291856 ], [ -76.886833, 39.292029 ], [ -76.886718, 39.292148 ], [ -76.886589, 39.292308 ], [ -76.886311, 39.292658 ], [ -76.886129, 39.292856 ], [ -76.885965, 39.292988 ], [ -76.885804, 39.293124 ], [ -76.885588, 39.29327 ], [ -76.885241, 39.293487 ], [ -76.885133, 39.293576 ], [ -76.885056, 39.293646 ], [ -76.885004, 39.293736 ], [ -76.884951, 39.293858 ], [ -76.884903, 39.294 ], [ -76.884767, 39.294293 ], [ -76.884609, 39.294636 ], [ -76.884513, 39.294809 ], [ -76.884379, 39.295033 ], [ -76.884199, 39.295296 ], [ -76.884069, 39.29544 ], [ -76.883456, 39.296145 ], [ -76.883223, 39.296424 ], [ -76.882924, 39.296817 ], [ -76.882747, 39.29707 ], [ -76.882608, 39.297264 ], [ -76.882446, 39.297462 ], [ -76.88216, 39.297661 ], [ -76.881785, 39.297911 ], [ -76.881371, 39.298108 ], [ -76.881123, 39.298204 ], [ -76.880867, 39.29833 ], [ -76.880121, 39.298805 ], [ -76.879848, 39.29899 ], [ -76.879562, 39.299174 ], [ -76.879091, 39.299501 ], [ -76.878869, 39.299664 ], [ -76.878723, 39.299756 ], [ -76.877999, 39.300256 ], [ -76.877619, 39.300517 ], [ -76.87747, 39.300602 ], [ -76.877474, 39.300815 ], [ -76.877409, 39.301012 ], [ -76.877597, 39.301217 ], [ -76.877798, 39.301377 ], [ -76.877768, 39.301814 ], [ -76.878, 39.302105 ], [ -76.877992, 39.302313 ], [ -76.877842, 39.302501 ], [ -76.877693, 39.302711 ], [ -76.877569, 39.3028 ], [ -76.877496, 39.302901 ] ] ] } } +] +} 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 new file mode 100644 index 000000000..679a458e9 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/score/test_utils/test_adjacency.py @@ -0,0 +1,73 @@ +# pylint: disable=protected-access +# flake8: noqa=F841 +from contextlib import contextmanager +from functools import partial +from pathlib import Path +from unittest import mock + +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, +) + + +@contextmanager +def patch_calculate_tract_adjacency_scores(): + # Use fixtures for tract data. + tract_data_path = Path(__file__).parent / "data" / "us.geojson" + + get_tract_geojson_mock = partial( + get_tract_geojson, _tract_data_path=tract_data_path + ) + with mock.patch( + "data_pipeline.score.utils.get_tract_geojson", + new=get_tract_geojson_mock, + ): + yield original_calculate_tract_adjacency_score + + +@pytest.fixture +def score_data(): + score_csv = Path(__file__).parent / "data" / "scores.csv" + return pd.read_csv( + score_csv, dtype={field_names.GEOID_TRACT_FIELD: str, "included": bool} + ) + + +def test_all_adjacent_are_true(score_data): + score_data["included"] = True + score_data.loc[ + score_data.GEOID10_TRACT == "24027603004", "included" + ] = False + with patch_calculate_tract_adjacency_scores() as calculate_tract_adjacency_scores: + adjancency_scores = calculate_tract_adjacency_scores( + score_data, "included" + ) + assert ( + adjancency_scores.loc[ + adjancency_scores.GEOID10_TRACT == "24027603004", + "included" + field_names.ADJACENCY_INDEX_SUFFIX, + ].iloc[0] + == 1.0 + ) + + +def test_all_adjacent_are_false(score_data): + score_data["included"] = False + score_data.loc[ + score_data.GEOID10_TRACT == "24027603004", "included" + ] = False + with patch_calculate_tract_adjacency_scores() as calculate_tract_adjacency_scores: + adjancency_scores = calculate_tract_adjacency_scores( + score_data, "included" + ) + assert ( + adjancency_scores.loc[ + adjancency_scores.GEOID10_TRACT == "24027603004", + "included" + field_names.ADJACENCY_INDEX_SUFFIX, + ].iloc[0] + == 0.0 + ) diff --git a/data/data-pipeline/data_pipeline/tests/sources/cdc_life_expectancy/__init__.py b/data/data-pipeline/data_pipeline/tests/sources/cdc_life_expectancy/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/data/data-pipeline/data_pipeline/tests/sources/cdc_life_expectancy/data/ME_A.CSV b/data/data-pipeline/data_pipeline/tests/sources/cdc_life_expectancy/data/ME_A.CSV new file mode 100644 index 000000000..6c316fa38 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/cdc_life_expectancy/data/ME_A.CSV @@ -0,0 +1,2 @@ +"Tract ID","STATE2KX","CNTY2KX","TRACT2KX","e(0)","se(e(0))","Abridged life table flag" +23001010100,23,001,010100,72.3,2.2928,3 diff --git a/data/data-pipeline/data_pipeline/tests/sources/cdc_life_expectancy/data/US_A.CSV b/data/data-pipeline/data_pipeline/tests/sources/cdc_life_expectancy/data/US_A.CSV new file mode 100644 index 000000000..f021be4fc --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/cdc_life_expectancy/data/US_A.CSV @@ -0,0 +1,16 @@ +Tract ID,STATE2KX,CNTY2KX,TRACT2KX,e(0),se(e(0)),Abridged life table flag +15001021010,15,001,021010,77.4,1.6548,2 +15001021101,15,001,021101,82.5,3.9086,3 +15001021402,15,001,021402,80.4,1.093,2 +15001021800,15,001,021800,79.5,1.132,2 +15003010201,15,003,010201,79.4,1.5261,3 +15007040603,15,007,040603,86.3,2.2285,3 +15007040604,15,007,040604,84.9,2.1995,3 +15007040700,15,007,040700,80.4,0.7571,2 +15009030100,15,009,030100,77.2,1.8736,3 +15009030402,15,009,030402,83.5,1.8267,3 +15009030800,15,009,030800,82.2,1.6251,3 +06027000800,06,007,040500,99.1,3.1415,3 +06069000802,06,001,020100,99.1,3.1415,3 +06061021322,06,007,040300,99.1,3.1415,3 +15009030201,15,009,030201,99.1,3.1415,3 diff --git a/data/data-pipeline/data_pipeline/tests/sources/cdc_life_expectancy/data/WI_A.CSV b/data/data-pipeline/data_pipeline/tests/sources/cdc_life_expectancy/data/WI_A.CSV new file mode 100644 index 000000000..b166804e0 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/cdc_life_expectancy/data/WI_A.CSV @@ -0,0 +1,2 @@ +"Tract ID","STATE2KX","CNTY2KX","TRACT2KX","e(0)","se(e(0))","Abridged life table flag" +55001950201,55,001,950201,74.5,2.5471,3 diff --git a/data/data-pipeline/data_pipeline/tests/sources/cdc_life_expectancy/data/extract.csv b/data/data-pipeline/data_pipeline/tests/sources/cdc_life_expectancy/data/extract.csv new file mode 100644 index 000000000..17e0a8276 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/cdc_life_expectancy/data/extract.csv @@ -0,0 +1,16 @@ +Tract ID,STATE2KX,CNTY2KX,TRACT2KX,e(0),se(e(0)),Abridged life table flag +15001021010,15,1,21010,77.4000000000,1.6548000000,2 +15001021101,15,1,21101,82.5000000000,3.9086000000,3 +15001021402,15,1,21402,80.4000000000,1.0930000000,2 +15001021800,15,1,21800,79.5000000000,1.1320000000,2 +15003010201,15,3,10201,79.4000000000,1.5261000000,3 +15007040603,15,7,40603,86.3000000000,2.2285000000,3 +15007040604,15,7,40604,84.9000000000,2.1995000000,3 +15007040700,15,7,40700,80.4000000000,0.7571000000,2 +15009030100,15,9,30100,77.2000000000,1.8736000000,3 +15009030402,15,9,30402,83.5000000000,1.8267000000,3 +15009030800,15,9,30800,82.2000000000,1.6251000000,3 +6027000800,6,7,40500,99.1000000000,3.1415000000,3 +6069000802,6,1,20100,99.1000000000,3.1415000000,3 +6061021322,6,7,40300,99.1000000000,3.1415000000,3 +15009030201,15,9,30201,99.1000000000,3.1415000000,3 diff --git a/data/data-pipeline/data_pipeline/tests/sources/cdc_life_expectancy/data/output.csv b/data/data-pipeline/data_pipeline/tests/sources/cdc_life_expectancy/data/output.csv new file mode 100644 index 000000000..ca8909426 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/cdc_life_expectancy/data/output.csv @@ -0,0 +1,18 @@ +GEOID10_TRACT,Life expectancy (years) +15001021010,77.4000000000 +15001021101,82.5000000000 +15001021402,80.4000000000 +15001021800,79.5000000000 +15003010201,79.4000000000 +15007040603,86.3000000000 +15007040604,84.9000000000 +15007040700,80.4000000000 +15009030100,77.2000000000 +15009030402,83.5000000000 +15009030800,82.2000000000 +06027000800,99.1000000000 +06069000802,99.1000000000 +06061021322,99.1000000000 +15009030201,99.1000000000 +23001010100,72.3000000000 +55001950201,74.5000000000 diff --git a/data/data-pipeline/data_pipeline/tests/sources/cdc_life_expectancy/data/transform.csv b/data/data-pipeline/data_pipeline/tests/sources/cdc_life_expectancy/data/transform.csv new file mode 100644 index 000000000..6cff770b4 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/cdc_life_expectancy/data/transform.csv @@ -0,0 +1,18 @@ +GEOID10_TRACT,STATE2KX,CNTY2KX,TRACT2KX,Life expectancy (years),se(e(0)),Abridged life table flag +15001021010,15,1,21010,77.4000000000,1.6548000000,2 +15001021101,15,1,21101,82.5000000000,3.9086000000,3 +15001021402,15,1,21402,80.4000000000,1.0930000000,2 +15001021800,15,1,21800,79.5000000000,1.1320000000,2 +15003010201,15,3,10201,79.4000000000,1.5261000000,3 +15007040603,15,7,40603,86.3000000000,2.2285000000,3 +15007040604,15,7,40604,84.9000000000,2.1995000000,3 +15007040700,15,7,40700,80.4000000000,0.7571000000,2 +15009030100,15,9,30100,77.2000000000,1.8736000000,3 +15009030402,15,9,30402,83.5000000000,1.8267000000,3 +15009030800,15,9,30800,82.2000000000,1.6251000000,3 +06027000800,06,7,40500,99.1000000000,3.1415000000,3 +06069000802,06,1,20100,99.1000000000,3.1415000000,3 +06061021322,06,7,40300,99.1000000000,3.1415000000,3 +15009030201,15,9,30201,99.1000000000,3.1415000000,3 +23001010100,23,1,10100,72.3000000000,2.2928000000,3 +55001950201,55,1,950201,74.5000000000,2.5471000000,3 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 new file mode 100644 index 000000000..271ba800e --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/cdc_life_expectancy/test_etl.py @@ -0,0 +1,113 @@ +# 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 +from data_pipeline.tests.sources.example.test_etl import TestETL +from data_pipeline.utils import get_module_logger + +logger = get_module_logger(__name__) + + +class TestCDCLifeExpectency(TestETL): + """Tests the CDC Life Expectancy ETL. + + This uses pytest-snapshot. + To update individual snapshots: $ poetry run pytest + data_pipeline/tests/sources/cdc_life_expectancy/test_etl.py::TestClassNameETL:: + --snapshot-update + """ + + _ETL_CLASS = CDCLifeExpectancy + + _SAMPLE_DATA_PATH = pathlib.Path(__file__).parents[0] / "data" + _SAMPLE_DATA_FILE_NAME = "US_A.CSV" + _SAMPLE_DATA_ZIP_FILE_NAME = None + _EXTRACT_TMP_FOLDER_NAME = "CDCLifeExpectanc" + _EXTRACT_CSV_FILE_NAME = "extract.csv" + _FIXTURES_SHARED_TRACT_IDS = TestETL._FIXTURES_SHARED_TRACT_IDS + [ + "55001950201", # WI + "23001010100", # ME + ] + + def setup_method(self, _method, filename=__file__): + """Invoke `setup_method` from Parent, but using the current file name. + + This code can be copied identically between all child classes. + """ + super().setup_method(_method=_method, filename=filename) + + def _setup_etl_instance_and_run_extract( + self, mock_etl, mock_paths + ) -> ExtractTransformLoad: + """Method to setup an ETL instance with proper upstream mocks to run extract. + This must be re-implemented in every child class. + + This method can be used by multiple tests that need to run the same fixtures + that need these same mocks. + + In order to re-implement this method, usually it will involve a + decent amount of work to monkeypatch `requests` or another method that's + used to retrieve data in order to force that method to retrieve the fixture + data. A basic version of that patching is included here for classes that can use it. + """ + + with mock.patch( + "data_pipeline.utils.requests" + ) as requests_mock, mock.patch( + "data_pipeline.etl.score.etl_utils.get_state_fips_codes" + ) as mock_get_state_fips_codes: + tmp_path = mock_paths[1] + + def fake_get(url, *args, **kwargs): + file_path = url.split("/")[-1] + with open( + self._DATA_DIRECTORY_FOR_TEST / file_path, + "rb", + ) as file: + file_contents = file.read() + + response_mock = requests.Response() + response_mock.status_code = 200 + # pylint: disable=protected-access + # Return text fixture: + response_mock._content = file_contents + return response_mock + + requests_mock.get = fake_get + mock_get_state_fips_codes.return_value = [ + x[0:2] for x in self._FIXTURES_SHARED_TRACT_IDS + ] + # Instantiate the ETL class. + etl = self._get_instance_of_etl_class() + + # Monkey-patch the temporary directory to the one used in the test + etl.TMP_PATH = tmp_path + + # Run the extract method. + etl.extract() + return etl + + def test_init(self, mock_etl, mock_paths): + etl = self._ETL_CLASS() + data_path, _ = mock_paths + assert etl.DATA_PATH == data_path + assert etl.COLUMNS_TO_KEEP == [ + "GEOID10_TRACT", + "Life expectancy (years)", + ] + assert etl.INPUT_GEOID_TRACT_FIELD_NAME == "Tract ID" + assert etl.LIFE_EXPECTANCY_FIELD_NAME == "Life expectancy (years)" + + def test_get_output_file_path(self, mock_etl, mock_paths): + """Tests the right file name is returned.""" + etl = self._ETL_CLASS() + data_path, tmp_path = mock_paths + + output_file_path = etl._get_output_file_path() + expected_output_file_path = ( + data_path / "dataset" / "cdc_life_expectancy" / "usa.csv" + ) + assert output_file_path == expected_output_file_path diff --git a/data/data-pipeline/data_pipeline/tests/sources/cdc_places/__init__.py b/data/data-pipeline/data_pipeline/tests/sources/cdc_places/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/data/data-pipeline/data_pipeline/tests/sources/cdc_places/data/census_tract.csv b/data/data-pipeline/data_pipeline/tests/sources/cdc_places/data/census_tract.csv new file mode 100644 index 000000000..3530d6459 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/cdc_places/data/census_tract.csv @@ -0,0 +1,451 @@ +Year,StateAbbr,StateDesc,CountyName,CountyFIPS,LocationName,DataSource,Category,Measure,Data_Value_Unit,Data_Value_Type,Data_Value,Data_Value_Footnote_Symbol,Data_Value_Footnote,Low_Confidence_Limit,High_Confidence_Limit,TotalPopulation,Geolocation,LocationID,CategoryID,MeasureId,DataValueTypeID,Short_Question_Text +2019,CA,California,Inyo,06027,06027000800,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,36.1,,,35.2,36.8,3378,POINT (-117.1176757 36.25159703),06027000800,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2019,CA,California,Inyo,06027,06027000800,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,13.1,,,12.6,13.6,3378,POINT (-117.1176757 36.25159703),06027000800,HLTHOUT,DIABETES,CrdPrv,Diabetes +2019,CA,California,Inyo,06027,06027000800,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,15.1,,,14.4,15.8,3378,POINT (-117.1176757 36.25159703),06027000800,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2018,CA,California,Inyo,06027,06027000800,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,82.0,,,80.5,83.4,3378,POINT (-117.1176757 36.25159703),06027000800,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,CA,California,Inyo,06027,06027000800,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,14.2,,,12.8,15.6,3378,POINT (-117.1176757 36.25159703),06027000800,PREVENT,ACCESS2,CrdPrv,Health Insurance +2018,CA,California,Inyo,06027,06027000800,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,33.1,,,32.1,34.1,3378,POINT (-117.1176757 36.25159703),06027000800,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,CA,California,Inyo,06027,06027000800,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,86.4,,,86.1,86.7,3378,POINT (-117.1176757 36.25159703),06027000800,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2019,CA,California,Inyo,06027,06027000800,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,17.2,,,15.8,18.5,3378,POINT (-117.1176757 36.25159703),06027000800,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2019,CA,California,Inyo,06027,06027000800,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,8.6,,,8.1,9.1,3378,POINT (-117.1176757 36.25159703),06027000800,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2019,CA,California,Inyo,06027,06027000800,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,30.2,,,29.4,31.0,3378,POINT (-117.1176757 36.25159703),06027000800,HLTHOUT,OBESITY,CrdPrv,Obesity +2019,CA,California,Inyo,06027,06027000800,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,24.2,,,22.4,25.9,3378,POINT (-117.1176757 36.25159703),06027000800,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,CA,California,Inyo,06027,06027000800,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,74.3,,,73.6,74.9,3378,POINT (-117.1176757 36.25159703),06027000800,PREVENT,BPMED,CrdPrv,Taking BP Medication +2019,CA,California,Inyo,06027,06027000800,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,3.9,,,3.8,4.1,3378,POINT (-117.1176757 36.25159703),06027000800,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2019,CA,California,Inyo,06027,06027000800,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,16.8,,,15.8,17.7,3378,POINT (-117.1176757 36.25159703),06027000800,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2018,CA,California,Inyo,06027,06027000800,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,25.6,,,22.4,29.2,3378,POINT (-117.1176757 36.25159703),06027000800,PREVENT,COREW,CrdPrv,Core preventive services for older women +2018,CA,California,Inyo,06027,06027000800,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,26.5,,,24.0,29.1,3378,POINT (-117.1176757 36.25159703),06027000800,PREVENT,COREM,CrdPrv,Core preventive services for older men +2019,CA,California,Inyo,06027,06027000800,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,72.5,,,71.9,73.0,3378,POINT (-117.1176757 36.25159703),06027000800,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2019,CA,California,Inyo,06027,06027000800,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,26.9,,,25.3,28.4,3378,POINT (-117.1176757 36.25159703),06027000800,RISKBEH,LPA,CrdPrv,Physical Inactivity +2019,CA,California,Inyo,06027,06027000800,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,35.8,,,35.2,36.5,3378,POINT (-117.1176757 36.25159703),06027000800,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2019,CA,California,Inyo,06027,06027000800,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,8.3,,,8.0,8.5,3378,POINT (-117.1176757 36.25159703),06027000800,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2019,CA,California,Inyo,06027,06027000800,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,19.5,,,18.9,20.2,3378,POINT (-117.1176757 36.25159703),06027000800,HLTHOUT,DEPRESSION,CrdPrv,Depression +2019,CA,California,Inyo,06027,06027000800,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,9.2,,,8.4,10.0,3378,POINT (-117.1176757 36.25159703),06027000800,HLTHOUT,COPD,CrdPrv,COPD +2019,CA,California,Inyo,06027,06027000800,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,16.2,,,15.8,16.6,3378,POINT (-117.1176757 36.25159703),06027000800,RISKBEH,BINGE,CrdPrv,Binge Drinking +2018,CA,California,Inyo,06027,06027000800,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,17.7,,,14.2,21.6,3378,POINT (-117.1176757 36.25159703),06027000800,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2019,CA,California,Inyo,06027,06027000800,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,10.1,,,9.7,10.4,3378,POINT (-117.1176757 36.25159703),06027000800,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2018,CA,California,Inyo,06027,06027000800,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,74.9,,,72.7,77.0,3378,POINT (-117.1176757 36.25159703),06027000800,PREVENT,MAMMOUSE,CrdPrv,Mammography +2018,CA,California,Inyo,06027,06027000800,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,58.1,,,55.6,59.9,3378,POINT (-117.1176757 36.25159703),06027000800,PREVENT,DENTAL,CrdPrv,Dental Visit +2018,CA,California,Inyo,06027,06027000800,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,61.5,,,59.2,63.6,3378,POINT (-117.1176757 36.25159703),06027000800,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,CA,California,Inyo,06027,06027000800,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,28.5,,,27.8,29.2,3378,POINT (-117.1176757 36.25159703),06027000800,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2019,CA,California,Inyo,06027,06027000800,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,4.6,,,4.3,4.9,3378,POINT (-117.1176757 36.25159703),06027000800,HLTHOUT,STROKE,CrdPrv,Stroke +2019,CA,California,Placer,06061,06061021322,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,23.0,,,22.2,24.0,8762,POINT (-121.4057179 38.84598382),06061021322,HLTHOUT,OBESITY,CrdPrv,Obesity +2019,CA,California,Placer,06061,06061021322,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,23.2,,,22.5,23.9,8762,POINT (-121.4057179 38.84598382),06061021322,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2019,CA,California,Placer,06061,06061021322,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,3.9,,,3.7,4.2,8762,POINT (-121.4057179 38.84598382),06061021322,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2019,CA,California,Placer,06061,06061021322,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,16.6,,,15.2,18.1,8762,POINT (-121.4057179 38.84598382),06061021322,RISKBEH,LPA,CrdPrv,Physical Inactivity +2019,CA,California,Placer,06061,06061021322,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,17.2,,,16.4,18.0,8762,POINT (-121.4057179 38.84598382),06061021322,HLTHOUT,DEPRESSION,CrdPrv,Depression +2019,CA,California,Placer,06061,06061021322,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,18.9,,,18.3,19.5,8762,POINT (-121.4057179 38.84598382),06061021322,RISKBEH,BINGE,CrdPrv,Binge Drinking +2018,CA,California,Placer,06061,06061021322,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,35.7,,,31.8,39.8,8762,POINT (-121.4057179 38.84598382),06061021322,PREVENT,COREM,CrdPrv,Core preventive services for older men +2018,CA,California,Placer,06061,06061021322,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,31.9,,,30.6,33.2,8762,POINT (-121.4057179 38.84598382),06061021322,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,CA,California,Placer,06061,06061021322,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,2.2,,,2.1,2.3,8762,POINT (-121.4057179 38.84598382),06061021322,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2019,CA,California,Placer,06061,06061021322,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,8.6,,,8.2,8.9,8762,POINT (-121.4057179 38.84598382),06061021322,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2019,CA,California,Placer,06061,06061021322,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,12.0,,,11.1,13.0,8762,POINT (-121.4057179 38.84598382),06061021322,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2018,CA,California,Placer,06061,06061021322,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,83.4,,,81.6,85.2,8762,POINT (-121.4057179 38.84598382),06061021322,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,CA,California,Placer,06061,06061021322,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,6.9,,,6.6,7.3,8762,POINT (-121.4057179 38.84598382),06061021322,HLTHOUT,DIABETES,CrdPrv,Diabetes +2018,CA,California,Placer,06061,06061021322,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,34.4,,,30.3,38.5,8762,POINT (-121.4057179 38.84598382),06061021322,PREVENT,COREW,CrdPrv,Core preventive services for older women +2019,CA,California,Placer,06061,06061021322,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,28.8,,,28.2,29.4,8762,POINT (-121.4057179 38.84598382),06061021322,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2019,CA,California,Placer,06061,06061021322,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,86.2,,,85.7,86.8,8762,POINT (-121.4057179 38.84598382),06061021322,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2018,CA,California,Placer,06061,06061021322,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,78.2,,,75.6,80.3,8762,POINT (-121.4057179 38.84598382),06061021322,PREVENT,MAMMOUSE,CrdPrv,Mammography +2019,CA,California,Placer,06061,06061021322,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,5.9,,,5.7,6.1,8762,POINT (-121.4057179 38.84598382),06061021322,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2019,CA,California,Placer,06061,06061021322,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,2.2,,,2.0,2.4,8762,POINT (-121.4057179 38.84598382),06061021322,HLTHOUT,STROKE,CrdPrv,Stroke +2018,CA,California,Placer,06061,06061021322,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,72.1,,,69.9,74.0,8762,POINT (-121.4057179 38.84598382),06061021322,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,CA,California,Placer,06061,06061021322,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,9.0,,,7.8,10.6,8762,POINT (-121.4057179 38.84598382),06061021322,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,CA,California,Placer,06061,06061021322,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,11.4,,,9.8,13.2,8762,POINT (-121.4057179 38.84598382),06061021322,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2019,CA,California,Placer,06061,06061021322,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,67.4,,,66.4,68.4,8762,POINT (-121.4057179 38.84598382),06061021322,PREVENT,BPMED,CrdPrv,Taking BP Medication +2019,CA,California,Placer,06061,06061021322,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,9.4,,,8.7,10.1,8762,POINT (-121.4057179 38.84598382),06061021322,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2019,CA,California,Placer,06061,06061021322,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,70.2,,,69.4,70.9,8762,POINT (-121.4057179 38.84598382),06061021322,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2018,CA,California,Placer,06061,06061021322,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,7.6,,,5.6,10.0,8762,POINT (-121.4057179 38.84598382),06061021322,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2019,CA,California,Placer,06061,06061021322,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,12.3,,,11.0,13.6,8762,POINT (-121.4057179 38.84598382),06061021322,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,CA,California,Placer,06061,06061021322,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,4.2,,,3.8,4.8,8762,POINT (-121.4057179 38.84598382),06061021322,HLTHOUT,COPD,CrdPrv,COPD +2019,CA,California,Placer,06061,06061021322,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,18.7,,,18.0,19.4,8762,POINT (-121.4057179 38.84598382),06061021322,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2018,CA,California,Placer,06061,06061021322,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,71.8,,,69.5,74.1,8762,POINT (-121.4057179 38.84598382),06061021322,PREVENT,DENTAL,CrdPrv,Dental Visit +2019,CA,California,San Benito,06069,06069000802,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,6.5,,,5.9,7.0,2534,POINT (-121.0070559 36.54987144),06069000802,HLTHOUT,COPD,CrdPrv,COPD +2018,CA,California,San Benito,06069,06069000802,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,12.3,,,9.6,15.5,2534,POINT (-121.0070559 36.54987144),06069000802,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2018,CA,California,San Benito,06069,06069000802,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,77.6,,,75.4,79.6,2534,POINT (-121.0070559 36.54987144),06069000802,PREVENT,MAMMOUSE,CrdPrv,Mammography +2019,CA,California,San Benito,06069,06069000802,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,9.3,,,9.0,9.6,2534,POINT (-121.0070559 36.54987144),06069000802,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2019,CA,California,San Benito,06069,06069000802,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,23.6,,,23.0,24.3,2534,POINT (-121.0070559 36.54987144),06069000802,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2018,CA,California,San Benito,06069,06069000802,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,64.8,,,62.9,67.0,2534,POINT (-121.0070559 36.54987144),06069000802,PREVENT,DENTAL,CrdPrv,Dental Visit +2019,CA,California,San Benito,06069,06069000802,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,2.9,,,2.8,3.0,2534,POINT (-121.0070559 36.54987144),06069000802,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2018,CA,California,San Benito,06069,06069000802,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,84.7,,,83.5,86.0,2534,POINT (-121.0070559 36.54987144),06069000802,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,CA,California,San Benito,06069,06069000802,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,18.7,,,18.3,19.1,2534,POINT (-121.0070559 36.54987144),06069000802,RISKBEH,BINGE,CrdPrv,Binge Drinking +2019,CA,California,San Benito,06069,06069000802,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,13.5,,,12.9,14.2,2534,POINT (-121.0070559 36.54987144),06069000802,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2018,CA,California,San Benito,06069,06069000802,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,30.3,,,26.8,34.1,2534,POINT (-121.0070559 36.54987144),06069000802,PREVENT,COREM,CrdPrv,Core preventive services for older men +2019,CA,California,San Benito,06069,06069000802,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,13.4,,,12.7,14.2,2534,POINT (-121.0070559 36.54987144),06069000802,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2019,CA,California,San Benito,06069,06069000802,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,19.2,,,18.6,19.9,2534,POINT (-121.0070559 36.54987144),06069000802,HLTHOUT,DEPRESSION,CrdPrv,Depression +2019,CA,California,San Benito,06069,06069000802,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,7.0,,,6.8,7.2,2534,POINT (-121.0070559 36.54987144),06069000802,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2019,CA,California,San Benito,06069,06069000802,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,32.7,,,32.1,33.3,2534,POINT (-121.0070559 36.54987144),06069000802,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2019,CA,California,San Benito,06069,06069000802,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,87.1,,,86.9,87.2,2534,POINT (-121.0070559 36.54987144),06069000802,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2018,CA,California,San Benito,06069,06069000802,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,31.9,,,30.7,32.8,2534,POINT (-121.0070559 36.54987144),06069000802,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,CA,California,San Benito,06069,06069000802,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,18.9,,,17.5,20.4,2534,POINT (-121.0070559 36.54987144),06069000802,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,CA,California,San Benito,06069,06069000802,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,70.6,,,69.8,71.2,2534,POINT (-121.0070559 36.54987144),06069000802,PREVENT,BPMED,CrdPrv,Taking BP Medication +2018,CA,California,San Benito,06069,06069000802,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,29.3,,,26.0,32.8,2534,POINT (-121.0070559 36.54987144),06069000802,PREVENT,COREW,CrdPrv,Core preventive services for older women +2019,CA,California,San Benito,06069,06069000802,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,71.1,,,70.5,71.7,2534,POINT (-121.0070559 36.54987144),06069000802,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2019,CA,California,San Benito,06069,06069000802,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,3.2,,,3.0,3.4,2534,POINT (-121.0070559 36.54987144),06069000802,HLTHOUT,STROKE,CrdPrv,Stroke +2018,CA,California,San Benito,06069,06069000802,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,65.7,,,63.5,67.7,2534,POINT (-121.0070559 36.54987144),06069000802,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,CA,California,San Benito,06069,06069000802,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,22.7,,,21.4,24.1,2534,POINT (-121.0070559 36.54987144),06069000802,RISKBEH,LPA,CrdPrv,Physical Inactivity +2019,CA,California,San Benito,06069,06069000802,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,13.2,,,11.9,14.5,2534,POINT (-121.0070559 36.54987144),06069000802,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,CA,California,San Benito,06069,06069000802,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,10.2,,,9.8,10.6,2534,POINT (-121.0070559 36.54987144),06069000802,HLTHOUT,DIABETES,CrdPrv,Diabetes +2019,CA,California,San Benito,06069,06069000802,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,30.2,,,29.5,30.9,2534,POINT (-121.0070559 36.54987144),06069000802,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2019,CA,California,San Benito,06069,06069000802,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,5.8,,,5.5,6.1,2534,POINT (-121.0070559 36.54987144),06069000802,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2019,CA,California,San Benito,06069,06069000802,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,29.2,,,28.4,30.0,2534,POINT (-121.0070559 36.54987144),06069000802,HLTHOUT,OBESITY,CrdPrv,Obesity +2019,CA,California,San Benito,06069,06069000802,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,14.5,,,13.3,15.7,2534,POINT (-121.0070559 36.54987144),06069000802,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,73.5,,,73.1,73.8,6322,POINT (-155.8112721 20.16059783),15001021800,PREVENT,BPMED,CrdPrv,Taking BP Medication +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,29.4,,,29.0,29.8,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,OBESITY,CrdPrv,Obesity +2018,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,23.4,,,20.4,26.5,3531,POINT (-154.8953489 19.44949565),15001021101,PREVENT,COREW,CrdPrv,Core preventive services for older women +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,20.7,,,20.5,20.9,7884,POINT (-155.1037996 19.49754656),15001021010,RISKBEH,BINGE,CrdPrv,Binge Drinking +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,12.4,,,11.9,12.9,4025,POINT (-155.906965 19.51804981),15001021402,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,24.3,,,24.0,24.7,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,OBESITY,CrdPrv,Obesity +2018,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,64.9,,,63.7,66.2,4025,POINT (-155.906965 19.51804981),15001021402,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,15.9,,,15.6,16.3,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,DEPRESSION,CrdPrv,Depression +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,10.8,,,10.3,11.3,6322,POINT (-155.8112721 20.16059783),15001021800,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,24.9,,,23.8,25.9,4025,POINT (-155.906965 19.51804981),15001021402,RISKBEH,LPA,CrdPrv,Physical Inactivity +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,3.0,,,3.0,3.1,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,16.0,,,14.9,17.2,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,21.1,,,20.8,21.4,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,DEPRESSION,CrdPrv,Depression +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,11.3,,,11.1,11.5,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2018,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,82.3,,,81.3,83.2,4025,POINT (-155.906965 19.51804981),15001021402,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,2.9,,,2.8,3.0,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,74.5,,,73.9,75.1,3531,POINT (-154.8953489 19.44949565),15001021101,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,5.8,,,5.5,6.0,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,COPD,CrdPrv,COPD +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,15.6,,,14.7,16.5,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,18.2,,,18.0,18.4,4025,POINT (-155.906965 19.51804981),15001021402,RISKBEH,BINGE,CrdPrv,Binge Drinking +2018,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,20.3,,,17.4,23.4,3531,POINT (-154.8953489 19.44949565),15001021101,PREVENT,COREM,CrdPrv,Core preventive services for older men +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,11.5,,,10.9,12.2,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,DIABETES,CrdPrv,Diabetes +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,28.8,,,28.6,29.1,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2018,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,10.1,,,9.1,11.3,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2018,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,22.6,,,21.1,24.3,7884,POINT (-155.1037996 19.49754656),15001021010,PREVENT,COREW,CrdPrv,Core preventive services for older women +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,14.0,,,13.6,14.3,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,72.6,,,72.3,72.9,7884,POINT (-155.1037996 19.49754656),15001021010,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,32.6,,,31.6,33.6,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2018,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,83.2,,,82.6,83.9,6322,POINT (-155.8112721 20.16059783),15001021800,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2018,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,8.5,,,7.2,10.1,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,19.8,,,19.1,20.6,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,DEPRESSION,CrdPrv,Depression +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,17.8,,,17.4,18.3,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,29.5,,,29.2,29.8,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,83.8,,,83.7,83.9,4025,POINT (-155.906965 19.51804981),15001021402,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2018,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,61.9,,,60.9,63.0,7884,POINT (-155.1037996 19.49754656),15001021010,PREVENT,DENTAL,CrdPrv,Dental Visit +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,5.9,,,5.9,6.1,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2018,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,13.3,,,11.7,15.1,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,13.2,,,12.9,13.6,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,82.5,,,82.4,82.6,3531,POINT (-154.8953489 19.44949565),15001021101,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,23.8,,,23.4,24.2,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,9.2,,,9.0,9.4,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,11.2,,,10.8,11.5,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,DIABETES,CrdPrv,Diabetes +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,10.4,,,10.0,10.7,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2018,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,20.5,,,19.1,22.0,6322,POINT (-155.8112721 20.16059783),15001021800,PREVENT,COREM,CrdPrv,Core preventive services for older men +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,79.8,,,79.7,79.9,7884,POINT (-155.1037996 19.49754656),15001021010,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2018,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,39.4,,,38.2,41.2,3531,POINT (-154.8953489 19.44949565),15001021101,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,29.6,,,29.1,30.2,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,29.8,,,29.4,30.2,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,21.7,,,21.3,22.1,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,OBESITY,CrdPrv,Obesity +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,6.4,,,6.2,6.6,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,3.2,,,3.1,3.3,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,22.6,,,21.7,23.6,7884,POINT (-155.1037996 19.49754656),15001021010,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,10.7,,,10.5,11.0,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,DIABETES,CrdPrv,Diabetes +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,19.1,,,18.7,19.5,3531,POINT (-154.8953489 19.44949565),15001021101,RISKBEH,BINGE,CrdPrv,Binge Drinking +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,11.4,,,10.6,12.1,4025,POINT (-155.906965 19.51804981),15001021402,PREVENT,ACCESS2,CrdPrv,Health Insurance +2018,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,76.2,,,75.3,77.1,6322,POINT (-155.8112721 20.16059783),15001021800,PREVENT,MAMMOUSE,CrdPrv,Mammography +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,70.6,,,70.1,71.0,7884,POINT (-155.1037996 19.49754656),15001021010,PREVENT,BPMED,CrdPrv,Taking BP Medication +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,25.7,,,24.8,26.6,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2018,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,21.4,,,19.4,23.6,4025,POINT (-155.906965 19.51804981),15001021402,PREVENT,COREM,CrdPrv,Core preventive services for older men +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,9.8,,,9.6,9.9,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,12.5,,,11.9,13.1,7884,POINT (-155.1037996 19.49754656),15001021010,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,3.6,,,3.4,3.7,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,STROKE,CrdPrv,Stroke +2018,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,65.5,,,63.5,68.0,3531,POINT (-154.8953489 19.44949565),15001021101,PREVENT,DENTAL,CrdPrv,Dental Visit +2018,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,40.2,,,39.7,40.7,6322,POINT (-155.8112721 20.16059783),15001021800,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,3.5,,,3.3,3.6,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,4.0,,,3.9,4.2,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,STROKE,CrdPrv,Stroke +2018,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,63.8,,,61.3,66.1,3531,POINT (-154.8953489 19.44949565),15001021101,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2018,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,42.6,,,41.8,43.1,7884,POINT (-155.1037996 19.49754656),15001021010,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,83.1,,,83.0,83.3,6322,POINT (-155.8112721 20.16059783),15001021800,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,27.3,,,26.5,28.1,7884,POINT (-155.1037996 19.49754656),15001021010,RISKBEH,LPA,CrdPrv,Physical Inactivity +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,7.4,,,7.1,7.8,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,COPD,CrdPrv,COPD +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,25.8,,,24.0,27.7,3531,POINT (-154.8953489 19.44949565),15001021101,RISKBEH,LPA,CrdPrv,Physical Inactivity +2018,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,60.7,,,59.6,61.7,7884,POINT (-155.1037996 19.49754656),15001021010,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,17.7,,,17.4,17.9,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,DEPRESSION,CrdPrv,Depression +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,18.0,,,17.1,19.0,4025,POINT (-155.906965 19.51804981),15001021402,HLTHSTAT,GHLTH,CrdPrv,General Health +2018,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,24.1,,,22.7,25.6,6322,POINT (-155.8112721 20.16059783),15001021800,PREVENT,COREW,CrdPrv,Core preventive services for older women +2018,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,83.4,,,82.0,84.8,3531,POINT (-154.8953489 19.44949565),15001021101,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,74.4,,,73.9,74.9,4025,POINT (-155.906965 19.51804981),15001021402,PREVENT,BPMED,CrdPrv,Taking BP Medication +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,4.2,,,3.9,4.5,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,STROKE,CrdPrv,Stroke +2018,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,24.8,,,22.8,26.9,4025,POINT (-155.906965 19.51804981),15001021402,PREVENT,COREW,CrdPrv,Core preventive services for older women +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,75.9,,,75.6,76.3,4025,POINT (-155.906965 19.51804981),15001021402,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,18.3,,,17.6,19.0,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,75.4,,,75.2,75.7,6322,POINT (-155.8112721 20.16059783),15001021800,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,19.2,,,19.0,19.4,6322,POINT (-155.8112721 20.16059783),15001021800,RISKBEH,BINGE,CrdPrv,Binge Drinking +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,13.2,,,12.7,13.6,4025,POINT (-155.906965 19.51804981),15001021402,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,6.0,,,5.8,6.3,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,24.0,,,23.3,24.8,6322,POINT (-155.8112721 20.16059783),15001021800,RISKBEH,LPA,CrdPrv,Physical Inactivity +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,11.2,,,10.9,11.4,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,DIABETES,CrdPrv,Diabetes +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,30.6,,,30.2,31.0,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,6.7,,,6.6,6.8,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,19.3,,,17.2,21.4,3531,POINT (-154.8953489 19.44949565),15001021101,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2018,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,40.2,,,39.3,41.0,4025,POINT (-155.906965 19.51804981),15001021402,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,10.2,,,9.1,11.4,3531,POINT (-154.8953489 19.44949565),15001021101,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,16.7,,,16.2,17.2,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2018,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,66.0,,,65.0,67.0,6322,POINT (-155.8112721 20.16059783),15001021800,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,5.2,,,4.9,5.5,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,COPD,CrdPrv,COPD +2018,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,67.4,,,66.4,68.4,6322,POINT (-155.8112721 20.16059783),15001021800,PREVENT,DENTAL,CrdPrv,Dental Visit +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,6.8,,,6.6,7.0,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,21.1,,,20.6,21.5,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2018,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,83.0,,,82.5,83.7,7884,POINT (-155.1037996 19.49754656),15001021010,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,22.6,,,22.2,22.9,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2018,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,75.9,,,74.6,77.2,4025,POINT (-155.906965 19.51804981),15001021402,PREVENT,MAMMOUSE,CrdPrv,Mammography +2018,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,68.3,,,67.0,69.7,4025,POINT (-155.906965 19.51804981),15001021402,PREVENT,DENTAL,CrdPrv,Dental Visit +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,30.8,,,30.2,31.4,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,74.6,,,73.7,75.4,3531,POINT (-154.8953489 19.44949565),15001021101,PREVENT,BPMED,CrdPrv,Taking BP Medication +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,6.3,,,6.2,6.4,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,27.9,,,27.0,28.8,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,OBESITY,CrdPrv,Obesity +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,29.8,,,29.4,30.2,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2018,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,76.2,,,75.1,77.3,7884,POINT (-155.1037996 19.49754656),15001021010,PREVENT,MAMMOUSE,CrdPrv,Mammography +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,3.7,,,3.6,3.8,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,STROKE,CrdPrv,Stroke +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,7.7,,,7.2,8.3,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2018,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,18.5,,,17.0,20.1,7884,POINT (-155.1037996 19.49754656),15001021010,PREVENT,COREM,CrdPrv,Core preventive services for older men +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,16.8,,,16.1,17.6,6322,POINT (-155.8112721 20.16059783),15001021800,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,6.9,,,6.7,7.1,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2018,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,11.9,,,8.9,15.0,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2018,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,77.6,,,75.5,79.5,3531,POINT (-154.8953489 19.44949565),15001021101,PREVENT,MAMMOUSE,CrdPrv,Mammography +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,21.0,,,19.1,23.0,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,16.1,,,15.1,17.0,4025,POINT (-155.906965 19.51804981),15001021402,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,22.9,,,22.1,23.7,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,7.3,,,6.5,8.2,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,COPD,CrdPrv,COPD +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,15.7,,,14.4,17.0,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,2.8,,,2.7,2.9,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,STROKE,CrdPrv,Stroke +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,6.7,,,6.6,6.9,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2018,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,27.0,,,25.1,28.9,5882,POINT (-157.8941068 21.55452063),15003010201,PREVENT,COREW,CrdPrv,Core preventive services for older women +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,10.7,,,10.3,11.1,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,DIABETES,CrdPrv,Diabetes +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,17.2,,,16.7,17.6,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,DEPRESSION,CrdPrv,Depression +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,9.1,,,8.9,9.3,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,20.4,,,19.8,21.0,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,22.7,,,22.3,23.1,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2018,HI,Hawaii,Maui,15009,15009030800,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,61.8,,,60.6,63.0,6907,POINT (-156.5426669 20.90996813),15009030800,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,11.7,,,11.0,12.4,3139,POINT (-159.4840794 21.90956079),15007040604,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,3.5,,,3.3,3.6,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,STROKE,CrdPrv,Stroke +2018,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,84.8,,,83.9,85.7,8403,POINT (-159.5219447 21.94546074),15007040700,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,23.0,,,22.7,23.4,2291,POINT (-156.1446943 20.72704536),15009030100,RISKBEH,BINGE,CrdPrv,Binge Drinking +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,24.3,,,23.7,25.0,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,OBESITY,CrdPrv,Obesity +2018,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,65.5,,,64.3,66.8,3139,POINT (-159.4840794 21.90956079),15007040604,PREVENT,DENTAL,CrdPrv,Dental Visit +2018,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,38.7,,,38.0,39.4,8652,POINT (-156.3303372 20.82505697),15009030402,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,22.6,,,22.0,23.1,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,22.7,,,21.4,24.2,8652,POINT (-156.3303372 20.82505697),15009030402,RISKBEH,LPA,CrdPrv,Physical Inactivity +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,29.3,,,28.9,29.7,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,27.5,,,26.6,28.4,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,OBESITY,CrdPrv,Obesity +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,73.0,,,72.4,73.6,2453,POINT (-156.2504199 20.86252093),15009030201,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,14.1,,,13.6,14.7,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,24.3,,,23.2,25.5,8403,POINT (-159.5219447 21.94546074),15007040700,RISKBEH,LPA,CrdPrv,Physical Inactivity +2018,HI,Hawaii,Maui,15009,15009030402,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,71.5,,,69.7,73.4,8652,POINT (-156.3303372 20.82505697),15009030402,PREVENT,DENTAL,CrdPrv,Dental Visit +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,14.9,,,13.7,16.2,2544,POINT (-159.4384998 21.90703588),15007040603,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,6.3,,,6.1,6.4,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,69.2,,,68.1,70.1,2453,POINT (-156.2504199 20.86252093),15009030201,PREVENT,BPMED,CrdPrv,Taking BP Medication +2018,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,11.2,,,9.4,13.1,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,83.6,,,83.3,83.8,2544,POINT (-159.4384998 21.90703588),15007040603,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2018,HI,Hawaii,Maui,15009,15009030800,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,70.2,,,69.0,71.4,6907,POINT (-156.5426669 20.90996813),15009030800,PREVENT,DENTAL,CrdPrv,Dental Visit +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,18.6,,,18.2,18.9,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2018,HI,Hawaii,Maui,15009,15009030100,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,85.6,,,84.8,86.6,2291,POINT (-156.1446943 20.72704536),15009030100,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,6.1,,,5.7,6.6,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,COPD,CrdPrv,COPD +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,31.0,,,30.5,31.5,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,11.0,,,10.4,11.6,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,13.9,,,13.4,14.3,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2018,HI,Hawaii,Maui,15009,15009030201,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,25.3,,,21.7,29.2,2453,POINT (-156.2504199 20.86252093),15009030201,PREVENT,COREW,CrdPrv,Core preventive services for older women +2018,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,82.1,,,81.0,83.1,5882,POINT (-157.8941068 21.55452063),15003010201,PREVENT,MAMMOUSE,CrdPrv,Mammography +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,15.7,,,14.8,16.7,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,10.8,,,10.3,11.3,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,31.1,,,30.3,31.8,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,12.2,,,12.0,12.5,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,27.0,,,25.3,28.5,2544,POINT (-159.4384998 21.90703588),15007040603,RISKBEH,LPA,CrdPrv,Physical Inactivity +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,29.2,,,28.6,29.8,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,OBESITY,CrdPrv,Obesity +2018,HI,Hawaii,Maui,15009,15009030402,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,85.0,,,83.8,86.2,8652,POINT (-156.3303372 20.82505697),15009030402,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,4.6,,,4.3,5.0,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,COPD,CrdPrv,COPD +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,77.8,,,77.5,78.1,3139,POINT (-159.4840794 21.90956079),15007040604,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2018,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,6.2,,,5.1,7.5,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,8.9,,,8.5,9.4,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,DIABETES,CrdPrv,Diabetes +2018,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,25.6,,,23.3,27.9,8403,POINT (-159.5219447 21.94546074),15007040700,PREVENT,COREW,CrdPrv,Core preventive services for older women +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,12.9,,,12.5,13.4,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2018,HI,Hawaii,Maui,15009,15009030100,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,67.9,,,66.6,69.3,2291,POINT (-156.1446943 20.72704536),15009030100,PREVENT,DENTAL,CrdPrv,Dental Visit +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,5.8,,,5.5,6.2,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,COPD,CrdPrv,COPD +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,20.0,,,19.0,21.0,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHSTAT,GHLTH,CrdPrv,General Health +2018,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,82.4,,,80.9,84.0,2544,POINT (-159.4384998 21.90703588),15007040603,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2018,HI,Hawaii,Maui,15009,15009030800,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,84.2,,,83.4,85.1,6907,POINT (-156.5426669 20.90996813),15009030800,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,25.3,,,24.6,26.0,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2018,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,69.0,,,67.5,70.4,8403,POINT (-159.5219447 21.94546074),15007040700,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,10.2,,,10.0,10.5,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,12.2,,,11.5,12.8,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,DIABETES,CrdPrv,Diabetes +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,21.3,,,21.0,21.6,5882,POINT (-157.8941068 21.55452063),15003010201,RISKBEH,BINGE,CrdPrv,Binge Drinking +2018,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,37.5,,,36.9,38.1,3139,POINT (-159.4840794 21.90956079),15007040604,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2018,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,10.1,,,8.7,11.6,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2018,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,8.1,,,6.2,10.2,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,6.5,,,6.3,6.8,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,19.2,,,18.9,19.6,8403,POINT (-159.5219447 21.94546074),15007040700,RISKBEH,BINGE,CrdPrv,Binge Drinking +2018,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,40.9,,,40.1,41.6,6907,POINT (-156.5426669 20.90996813),15009030800,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,15.5,,,15.0,16.0,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,DEPRESSION,CrdPrv,Depression +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,17.5,,,16.4,18.7,5882,POINT (-157.8941068 21.55452063),15003010201,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,15.2,,,14.9,15.6,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,DEPRESSION,CrdPrv,Depression +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,21.0,,,20.6,21.4,8652,POINT (-156.3303372 20.82505697),15009030402,RISKBEH,BINGE,CrdPrv,Binge Drinking +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,27.0,,,26.6,27.4,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2018,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,67.1,,,65.3,68.9,2544,POINT (-159.4384998 21.90703588),15007040603,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,26.4,,,25.8,26.9,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,28.1,,,27.6,28.7,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,6.4,,,6.3,6.5,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,15.9,,,15.6,16.2,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,DEPRESSION,CrdPrv,Depression +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,82.9,,,82.7,83.0,5882,POINT (-157.8941068 21.55452063),15003010201,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,2.7,,,2.6,2.8,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,21.8,,,21.5,22.1,6907,POINT (-156.5426669 20.90996813),15009030800,RISKBEH,BINGE,CrdPrv,Binge Drinking +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,6.0,,,5.8,6.3,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,2.5,,,2.5,2.6,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,82.9,,,82.9,83.0,2453,POINT (-156.2504199 20.86252093),15009030201,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,25.5,,,24.9,25.9,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,10.7,,,10.4,11.1,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,DIABETES,CrdPrv,Diabetes +2018,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,68.0,,,66.2,69.9,2544,POINT (-159.4384998 21.90703588),15007040603,PREVENT,DENTAL,CrdPrv,Dental Visit +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,12.3,,,11.6,13.0,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,8.9,,,8.7,9.2,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,3.0,,,2.8,3.2,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,STROKE,CrdPrv,Stroke +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,19.5,,,18.6,20.5,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,12.4,,,11.6,13.1,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,3.1,,,3.0,3.2,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,24.8,,,23.8,25.9,5882,POINT (-157.8941068 21.55452063),15003010201,RISKBEH,LPA,CrdPrv,Physical Inactivity +2018,HI,Hawaii,Maui,15009,15009030201,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,26.1,,,22.4,30.0,2453,POINT (-156.2504199 20.86252093),15009030201,PREVENT,COREM,CrdPrv,Core preventive services for older men +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,23.1,,,22.6,23.6,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,OBESITY,CrdPrv,Obesity +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,12.3,,,12.0,12.7,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,DIABETES,CrdPrv,Diabetes +2018,HI,Hawaii,Maui,15009,15009030800,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,24.0,,,22.0,25.9,6907,POINT (-156.5426669 20.90996813),15009030800,PREVENT,COREW,CrdPrv,Core preventive services for older women +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,6.4,,,6.1,6.7,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,23.7,,,23.0,24.3,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,OBESITY,CrdPrv,Obesity +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,84.2,,,84.1,84.4,8403,POINT (-159.5219447 21.94546074),15007040700,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,15.1,,,14.3,15.8,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,3.7,,,3.5,3.9,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,STROKE,CrdPrv,Stroke +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,79.1,,,78.8,79.4,5882,POINT (-157.8941068 21.55452063),15003010201,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2018,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,25.0,,,22.9,27.3,3139,POINT (-159.4840794 21.90956079),15007040604,PREVENT,COREM,CrdPrv,Core preventive services for older men +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,82.9,,,82.5,83.3,8652,POINT (-156.3303372 20.82505697),15009030402,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,13.6,,,12.6,14.6,8403,POINT (-159.5219447 21.94546074),15007040700,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,28.3,,,27.9,28.7,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,9.0,,,8.7,9.2,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,22.1,,,20.7,23.7,2453,POINT (-156.2504199 20.86252093),15009030201,RISKBEH,LPA,CrdPrv,Physical Inactivity +2018,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,77.5,,,76.1,78.9,3139,POINT (-159.4840794 21.90956079),15007040604,PREVENT,MAMMOUSE,CrdPrv,Mammography +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,14.7,,,14.2,15.2,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,DEPRESSION,CrdPrv,Depression +2018,HI,Hawaii,Maui,15009,15009030100,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,63.2,,,61.5,64.8,2291,POINT (-156.1446943 20.72704536),15009030100,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,3.8,,,3.7,4.0,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,STROKE,CrdPrv,Stroke +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,10.2,,,10.0,10.5,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,DIABETES,CrdPrv,Diabetes +2018,HI,Hawaii,Maui,15009,15009030402,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,25.4,,,22.7,28.5,8652,POINT (-156.3303372 20.82505697),15009030402,PREVENT,COREM,CrdPrv,Core preventive services for older men +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,82.0,,,81.7,82.4,6907,POINT (-156.5426669 20.90996813),15009030800,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,18.5,,,17.9,19.2,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,DEPRESSION,CrdPrv,Depression +2018,HI,Hawaii,Maui,15009,15009030800,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,79.6,,,78.6,80.7,6907,POINT (-156.5426669 20.90996813),15009030800,PREVENT,MAMMOUSE,CrdPrv,Mammography +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,11.1,,,10.3,11.9,2291,POINT (-156.1446943 20.72704536),15009030100,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,23.5,,,23.0,24.0,2453,POINT (-156.2504199 20.86252093),15009030201,RISKBEH,BINGE,CrdPrv,Binge Drinking +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,18.4,,,17.3,19.6,2291,POINT (-156.1446943 20.72704536),15009030100,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,9.6,,,9.2,10.1,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,DIABETES,CrdPrv,Diabetes +2018,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,26.3,,,23.2,29.7,2544,POINT (-159.4384998 21.90703588),15007040603,PREVENT,COREM,CrdPrv,Core preventive services for older men +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,70.6,,,70.0,71.4,2291,POINT (-156.1446943 20.72704536),15009030100,PREVENT,BPMED,CrdPrv,Taking BP Medication +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,9.7,,,9.4,10.0,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,5.6,,,5.1,6.1,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,COPD,CrdPrv,COPD +2018,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,36.8,,,35.8,37.7,2544,POINT (-159.4384998 21.90703588),15007040603,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2018,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,7.9,,,6.2,9.9,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,27.7,,,26.6,28.7,3139,POINT (-159.4840794 21.90956079),15007040604,RISKBEH,LPA,CrdPrv,Physical Inactivity +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,26.2,,,25.7,26.6,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2018,HI,Hawaii,Maui,15009,15009030201,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,80.7,,,78.6,82.6,2453,POINT (-156.2504199 20.86252093),15009030201,PREVENT,MAMMOUSE,CrdPrv,Mammography +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,18.1,,,17.1,19.1,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,3.1,,,2.9,3.2,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,STROKE,CrdPrv,Stroke +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,23.8,,,22.7,24.9,2291,POINT (-156.1446943 20.72704536),15009030100,RISKBEH,LPA,CrdPrv,Physical Inactivity +2018,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,8.2,,,6.4,10.4,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2018,HI,Hawaii,Maui,15009,15009030800,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,24.8,,,22.9,27.0,6907,POINT (-156.5426669 20.90996813),15009030800,PREVENT,COREM,CrdPrv,Core preventive services for older men +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,13.0,,,12.5,13.5,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,18.5,,,18.3,18.8,3139,POINT (-159.4840794 21.90956079),15007040604,RISKBEH,BINGE,CrdPrv,Binge Drinking +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,9.3,,,9.0,9.5,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,DIABETES,CrdPrv,Diabetes +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,6.1,,,6.0,6.3,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2018,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,69.2,,,68.0,70.5,5882,POINT (-157.8941068 21.55452063),15003010201,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,11.4,,,10.4,12.6,2544,POINT (-159.4384998 21.90703588),15007040603,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,27.9,,,27.3,28.5,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,2.6,,,2.5,2.7,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2018,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,72.1,,,70.8,73.3,5882,POINT (-157.8941068 21.55452063),15003010201,PREVENT,DENTAL,CrdPrv,Dental Visit +2018,HI,Hawaii,Maui,15009,15009030100,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,23.0,,,21.0,25.0,2291,POINT (-156.1446943 20.72704536),15009030100,PREVENT,COREW,CrdPrv,Core preventive services for older women +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,69.9,,,69.4,70.4,5882,POINT (-157.8941068 21.55452063),15003010201,PREVENT,BPMED,CrdPrv,Taking BP Medication +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,12.0,,,11.5,12.5,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,7.0,,,6.8,7.2,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,2.9,,,2.8,2.9,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,73.2,,,72.9,73.6,6907,POINT (-156.5426669 20.90996813),15009030800,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,30.0,,,29.4,30.6,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,77.8,,,77.5,78.2,8403,POINT (-159.5219447 21.94546074),15007040700,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,24.5,,,24.2,24.8,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2018,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,40.4,,,39.6,41.5,2291,POINT (-156.1446943 20.72704536),15009030100,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,74.1,,,73.6,74.6,8652,POINT (-156.3303372 20.82505697),15009030402,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2018,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,9.6,,,7.8,11.5,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,23.8,,,23.3,24.1,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2018,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,82.1,,,81.2,82.9,3139,POINT (-159.4840794 21.90956079),15007040604,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,82.6,,,82.3,83.0,2291,POINT (-156.1446943 20.72704536),15009030100,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2018,HI,Hawaii,Maui,15009,15009030201,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,73.2,,,71.2,74.9,2453,POINT (-156.2504199 20.86252093),15009030201,PREVENT,DENTAL,CrdPrv,Dental Visit +2018,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,21.3,,,19.5,23.3,3139,POINT (-159.4840794 21.90956079),15007040604,PREVENT,COREW,CrdPrv,Core preventive services for older women +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,33.4,,,32.9,34.0,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,OBESITY,CrdPrv,Obesity +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,70.7,,,69.9,71.4,8652,POINT (-156.3303372 20.82505697),15009030402,PREVENT,BPMED,CrdPrv,Taking BP Medication +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,12.6,,,12.0,13.1,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,5.5,,,5.3,5.7,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,23.0,,,22.2,23.7,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2018,HI,Hawaii,Maui,15009,15009030402,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,24.7,,,22.1,27.4,8652,POINT (-156.3303372 20.82505697),15009030402,PREVENT,COREW,CrdPrv,Core preventive services for older women +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,10.7,,,10.3,11.0,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,12.5,,,11.8,13.2,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,13.2,,,12.7,13.8,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2018,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,72.2,,,70.8,73.5,8403,POINT (-159.5219447 21.94546074),15007040700,PREVENT,DENTAL,CrdPrv,Dental Visit +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,2.9,,,2.8,3.0,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,15.2,,,14.1,16.4,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,5.5,,,5.0,6.1,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,COPD,CrdPrv,COPD +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,3.7,,,3.4,3.9,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,STROKE,CrdPrv,Stroke +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,10.3,,,9.3,11.3,8652,POINT (-156.3303372 20.82505697),15009030402,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,3.3,,,3.2,3.4,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,13.9,,,13.2,14.6,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,23.2,,,22.7,23.8,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,15.6,,,14.8,16.5,3139,POINT (-159.4840794 21.90956079),15007040604,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,25.6,,,24.8,26.4,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,22.6,,,21.7,23.6,6907,POINT (-156.5426669 20.90996813),15009030800,RISKBEH,LPA,CrdPrv,Physical Inactivity +2018,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,77.6,,,76.1,79.2,8403,POINT (-159.5219447 21.94546074),15007040700,PREVENT,MAMMOUSE,CrdPrv,Mammography +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,5.9,,,5.6,6.2,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,COPD,CrdPrv,COPD +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,10.2,,,9.5,11.0,5882,POINT (-157.8941068 21.55452063),15003010201,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,4.3,,,4.1,4.6,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,COPD,CrdPrv,COPD +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,5.0,,,4.7,5.4,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,9.6,,,9.4,9.8,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,15.3,,,14.0,16.7,8652,POINT (-156.3303372 20.82505697),15009030402,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,4.5,,,4.2,4.8,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,COPD,CrdPrv,COPD +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,18.5,,,18.0,18.9,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,DEPRESSION,CrdPrv,Depression +2018,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,24.1,,,21.1,27.2,2544,POINT (-159.4384998 21.90703588),15007040603,PREVENT,COREW,CrdPrv,Core preventive services for older women +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,14.5,,,14.2,14.9,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,DEPRESSION,CrdPrv,Depression +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,5.4,,,5.3,5.5,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,9.3,,,8.3,10.2,2453,POINT (-156.2504199 20.86252093),15009030201,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,78.5,,,78.0,78.9,2544,POINT (-159.4384998 21.90703588),15007040603,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,3.1,,,2.9,3.3,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,STROKE,CrdPrv,Stroke +2018,HI,Hawaii,Maui,15009,15009030100,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,78.5,,,77.1,79.9,2291,POINT (-156.1446943 20.72704536),15009030100,PREVENT,MAMMOUSE,CrdPrv,Mammography +2018,HI,Hawaii,Maui,15009,15009030100,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,22.7,,,20.4,25.1,2291,POINT (-156.1446943 20.72704536),15009030100,PREVENT,COREM,CrdPrv,Core preventive services for older men +2018,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,48.2,,,47.6,48.9,5882,POINT (-157.8941068 21.55452063),15003010201,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,16.1,,,15.1,17.0,6907,POINT (-156.5426669 20.90996813),15009030800,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2018,HI,Hawaii,Maui,15009,15009030402,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,63.8,,,61.5,65.9,8652,POINT (-156.3303372 20.82505697),15009030402,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,74.8,,,74.3,75.4,8403,POINT (-159.5219447 21.94546074),15007040700,PREVENT,BPMED,CrdPrv,Taking BP Medication +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,10.6,,,10.0,11.3,6907,POINT (-156.5426669 20.90996813),15009030800,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,17.5,,,15.9,19.2,2453,POINT (-156.2504199 20.86252093),15009030201,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2018,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,8.1,,,7.1,9.3,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,5.0,,,4.8,5.3,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,8.7,,,8.5,8.9,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,13.0,,,12.4,13.5,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,4.8,,,4.5,5.1,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,18.2,,,16.8,19.5,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,74.2,,,73.8,74.6,2291,POINT (-156.1446943 20.72704536),15009030100,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,77.1,,,76.5,77.7,2544,POINT (-159.4384998 21.90703588),15007040603,PREVENT,BPMED,CrdPrv,Taking BP Medication +2018,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,37.8,,,37.1,38.6,2453,POINT (-156.2504199 20.86252093),15009030201,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,10.2,,,9.5,11.1,8403,POINT (-159.5219447 21.94546074),15007040700,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,29.8,,,29.4,30.1,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2018,HI,Hawaii,Maui,15009,15009030201,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,65.4,,,63.1,67.3,2453,POINT (-156.2504199 20.86252093),15009030201,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,67.7,,,67.1,68.2,6907,POINT (-156.5426669 20.90996813),15009030800,PREVENT,BPMED,CrdPrv,Taking BP Medication +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,76.2,,,75.8,76.7,3139,POINT (-159.4840794 21.90956079),15007040604,PREVENT,BPMED,CrdPrv,Taking BP Medication +2018,HI,Hawaii,Maui,15009,15009030402,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,79.6,,,77.8,81.3,8652,POINT (-156.3303372 20.82505697),15009030402,PREVENT,MAMMOUSE,CrdPrv,Mammography +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,24.3,,,23.8,24.7,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,OBESITY,CrdPrv,Obesity +2018,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,87.3,,,86.7,88.1,5882,POINT (-157.8941068 21.55452063),15003010201,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,6.1,,,5.8,6.5,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,17.9,,,17.5,18.2,2544,POINT (-159.4384998 21.90703588),15007040603,RISKBEH,BINGE,CrdPrv,Binge Drinking +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,26.0,,,25.6,26.5,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,OBESITY,CrdPrv,Obesity +2018,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,77.1,,,75.2,79.0,2544,POINT (-159.4384998 21.90703588),15007040603,PREVENT,MAMMOUSE,CrdPrv,Mammography +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,6.9,,,6.8,7.1,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,31.2,,,30.8,31.8,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,15.1,,,14.5,15.7,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2018,HI,Hawaii,Maui,15009,15009030201,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,87.7,,,86.6,88.8,2453,POINT (-156.2504199 20.86252093),15009030201,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,4.3,,,4.2,4.4,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2018,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,36.4,,,35.6,36.9,8403,POINT (-159.5219447 21.94546074),15007040700,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,82.8,,,82.7,82.9,3139,POINT (-159.4840794 21.90956079),15007040604,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,25.2,,,24.6,25.9,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2018,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,27.8,,,25.4,30.3,8403,POINT (-159.5219447 21.94546074),15007040700,PREVENT,COREM,CrdPrv,Core preventive services for older men +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,2.3,,,2.3,2.4,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2018,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,25.0,,,23.0,27.0,5882,POINT (-157.8941068 21.55452063),15003010201,PREVENT,COREM,CrdPrv,Core preventive services for older men +2018,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,64.2,,,62.8,65.7,3139,POINT (-159.4840794 21.90956079),15007040604,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening diff --git a/data/data-pipeline/data_pipeline/tests/sources/cdc_places/data/extract.csv b/data/data-pipeline/data_pipeline/tests/sources/cdc_places/data/extract.csv new file mode 100644 index 000000000..0dda6ca5f --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/cdc_places/data/extract.csv @@ -0,0 +1,451 @@ +Year,StateAbbr,StateDesc,CountyName,CountyFIPS,LocationName,DataSource,Category,Measure,Data_Value_Unit,Data_Value_Type,Data_Value,Data_Value_Footnote_Symbol,Data_Value_Footnote,Low_Confidence_Limit,High_Confidence_Limit,TotalPopulation,Geolocation,LocationID,CategoryID,MeasureId,DataValueTypeID,Short_Question_Text +2019,CA,California,Inyo,6027,6027000800,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,36.1000000000,,,35.2000000000,36.8000000000,3378,POINT (-117.1176757 36.25159703),6027000800,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2019,CA,California,Inyo,6027,6027000800,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,13.1000000000,,,12.6000000000,13.6000000000,3378,POINT (-117.1176757 36.25159703),6027000800,HLTHOUT,DIABETES,CrdPrv,Diabetes +2019,CA,California,Inyo,6027,6027000800,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,15.1000000000,,,14.4000000000,15.8000000000,3378,POINT (-117.1176757 36.25159703),6027000800,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2018,CA,California,Inyo,6027,6027000800,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,82.0000000000,,,80.5000000000,83.4000000000,3378,POINT (-117.1176757 36.25159703),6027000800,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,CA,California,Inyo,6027,6027000800,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,14.2000000000,,,12.8000000000,15.6000000000,3378,POINT (-117.1176757 36.25159703),6027000800,PREVENT,ACCESS2,CrdPrv,Health Insurance +2018,CA,California,Inyo,6027,6027000800,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,33.1000000000,,,32.1000000000,34.1000000000,3378,POINT (-117.1176757 36.25159703),6027000800,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,CA,California,Inyo,6027,6027000800,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,86.4000000000,,,86.1000000000,86.7000000000,3378,POINT (-117.1176757 36.25159703),6027000800,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2019,CA,California,Inyo,6027,6027000800,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,17.2000000000,,,15.8000000000,18.5000000000,3378,POINT (-117.1176757 36.25159703),6027000800,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2019,CA,California,Inyo,6027,6027000800,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,8.6000000000,,,8.1000000000,9.1000000000,3378,POINT (-117.1176757 36.25159703),6027000800,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2019,CA,California,Inyo,6027,6027000800,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,30.2000000000,,,29.4000000000,31.0000000000,3378,POINT (-117.1176757 36.25159703),6027000800,HLTHOUT,OBESITY,CrdPrv,Obesity +2019,CA,California,Inyo,6027,6027000800,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,24.2000000000,,,22.4000000000,25.9000000000,3378,POINT (-117.1176757 36.25159703),6027000800,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,CA,California,Inyo,6027,6027000800,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,74.3000000000,,,73.6000000000,74.9000000000,3378,POINT (-117.1176757 36.25159703),6027000800,PREVENT,BPMED,CrdPrv,Taking BP Medication +2019,CA,California,Inyo,6027,6027000800,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,3.9000000000,,,3.8000000000,4.1000000000,3378,POINT (-117.1176757 36.25159703),6027000800,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2019,CA,California,Inyo,6027,6027000800,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,16.8000000000,,,15.8000000000,17.7000000000,3378,POINT (-117.1176757 36.25159703),6027000800,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2018,CA,California,Inyo,6027,6027000800,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,25.6000000000,,,22.4000000000,29.2000000000,3378,POINT (-117.1176757 36.25159703),6027000800,PREVENT,COREW,CrdPrv,Core preventive services for older women +2018,CA,California,Inyo,6027,6027000800,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,26.5000000000,,,24.0000000000,29.1000000000,3378,POINT (-117.1176757 36.25159703),6027000800,PREVENT,COREM,CrdPrv,Core preventive services for older men +2019,CA,California,Inyo,6027,6027000800,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,72.5000000000,,,71.9000000000,73.0000000000,3378,POINT (-117.1176757 36.25159703),6027000800,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2019,CA,California,Inyo,6027,6027000800,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,26.9000000000,,,25.3000000000,28.4000000000,3378,POINT (-117.1176757 36.25159703),6027000800,RISKBEH,LPA,CrdPrv,Physical Inactivity +2019,CA,California,Inyo,6027,6027000800,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,35.8000000000,,,35.2000000000,36.5000000000,3378,POINT (-117.1176757 36.25159703),6027000800,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2019,CA,California,Inyo,6027,6027000800,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,8.3000000000,,,8.0000000000,8.5000000000,3378,POINT (-117.1176757 36.25159703),6027000800,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2019,CA,California,Inyo,6027,6027000800,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,19.5000000000,,,18.9000000000,20.2000000000,3378,POINT (-117.1176757 36.25159703),6027000800,HLTHOUT,DEPRESSION,CrdPrv,Depression +2019,CA,California,Inyo,6027,6027000800,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,9.2000000000,,,8.4000000000,10.0000000000,3378,POINT (-117.1176757 36.25159703),6027000800,HLTHOUT,COPD,CrdPrv,COPD +2019,CA,California,Inyo,6027,6027000800,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,16.2000000000,,,15.8000000000,16.6000000000,3378,POINT (-117.1176757 36.25159703),6027000800,RISKBEH,BINGE,CrdPrv,Binge Drinking +2018,CA,California,Inyo,6027,6027000800,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,17.7000000000,,,14.2000000000,21.6000000000,3378,POINT (-117.1176757 36.25159703),6027000800,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2019,CA,California,Inyo,6027,6027000800,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,10.1000000000,,,9.7000000000,10.4000000000,3378,POINT (-117.1176757 36.25159703),6027000800,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2018,CA,California,Inyo,6027,6027000800,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,74.9000000000,,,72.7000000000,77.0000000000,3378,POINT (-117.1176757 36.25159703),6027000800,PREVENT,MAMMOUSE,CrdPrv,Mammography +2018,CA,California,Inyo,6027,6027000800,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,58.1000000000,,,55.6000000000,59.9000000000,3378,POINT (-117.1176757 36.25159703),6027000800,PREVENT,DENTAL,CrdPrv,Dental Visit +2018,CA,California,Inyo,6027,6027000800,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,61.5000000000,,,59.2000000000,63.6000000000,3378,POINT (-117.1176757 36.25159703),6027000800,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,CA,California,Inyo,6027,6027000800,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,28.5000000000,,,27.8000000000,29.2000000000,3378,POINT (-117.1176757 36.25159703),6027000800,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2019,CA,California,Inyo,6027,6027000800,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,4.6000000000,,,4.3000000000,4.9000000000,3378,POINT (-117.1176757 36.25159703),6027000800,HLTHOUT,STROKE,CrdPrv,Stroke +2019,CA,California,Placer,6061,6061021322,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,23.0000000000,,,22.2000000000,24.0000000000,8762,POINT (-121.4057179 38.84598382),6061021322,HLTHOUT,OBESITY,CrdPrv,Obesity +2019,CA,California,Placer,6061,6061021322,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,23.2000000000,,,22.5000000000,23.9000000000,8762,POINT (-121.4057179 38.84598382),6061021322,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2019,CA,California,Placer,6061,6061021322,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,3.9000000000,,,3.7000000000,4.2000000000,8762,POINT (-121.4057179 38.84598382),6061021322,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2019,CA,California,Placer,6061,6061021322,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,16.6000000000,,,15.2000000000,18.1000000000,8762,POINT (-121.4057179 38.84598382),6061021322,RISKBEH,LPA,CrdPrv,Physical Inactivity +2019,CA,California,Placer,6061,6061021322,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,17.2000000000,,,16.4000000000,18.0000000000,8762,POINT (-121.4057179 38.84598382),6061021322,HLTHOUT,DEPRESSION,CrdPrv,Depression +2019,CA,California,Placer,6061,6061021322,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,18.9000000000,,,18.3000000000,19.5000000000,8762,POINT (-121.4057179 38.84598382),6061021322,RISKBEH,BINGE,CrdPrv,Binge Drinking +2018,CA,California,Placer,6061,6061021322,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,35.7000000000,,,31.8000000000,39.8000000000,8762,POINT (-121.4057179 38.84598382),6061021322,PREVENT,COREM,CrdPrv,Core preventive services for older men +2018,CA,California,Placer,6061,6061021322,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,31.9000000000,,,30.6000000000,33.2000000000,8762,POINT (-121.4057179 38.84598382),6061021322,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,CA,California,Placer,6061,6061021322,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,2.2000000000,,,2.1000000000,2.3000000000,8762,POINT (-121.4057179 38.84598382),6061021322,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2019,CA,California,Placer,6061,6061021322,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,8.6000000000,,,8.2000000000,8.9000000000,8762,POINT (-121.4057179 38.84598382),6061021322,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2019,CA,California,Placer,6061,6061021322,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,12.0000000000,,,11.1000000000,13.0000000000,8762,POINT (-121.4057179 38.84598382),6061021322,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2018,CA,California,Placer,6061,6061021322,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,83.4000000000,,,81.6000000000,85.2000000000,8762,POINT (-121.4057179 38.84598382),6061021322,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,CA,California,Placer,6061,6061021322,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,6.9000000000,,,6.6000000000,7.3000000000,8762,POINT (-121.4057179 38.84598382),6061021322,HLTHOUT,DIABETES,CrdPrv,Diabetes +2018,CA,California,Placer,6061,6061021322,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,34.4000000000,,,30.3000000000,38.5000000000,8762,POINT (-121.4057179 38.84598382),6061021322,PREVENT,COREW,CrdPrv,Core preventive services for older women +2019,CA,California,Placer,6061,6061021322,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,28.8000000000,,,28.2000000000,29.4000000000,8762,POINT (-121.4057179 38.84598382),6061021322,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2019,CA,California,Placer,6061,6061021322,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,86.2000000000,,,85.7000000000,86.8000000000,8762,POINT (-121.4057179 38.84598382),6061021322,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2018,CA,California,Placer,6061,6061021322,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,78.2000000000,,,75.6000000000,80.3000000000,8762,POINT (-121.4057179 38.84598382),6061021322,PREVENT,MAMMOUSE,CrdPrv,Mammography +2019,CA,California,Placer,6061,6061021322,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,5.9000000000,,,5.7000000000,6.1000000000,8762,POINT (-121.4057179 38.84598382),6061021322,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2019,CA,California,Placer,6061,6061021322,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,2.2000000000,,,2.0000000000,2.4000000000,8762,POINT (-121.4057179 38.84598382),6061021322,HLTHOUT,STROKE,CrdPrv,Stroke +2018,CA,California,Placer,6061,6061021322,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,72.1000000000,,,69.9000000000,74.0000000000,8762,POINT (-121.4057179 38.84598382),6061021322,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,CA,California,Placer,6061,6061021322,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,9.0000000000,,,7.8000000000,10.6000000000,8762,POINT (-121.4057179 38.84598382),6061021322,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,CA,California,Placer,6061,6061021322,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,11.4000000000,,,9.8000000000,13.2000000000,8762,POINT (-121.4057179 38.84598382),6061021322,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2019,CA,California,Placer,6061,6061021322,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,67.4000000000,,,66.4000000000,68.4000000000,8762,POINT (-121.4057179 38.84598382),6061021322,PREVENT,BPMED,CrdPrv,Taking BP Medication +2019,CA,California,Placer,6061,6061021322,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,9.4000000000,,,8.7000000000,10.1000000000,8762,POINT (-121.4057179 38.84598382),6061021322,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2019,CA,California,Placer,6061,6061021322,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,70.2000000000,,,69.4000000000,70.9000000000,8762,POINT (-121.4057179 38.84598382),6061021322,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2018,CA,California,Placer,6061,6061021322,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,7.6000000000,,,5.6000000000,10.0000000000,8762,POINT (-121.4057179 38.84598382),6061021322,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2019,CA,California,Placer,6061,6061021322,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,12.3000000000,,,11.0000000000,13.6000000000,8762,POINT (-121.4057179 38.84598382),6061021322,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,CA,California,Placer,6061,6061021322,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,4.2000000000,,,3.8000000000,4.8000000000,8762,POINT (-121.4057179 38.84598382),6061021322,HLTHOUT,COPD,CrdPrv,COPD +2019,CA,California,Placer,6061,6061021322,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,18.7000000000,,,18.0000000000,19.4000000000,8762,POINT (-121.4057179 38.84598382),6061021322,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2018,CA,California,Placer,6061,6061021322,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,71.8000000000,,,69.5000000000,74.1000000000,8762,POINT (-121.4057179 38.84598382),6061021322,PREVENT,DENTAL,CrdPrv,Dental Visit +2019,CA,California,San Benito,6069,6069000802,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,6.5000000000,,,5.9000000000,7.0000000000,2534,POINT (-121.0070559 36.54987144),6069000802,HLTHOUT,COPD,CrdPrv,COPD +2018,CA,California,San Benito,6069,6069000802,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,12.3000000000,,,9.6000000000,15.5000000000,2534,POINT (-121.0070559 36.54987144),6069000802,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2018,CA,California,San Benito,6069,6069000802,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,77.6000000000,,,75.4000000000,79.6000000000,2534,POINT (-121.0070559 36.54987144),6069000802,PREVENT,MAMMOUSE,CrdPrv,Mammography +2019,CA,California,San Benito,6069,6069000802,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,9.3000000000,,,9.0000000000,9.6000000000,2534,POINT (-121.0070559 36.54987144),6069000802,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2019,CA,California,San Benito,6069,6069000802,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,23.6000000000,,,23.0000000000,24.3000000000,2534,POINT (-121.0070559 36.54987144),6069000802,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2018,CA,California,San Benito,6069,6069000802,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,64.8000000000,,,62.9000000000,67.0000000000,2534,POINT (-121.0070559 36.54987144),6069000802,PREVENT,DENTAL,CrdPrv,Dental Visit +2019,CA,California,San Benito,6069,6069000802,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,2.9000000000,,,2.8000000000,3.0000000000,2534,POINT (-121.0070559 36.54987144),6069000802,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2018,CA,California,San Benito,6069,6069000802,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,84.7000000000,,,83.5000000000,86.0000000000,2534,POINT (-121.0070559 36.54987144),6069000802,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,CA,California,San Benito,6069,6069000802,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,18.7000000000,,,18.3000000000,19.1000000000,2534,POINT (-121.0070559 36.54987144),6069000802,RISKBEH,BINGE,CrdPrv,Binge Drinking +2019,CA,California,San Benito,6069,6069000802,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,13.5000000000,,,12.9000000000,14.2000000000,2534,POINT (-121.0070559 36.54987144),6069000802,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2018,CA,California,San Benito,6069,6069000802,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,30.3000000000,,,26.8000000000,34.1000000000,2534,POINT (-121.0070559 36.54987144),6069000802,PREVENT,COREM,CrdPrv,Core preventive services for older men +2019,CA,California,San Benito,6069,6069000802,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,13.4000000000,,,12.7000000000,14.2000000000,2534,POINT (-121.0070559 36.54987144),6069000802,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2019,CA,California,San Benito,6069,6069000802,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,19.2000000000,,,18.6000000000,19.9000000000,2534,POINT (-121.0070559 36.54987144),6069000802,HLTHOUT,DEPRESSION,CrdPrv,Depression +2019,CA,California,San Benito,6069,6069000802,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,7.0000000000,,,6.8000000000,7.2000000000,2534,POINT (-121.0070559 36.54987144),6069000802,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2019,CA,California,San Benito,6069,6069000802,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,32.7000000000,,,32.1000000000,33.3000000000,2534,POINT (-121.0070559 36.54987144),6069000802,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2019,CA,California,San Benito,6069,6069000802,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,87.1000000000,,,86.9000000000,87.2000000000,2534,POINT (-121.0070559 36.54987144),6069000802,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2018,CA,California,San Benito,6069,6069000802,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,31.9000000000,,,30.7000000000,32.8000000000,2534,POINT (-121.0070559 36.54987144),6069000802,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,CA,California,San Benito,6069,6069000802,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,18.9000000000,,,17.5000000000,20.4000000000,2534,POINT (-121.0070559 36.54987144),6069000802,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,CA,California,San Benito,6069,6069000802,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,70.6000000000,,,69.8000000000,71.2000000000,2534,POINT (-121.0070559 36.54987144),6069000802,PREVENT,BPMED,CrdPrv,Taking BP Medication +2018,CA,California,San Benito,6069,6069000802,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,29.3000000000,,,26.0000000000,32.8000000000,2534,POINT (-121.0070559 36.54987144),6069000802,PREVENT,COREW,CrdPrv,Core preventive services for older women +2019,CA,California,San Benito,6069,6069000802,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,71.1000000000,,,70.5000000000,71.7000000000,2534,POINT (-121.0070559 36.54987144),6069000802,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2019,CA,California,San Benito,6069,6069000802,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,3.2000000000,,,3.0000000000,3.4000000000,2534,POINT (-121.0070559 36.54987144),6069000802,HLTHOUT,STROKE,CrdPrv,Stroke +2018,CA,California,San Benito,6069,6069000802,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,65.7000000000,,,63.5000000000,67.7000000000,2534,POINT (-121.0070559 36.54987144),6069000802,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,CA,California,San Benito,6069,6069000802,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,22.7000000000,,,21.4000000000,24.1000000000,2534,POINT (-121.0070559 36.54987144),6069000802,RISKBEH,LPA,CrdPrv,Physical Inactivity +2019,CA,California,San Benito,6069,6069000802,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,13.2000000000,,,11.9000000000,14.5000000000,2534,POINT (-121.0070559 36.54987144),6069000802,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,CA,California,San Benito,6069,6069000802,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,10.2000000000,,,9.8000000000,10.6000000000,2534,POINT (-121.0070559 36.54987144),6069000802,HLTHOUT,DIABETES,CrdPrv,Diabetes +2019,CA,California,San Benito,6069,6069000802,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,30.2000000000,,,29.5000000000,30.9000000000,2534,POINT (-121.0070559 36.54987144),6069000802,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2019,CA,California,San Benito,6069,6069000802,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,5.8000000000,,,5.5000000000,6.1000000000,2534,POINT (-121.0070559 36.54987144),6069000802,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2019,CA,California,San Benito,6069,6069000802,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,29.2000000000,,,28.4000000000,30.0000000000,2534,POINT (-121.0070559 36.54987144),6069000802,HLTHOUT,OBESITY,CrdPrv,Obesity +2019,CA,California,San Benito,6069,6069000802,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,14.5000000000,,,13.3000000000,15.7000000000,2534,POINT (-121.0070559 36.54987144),6069000802,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,73.5000000000,,,73.1000000000,73.8000000000,6322,POINT (-155.8112721 20.16059783),15001021800,PREVENT,BPMED,CrdPrv,Taking BP Medication +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,29.4000000000,,,29.0000000000,29.8000000000,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,OBESITY,CrdPrv,Obesity +2018,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,23.4000000000,,,20.4000000000,26.5000000000,3531,POINT (-154.8953489 19.44949565),15001021101,PREVENT,COREW,CrdPrv,Core preventive services for older women +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,20.7000000000,,,20.5000000000,20.9000000000,7884,POINT (-155.1037996 19.49754656),15001021010,RISKBEH,BINGE,CrdPrv,Binge Drinking +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,12.4000000000,,,11.9000000000,12.9000000000,4025,POINT (-155.906965 19.51804981),15001021402,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,24.3000000000,,,24.0000000000,24.7000000000,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,OBESITY,CrdPrv,Obesity +2018,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,64.9000000000,,,63.7000000000,66.2000000000,4025,POINT (-155.906965 19.51804981),15001021402,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,15.9000000000,,,15.6000000000,16.3000000000,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,DEPRESSION,CrdPrv,Depression +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,10.8000000000,,,10.3000000000,11.3000000000,6322,POINT (-155.8112721 20.16059783),15001021800,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,24.9000000000,,,23.8000000000,25.9000000000,4025,POINT (-155.906965 19.51804981),15001021402,RISKBEH,LPA,CrdPrv,Physical Inactivity +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,3.0000000000,,,3.0000000000,3.1000000000,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,16.0000000000,,,14.9000000000,17.2000000000,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,21.1000000000,,,20.8000000000,21.4000000000,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,DEPRESSION,CrdPrv,Depression +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,11.3000000000,,,11.1000000000,11.5000000000,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2018,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,82.3000000000,,,81.3000000000,83.2000000000,4025,POINT (-155.906965 19.51804981),15001021402,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,2.9000000000,,,2.8000000000,3.0000000000,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,74.5000000000,,,73.9000000000,75.1000000000,3531,POINT (-154.8953489 19.44949565),15001021101,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,5.8000000000,,,5.5000000000,6.0000000000,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,COPD,CrdPrv,COPD +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,15.6000000000,,,14.7000000000,16.5000000000,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,18.2000000000,,,18.0000000000,18.4000000000,4025,POINT (-155.906965 19.51804981),15001021402,RISKBEH,BINGE,CrdPrv,Binge Drinking +2018,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,20.3000000000,,,17.4000000000,23.4000000000,3531,POINT (-154.8953489 19.44949565),15001021101,PREVENT,COREM,CrdPrv,Core preventive services for older men +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,11.5000000000,,,10.9000000000,12.2000000000,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,DIABETES,CrdPrv,Diabetes +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,28.8000000000,,,28.6000000000,29.1000000000,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2018,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,10.1000000000,,,9.1000000000,11.3000000000,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2018,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,22.6000000000,,,21.1000000000,24.3000000000,7884,POINT (-155.1037996 19.49754656),15001021010,PREVENT,COREW,CrdPrv,Core preventive services for older women +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,14.0000000000,,,13.6000000000,14.3000000000,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,72.6000000000,,,72.3000000000,72.9000000000,7884,POINT (-155.1037996 19.49754656),15001021010,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,32.6000000000,,,31.6000000000,33.6000000000,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2018,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,83.2000000000,,,82.6000000000,83.9000000000,6322,POINT (-155.8112721 20.16059783),15001021800,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2018,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,8.5000000000,,,7.2000000000,10.1000000000,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,19.8000000000,,,19.1000000000,20.6000000000,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,DEPRESSION,CrdPrv,Depression +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,17.8000000000,,,17.4000000000,18.3000000000,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,29.5000000000,,,29.2000000000,29.8000000000,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,83.8000000000,,,83.7000000000,83.9000000000,4025,POINT (-155.906965 19.51804981),15001021402,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2018,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,61.9000000000,,,60.9000000000,63.0000000000,7884,POINT (-155.1037996 19.49754656),15001021010,PREVENT,DENTAL,CrdPrv,Dental Visit +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,5.9000000000,,,5.9000000000,6.1000000000,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2018,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,13.3000000000,,,11.7000000000,15.1000000000,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,13.2000000000,,,12.9000000000,13.6000000000,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,82.5000000000,,,82.4000000000,82.6000000000,3531,POINT (-154.8953489 19.44949565),15001021101,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,23.8000000000,,,23.4000000000,24.2000000000,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,9.2000000000,,,9.0000000000,9.4000000000,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,11.2000000000,,,10.8000000000,11.5000000000,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,DIABETES,CrdPrv,Diabetes +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,10.4000000000,,,10.0000000000,10.7000000000,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2018,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,20.5000000000,,,19.1000000000,22.0000000000,6322,POINT (-155.8112721 20.16059783),15001021800,PREVENT,COREM,CrdPrv,Core preventive services for older men +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,79.8000000000,,,79.7000000000,79.9000000000,7884,POINT (-155.1037996 19.49754656),15001021010,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2018,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,39.4000000000,,,38.2000000000,41.2000000000,3531,POINT (-154.8953489 19.44949565),15001021101,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,29.6000000000,,,29.1000000000,30.2000000000,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,29.8000000000,,,29.4000000000,30.2000000000,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,21.7000000000,,,21.3000000000,22.1000000000,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,OBESITY,CrdPrv,Obesity +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,6.4000000000,,,6.2000000000,6.6000000000,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,3.2000000000,,,3.1000000000,3.3000000000,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,22.6000000000,,,21.7000000000,23.6000000000,7884,POINT (-155.1037996 19.49754656),15001021010,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,10.7000000000,,,10.5000000000,11.0000000000,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,DIABETES,CrdPrv,Diabetes +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,19.1000000000,,,18.7000000000,19.5000000000,3531,POINT (-154.8953489 19.44949565),15001021101,RISKBEH,BINGE,CrdPrv,Binge Drinking +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,11.4000000000,,,10.6000000000,12.1000000000,4025,POINT (-155.906965 19.51804981),15001021402,PREVENT,ACCESS2,CrdPrv,Health Insurance +2018,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,76.2000000000,,,75.3000000000,77.1000000000,6322,POINT (-155.8112721 20.16059783),15001021800,PREVENT,MAMMOUSE,CrdPrv,Mammography +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,70.6000000000,,,70.1000000000,71.0000000000,7884,POINT (-155.1037996 19.49754656),15001021010,PREVENT,BPMED,CrdPrv,Taking BP Medication +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,25.7000000000,,,24.8000000000,26.6000000000,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2018,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,21.4000000000,,,19.4000000000,23.6000000000,4025,POINT (-155.906965 19.51804981),15001021402,PREVENT,COREM,CrdPrv,Core preventive services for older men +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,9.8000000000,,,9.6000000000,9.9000000000,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,12.5000000000,,,11.9000000000,13.1000000000,7884,POINT (-155.1037996 19.49754656),15001021010,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,3.6000000000,,,3.4000000000,3.7000000000,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,STROKE,CrdPrv,Stroke +2018,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,65.5000000000,,,63.5000000000,68.0000000000,3531,POINT (-154.8953489 19.44949565),15001021101,PREVENT,DENTAL,CrdPrv,Dental Visit +2018,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,40.2000000000,,,39.7000000000,40.7000000000,6322,POINT (-155.8112721 20.16059783),15001021800,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,3.5000000000,,,3.3000000000,3.6000000000,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,4.0000000000,,,3.9000000000,4.2000000000,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,STROKE,CrdPrv,Stroke +2018,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,63.8000000000,,,61.3000000000,66.1000000000,3531,POINT (-154.8953489 19.44949565),15001021101,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2018,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,42.6000000000,,,41.8000000000,43.1000000000,7884,POINT (-155.1037996 19.49754656),15001021010,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,83.1000000000,,,83.0000000000,83.3000000000,6322,POINT (-155.8112721 20.16059783),15001021800,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,27.3000000000,,,26.5000000000,28.1000000000,7884,POINT (-155.1037996 19.49754656),15001021010,RISKBEH,LPA,CrdPrv,Physical Inactivity +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,7.4000000000,,,7.1000000000,7.8000000000,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,COPD,CrdPrv,COPD +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,25.8000000000,,,24.0000000000,27.7000000000,3531,POINT (-154.8953489 19.44949565),15001021101,RISKBEH,LPA,CrdPrv,Physical Inactivity +2018,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,60.7000000000,,,59.6000000000,61.7000000000,7884,POINT (-155.1037996 19.49754656),15001021010,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,17.7000000000,,,17.4000000000,17.9000000000,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,DEPRESSION,CrdPrv,Depression +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,18.0000000000,,,17.1000000000,19.0000000000,4025,POINT (-155.906965 19.51804981),15001021402,HLTHSTAT,GHLTH,CrdPrv,General Health +2018,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,24.1000000000,,,22.7000000000,25.6000000000,6322,POINT (-155.8112721 20.16059783),15001021800,PREVENT,COREW,CrdPrv,Core preventive services for older women +2018,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,83.4000000000,,,82.0000000000,84.8000000000,3531,POINT (-154.8953489 19.44949565),15001021101,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,74.4000000000,,,73.9000000000,74.9000000000,4025,POINT (-155.906965 19.51804981),15001021402,PREVENT,BPMED,CrdPrv,Taking BP Medication +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,4.2000000000,,,3.9000000000,4.5000000000,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,STROKE,CrdPrv,Stroke +2018,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,24.8000000000,,,22.8000000000,26.9000000000,4025,POINT (-155.906965 19.51804981),15001021402,PREVENT,COREW,CrdPrv,Core preventive services for older women +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,75.9000000000,,,75.6000000000,76.3000000000,4025,POINT (-155.906965 19.51804981),15001021402,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,18.3000000000,,,17.6000000000,19.0000000000,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,75.4000000000,,,75.2000000000,75.7000000000,6322,POINT (-155.8112721 20.16059783),15001021800,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,19.2000000000,,,19.0000000000,19.4000000000,6322,POINT (-155.8112721 20.16059783),15001021800,RISKBEH,BINGE,CrdPrv,Binge Drinking +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,13.2000000000,,,12.7000000000,13.6000000000,4025,POINT (-155.906965 19.51804981),15001021402,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,6.0000000000,,,5.8000000000,6.3000000000,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,24.0000000000,,,23.3000000000,24.8000000000,6322,POINT (-155.8112721 20.16059783),15001021800,RISKBEH,LPA,CrdPrv,Physical Inactivity +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,11.2000000000,,,10.9000000000,11.4000000000,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,DIABETES,CrdPrv,Diabetes +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,30.6000000000,,,30.2000000000,31.0000000000,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,6.7000000000,,,6.6000000000,6.8000000000,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,19.3000000000,,,17.2000000000,21.4000000000,3531,POINT (-154.8953489 19.44949565),15001021101,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2018,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,40.2000000000,,,39.3000000000,41.0000000000,4025,POINT (-155.906965 19.51804981),15001021402,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,10.2000000000,,,9.1000000000,11.4000000000,3531,POINT (-154.8953489 19.44949565),15001021101,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,16.7000000000,,,16.2000000000,17.2000000000,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2018,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,66.0000000000,,,65.0000000000,67.0000000000,6322,POINT (-155.8112721 20.16059783),15001021800,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,5.2000000000,,,4.9000000000,5.5000000000,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,COPD,CrdPrv,COPD +2018,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,67.4000000000,,,66.4000000000,68.4000000000,6322,POINT (-155.8112721 20.16059783),15001021800,PREVENT,DENTAL,CrdPrv,Dental Visit +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,6.8000000000,,,6.6000000000,7.0000000000,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,21.1000000000,,,20.6000000000,21.5000000000,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2018,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,83.0000000000,,,82.5000000000,83.7000000000,7884,POINT (-155.1037996 19.49754656),15001021010,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,22.6000000000,,,22.2000000000,22.9000000000,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2018,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,75.9000000000,,,74.6000000000,77.2000000000,4025,POINT (-155.906965 19.51804981),15001021402,PREVENT,MAMMOUSE,CrdPrv,Mammography +2018,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,68.3000000000,,,67.0000000000,69.7000000000,4025,POINT (-155.906965 19.51804981),15001021402,PREVENT,DENTAL,CrdPrv,Dental Visit +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,30.8000000000,,,30.2000000000,31.4000000000,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,74.6000000000,,,73.7000000000,75.4000000000,3531,POINT (-154.8953489 19.44949565),15001021101,PREVENT,BPMED,CrdPrv,Taking BP Medication +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,6.3000000000,,,6.2000000000,6.4000000000,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,27.9000000000,,,27.0000000000,28.8000000000,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,OBESITY,CrdPrv,Obesity +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,29.8000000000,,,29.4000000000,30.2000000000,4025,POINT (-155.906965 19.51804981),15001021402,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2018,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,76.2000000000,,,75.1000000000,77.3000000000,7884,POINT (-155.1037996 19.49754656),15001021010,PREVENT,MAMMOUSE,CrdPrv,Mammography +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,3.7000000000,,,3.6000000000,3.8000000000,6322,POINT (-155.8112721 20.16059783),15001021800,HLTHOUT,STROKE,CrdPrv,Stroke +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,7.7000000000,,,7.2000000000,8.3000000000,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2018,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,18.5000000000,,,17.0000000000,20.1000000000,7884,POINT (-155.1037996 19.49754656),15001021010,PREVENT,COREM,CrdPrv,Core preventive services for older men +2019,HI,Hawaii,Hawaii,15001,15001021800,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,16.8000000000,,,16.1000000000,17.6000000000,6322,POINT (-155.8112721 20.16059783),15001021800,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,6.9000000000,,,6.7000000000,7.1000000000,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2018,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,11.9000000000,,,8.9000000000,15.0000000000,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2018,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,77.6000000000,,,75.5000000000,79.5000000000,3531,POINT (-154.8953489 19.44949565),15001021101,PREVENT,MAMMOUSE,CrdPrv,Mammography +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,21.0000000000,,,19.1000000000,23.0000000000,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,HI,Hawaii,Hawaii,15001,15001021402,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,16.1000000000,,,15.1000000000,17.0000000000,4025,POINT (-155.906965 19.51804981),15001021402,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2019,HI,Hawaii,Hawaii,15001,15001021010,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,22.9000000000,,,22.1000000000,23.7000000000,7884,POINT (-155.1037996 19.49754656),15001021010,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,HI,Hawaii,Hawaii,15001,15001021101,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,7.3000000000,,,6.5000000000,8.2000000000,3531,POINT (-154.8953489 19.44949565),15001021101,HLTHOUT,COPD,CrdPrv,COPD +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,15.7000000000,,,14.4000000000,17.0000000000,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,2.8000000000,,,2.7000000000,2.9000000000,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,STROKE,CrdPrv,Stroke +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,6.7000000000,,,6.6000000000,6.9000000000,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2018,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,27.0000000000,,,25.1000000000,28.9000000000,5882,POINT (-157.8941068 21.55452063),15003010201,PREVENT,COREW,CrdPrv,Core preventive services for older women +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,10.7000000000,,,10.3000000000,11.1000000000,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,DIABETES,CrdPrv,Diabetes +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,17.2000000000,,,16.7000000000,17.6000000000,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,DEPRESSION,CrdPrv,Depression +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,9.1000000000,,,8.9000000000,9.3000000000,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,20.4000000000,,,19.8000000000,21.0000000000,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,22.7000000000,,,22.3000000000,23.1000000000,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2018,HI,Hawaii,Maui,15009,15009030800,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,61.8000000000,,,60.6000000000,63.0000000000,6907,POINT (-156.5426669 20.90996813),15009030800,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,11.7000000000,,,11.0000000000,12.4000000000,3139,POINT (-159.4840794 21.90956079),15007040604,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,3.5000000000,,,3.3000000000,3.6000000000,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,STROKE,CrdPrv,Stroke +2018,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,84.8000000000,,,83.9000000000,85.7000000000,8403,POINT (-159.5219447 21.94546074),15007040700,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,23.0000000000,,,22.7000000000,23.4000000000,2291,POINT (-156.1446943 20.72704536),15009030100,RISKBEH,BINGE,CrdPrv,Binge Drinking +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,24.3000000000,,,23.7000000000,25.0000000000,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,OBESITY,CrdPrv,Obesity +2018,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,65.5000000000,,,64.3000000000,66.8000000000,3139,POINT (-159.4840794 21.90956079),15007040604,PREVENT,DENTAL,CrdPrv,Dental Visit +2018,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,38.7000000000,,,38.0000000000,39.4000000000,8652,POINT (-156.3303372 20.82505697),15009030402,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,22.6000000000,,,22.0000000000,23.1000000000,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,22.7000000000,,,21.4000000000,24.2000000000,8652,POINT (-156.3303372 20.82505697),15009030402,RISKBEH,LPA,CrdPrv,Physical Inactivity +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,29.3000000000,,,28.9000000000,29.7000000000,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,27.5000000000,,,26.6000000000,28.4000000000,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,OBESITY,CrdPrv,Obesity +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,73.0000000000,,,72.4000000000,73.6000000000,2453,POINT (-156.2504199 20.86252093),15009030201,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,14.1000000000,,,13.6000000000,14.7000000000,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,24.3000000000,,,23.2000000000,25.5000000000,8403,POINT (-159.5219447 21.94546074),15007040700,RISKBEH,LPA,CrdPrv,Physical Inactivity +2018,HI,Hawaii,Maui,15009,15009030402,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,71.5000000000,,,69.7000000000,73.4000000000,8652,POINT (-156.3303372 20.82505697),15009030402,PREVENT,DENTAL,CrdPrv,Dental Visit +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,14.9000000000,,,13.7000000000,16.2000000000,2544,POINT (-159.4384998 21.90703588),15007040603,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,6.3000000000,,,6.1000000000,6.4000000000,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,69.2000000000,,,68.1000000000,70.1000000000,2453,POINT (-156.2504199 20.86252093),15009030201,PREVENT,BPMED,CrdPrv,Taking BP Medication +2018,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,11.2000000000,,,9.4000000000,13.1000000000,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,83.6000000000,,,83.3000000000,83.8000000000,2544,POINT (-159.4384998 21.90703588),15007040603,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2018,HI,Hawaii,Maui,15009,15009030800,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,70.2000000000,,,69.0000000000,71.4000000000,6907,POINT (-156.5426669 20.90996813),15009030800,PREVENT,DENTAL,CrdPrv,Dental Visit +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,18.6000000000,,,18.2000000000,18.9000000000,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2018,HI,Hawaii,Maui,15009,15009030100,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,85.6000000000,,,84.8000000000,86.6000000000,2291,POINT (-156.1446943 20.72704536),15009030100,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,6.1000000000,,,5.7000000000,6.6000000000,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,COPD,CrdPrv,COPD +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,31.0000000000,,,30.5000000000,31.5000000000,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,11.0000000000,,,10.4000000000,11.6000000000,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,13.9000000000,,,13.4000000000,14.3000000000,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2018,HI,Hawaii,Maui,15009,15009030201,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,25.3000000000,,,21.7000000000,29.2000000000,2453,POINT (-156.2504199 20.86252093),15009030201,PREVENT,COREW,CrdPrv,Core preventive services for older women +2018,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,82.1000000000,,,81.0000000000,83.1000000000,5882,POINT (-157.8941068 21.55452063),15003010201,PREVENT,MAMMOUSE,CrdPrv,Mammography +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,15.7000000000,,,14.8000000000,16.7000000000,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,10.8000000000,,,10.3000000000,11.3000000000,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,31.1000000000,,,30.3000000000,31.8000000000,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,12.2000000000,,,12.0000000000,12.5000000000,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,27.0000000000,,,25.3000000000,28.5000000000,2544,POINT (-159.4384998 21.90703588),15007040603,RISKBEH,LPA,CrdPrv,Physical Inactivity +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,29.2000000000,,,28.6000000000,29.8000000000,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,OBESITY,CrdPrv,Obesity +2018,HI,Hawaii,Maui,15009,15009030402,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,85.0000000000,,,83.8000000000,86.2000000000,8652,POINT (-156.3303372 20.82505697),15009030402,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,4.6000000000,,,4.3000000000,5.0000000000,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,COPD,CrdPrv,COPD +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,77.8000000000,,,77.5000000000,78.1000000000,3139,POINT (-159.4840794 21.90956079),15007040604,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2018,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,6.2000000000,,,5.1000000000,7.5000000000,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,8.9000000000,,,8.5000000000,9.4000000000,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,DIABETES,CrdPrv,Diabetes +2018,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,25.6000000000,,,23.3000000000,27.9000000000,8403,POINT (-159.5219447 21.94546074),15007040700,PREVENT,COREW,CrdPrv,Core preventive services for older women +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,12.9000000000,,,12.5000000000,13.4000000000,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2018,HI,Hawaii,Maui,15009,15009030100,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,67.9000000000,,,66.6000000000,69.3000000000,2291,POINT (-156.1446943 20.72704536),15009030100,PREVENT,DENTAL,CrdPrv,Dental Visit +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,5.8000000000,,,5.5000000000,6.2000000000,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,COPD,CrdPrv,COPD +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,20.0000000000,,,19.0000000000,21.0000000000,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHSTAT,GHLTH,CrdPrv,General Health +2018,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,82.4000000000,,,80.9000000000,84.0000000000,2544,POINT (-159.4384998 21.90703588),15007040603,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2018,HI,Hawaii,Maui,15009,15009030800,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,84.2000000000,,,83.4000000000,85.1000000000,6907,POINT (-156.5426669 20.90996813),15009030800,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,25.3000000000,,,24.6000000000,26.0000000000,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2018,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,69.0000000000,,,67.5000000000,70.4000000000,8403,POINT (-159.5219447 21.94546074),15007040700,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,10.2000000000,,,10.0000000000,10.5000000000,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,12.2000000000,,,11.5000000000,12.8000000000,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,DIABETES,CrdPrv,Diabetes +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,21.3000000000,,,21.0000000000,21.6000000000,5882,POINT (-157.8941068 21.55452063),15003010201,RISKBEH,BINGE,CrdPrv,Binge Drinking +2018,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,37.5000000000,,,36.9000000000,38.1000000000,3139,POINT (-159.4840794 21.90956079),15007040604,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2018,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,10.1000000000,,,8.7000000000,11.6000000000,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2018,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,8.1000000000,,,6.2000000000,10.2000000000,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,6.5000000000,,,6.3000000000,6.8000000000,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,19.2000000000,,,18.9000000000,19.6000000000,8403,POINT (-159.5219447 21.94546074),15007040700,RISKBEH,BINGE,CrdPrv,Binge Drinking +2018,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,40.9000000000,,,40.1000000000,41.6000000000,6907,POINT (-156.5426669 20.90996813),15009030800,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,15.5000000000,,,15.0000000000,16.0000000000,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,DEPRESSION,CrdPrv,Depression +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,17.5000000000,,,16.4000000000,18.7000000000,5882,POINT (-157.8941068 21.55452063),15003010201,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,15.2000000000,,,14.9000000000,15.6000000000,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,DEPRESSION,CrdPrv,Depression +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,21.0000000000,,,20.6000000000,21.4000000000,8652,POINT (-156.3303372 20.82505697),15009030402,RISKBEH,BINGE,CrdPrv,Binge Drinking +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,27.0000000000,,,26.6000000000,27.4000000000,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2018,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,67.1000000000,,,65.3000000000,68.9000000000,2544,POINT (-159.4384998 21.90703588),15007040603,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,26.4000000000,,,25.8000000000,26.9000000000,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,28.1000000000,,,27.6000000000,28.7000000000,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,6.4000000000,,,6.3000000000,6.5000000000,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,15.9000000000,,,15.6000000000,16.2000000000,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,DEPRESSION,CrdPrv,Depression +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,82.9000000000,,,82.7000000000,83.0000000000,5882,POINT (-157.8941068 21.55452063),15003010201,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,2.7000000000,,,2.6000000000,2.8000000000,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,21.8000000000,,,21.5000000000,22.1000000000,6907,POINT (-156.5426669 20.90996813),15009030800,RISKBEH,BINGE,CrdPrv,Binge Drinking +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,6.0000000000,,,5.8000000000,6.3000000000,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,2.5000000000,,,2.5000000000,2.6000000000,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,82.9000000000,,,82.9000000000,83.0000000000,2453,POINT (-156.2504199 20.86252093),15009030201,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,25.5000000000,,,24.9000000000,25.9000000000,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,10.7000000000,,,10.4000000000,11.1000000000,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,DIABETES,CrdPrv,Diabetes +2018,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,68.0000000000,,,66.2000000000,69.9000000000,2544,POINT (-159.4384998 21.90703588),15007040603,PREVENT,DENTAL,CrdPrv,Dental Visit +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,12.3000000000,,,11.6000000000,13.0000000000,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,8.9000000000,,,8.7000000000,9.2000000000,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,3.0000000000,,,2.8000000000,3.2000000000,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,STROKE,CrdPrv,Stroke +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,19.5000000000,,,18.6000000000,20.5000000000,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,12.4000000000,,,11.6000000000,13.1000000000,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,3.1000000000,,,3.0000000000,3.2000000000,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,24.8000000000,,,23.8000000000,25.9000000000,5882,POINT (-157.8941068 21.55452063),15003010201,RISKBEH,LPA,CrdPrv,Physical Inactivity +2018,HI,Hawaii,Maui,15009,15009030201,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,26.1000000000,,,22.4000000000,30.0000000000,2453,POINT (-156.2504199 20.86252093),15009030201,PREVENT,COREM,CrdPrv,Core preventive services for older men +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,23.1000000000,,,22.6000000000,23.6000000000,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,OBESITY,CrdPrv,Obesity +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,12.3000000000,,,12.0000000000,12.7000000000,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,DIABETES,CrdPrv,Diabetes +2018,HI,Hawaii,Maui,15009,15009030800,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,24.0000000000,,,22.0000000000,25.9000000000,6907,POINT (-156.5426669 20.90996813),15009030800,PREVENT,COREW,CrdPrv,Core preventive services for older women +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,6.4000000000,,,6.1000000000,6.7000000000,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,23.7000000000,,,23.0000000000,24.3000000000,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,OBESITY,CrdPrv,Obesity +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,84.2000000000,,,84.1000000000,84.4000000000,8403,POINT (-159.5219447 21.94546074),15007040700,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,15.1000000000,,,14.3000000000,15.8000000000,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,3.7000000000,,,3.5000000000,3.9000000000,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,STROKE,CrdPrv,Stroke +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,79.1000000000,,,78.8000000000,79.4000000000,5882,POINT (-157.8941068 21.55452063),15003010201,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2018,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,25.0000000000,,,22.9000000000,27.3000000000,3139,POINT (-159.4840794 21.90956079),15007040604,PREVENT,COREM,CrdPrv,Core preventive services for older men +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,82.9000000000,,,82.5000000000,83.3000000000,8652,POINT (-156.3303372 20.82505697),15009030402,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,13.6000000000,,,12.6000000000,14.6000000000,8403,POINT (-159.5219447 21.94546074),15007040700,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,28.3000000000,,,27.9000000000,28.7000000000,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,9.0000000000,,,8.7000000000,9.2000000000,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,22.1000000000,,,20.7000000000,23.7000000000,2453,POINT (-156.2504199 20.86252093),15009030201,RISKBEH,LPA,CrdPrv,Physical Inactivity +2018,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,77.5000000000,,,76.1000000000,78.9000000000,3139,POINT (-159.4840794 21.90956079),15007040604,PREVENT,MAMMOUSE,CrdPrv,Mammography +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,14.7000000000,,,14.2000000000,15.2000000000,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,DEPRESSION,CrdPrv,Depression +2018,HI,Hawaii,Maui,15009,15009030100,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,63.2000000000,,,61.5000000000,64.8000000000,2291,POINT (-156.1446943 20.72704536),15009030100,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,3.8000000000,,,3.7000000000,4.0000000000,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,STROKE,CrdPrv,Stroke +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,10.2000000000,,,10.0000000000,10.5000000000,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,DIABETES,CrdPrv,Diabetes +2018,HI,Hawaii,Maui,15009,15009030402,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,25.4000000000,,,22.7000000000,28.5000000000,8652,POINT (-156.3303372 20.82505697),15009030402,PREVENT,COREM,CrdPrv,Core preventive services for older men +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,82.0000000000,,,81.7000000000,82.4000000000,6907,POINT (-156.5426669 20.90996813),15009030800,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,18.5000000000,,,17.9000000000,19.2000000000,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,DEPRESSION,CrdPrv,Depression +2018,HI,Hawaii,Maui,15009,15009030800,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,79.6000000000,,,78.6000000000,80.7000000000,6907,POINT (-156.5426669 20.90996813),15009030800,PREVENT,MAMMOUSE,CrdPrv,Mammography +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,11.1000000000,,,10.3000000000,11.9000000000,2291,POINT (-156.1446943 20.72704536),15009030100,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,23.5000000000,,,23.0000000000,24.0000000000,2453,POINT (-156.2504199 20.86252093),15009030201,RISKBEH,BINGE,CrdPrv,Binge Drinking +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,18.4000000000,,,17.3000000000,19.6000000000,2291,POINT (-156.1446943 20.72704536),15009030100,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,9.6000000000,,,9.2000000000,10.1000000000,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,DIABETES,CrdPrv,Diabetes +2018,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,26.3000000000,,,23.2000000000,29.7000000000,2544,POINT (-159.4384998 21.90703588),15007040603,PREVENT,COREM,CrdPrv,Core preventive services for older men +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,70.6000000000,,,70.0000000000,71.4000000000,2291,POINT (-156.1446943 20.72704536),15009030100,PREVENT,BPMED,CrdPrv,Taking BP Medication +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,9.7000000000,,,9.4000000000,10.0000000000,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,5.6000000000,,,5.1000000000,6.1000000000,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,COPD,CrdPrv,COPD +2018,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,36.8000000000,,,35.8000000000,37.7000000000,2544,POINT (-159.4384998 21.90703588),15007040603,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2018,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,7.9000000000,,,6.2000000000,9.9000000000,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,27.7000000000,,,26.6000000000,28.7000000000,3139,POINT (-159.4840794 21.90956079),15007040604,RISKBEH,LPA,CrdPrv,Physical Inactivity +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,26.2000000000,,,25.7000000000,26.6000000000,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2018,HI,Hawaii,Maui,15009,15009030201,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,80.7000000000,,,78.6000000000,82.6000000000,2453,POINT (-156.2504199 20.86252093),15009030201,PREVENT,MAMMOUSE,CrdPrv,Mammography +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,18.1000000000,,,17.1000000000,19.1000000000,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,3.1000000000,,,2.9000000000,3.2000000000,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,STROKE,CrdPrv,Stroke +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,23.8000000000,,,22.7000000000,24.9000000000,2291,POINT (-156.1446943 20.72704536),15009030100,RISKBEH,LPA,CrdPrv,Physical Inactivity +2018,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,8.2000000000,,,6.4000000000,10.4000000000,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2018,HI,Hawaii,Maui,15009,15009030800,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,24.8000000000,,,22.9000000000,27.0000000000,6907,POINT (-156.5426669 20.90996813),15009030800,PREVENT,COREM,CrdPrv,Core preventive services for older men +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,13.0000000000,,,12.5000000000,13.5000000000,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,18.5000000000,,,18.3000000000,18.8000000000,3139,POINT (-159.4840794 21.90956079),15007040604,RISKBEH,BINGE,CrdPrv,Binge Drinking +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,Diagnosed diabetes among adults aged >=18 years,%,Crude prevalence,9.3000000000,,,9.0000000000,9.5000000000,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,DIABETES,CrdPrv,Diabetes +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,6.1000000000,,,6.0000000000,6.3000000000,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2018,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,69.2000000000,,,68.0000000000,70.5000000000,5882,POINT (-157.8941068 21.55452063),15003010201,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,11.4000000000,,,10.4000000000,12.6000000000,2544,POINT (-159.4384998 21.90703588),15007040603,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,27.9000000000,,,27.3000000000,28.5000000000,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,2.6000000000,,,2.5000000000,2.7000000000,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2018,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,72.1000000000,,,70.8000000000,73.3000000000,5882,POINT (-157.8941068 21.55452063),15003010201,PREVENT,DENTAL,CrdPrv,Dental Visit +2018,HI,Hawaii,Maui,15009,15009030100,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,23.0000000000,,,21.0000000000,25.0000000000,2291,POINT (-156.1446943 20.72704536),15009030100,PREVENT,COREW,CrdPrv,Core preventive services for older women +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,69.9000000000,,,69.4000000000,70.4000000000,5882,POINT (-157.8941068 21.55452063),15003010201,PREVENT,BPMED,CrdPrv,Taking BP Medication +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,12.0000000000,,,11.5000000000,12.5000000000,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,7.0000000000,,,6.8000000000,7.2000000000,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,2.9000000000,,,2.8000000000,2.9000000000,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,73.2000000000,,,72.9000000000,73.6000000000,6907,POINT (-156.5426669 20.90996813),15009030800,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,30.0000000000,,,29.4000000000,30.6000000000,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,77.8000000000,,,77.5000000000,78.2000000000,8403,POINT (-159.5219447 21.94546074),15007040700,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,24.5000000000,,,24.2000000000,24.8000000000,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2018,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,40.4000000000,,,39.6000000000,41.5000000000,2291,POINT (-156.1446943 20.72704536),15009030100,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,74.1000000000,,,73.6000000000,74.6000000000,8652,POINT (-156.3303372 20.82505697),15009030402,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2018,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,9.6000000000,,,7.8000000000,11.5000000000,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,23.8000000000,,,23.3000000000,24.1000000000,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2018,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,82.1000000000,,,81.2000000000,82.9000000000,3139,POINT (-159.4840794 21.90956079),15007040604,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,82.6000000000,,,82.3000000000,83.0000000000,2291,POINT (-156.1446943 20.72704536),15009030100,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2018,HI,Hawaii,Maui,15009,15009030201,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,73.2000000000,,,71.2000000000,74.9000000000,2453,POINT (-156.2504199 20.86252093),15009030201,PREVENT,DENTAL,CrdPrv,Dental Visit +2018,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,21.3000000000,,,19.5000000000,23.3000000000,3139,POINT (-159.4840794 21.90956079),15007040604,PREVENT,COREW,CrdPrv,Core preventive services for older women +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,33.4000000000,,,32.9000000000,34.0000000000,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,OBESITY,CrdPrv,Obesity +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,70.7000000000,,,69.9000000000,71.4000000000,8652,POINT (-156.3303372 20.82505697),15009030402,PREVENT,BPMED,CrdPrv,Taking BP Medication +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,12.6000000000,,,12.0000000000,13.1000000000,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,5.5000000000,,,5.3000000000,5.7000000000,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,23.0000000000,,,22.2000000000,23.7000000000,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2018,HI,Hawaii,Maui,15009,15009030402,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,24.7000000000,,,22.1000000000,27.4000000000,8652,POINT (-156.3303372 20.82505697),15009030402,PREVENT,COREW,CrdPrv,Core preventive services for older women +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,10.7000000000,,,10.3000000000,11.0000000000,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,12.5000000000,,,11.8000000000,13.2000000000,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,13.2000000000,,,12.7000000000,13.8000000000,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2018,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Prevention,Visits to dentist or dental clinic among adults aged >=18 years,%,Crude prevalence,72.2000000000,,,70.8000000000,73.5000000000,8403,POINT (-159.5219447 21.94546074),15007040700,PREVENT,DENTAL,CrdPrv,Dental Visit +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,2.9000000000,,,2.8000000000,3.0000000000,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,15.2000000000,,,14.1000000000,16.4000000000,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,5.5000000000,,,5.0000000000,6.1000000000,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,COPD,CrdPrv,COPD +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,3.7000000000,,,3.4000000000,3.9000000000,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,STROKE,CrdPrv,Stroke +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,10.3000000000,,,9.3000000000,11.3000000000,8652,POINT (-156.3303372 20.82505697),15009030402,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,3.3000000000,,,3.2000000000,3.4000000000,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,13.9000000000,,,13.2000000000,14.6000000000,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,Arthritis among adults aged >=18 years,%,Crude prevalence,23.2000000000,,,22.7000000000,23.8000000000,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,ARTHRITIS,CrdPrv,Arthritis +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,15.6000000000,,,14.8000000000,16.5000000000,3139,POINT (-159.4840794 21.90956079),15007040604,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,25.6000000000,,,24.8000000000,26.4000000000,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Risk Behaviors,No leisure-time physical activity among adults aged >=18 years,%,Crude prevalence,22.6000000000,,,21.7000000000,23.6000000000,6907,POINT (-156.5426669 20.90996813),15009030800,RISKBEH,LPA,CrdPrv,Physical Inactivity +2018,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,77.6000000000,,,76.1000000000,79.2000000000,8403,POINT (-159.5219447 21.94546074),15007040700,PREVENT,MAMMOUSE,CrdPrv,Mammography +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,5.9000000000,,,5.6000000000,6.2000000000,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,COPD,CrdPrv,COPD +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,10.2000000000,,,9.5000000000,11.0000000000,5882,POINT (-157.8941068 21.55452063),15003010201,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,4.3000000000,,,4.1000000000,4.6000000000,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,COPD,CrdPrv,COPD +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,5.0000000000,,,4.7000000000,5.4000000000,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,9.6000000000,,,9.4000000000,9.8000000000,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,15.3000000000,,,14.0000000000,16.7000000000,8652,POINT (-156.3303372 20.82505697),15009030402,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,Chronic obstructive pulmonary disease among adults aged >=18 years,%,Crude prevalence,4.5000000000,,,4.2000000000,4.8000000000,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,COPD,CrdPrv,COPD +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,18.5000000000,,,18.0000000000,18.9000000000,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,DEPRESSION,CrdPrv,Depression +2018,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Prevention,"Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",%,Crude prevalence,24.1000000000,,,21.1000000000,27.2000000000,2544,POINT (-159.4384998 21.90703588),15007040603,PREVENT,COREW,CrdPrv,Core preventive services for older women +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,Depression among adults aged >=18 years,%,Crude prevalence,14.5000000000,,,14.2000000000,14.9000000000,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,DEPRESSION,CrdPrv,Depression +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,5.4000000000,,,5.3000000000,5.5000000000,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,9.3000000000,,,8.3000000000,10.2000000000,2453,POINT (-156.2504199 20.86252093),15009030201,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,78.5000000000,,,78.0000000000,78.9000000000,2544,POINT (-159.4384998 21.90703588),15007040603,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Outcomes,Stroke among adults aged >=18 years,%,Crude prevalence,3.1000000000,,,2.9000000000,3.3000000000,2453,POINT (-156.2504199 20.86252093),15009030201,HLTHOUT,STROKE,CrdPrv,Stroke +2018,HI,Hawaii,Maui,15009,15009030100,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,78.5000000000,,,77.1000000000,79.9000000000,2291,POINT (-156.1446943 20.72704536),15009030100,PREVENT,MAMMOUSE,CrdPrv,Mammography +2018,HI,Hawaii,Maui,15009,15009030100,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,22.7000000000,,,20.4000000000,25.1000000000,2291,POINT (-156.1446943 20.72704536),15009030100,PREVENT,COREM,CrdPrv,Core preventive services for older men +2018,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,48.2000000000,,,47.6000000000,48.9000000000,5882,POINT (-157.8941068 21.55452063),15003010201,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,16.1000000000,,,15.1000000000,17.0000000000,6907,POINT (-156.5426669 20.90996813),15009030800,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2018,HI,Hawaii,Maui,15009,15009030402,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,63.8000000000,,,61.5000000000,65.9000000000,8652,POINT (-156.3303372 20.82505697),15009030402,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,74.8000000000,,,74.3000000000,75.4000000000,8403,POINT (-159.5219447 21.94546074),15007040700,PREVENT,BPMED,CrdPrv,Taking BP Medication +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,10.6000000000,,,10.0000000000,11.3000000000,6907,POINT (-156.5426669 20.90996813),15009030800,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Risk Behaviors,Current smoking among adults aged >=18 years,%,Crude prevalence,17.5000000000,,,15.9000000000,19.2000000000,2453,POINT (-156.2504199 20.86252093),15009030201,RISKBEH,CSMOKING,CrdPrv,Current Smoking +2018,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,All teeth lost among adults aged >=65 years,%,Crude prevalence,8.1000000000,,,7.1000000000,9.3000000000,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,TEETHLOST,CrdPrv,All Teeth Lost +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,5.0000000000,,,4.8000000000,5.3000000000,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Outcomes,Current asthma among adults aged >=18 years,%,Crude prevalence,8.7000000000,,,8.5000000000,8.9000000000,8403,POINT (-159.5219447 21.94546074),15007040700,HLTHOUT,CASTHMA,CrdPrv,Current Asthma +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Status,Physical health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,13.0000000000,,,12.4000000000,13.5000000000,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHSTAT,PHLTH,CrdPrv,Physical Health +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,4.8000000000,,,4.5000000000,5.1000000000,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Status,Fair or poor self-rated health status among adults aged >=18 years,%,Crude prevalence,18.2000000000,,,16.8000000000,19.5000000000,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHSTAT,GHLTH,CrdPrv,General Health +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Prevention,Visits to doctor for routine checkup within the past year among adults aged >=18 years,%,Crude prevalence,74.2000000000,,,73.8000000000,74.6000000000,2291,POINT (-156.1446943 20.72704536),15009030100,PREVENT,CHECKUP,CrdPrv,Annual Checkup +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,77.1000000000,,,76.5000000000,77.7000000000,2544,POINT (-159.4384998 21.90703588),15007040603,PREVENT,BPMED,CrdPrv,Taking BP Medication +2018,HI,Hawaii,Maui,15009,15009030201,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,37.8000000000,,,37.1000000000,38.6000000000,2453,POINT (-156.2504199 20.86252093),15009030201,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Prevention,Current lack of health insurance among adults aged 18-64 years,%,Crude prevalence,10.2000000000,,,9.5000000000,11.1000000000,8403,POINT (-159.5219447 21.94546074),15007040700,PREVENT,ACCESS2,CrdPrv,Health Insurance +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,%,Crude prevalence,29.8000000000,,,29.4000000000,30.1000000000,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,HIGHCHOL,CrdPrv,High Cholesterol +2018,HI,Hawaii,Maui,15009,15009030201,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,65.4000000000,,,63.1000000000,67.3000000000,2453,POINT (-156.2504199 20.86252093),15009030201,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,67.7000000000,,,67.1000000000,68.2000000000,6907,POINT (-156.5426669 20.90996813),15009030800,PREVENT,BPMED,CrdPrv,Taking BP Medication +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Prevention,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,%,Crude prevalence,76.2000000000,,,75.8000000000,76.7000000000,3139,POINT (-159.4840794 21.90956079),15007040604,PREVENT,BPMED,CrdPrv,Taking BP Medication +2018,HI,Hawaii,Maui,15009,15009030402,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,79.6000000000,,,77.8000000000,81.3000000000,8652,POINT (-156.3303372 20.82505697),15009030402,PREVENT,MAMMOUSE,CrdPrv,Mammography +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,24.3000000000,,,23.8000000000,24.7000000000,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,OBESITY,CrdPrv,Obesity +2018,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,87.3000000000,,,86.7000000000,88.1000000000,5882,POINT (-157.8941068 21.55452063),15003010201,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,6.1000000000,,,5.8000000000,6.5000000000,2544,POINT (-159.4384998 21.90703588),15007040603,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2019,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Health Risk Behaviors,Binge drinking among adults aged >=18 years,%,Crude prevalence,17.9000000000,,,17.5000000000,18.2000000000,2544,POINT (-159.4384998 21.90703588),15007040603,RISKBEH,BINGE,CrdPrv,Binge Drinking +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Health Outcomes,Obesity among adults aged >=18 years,%,Crude prevalence,26.0000000000,,,25.6000000000,26.5000000000,3139,POINT (-159.4840794 21.90956079),15007040604,HLTHOUT,OBESITY,CrdPrv,Obesity +2018,HI,Hawaii,Kauai,15007,15007040603,BRFSS,Prevention,Mammography use among women aged 50-74 years,%,Crude prevalence,77.1000000000,,,75.2000000000,79.0000000000,2544,POINT (-159.4384998 21.90703588),15007040603,PREVENT,MAMMOUSE,CrdPrv,Mammography +2019,HI,Hawaii,Maui,15009,15009030100,BRFSS,Health Outcomes,Cancer (excluding skin cancer) among adults aged >=18 years,%,Crude prevalence,6.9000000000,,,6.8000000000,7.1000000000,2291,POINT (-156.1446943 20.72704536),15009030100,HLTHOUT,CANCER,CrdPrv,Cancer (except skin) +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,31.2000000000,,,30.8000000000,31.8000000000,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2019,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Health Status,Mental health not good for >=14 days among adults aged >=18 years,%,Crude prevalence,15.1000000000,,,14.5000000000,15.7000000000,5882,POINT (-157.8941068 21.55452063),15003010201,HLTHSTAT,MHLTH,CrdPrv,Mental Health +2018,HI,Hawaii,Maui,15009,15009030201,BRFSS,Prevention,Cervical cancer screening among adult women aged 21-65 years,%,Crude prevalence,87.7000000000,,,86.6000000000,88.8000000000,2453,POINT (-156.2504199 20.86252093),15009030201,PREVENT,CERVICAL,CrdPrv,Cervical Cancer Screening +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,Coronary heart disease among adults aged >=18 years,%,Crude prevalence,4.3000000000,,,4.2000000000,4.4000000000,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,CHD,CrdPrv,Coronary Heart Disease +2018,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Health Risk Behaviors,Sleeping less than 7 hours among adults aged >=18 years,%,Crude prevalence,36.4000000000,,,35.6000000000,36.9000000000,8403,POINT (-159.5219447 21.94546074),15007040700,RISKBEH,SLEEP,CrdPrv,Sleep <7 hours +2019,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Prevention,Cholesterol screening among adults aged >=18 years,%,Crude prevalence,82.8000000000,,,82.7000000000,82.9000000000,3139,POINT (-159.4840794 21.90956079),15007040604,PREVENT,CHOLSCREEN,CrdPrv,Cholesterol Screening +2019,HI,Hawaii,Maui,15009,15009030402,BRFSS,Health Outcomes,High blood pressure among adults aged >=18 years,%,Crude prevalence,25.2000000000,,,24.6000000000,25.9000000000,8652,POINT (-156.3303372 20.82505697),15009030402,HLTHOUT,BPHIGH,CrdPrv,High Blood Pressure +2018,HI,Hawaii,Kauai,15007,15007040700,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,27.8000000000,,,25.4000000000,30.3000000000,8403,POINT (-159.5219447 21.94546074),15007040700,PREVENT,COREM,CrdPrv,Core preventive services for older men +2019,HI,Hawaii,Maui,15009,15009030800,BRFSS,Health Outcomes,Chronic kidney disease among adults aged >=18 years,%,Crude prevalence,2.3000000000,,,2.3000000000,2.4000000000,6907,POINT (-156.5426669 20.90996813),15009030800,HLTHOUT,KIDNEY,CrdPrv,Chronic Kidney Disease +2018,HI,Hawaii,Honolulu,15003,15003010201,BRFSS,Prevention,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening",%,Crude prevalence,25.0000000000,,,23.0000000000,27.0000000000,5882,POINT (-157.8941068 21.55452063),15003010201,PREVENT,COREM,CrdPrv,Core preventive services for older men +2018,HI,Hawaii,Kauai,15007,15007040604,BRFSS,Prevention,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",%,Crude prevalence,64.2000000000,,,62.8000000000,65.7000000000,3139,POINT (-159.4840794 21.90956079),15007040604,PREVENT,COLON_SCREEN,CrdPrv,Colorectal Cancer Screening diff --git a/data/data-pipeline/data_pipeline/tests/sources/cdc_places/data/output.csv b/data/data-pipeline/data_pipeline/tests/sources/cdc_places/data/output.csv new file mode 100644 index 000000000..f5bc346b4 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/cdc_places/data/output.csv @@ -0,0 +1,16 @@ +GEOID10_TRACT,Diagnosed diabetes among adults aged greater than or equal to 18 years,Current asthma among adults aged greater than or equal to 18 years,Coronary heart disease among adults aged greater than or equal to 18 years,Cancer (excluding skin cancer) among adults aged greater than or equal to 18 years,Current lack of health insurance among adults aged 18-64 years,Physical health not good for greater than or equal to 14 days among adults aged greater than or equal to 18 years +06027000800,13.1000000000,10.1000000000,8.6000000000,8.3000000000,14.2000000000,16.8000000000 +06061021322,6.9000000000,8.6000000000,3.9000000000,5.9000000000,9.0000000000,9.4000000000 +06069000802,10.2000000000,9.3000000000,5.8000000000,7.0000000000,13.2000000000,13.4000000000 +15001021010,11.2000000000,11.3000000000,6.9000000000,5.9000000000,12.5000000000,16.7000000000 +15001021101,11.5000000000,10.4000000000,7.7000000000,6.8000000000,10.2000000000,16.0000000000 +15001021402,11.2000000000,9.2000000000,6.0000000000,6.3000000000,11.4000000000,12.4000000000 +15001021800,10.7000000000,9.8000000000,6.4000000000,6.7000000000,10.8000000000,13.2000000000 +15003010201,10.2000000000,12.2000000000,5.5000000000,6.4000000000,10.2000000000,13.0000000000 +15007040603,12.2000000000,9.0000000000,6.1000000000,7.0000000000,11.4000000000,12.3000000000 +15007040604,12.3000000000,9.6000000000,6.4000000000,6.7000000000,11.7000000000,13.2000000000 +15007040700,10.7000000000,8.7000000000,5.0000000000,6.3000000000,10.2000000000,10.8000000000 +15009030100,10.7000000000,10.2000000000,6.0000000000,6.9000000000,11.1000000000,13.0000000000 +15009030201,8.9000000000,9.7000000000,5.0000000000,6.5000000000,9.3000000000,12.4000000000 +15009030402,9.6000000000,8.9000000000,4.8000000000,6.1000000000,10.3000000000,11.0000000000 +15009030800,9.3000000000,9.1000000000,4.3000000000,5.4000000000,10.6000000000,10.7000000000 diff --git a/data/data-pipeline/data_pipeline/tests/sources/cdc_places/data/transform.csv b/data/data-pipeline/data_pipeline/tests/sources/cdc_places/data/transform.csv new file mode 100644 index 000000000..947e039ec --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/cdc_places/data/transform.csv @@ -0,0 +1,16 @@ +GEOID10_TRACT,All teeth lost among adults aged >=65 years,Arthritis among adults aged >=18 years,Binge drinking among adults aged >=18 years,Cancer (excluding skin cancer) among adults aged greater than or equal to 18 years,Cervical cancer screening among adult women aged 21-65 years,Cholesterol screening among adults aged >=18 years,Chronic kidney disease among adults aged >=18 years,Chronic obstructive pulmonary disease among adults aged >=18 years,Coronary heart disease among adults aged greater than or equal to 18 years,Current asthma among adults aged greater than or equal to 18 years,Current lack of health insurance among adults aged 18-64 years,Current smoking among adults aged >=18 years,Depression among adults aged >=18 years,Diagnosed diabetes among adults aged greater than or equal to 18 years,Fair or poor self-rated health status among adults aged >=18 years,"Fecal occult blood test, sigmoidoscopy, or colonoscopy among adults aged 50-75 years",High blood pressure among adults aged >=18 years,High cholesterol among adults aged >=18 years who have been screened in the past 5 years,Mammography use among women aged 50-74 years,Mental health not good for >=14 days among adults aged >=18 years,No leisure-time physical activity among adults aged >=18 years,Obesity among adults aged >=18 years,"Older adult men aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening","Older adult women aged >=65 years who are up to date on a core set of clinical preventive services: Flu shot past year, PPV shot ever, Colorectal cancer screening, and Mammogram past 2 years",Physical health not good for greater than or equal to 14 days among adults aged greater than or equal to 18 years,Sleeping less than 7 hours among adults aged >=18 years,Stroke among adults aged >=18 years,Taking medicine for high blood pressure control among adults aged >=18 years with high blood pressure,Visits to dentist or dental clinic among adults aged >=18 years,Visits to doctor for routine checkup within the past year among adults aged >=18 years +06027000800,17.7000000000,28.5000000000,16.2000000000,8.3000000000,82.0000000000,86.4000000000,3.9000000000,9.2000000000,8.6000000000,10.1000000000,14.2000000000,17.2000000000,19.5000000000,13.1000000000,24.2000000000,61.5000000000,36.1000000000,35.8000000000,74.9000000000,15.1000000000,26.9000000000,30.2000000000,26.5000000000,25.6000000000,16.8000000000,33.1000000000,4.6000000000,74.3000000000,58.1000000000,72.5000000000 +06061021322,7.6000000000,18.7000000000,18.9000000000,5.9000000000,83.4000000000,86.2000000000,2.2000000000,4.2000000000,3.9000000000,8.6000000000,9.0000000000,11.4000000000,17.2000000000,6.9000000000,12.3000000000,72.1000000000,23.2000000000,28.8000000000,78.2000000000,12.0000000000,16.6000000000,23.0000000000,35.7000000000,34.4000000000,9.4000000000,31.9000000000,2.2000000000,67.4000000000,71.8000000000,70.2000000000 +06069000802,12.3000000000,23.6000000000,18.7000000000,7.0000000000,84.7000000000,87.1000000000,2.9000000000,6.5000000000,5.8000000000,9.3000000000,13.2000000000,14.5000000000,19.2000000000,10.2000000000,18.9000000000,65.7000000000,30.2000000000,32.7000000000,77.6000000000,13.5000000000,22.7000000000,29.2000000000,30.3000000000,29.3000000000,13.4000000000,31.9000000000,3.2000000000,70.6000000000,64.8000000000,71.1000000000 +15001021010,13.3000000000,23.8000000000,20.7000000000,5.9000000000,83.0000000000,79.8000000000,3.2000000000,7.4000000000,6.9000000000,11.3000000000,12.5000000000,22.6000000000,21.1000000000,11.2000000000,22.9000000000,60.7000000000,30.6000000000,28.8000000000,76.2000000000,17.8000000000,27.3000000000,29.4000000000,18.5000000000,22.6000000000,16.7000000000,42.6000000000,4.0000000000,70.6000000000,61.9000000000,72.6000000000 +15001021101,11.9000000000,25.7000000000,19.1000000000,6.8000000000,83.4000000000,82.5000000000,3.5000000000,7.3000000000,7.7000000000,10.4000000000,10.2000000000,19.3000000000,19.8000000000,11.5000000000,21.0000000000,63.8000000000,32.6000000000,30.8000000000,77.6000000000,15.6000000000,25.8000000000,27.9000000000,20.3000000000,23.4000000000,16.0000000000,39.4000000000,4.2000000000,74.6000000000,65.5000000000,74.5000000000 +15001021402,8.5000000000,21.1000000000,18.2000000000,6.3000000000,82.3000000000,83.8000000000,2.9000000000,5.2000000000,6.0000000000,9.2000000000,11.4000000000,16.1000000000,15.9000000000,11.2000000000,18.0000000000,64.9000000000,29.6000000000,29.8000000000,75.9000000000,13.2000000000,24.9000000000,21.7000000000,21.4000000000,24.8000000000,12.4000000000,40.2000000000,3.6000000000,74.4000000000,68.3000000000,75.9000000000 +15001021800,10.1000000000,22.6000000000,19.2000000000,6.7000000000,83.2000000000,83.1000000000,3.0000000000,5.8000000000,6.4000000000,9.8000000000,10.8000000000,16.8000000000,17.7000000000,10.7000000000,18.3000000000,66.0000000000,29.8000000000,29.5000000000,76.2000000000,14.0000000000,24.0000000000,24.3000000000,20.5000000000,24.1000000000,13.2000000000,40.2000000000,3.7000000000,73.5000000000,67.4000000000,75.4000000000 +15003010201,10.1000000000,22.7000000000,21.3000000000,6.4000000000,87.3000000000,82.9000000000,2.9000000000,5.9000000000,5.5000000000,12.2000000000,10.2000000000,17.5000000000,18.5000000000,10.2000000000,20.0000000000,69.2000000000,31.2000000000,29.8000000000,82.1000000000,15.1000000000,24.8000000000,33.4000000000,25.0000000000,27.0000000000,13.0000000000,48.2000000000,3.5000000000,69.9000000000,72.1000000000,79.1000000000 +15007040603,8.1000000000,25.3000000000,17.9000000000,7.0000000000,82.4000000000,83.6000000000,3.1000000000,5.6000000000,6.1000000000,9.0000000000,11.4000000000,14.9000000000,14.7000000000,12.2000000000,18.2000000000,67.1000000000,31.1000000000,30.0000000000,77.1000000000,12.6000000000,27.0000000000,24.3000000000,26.3000000000,24.1000000000,12.3000000000,36.8000000000,3.7000000000,77.1000000000,68.0000000000,78.5000000000 +15007040604,9.6000000000,25.5000000000,18.5000000000,6.7000000000,82.1000000000,82.8000000000,3.3000000000,5.8000000000,6.4000000000,9.6000000000,11.7000000000,15.6000000000,15.9000000000,12.3000000000,19.5000000000,64.2000000000,31.0000000000,29.3000000000,77.5000000000,13.9000000000,27.7000000000,26.0000000000,25.0000000000,21.3000000000,13.2000000000,37.5000000000,3.8000000000,76.2000000000,65.5000000000,77.8000000000 +15007040700,6.2000000000,22.6000000000,19.2000000000,6.3000000000,84.8000000000,84.2000000000,2.7000000000,4.5000000000,5.0000000000,8.7000000000,10.2000000000,13.6000000000,14.5000000000,10.7000000000,15.7000000000,69.0000000000,27.9000000000,28.3000000000,77.6000000000,12.0000000000,24.3000000000,23.1000000000,27.8000000000,25.6000000000,10.8000000000,36.4000000000,3.1000000000,74.8000000000,72.2000000000,77.8000000000 +15009030100,11.2000000000,23.2000000000,23.0000000000,6.9000000000,85.6000000000,82.6000000000,2.9000000000,6.1000000000,6.0000000000,10.2000000000,11.1000000000,18.4000000000,17.2000000000,10.7000000000,18.1000000000,63.2000000000,28.1000000000,27.0000000000,78.5000000000,14.1000000000,23.8000000000,29.2000000000,22.7000000000,23.0000000000,13.0000000000,40.4000000000,3.7000000000,70.6000000000,67.9000000000,74.2000000000 +15009030201,8.2000000000,23.0000000000,23.5000000000,6.5000000000,87.7000000000,82.9000000000,2.6000000000,5.5000000000,5.0000000000,9.7000000000,9.3000000000,17.5000000000,18.5000000000,8.9000000000,15.7000000000,65.4000000000,25.6000000000,26.4000000000,80.7000000000,13.9000000000,22.1000000000,27.5000000000,26.1000000000,25.3000000000,12.4000000000,37.8000000000,3.1000000000,69.2000000000,73.2000000000,73.0000000000 +15009030402,7.9000000000,20.4000000000,21.0000000000,6.1000000000,85.0000000000,82.9000000000,2.5000000000,4.6000000000,4.8000000000,8.9000000000,10.3000000000,15.3000000000,15.5000000000,9.6000000000,15.2000000000,63.8000000000,25.2000000000,26.2000000000,79.6000000000,12.5000000000,22.7000000000,23.7000000000,25.4000000000,24.7000000000,11.0000000000,38.7000000000,3.0000000000,70.7000000000,71.5000000000,74.1000000000 +15009030800,8.1000000000,18.6000000000,21.8000000000,5.4000000000,84.2000000000,82.0000000000,2.3000000000,4.3000000000,4.3000000000,9.1000000000,10.6000000000,16.1000000000,15.2000000000,9.3000000000,15.1000000000,61.8000000000,23.8000000000,24.5000000000,79.6000000000,12.9000000000,22.6000000000,24.3000000000,24.8000000000,24.0000000000,10.7000000000,40.9000000000,2.8000000000,67.7000000000,70.2000000000,73.2000000000 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 new file mode 100644 index 000000000..133fef312 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/cdc_places/test_etl.py @@ -0,0 +1,26 @@ +import pathlib + +from data_pipeline.etl.sources.cdc_places.etl import CDCPlacesETL +from data_pipeline.tests.sources.example.test_etl import TestETL + + +class TestCDCPlacesETL(TestETL): + _ETL_CLASS = CDCPlacesETL + + _SAMPLE_DATA_PATH = pathlib.Path(__file__).parents[0] / "data" + _SAMPLE_DATA_FILE_NAME = "census_tract.csv" + _SAMPLE_DATA_ZIP_FILE_NAME = None + _EXTRACT_TMP_FOLDER_NAME = "cdc_places" + + def setup_method(self, _method, filename=__file__): + """Invoke `setup_method` from Parent, but using the current file name. + + This code can be copied identically between all child classes. + """ + super().setup_method(_method=_method, filename=filename) + + def test_sample_data_exists(self): + """This will test that the sample data exists where it's supposed to as it's supposed to + As per conversation with Jorge, here we can *just* test that the zip file exists. + """ + assert (self._SAMPLE_DATA_PATH / self._SAMPLE_DATA_FILE_NAME).exists() diff --git a/data/data-pipeline/data_pipeline/tests/sources/child_opportunity_index/__init__.py b/data/data-pipeline/data_pipeline/tests/sources/child_opportunity_index/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/data/data-pipeline/data_pipeline/tests/sources/child_opportunity_index/data/coi.zip b/data/data-pipeline/data_pipeline/tests/sources/child_opportunity_index/data/coi.zip new file mode 100644 index 000000000..a5289deb1 Binary files /dev/null and b/data/data-pipeline/data_pipeline/tests/sources/child_opportunity_index/data/coi.zip differ diff --git a/data/data-pipeline/data_pipeline/tests/sources/child_opportunity_index/data/extract.csv b/data/data-pipeline/data_pipeline/tests/sources/child_opportunity_index/data/extract.csv new file mode 100644 index 000000000..bd37eb930 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/child_opportunity_index/data/extract.csv @@ -0,0 +1,11 @@ +geoid,year,in100,msaid15,msaname15,countyfips,statefips,stateusps,pop,ED_APENR,ED_ATTAIN,ED_COLLEGE,ED_ECENROL,ED_HSGRAD,ED_MATH,ED_READING,ED_SCHPOV,ED_TEACHXP,ED_PRXECE,ED_PRXHQECE,HE_FOOD,HE_GREEN,HE_HEAT,HE_HLTHINS,HE_OZONE,HE_PM25,HE_VACANCY,HE_WALK,HE_SUPRFND,HE_RSEI,SE_POVRATE,SE_PUBLIC,SE_HOME,SE_OCC,SE_MHE,SE_EMPRAT,SE_JOBPROX,SE_SINGLE +34023007402,2010,1,35620,"New York-Newark-Jersey City, NY-NJ-PA Metro Area",34023,34,NJ,750,.24224862,30.624092,,100,69.515396,263.57706,236.18246,27.868332,9.545229,4.3510399,1.0986123,3.9372432,29.1,10.666667,94.001648,40.704281,9.0991697,5.2830191,12.461183,.79894525,10.256244,3.0262272,.69044882,90.909096,43.792515,83043,83.874458,19.936565,15.571776 +36081033700,2015,1,35620,"New York-Newark-Jersey City, NY-NJ-PA Metro Area",36081,36,NY,567,.48479512,18.983355,,17.9,61.892601,220.9837,206.39664,72.493996,9.9560204,6.6488576,3.0244465,0,83.5,12.333333,76.111687,32.268497,9.9404745,15.087041,12.130791,-13.815511,6.071692,15.781346,11.366246,52.009182,23.888559,69967,84.174629,28.09762,44.444447 +36047001500,2010,1,35620,"New York-Newark-Jersey City, NY-NJ-PA Metro Area",36047,36,NY,675,.14864263,52.80785,,30,71.530525,185.22771,165.57692,67.353996,14.186028,6.9858408,4.08319,0,83.5,14.333333,84.398552,34.934345,10.56029,32.567932,13.031661,0,8.0978775,28.949436,17.139614,13.110103,66.617065,74066,72.894844,14.008394,58.309036 +48141000109,2010,1,21340,"El Paso, TX Metro Area",48141,48,TX,1131,.37170947,6.937799,38.419178,51.400002,87.275864,232.89197,200.59705,78.853096,14.936053,3.8554859,1.7132878,6.9115214,42.599998,106,59.259258,43.708778,8.8110294,4.1181045,5.9151278,-13.815511,8.7751179,35.326088,25.688818,63.533222,21.570066,33227,63.284718,7.3966646,41.100918 +29007950100,2010,0,33020,"Mexico, MO Micro Area",29007,29,MO,676,.037339322,6.8397722,14.420464,75.599998,90.849075,218.05362,201.03607,54.0625,6.4516129,.69314718,-13.815511,12.788422,5,38,83.116882,40.412949,10.307842,16.764277,8.6579781,-13.815511,3.9731553,16.500185,22.075638,72.471413,21.940929,37446,32.747749,2.5800712,26.517572 +06059032048,2015,1,31080,"Los Angeles-Long Beach-Anaheim, CA Metro Area",06059,06,CA,977,.49177772,55.322414,52.337311,0,94.574394,302.98648,301.14258,16.570803,2.6474135,4.409451,2.4849067,.0067947675,39.599998,4.3333335,93.603134,45.231636,11.814985,4.1246161,12.046153,-13.815511,7.9175715,5.0019093,.64073229,90.114418,51.413792,111061,91.015175,10.40153,13.380281 +06071006203,2015,1,40140,"Riverside-San Bernardino-Ontario, CA Metro Area",06071,06,CA,1721,.39206344,10.373445,37.920834,3.8,65.640205,70.388351,87.780144,95.931778,24.099722,4.5038018,.7687456,14.522655,44.599998,71.666664,88.938148,54.547478,10.972307,6.8592057,8.1460381,-13.815511,8.009738,36.548023,45.025841,26.29199,15.143603,31926,56.200939,10.074074,63.414635 +17031020802,2015,1,16980,"Chicago-Naperville-Elgin, IL-IN-WI Metro Area",17031,17,IL,1735,.62798566,32.851238,46.603329,12.7,80.669044,135.75914,176.19102,80.124969,15.568522,5.7649512,3.8511307,0,69,19.666666,73.180443,34.496658,12.666351,8.2152977,14.281524,-13.815511,10.020544,24.757034,30.288029,38.703873,30.388424,47207,74.281876,14.190094,37.284233 +55059001200,2015,1,16980,"Chicago-Naperville-Elgin, IL-IN-WI Metro Area",55059,55,WI,1170,.25817108,9.1463413,35.304192,26.700001,87.450645,149.80862,151.35675,72.033096,21.983971,4.2610936,-13.815511,3.1195433,69.400002,5.6666665,90.574654,37.383728,11.085336,16.062801,9.8132915,-13.815511,9.6796389,33.292171,34.388489,53.669064,20.963005,42031,67.647057,4.5596504,51.340996 +18097357600,2015,1,26900,"Indianapolis-Carmel-Anderson, IN Metro Area",18097,18,IN,1949,0,7.0523305,37.289841,76.800003,56.344406,137.10654,137.40863,82.021439,87.151176,3.9076374,2.5138195,6.7697067,37.400002,15,80.642738,36.055035,12.187755,14.801825,12.55805,-13.815511,8.2662792,28.008997,41.786743,46.191849,12.268188,28658,59.289223,2.8684118,64.355064 diff --git a/data/data-pipeline/data_pipeline/tests/sources/child_opportunity_index/data/output.csv b/data/data-pipeline/data_pipeline/tests/sources/child_opportunity_index/data/output.csv new file mode 100644 index 000000000..c3c2b73ef --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/child_opportunity_index/data/output.csv @@ -0,0 +1,16 @@ +GEOID10_TRACT,Summer days above 90F,Percent low access to healthy food,Percent impenetrable surface areas,Third grade reading proficiency +15001021010,,0.0321765850,,132.7394000000 +15001021101,,0.0584802530,,152.4008000000 +15001021402,,0.0468876600,,138.3826600000 +15001021800,,0.0461176160,,186.3202800000 +15003010201,,0.0698271750,,203.2172200000 +15007040603,,0.0303736330,,192.8455400000 +15007040604,,0.0283296820,,183.0814800000 +15007040700,,0.0207271430,,179.8546400000 +15009030100,,0.0440458350,,158.1934500000 +15009030201,,0.0000000000,,183.1507700000 +15009030402,,0.0167432700,,165.8253500000 +15009030800,,0.0145107520,,189.8833900000 +06027000800,,0.0150000000,,200.0000000000 +06061021322,,0.0150000000,,200.0000000000 +06069000802,,0.0150000000,,200.0000000000 diff --git a/data/data-pipeline/data_pipeline/tests/sources/child_opportunity_index/data/raw.csv b/data/data-pipeline/data_pipeline/tests/sources/child_opportunity_index/data/raw.csv new file mode 100644 index 000000000..be4748d5c --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/child_opportunity_index/data/raw.csv @@ -0,0 +1,28 @@ +geoid,year,in100,msaid15,A,msaname15,countyfips,statefips,stateusps,pop,ED_APENR,ED_ATTAIN,ED_COLLEGE,ED_ECENROL,ED_HSGRAD,ED_MATH,ED_READING,ED_SCHPOV,ED_TEACHXP,ED_PRXECE,ED_PRXHQECE,HE_FOOD,HE_GREEN,HE_HEAT,HE_HLTHINS,HE_OZONE,HE_PM25,HE_VACANCY,HE_WALK,HE_SUPRFND,HE_RSEI,SE_POVRATE,SE_PUBLIC,SE_HOME,SE_OCC,SE_MHE,SE_EMPRAT,SE_JOBPROX,SE_SINGLE +15001021010,2010,0,25900,1,"Hilo, HI Micro Area",15001,15,HI,1631,0.0736903030,19.5522060000,38.5793110000,82.0999980000,73.1855090000,204.0279700000,179.6740100000,83.3590090000,15.2101190000,1.2236612000,-3.2645943000,2.1897779000,,,85.4777530000,,,12.2256100000,1.9031702000,-13.8155110000,2.8101339000,31.1270680000,25.8038250000,70.6552660000,31.4786000000,39396,63.3027500000,8.8585281000,55.5727540000 +15001021010,2015,0,25900,2,"Hilo, HI Micro Area",15001,15,HI,1528,0.1899261800,20.9306340000,40.2508050000,58.0000000000,75.0283360000,169.2188100000,132.7394000000,76.8540880000,15.6538250000,1.0273454000,-5.3525348000,3.2176585000,,,91.0719530000,,,10.0154490000,1.9031702000,-13.8155110000,2.6162012000,24.8258710000,31.7182030000,78.6101380000,43.7814290000,30360,58.2020030000,5.0404000000,32.4159010000 +15001021101,2010,0,25900,3,"Hilo, HI Micro Area",15001,15,HI,535,0.0533180940,32.0215420000,39.8683090000,46.4000020000,70.3282170000,224.0678700000,174.5002100000,77.7506030000,13.0946430000,1.7718583000,-0.0300022310,4.3048000000,,,87.8565600000,,,11.0146500000,3.7242184000,-13.8155110000,2.2041564000,27.0347920000,27.0693510000,74.3475040000,34.1918300000,37855,61.0904580000,13.4843590000,35.0230410000 +15001021101,2015,0,25900,4,"Hilo, HI Micro Area",15001,15,HI,433,0.2015089800,39.5533680000,37.1644330000,43.7999990000,66.2127690000,152.8964500000,152.4008000000,86.2977980000,6.9529324000,1.3696530000,-0.0197537470,5.8480253000,,,87.3994670000,,,8.1250000000,3.7242184000,-13.8155110000,2.0477815000,28.9167980000,26.3636360000,76.8484800000,39.1722790000,30968,59.7030750000,24.3119280000,51.2953340000 +15001021402,2010,0,25900,5,"Hilo, HI Micro Area",15001,15,HI,929,0.1647190500,25.1356240000,8.7702494000,42.0000000000,77.7994690000,192.0977000000,182.9247600000,60.5234150000,13.9293730000,2.0509064000,-1.3752689000,4.3765292000,,,90.2309570000,,,4.5751634000,6.9091167000,-13.8155110000,-0.7224926400,9.1823902000,16.9319820000,53.1837920000,32.6673320000,52381,82.3242870000,6.3340807000,40.6818200000 +15001021402,2015,0,25900,6,"Hilo, HI Micro Area",15001,15,HI,825,0.2525457700,25.1578960000,29.2249470000,59.5000000000,73.7396470000,155.7005000000,138.3826600000,67.2758410000,15.3872220000,2.0137198000,-1.3752689000,4.6887660000,,,95.2972790000,,,4.8293624000,6.9091167000,-13.8155110000,-0.3878991900,11.4337100000,19.0618020000,65.3015590000,30.9687670000,61926,89.9835820000,3.8922157000,46.8085100000 +15001021800,2010,0,25900,7,"Hilo, HI Micro Area",15001,15,HI,1748,0.2083706300,19.7838120000,17.6447330000,34.7999990000,90.5556340000,178.7575700000,172.6336700000,60.7752300000,12.0777750000,0.6661295300,-0.0573484860,2.1838551000,,,92.4866940000,,,8.6256704000,5.2165289000,-13.8155110000,-1.9711585000,17.6570170000,13.7801600000,73.8337780000,21.2060700000,53017,74.5713120000,11.2527480000,30.1675970000 +15001021800,2015,0,25900,8,"Hilo, HI Micro Area",15001,15,HI,1399,0.1826577300,24.7472530000,26.1164550000,16.2999990000,76.7413410000,163.1518600000,186.3202800000,69.2822570000,2.4274187000,0.6304196700,-0.1245087700,4.6117616000,,,93.4117200000,,,13.6399060000,5.2165289000,-13.8155110000,-1.9774016000,14.3425040000,12.0707070000,68.7373730000,17.8891470000,71209,72.9902110000,14.1710300000,31.3364070000 +15003010201,2010,1,46520,9,"Urban Honolulu, HI Metro Area",15003,15,HI,1609,0.2816832100,24.8328270000,37.7788580000,50.5000000000,79.8380890000,221.4442300000,214.4257200000,68.6519700000,17.9115310000,1.7652657000,-13.8155110000,4.9072938000,,,91.1199340000,,,9.0680103000,10.0983580000,-13.8155110000,4.0513158000,18.6613730000,13.9044080000,52.2656750000,38.9115640000,69896,74.8474880000,24.4086570000,30.8544310000 +15003010201,2015,1,46520,10,"Urban Honolulu, HI Metro Area",15003,15,HI,1586,0.3262355900,31.2335190000,38.1880150000,53.0999980000,81.9343190000,263.1299700000,203.2172200000,58.4180180000,18.3911150000,1.8023838000,-0.2093867800,6.9827175000,,,90.3112640000,,,8.8028173000,10.0983580000,-13.8155110000,3.9325697000,9.5938101000,15.3647510000,51.4525490000,32.5877190000,72930,76.5251310000,32.7527810000,33.8129500000 +15007040603,2010,0,28180,11,"Kapaa, HI Micro Area",15007,15,HI,455,0.2938456200,32.7254300000,25.0950970000,42.5000000000,83.3289790000,239.3781600000,211.4160000000,44.8172530000,20.6196160000,1.9461737000,-13.8155110000,6.6860218000,,,91.4368590000,,,4.1306438000,6.2141290000,-13.8155110000,-2.5745666000,3.4628704000,10.9958510000,65.8713680000,31.5982400000,72065,79.6573870000,1.8644068000,29.7101440000 +15007040603,2015,0,28180,12,"Kapaa, HI Micro Area",15007,15,HI,710,0.3217573500,34.5935750000,26.9131070000,29.9000000000,83.9192810000,219.1101400000,192.8455400000,45.7621310000,18.8732510000,1.3572797000,-13.8155110000,3.0373633000,,,90.8629460000,,,5.7142859000,6.2141290000,-13.8155110000,-3.3995571000,9.5723677000,8.5572138000,55.7213900000,27.3037550000,70639,80.0589370000,1.0885341000,43.5294110000 +15007040604,2010,0,28180,13,"Kapaa, HI Micro Area",15007,15,HI,732,0.2915806200,24.5812400000,29.6286280000,24.0000000000,83.3070600000,236.0561400000,209.3688000000,42.8187870000,18.0469950000,1.9836926000,-13.8155110000,6.2032728000,,,92.2233960000,,,5.7585139000,6.4129410000,-13.8155110000,-2.5975277000,10.0240100000,11.3287910000,63.2027280000,33.0645180000,66262,80.3639140000,2.3361454000,29.1237110000 +15007040604,2015,0,28180,14,"Kapaa, HI Micro Area",15007,15,HI,639,0.3213492000,28.7210830000,21.3032890000,47.2000010000,84.0398100000,211.0873300000,183.0814800000,44.8632510000,16.4886360000,1.3866930000,-13.8155110000,2.8329682000,,,95.4563450000,,,8.3898830000,6.4129410000,-13.8155110000,-3.4551327000,18.2676660000,15.7275020000,56.6021840000,32.9291650000,69750,79.8629000000,2.5787966000,49.1289220000 +15007040700,2010,0,28180,15,"Kapaa, HI Micro Area",15007,15,HI,2011,0.1132875600,25.4790360000,25.8629530000,54.2999990000,83.0592730000,237.8249200000,206.2347100000,42.3221820000,13.7346280000,2.0951800000,-6.8926415000,4.2036662000,,,93.5513230000,,,9.0025101000,6.2517805000,-13.8155110000,-1.9463800000,15.2579730000,11.8912790000,66.1004100000,30.3776680000,68381,78.7573240000,1.8246027000,42.0395430000 +15007040700,2015,0,28180,16,"Kapaa, HI Micro Area",15007,15,HI,2101,0.2257254300,37.3111080000,21.7736360000,31.1000000000,83.5062480000,225.5370800000,179.8546400000,45.9002040000,13.3931940000,1.6256510000,-1.1560694000,2.0727143000,,,90.6197200000,,,9.1895151000,6.2517805000,-13.8155110000,-3.0142822000,7.5953355000,6.4549179000,67.2814180000,28.9595490000,82467,83.4867320000,4.3556356000,24.4994110000 +15009030100,2010,0,27980,17,"Kahului-Wailuku-Lahaina, HI Metro Area",15009,15,HI,535,0.0947706330,21.3217950000,20.9204140000,82.5000000000,87.5318760000,222.5835400000,190.5396400000,68.0386050000,14.1374330000,0.6221639500,-13.8155110000,0.4278838900,,,82.2360310000,,,11.7456890000,5.5044246000,-13.8155110000,1.1383853000,9.7967691000,7.9934745000,62.1533470000,23.3065430000,62972,67.7938840000,7.9391890000,40.9302330000 +15009030100,2015,0,27980,18,"Kahului-Wailuku-Lahaina, HI Metro Area",15009,15,HI,361,0.1140028300,25.3853150000,16.3010810000,80.0000000000,89.5757980000,163.8899400000,158.1934500000,74.5342790000,12.4208780000,0.6730875400,-0.0356756300,4.4045835000,,,92.7496570000,,,12.5000000000,5.5044246000,-13.8155110000,0.6983343400,10.9501740000,7.5901327000,65.8444060000,28.7472040000,66161,87.4015730000,10.1990050000,31.4960630000 +15009030201,2010,0,27980,19,"Kahului-Wailuku-Lahaina, HI Metro Area",15009,15,HI,333,0.3042595100,34.7983170000,27.3489970000,100.0000000000,77.2663500000,264.8783000000,235.5722700000,55.4464300000,9.2995071000,2.1566634000,-0.2553466900,1.5144995000,,,75.7439580000,,,9.2709274000,3.4708600000,-13.8155110000,1.4976557000,10.4116220000,10.0529100000,67.5132290000,46.3436930000,57163,78.9054720000,7.2706938000,37.2881360000 +15009030201,2015,0,27980,20,"Kahului-Wailuku-Lahaina, HI Metro Area",15009,15,HI,304,0.3610763000,23.8664990000,27.8072380000,100.0000000000,81.1670530000,213.0963400000,183.1507700000,58.9944080000,6.7822700000,2.2015967000,0.0413851890,0.0000000000,,,90.6270220000,,,3.1697340000,3.4708600000,-13.8155110000,1.0144377000,10.5798570000,8.5106382000,68.0851060000,36.8266410000,61048,70.6093220000,4.2774568000,49.1525420000 +15009030402,2010,0,27980,21,"Kahului-Wailuku-Lahaina, HI Metro Area",15009,15,HI,1893,0.3215200000,24.1058310000,22.8293340000,86.3000030000,74.7603760000,273.5332000000,238.2146800000,54.6146470000,10.3586990000,2.8028412000,0.0000000000,1.6413509000,,,85.0915530000,,,7.9121537000,7.3098612000,-13.8155110000,1.9970932000,2.7091255000,6.3772955000,62.7712860000,35.3862000000,81832,89.7885360000,7.0808282000,38.4026260000 +15009030402,2015,0,27980,22,"Kahului-Wailuku-Lahaina, HI Metro Area",15009,15,HI,1685,0.3768204500,25.8798220000,34.9604720000,69.9000020000,79.8403630000,208.5855100000,165.8253500000,56.9929960000,12.2689750000,2.8912144000,0.6931471800,1.6743270000,,,94.9152530000,,,3.1778426000,7.3098612000,-13.8155110000,1.4903787000,7.6546302000,5.0015731000,69.9591060000,27.6414090000,80619,85.7456740000,4.9374290000,27.2051010000 +15009030800,2010,0,27980,23,"Kahului-Wailuku-Lahaina, HI Metro Area",15009,15,HI,1725,0.2588196400,25.8761410000,25.7107850000,59.5999980000,79.6580120000,222.2627900000,185.5475600000,50.3295820000,15.1613000000,3.4776812000,1.7540390000,1.0601417000,,,91.7269360000,,,6.5111756000,4.7154179000,-13.8155110000,4.9853492000,1.8906569000,8.0818968000,83.3512880000,34.2178340000,96516,83.9158250000,4.3561821000,30.5000000000 +15009030800,2015,0,27980,24,"Kahului-Wailuku-Lahaina, HI Metro Area",15009,15,HI,2051,0.3132624300,28.6977020000,25.2963310000,58.4000020000,78.9907610000,184.0429400000,189.8833900000,50.4299890000,8.5740423000,3.5176146000,2.1515093000,1.4510752000,,,95.4700240000,,,2.7706735000,4.7154179000,-13.8155110000,4.4182396000,5.1701570000,5.6275120000,82.7601620000,33.0580600000,100117,85.9390640000,3.3368926000,23.8437820000 +6027000800,2015,0,25900,98,"Made up, Micro Area",704,6,CA,12,0.2000000000,25.0000000000,25.0000000000,25.0000000000,190.0000000000,200.0000000000,200.0000000000,50.0000000000,7.0000000000,1.5000000000,1.5000000000,1.5000000000,,,90.1000000000,,,3.1000000000,3.1000000000,-13.4400000000,4.4400000000,5.1700000000,5.6200000000,72.8000000000,33.5000000000,33333,58.0100000000,9.3300000000,32.3300000000 +6061021322,2015,0,25900,87,"Made up, Micro Area",102,6,CA,12,0.2000000000,25.0000000000,25.0000000000,25.0000000000,190.0000000000,200.0000000000,200.0000000000,50.0000000000,7.0000000000,1.5000000000,1.5000000000,1.5000000000,,,90.1000000000,,,3.1000000000,3.1000000000,-13.4400000000,4.4400000000,5.1700000000,5.6200000000,72.8000000000,33.5000000000,33333,58.0100000000,9.3300000000,32.3300000000 +6069000802,2015,0,25900,84,"Made up, Micro Area",704,6,CA,12,0.2000000000,25.0000000000,25.0000000000,25.0000000000,190.0000000000,200.0000000000,200.0000000000,50.0000000000,7.0000000000,1.5000000000,1.5000000000,1.5000000000,,,90.1000000000,,,3.1000000000,3.1000000000,-13.4400000000,4.4400000000,5.1700000000,5.6200000000,72.8000000000,33.5000000000,33333,58.0100000000,9.3300000000,32.3300000000 diff --git a/data/data-pipeline/data_pipeline/tests/sources/child_opportunity_index/data/transform.csv b/data/data-pipeline/data_pipeline/tests/sources/child_opportunity_index/data/transform.csv new file mode 100644 index 000000000..5d049ab93 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/child_opportunity_index/data/transform.csv @@ -0,0 +1,16 @@ +GEOID10_TRACT,year,in100,msaid15,A,msaname15,countyfips,statefips,stateusps,pop,ED_APENR,ED_ATTAIN,ED_COLLEGE,ED_ECENROL,ED_HSGRAD,ED_MATH,Third grade reading proficiency,ED_SCHPOV,ED_TEACHXP,ED_PRXECE,ED_PRXHQECE,Percent low access to healthy food,Percent impenetrable surface areas,Summer days above 90F,HE_HLTHINS,HE_OZONE,HE_PM25,HE_VACANCY,HE_WALK,HE_SUPRFND,HE_RSEI,SE_POVRATE,SE_PUBLIC,SE_HOME,SE_OCC,SE_MHE,SE_EMPRAT,SE_JOBPROX,SE_SINGLE +15001021010,2015,0,25900,2,"Hilo, HI Micro Area",15001,15,HI,1528,0.1899261800,20.9306340000,40.2508050000,58.0000000000,75.0283360000,169.2188100000,132.7394000000,76.8540880000,15.6538250000,1.0273454000,-5.3525348000,0.0321765850,,,91.0719530000,,,10.0154490000,1.9031702000,-13.8155110000,2.6162012000,24.8258710000,31.7182030000,78.6101380000,43.7814290000,30360,58.2020030000,5.0404000000,32.4159010000 +15001021101,2015,0,25900,4,"Hilo, HI Micro Area",15001,15,HI,433,0.2015089800,39.5533680000,37.1644330000,43.7999990000,66.2127690000,152.8964500000,152.4008000000,86.2977980000,6.9529324000,1.3696530000,-0.0197537470,0.0584802530,,,87.3994670000,,,8.1250000000,3.7242184000,-13.8155110000,2.0477815000,28.9167980000,26.3636360000,76.8484800000,39.1722790000,30968,59.7030750000,24.3119280000,51.2953340000 +15001021402,2015,0,25900,6,"Hilo, HI Micro Area",15001,15,HI,825,0.2525457700,25.1578960000,29.2249470000,59.5000000000,73.7396470000,155.7005000000,138.3826600000,67.2758410000,15.3872220000,2.0137198000,-1.3752689000,0.0468876600,,,95.2972790000,,,4.8293624000,6.9091167000,-13.8155110000,-0.3878991900,11.4337100000,19.0618020000,65.3015590000,30.9687670000,61926,89.9835820000,3.8922157000,46.8085100000 +15001021800,2015,0,25900,8,"Hilo, HI Micro Area",15001,15,HI,1399,0.1826577300,24.7472530000,26.1164550000,16.2999990000,76.7413410000,163.1518600000,186.3202800000,69.2822570000,2.4274187000,0.6304196700,-0.1245087700,0.0461176160,,,93.4117200000,,,13.6399060000,5.2165289000,-13.8155110000,-1.9774016000,14.3425040000,12.0707070000,68.7373730000,17.8891470000,71209,72.9902110000,14.1710300000,31.3364070000 +15003010201,2015,1,46520,10,"Urban Honolulu, HI Metro Area",15003,15,HI,1586,0.3262355900,31.2335190000,38.1880150000,53.0999980000,81.9343190000,263.1299700000,203.2172200000,58.4180180000,18.3911150000,1.8023838000,-0.2093867800,0.0698271750,,,90.3112640000,,,8.8028173000,10.0983580000,-13.8155110000,3.9325697000,9.5938101000,15.3647510000,51.4525490000,32.5877190000,72930,76.5251310000,32.7527810000,33.8129500000 +15007040603,2015,0,28180,12,"Kapaa, HI Micro Area",15007,15,HI,710,0.3217573500,34.5935750000,26.9131070000,29.9000000000,83.9192810000,219.1101400000,192.8455400000,45.7621310000,18.8732510000,1.3572797000,-13.8155110000,0.0303736330,,,90.8629460000,,,5.7142859000,6.2141290000,-13.8155110000,-3.3995571000,9.5723677000,8.5572138000,55.7213900000,27.3037550000,70639,80.0589370000,1.0885341000,43.5294110000 +15007040604,2015,0,28180,14,"Kapaa, HI Micro Area",15007,15,HI,639,0.3213492000,28.7210830000,21.3032890000,47.2000010000,84.0398100000,211.0873300000,183.0814800000,44.8632510000,16.4886360000,1.3866930000,-13.8155110000,0.0283296820,,,95.4563450000,,,8.3898830000,6.4129410000,-13.8155110000,-3.4551327000,18.2676660000,15.7275020000,56.6021840000,32.9291650000,69750,79.8629000000,2.5787966000,49.1289220000 +15007040700,2015,0,28180,16,"Kapaa, HI Micro Area",15007,15,HI,2101,0.2257254300,37.3111080000,21.7736360000,31.1000000000,83.5062480000,225.5370800000,179.8546400000,45.9002040000,13.3931940000,1.6256510000,-1.1560694000,0.0207271430,,,90.6197200000,,,9.1895151000,6.2517805000,-13.8155110000,-3.0142822000,7.5953355000,6.4549179000,67.2814180000,28.9595490000,82467,83.4867320000,4.3556356000,24.4994110000 +15009030100,2015,0,27980,18,"Kahului-Wailuku-Lahaina, HI Metro Area",15009,15,HI,361,0.1140028300,25.3853150000,16.3010810000,80.0000000000,89.5757980000,163.8899400000,158.1934500000,74.5342790000,12.4208780000,0.6730875400,-0.0356756300,0.0440458350,,,92.7496570000,,,12.5000000000,5.5044246000,-13.8155110000,0.6983343400,10.9501740000,7.5901327000,65.8444060000,28.7472040000,66161,87.4015730000,10.1990050000,31.4960630000 +15009030201,2015,0,27980,20,"Kahului-Wailuku-Lahaina, HI Metro Area",15009,15,HI,304,0.3610763000,23.8664990000,27.8072380000,100.0000000000,81.1670530000,213.0963400000,183.1507700000,58.9944080000,6.7822700000,2.2015967000,0.0413851890,0.0000000000,,,90.6270220000,,,3.1697340000,3.4708600000,-13.8155110000,1.0144377000,10.5798570000,8.5106382000,68.0851060000,36.8266410000,61048,70.6093220000,4.2774568000,49.1525420000 +15009030402,2015,0,27980,22,"Kahului-Wailuku-Lahaina, HI Metro Area",15009,15,HI,1685,0.3768204500,25.8798220000,34.9604720000,69.9000020000,79.8403630000,208.5855100000,165.8253500000,56.9929960000,12.2689750000,2.8912144000,0.6931471800,0.0167432700,,,94.9152530000,,,3.1778426000,7.3098612000,-13.8155110000,1.4903787000,7.6546302000,5.0015731000,69.9591060000,27.6414090000,80619,85.7456740000,4.9374290000,27.2051010000 +15009030800,2015,0,27980,24,"Kahului-Wailuku-Lahaina, HI Metro Area",15009,15,HI,2051,0.3132624300,28.6977020000,25.2963310000,58.4000020000,78.9907610000,184.0429400000,189.8833900000,50.4299890000,8.5740423000,3.5176146000,2.1515093000,0.0145107520,,,95.4700240000,,,2.7706735000,4.7154179000,-13.8155110000,4.4182396000,5.1701570000,5.6275120000,82.7601620000,33.0580600000,100117,85.9390640000,3.3368926000,23.8437820000 +06027000800,2015,0,25900,98,"Made up, Micro Area",704,6,CA,12,0.2000000000,25.0000000000,25.0000000000,25.0000000000,190.0000000000,200.0000000000,200.0000000000,50.0000000000,7.0000000000,1.5000000000,1.5000000000,0.0150000000,,,90.1000000000,,,3.1000000000,3.1000000000,-13.4400000000,4.4400000000,5.1700000000,5.6200000000,72.8000000000,33.5000000000,33333,58.0100000000,9.3300000000,32.3300000000 +06061021322,2015,0,25900,87,"Made up, Micro Area",102,6,CA,12,0.2000000000,25.0000000000,25.0000000000,25.0000000000,190.0000000000,200.0000000000,200.0000000000,50.0000000000,7.0000000000,1.5000000000,1.5000000000,0.0150000000,,,90.1000000000,,,3.1000000000,3.1000000000,-13.4400000000,4.4400000000,5.1700000000,5.6200000000,72.8000000000,33.5000000000,33333,58.0100000000,9.3300000000,32.3300000000 +06069000802,2015,0,25900,84,"Made up, Micro Area",704,6,CA,12,0.2000000000,25.0000000000,25.0000000000,25.0000000000,190.0000000000,200.0000000000,200.0000000000,50.0000000000,7.0000000000,1.5000000000,1.5000000000,0.0150000000,,,90.1000000000,,,3.1000000000,3.1000000000,-13.4400000000,4.4400000000,5.1700000000,5.6200000000,72.8000000000,33.5000000000,33333,58.0100000000,9.3300000000,32.3300000000 diff --git a/data/data-pipeline/data_pipeline/tests/sources/child_opportunity_index/test_etl.py b/data/data-pipeline/data_pipeline/tests/sources/child_opportunity_index/test_etl.py new file mode 100644 index 000000000..6fe2ffd3c --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/child_opportunity_index/test_etl.py @@ -0,0 +1,69 @@ +# pylint: disable=protected-access +import pathlib + +from data_pipeline.etl.sources.child_opportunity_index.etl import ( + ChildOpportunityIndex, +) +from data_pipeline.tests.sources.example.test_etl import TestETL +from data_pipeline.utils import get_module_logger + +logger = get_module_logger(__name__) + + +class TestChildOpportunityIndexETL(TestETL): + """Tests the COI ETL. + + This uses pytest-snapshot. + To update individual snapshots: $ poetry run pytest + data_pipeline/tests/sources/child_opportunity_index/test_etl.py::TestClassNameETL:: + --snapshot-update + """ + + _ETL_CLASS = ChildOpportunityIndex + + _SAMPLE_DATA_PATH = pathlib.Path(__file__).parents[0] / "data" + _SAMPLE_DATA_FILE_NAME = "raw.csv" + _SAMPLE_DATA_ZIP_FILE_NAME = "coi.zip" + _EXTRACT_TMP_FOLDER_NAME = "ChildOpportunityIndex" + _EXTRACT_CSV_FILE_NAME = "raw.csv" + + def setup_method(self, _method, filename=__file__): + """Invoke `setup_method` from Parent, but using the current file name. + + This code can be copied identically between all child classes. + """ + super().setup_method(_method=_method, filename=filename) + + def test_init(self, mock_etl, mock_paths): + """Tests that the ChildOpportunityIndexETL class was initialized + correctly. + """ + + etl = ChildOpportunityIndex() + data_path, _ = mock_paths + assert etl.DATA_PATH == data_path + assert etl.COLUMNS_TO_KEEP == [ + "GEOID10_TRACT", + "Summer days above 90F", + "Percent low access to healthy food", + "Percent impenetrable surface areas", + "Third grade reading proficiency", + ] + assert etl.GEOID_FIELD_NAME == "GEOID10" + assert etl.GEOID_TRACT_FIELD_NAME == "GEOID10_TRACT" + assert etl.TRACT_INPUT_COLUMN_NAME == "geoid" + assert etl.EXTREME_HEAT_INPUT_FIELD == "HE_HEAT" + assert etl.HEALTHY_FOOD_INPUT_FIELD == "HE_FOOD" + assert etl.IMPENETRABLE_SURFACES_INPUT_FIELD == "HE_GREEN" + assert etl.READING_INPUT_FIELD == "ED_READING" + + def test_get_output_file_path(self, mock_etl, mock_paths): + """Tests the right file name is returned.""" + etl = self._get_instance_of_etl_class() + data_path, tmp_path = mock_paths + + output_file_path = etl._get_output_file_path() + expected_output_file_path = ( + data_path / "dataset" / "child_opportunity_index" / "usa.csv" + ) + assert output_file_path == expected_output_file_path diff --git a/data/data-pipeline/data_pipeline/tests/sources/data/us.geojson b/data/data-pipeline/data_pipeline/tests/sources/data/us.geojson new file mode 100644 index 000000000..67e236148 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/data/us.geojson @@ -0,0 +1,10 @@ +{ +"type": "FeatureCollection", +"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, +"features": [ +{ "type": "Feature", "properties": { "STATEFP10": "06", "COUNTYFP10": "037", "TRACTCE10": "207400", "GEOID10_TRACT": "06037207400", "NAME10": "2074", "NAMELSAD10": "Census Tract 2074", "MTFCC10": "G5020", "FUNCSTAT10": "S", "ALAND10": 862884, "AWATER10": 6531, "INTPTLAT10": "+34.0561941", "INTPTLON10": "-118.2466502" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -118.25165, 34.057561 ], [ -118.251856, 34.057693 ], [ -118.251973, 34.057769 ], [ -118.253069, 34.058478 ], [ -118.253333, 34.058635 ], [ -118.253175, 34.058788 ], [ -118.252985, 34.058967 ], [ -118.252934, 34.059012 ], [ -118.252592, 34.059315 ], [ -118.252391, 34.059485 ], [ -118.252131, 34.059695 ], [ -118.251474, 34.060224 ], [ -118.251082, 34.060543 ], [ -118.250554, 34.060988 ], [ -118.249996, 34.061475 ], [ -118.248871, 34.06247 ], [ -118.248822, 34.062513 ], [ -118.248754, 34.062434 ], [ -118.247476, 34.060942 ], [ -118.247368, 34.060818 ], [ -118.247013, 34.06041 ], [ -118.24698, 34.060373 ], [ -118.246769, 34.060147 ], [ -118.246548, 34.059926 ], [ -118.246318, 34.059712 ], [ -118.246079, 34.059505 ], [ -118.245633, 34.059146 ], [ -118.245532, 34.059066 ], [ -118.245262, 34.058851 ], [ -118.244952, 34.058609 ], [ -118.244638, 34.05837 ], [ -118.244425, 34.058215 ], [ -118.244007, 34.057917 ], [ -118.243393, 34.057507 ], [ -118.243099, 34.057319 ], [ -118.24245, 34.056913 ], [ -118.241377, 34.056241 ], [ -118.241204, 34.056133 ], [ -118.240288, 34.055562 ], [ -118.239443, 34.055035 ], [ -118.238512, 34.054454 ], [ -118.238227, 34.054289 ], [ -118.238023, 34.054178 ], [ -118.237887, 34.054108 ], [ -118.2379, 34.054002 ], [ -118.237936, 34.053725 ], [ -118.237945, 34.053651 ], [ -118.237976, 34.052819 ], [ -118.238039, 34.05107 ], [ -118.239698, 34.052451 ], [ -118.239867, 34.051906 ], [ -118.240115, 34.0514 ], [ -118.240172, 34.051284 ], [ -118.240271, 34.051083 ], [ -118.240856, 34.050405 ], [ -118.242151, 34.051344 ], [ -118.242382, 34.051511 ], [ -118.24334, 34.050273 ], [ -118.244519, 34.051003 ], [ -118.245067, 34.051354 ], [ -118.245606, 34.051703 ], [ -118.246677, 34.052395 ], [ -118.247754, 34.053091 ], [ -118.248466, 34.053552 ], [ -118.248818, 34.05378 ], [ -118.249888, 34.054472 ], [ -118.25095, 34.055158 ], [ -118.251081, 34.055241 ], [ -118.250895, 34.055373 ], [ -118.250712, 34.05553 ], [ -118.250052, 34.056232 ], [ -118.249838, 34.056391 ], [ -118.25165, 34.057561 ] ] ] } }, +{ "type": "Feature", "properties": { "STATEFP10": "13", "COUNTYFP10": "121", "TRACTCE10": "011900", "GEOID10_TRACT": "13121011900", "NAME10": "119", "NAMELSAD10": "Census Tract 119", "MTFCC10": "G5020", "FUNCSTAT10": "S", "ALAND10": 1530847, "AWATER10": 0, "INTPTLAT10": "+33.7539369", "INTPTLON10": "-084.3826910" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -84.393243, 33.754604 ], [ -84.393434, 33.754711 ], [ -84.393836, 33.75492 ], [ -84.39376, 33.755141 ], [ -84.394037, 33.756265 ], [ -84.394411, 33.757235 ], [ -84.394982, 33.758491 ], [ -84.394325, 33.758955 ], [ -84.393831, 33.759308 ], [ -84.393459, 33.759573 ], [ -84.393366, 33.759627 ], [ -84.393273, 33.759663 ], [ -84.393187, 33.759685 ], [ -84.392783, 33.75973 ], [ -84.392071, 33.759729 ], [ -84.390564, 33.759722 ], [ -84.389801, 33.759719 ], [ -84.389083, 33.759716 ], [ -84.387584, 33.759709 ], [ -84.387539, 33.759708 ], [ -84.386062, 33.759685 ], [ -84.384198, 33.759666 ], [ -84.38422, 33.758392 ], [ -84.384242, 33.757117 ], [ -84.384268, 33.755571 ], [ -84.384283, 33.75473 ], [ -84.384287, 33.754521 ], [ -84.384305, 33.754462 ], [ -84.382272, 33.754439 ], [ -84.381907, 33.754434 ], [ -84.380277, 33.754417 ], [ -84.3802, 33.754414 ], [ -84.379455, 33.754397 ], [ -84.379157, 33.75439 ], [ -84.378673, 33.754379 ], [ -84.378332, 33.75438 ], [ -84.378297, 33.75437 ], [ -84.378044, 33.754368 ], [ -84.377363, 33.754378 ], [ -84.377298, 33.754379 ], [ -84.377099, 33.754376 ], [ -84.376604, 33.754371 ], [ -84.375544, 33.754355 ], [ -84.374384, 33.754337 ], [ -84.37336, 33.754322 ], [ -84.372422, 33.754309 ], [ -84.37215, 33.754305 ], [ -84.371286, 33.754295 ], [ -84.369769, 33.754278 ], [ -84.368828, 33.754282 ], [ -84.368562, 33.754283 ], [ -84.368027, 33.754285 ], [ -84.367498, 33.754287 ], [ -84.366551, 33.75429 ], [ -84.366444, 33.754291 ], [ -84.365863, 33.754297 ], [ -84.365599, 33.754312 ], [ -84.365617, 33.754242 ], [ -84.365791, 33.753851 ], [ -84.366268, 33.75328 ], [ -84.366323, 33.753215 ], [ -84.3666, 33.752984 ], [ -84.366842, 33.752754 ], [ -84.366935, 33.752666 ], [ -84.36698, 33.752629 ], [ -84.367086, 33.752523 ], [ -84.367248, 33.75237 ], [ -84.368362, 33.752078 ], [ -84.369133, 33.751836 ], [ -84.369871, 33.751612 ], [ -84.370491, 33.751434 ], [ -84.370976, 33.751284 ], [ -84.37217, 33.750916 ], [ -84.373348, 33.750533 ], [ -84.374128, 33.750253 ], [ -84.375093, 33.749926 ], [ -84.376294, 33.749564 ], [ -84.376636, 33.749461 ], [ -84.376945, 33.749372 ], [ -84.37768, 33.749186 ], [ -84.378404, 33.74904 ], [ -84.378835, 33.748964 ], [ -84.379047, 33.748935 ], [ -84.379541, 33.748892 ], [ -84.379663, 33.748881 ], [ -84.380133, 33.748853 ], [ -84.380525, 33.748853 ], [ -84.380758, 33.748868 ], [ -84.381016, 33.748884 ], [ -84.381506, 33.748923 ], [ -84.382132, 33.748903 ], [ -84.38251, 33.748886 ], [ -84.382727, 33.748877 ], [ -84.383153, 33.748907 ], [ -84.383313, 33.748923 ], [ -84.383493, 33.748941 ], [ -84.383746, 33.749 ], [ -84.383896, 33.749035 ], [ -84.384064, 33.749089 ], [ -84.384277, 33.749158 ], [ -84.384328, 33.74918 ], [ -84.384564, 33.749282 ], [ -84.38487, 33.749449 ], [ -84.385214, 33.749686 ], [ -84.385654, 33.749989 ], [ -84.386389, 33.750471 ], [ -84.387563, 33.75124 ], [ -84.387886, 33.751452 ], [ -84.388865, 33.752093 ], [ -84.389895, 33.752768 ], [ -84.390844, 33.753391 ], [ -84.39132, 33.753703 ], [ -84.391525, 33.753837 ], [ -84.392156, 33.754065 ], [ -84.392373, 33.754172 ], [ -84.392834, 33.754399 ], [ -84.39318, 33.754569 ], [ -84.393243, 33.754604 ] ] ] } }, +{ "type": "Feature", "properties": { "STATEFP10": "25", "COUNTYFP10": "025", "TRACTCE10": "030300", "GEOID10_TRACT": "25025030300", "NAME10": "303", "NAMELSAD10": "Census Tract 303", "MTFCC10": "G5020", "FUNCSTAT10": "S", "ALAND10": 691377, "AWATER10": 234496, "INTPTLAT10": "+42.3600562", "INTPTLON10": "-071.0532861" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -71.045566, 42.359733 ], [ -71.049073, 42.354939 ], [ -71.049333, 42.354585 ], [ -71.049396, 42.354498 ], [ -71.049595, 42.354497 ], [ -71.050434, 42.354846 ], [ -71.050471, 42.354898 ], [ -71.050892, 42.35506 ], [ -71.05106, 42.355131 ], [ -71.050981, 42.355309 ], [ -71.050889, 42.355475 ], [ -71.050856, 42.355555 ], [ -71.050762, 42.356011 ], [ -71.050749, 42.356124 ], [ -71.050816, 42.35664 ], [ -71.051009, 42.356937 ], [ -71.051198, 42.357241 ], [ -71.05137, 42.357474 ], [ -71.051411, 42.357539 ], [ -71.051508, 42.357692 ], [ -71.051613, 42.357921 ], [ -71.051784, 42.358295 ], [ -71.051941, 42.358637 ], [ -71.051976, 42.358699 ], [ -71.052005, 42.358693 ], [ -71.052065, 42.358682 ], [ -71.052158, 42.358666 ], [ -71.052294, 42.358646 ], [ -71.052749, 42.358576 ], [ -71.053192, 42.358496 ], [ -71.053248, 42.358478 ], [ -71.053321, 42.358455 ], [ -71.053518, 42.358356 ], [ -71.053765, 42.358183 ], [ -71.053961, 42.358012 ], [ -71.054265, 42.357737 ], [ -71.05437, 42.357662 ], [ -71.054524, 42.357551 ], [ -71.054848, 42.35735 ], [ -71.05502, 42.357245 ], [ -71.05519, 42.357143 ], [ -71.055539, 42.356971 ], [ -71.055759, 42.356913 ], [ -71.056292, 42.356874 ], [ -71.05659, 42.356852 ], [ -71.057191, 42.356822 ], [ -71.05771, 42.356777 ], [ -71.057993, 42.356789 ], [ -71.058235, 42.356832 ], [ -71.058737, 42.356988 ], [ -71.058561, 42.357161 ], [ -71.05829, 42.35741 ], [ -71.058759, 42.357577 ], [ -71.059299, 42.357766 ], [ -71.059613, 42.357863 ], [ -71.060354, 42.358092 ], [ -71.061259, 42.358283 ], [ -71.06151, 42.358336 ], [ -71.061714, 42.358318 ], [ -71.061977, 42.358246 ], [ -71.062375, 42.358095 ], [ -71.062642, 42.357977 ], [ -71.062727, 42.358311 ], [ -71.062817, 42.358665 ], [ -71.062823, 42.358714 ], [ -71.062846, 42.358889 ], [ -71.062862, 42.359204 ], [ -71.062875, 42.359483 ], [ -71.062864, 42.36009 ], [ -71.062911, 42.361229 ], [ -71.062762, 42.361642 ], [ -71.062626, 42.361842 ], [ -71.062499, 42.362001 ], [ -71.062354, 42.362143 ], [ -71.062268, 42.362205 ], [ -71.062195, 42.362258 ], [ -71.061856, 42.36243 ], [ -71.061669, 42.362493 ], [ -71.061223, 42.362633 ], [ -71.060878, 42.362731 ], [ -71.060042, 42.362967 ], [ -71.059606, 42.36307 ], [ -71.059491, 42.363104 ], [ -71.058769, 42.363318 ], [ -71.058559, 42.363381 ], [ -71.0584, 42.363412 ], [ -71.058216, 42.363431 ], [ -71.058037, 42.363481 ], [ -71.057979, 42.363511 ], [ -71.057882, 42.363546 ], [ -71.057776, 42.363542 ], [ -71.057709, 42.363543 ], [ -71.05757, 42.36342 ], [ -71.057332, 42.36318 ], [ -71.057051, 42.362987 ], [ -71.056227, 42.362386 ], [ -71.056176, 42.362357 ], [ -71.05525, 42.36183 ], [ -71.055228, 42.361869 ], [ -71.055183, 42.361919 ], [ -71.055187, 42.361941 ], [ -71.055159, 42.361989 ], [ -71.055123, 42.362045 ], [ -71.055026, 42.362149 ], [ -71.05489, 42.362265 ], [ -71.054661, 42.36238 ], [ -71.054626, 42.362404 ], [ -71.054581, 42.362434 ], [ -71.054494, 42.362511 ], [ -71.054407, 42.362634 ], [ -71.054311, 42.362802 ], [ -71.054296, 42.36283 ], [ -71.05419, 42.362973 ], [ -71.054061, 42.363108 ], [ -71.053826, 42.363303 ], [ -71.053709, 42.363367 ], [ -71.053585, 42.363405 ], [ -71.053549, 42.363416 ], [ -71.053199, 42.363474 ], [ -71.053043, 42.363495 ], [ -71.052769, 42.36353 ], [ -71.05246, 42.363586 ], [ -71.05224, 42.363626 ], [ -71.052061, 42.36371 ], [ -71.051895, 42.363501 ], [ -71.051661, 42.363192 ], [ -71.051647, 42.36311 ], [ -71.051414, 42.363386 ], [ -71.05135, 42.36347 ], [ -71.051195, 42.36372 ], [ -71.051115, 42.363979 ], [ -71.051088, 42.364065 ], [ -71.05109, 42.364175 ], [ -71.0496, 42.364044 ], [ -71.049409, 42.364045 ], [ -71.046389, 42.363935 ], [ -71.045985, 42.362294 ], [ -71.045918, 42.361164 ], [ -71.0455, 42.359825 ], [ -71.045566, 42.359733 ] ] ] } }, +{ "type": "Feature", "properties": { "STATEFP10": "28", "COUNTYFP10": "047", "TRACTCE10": "003800", "GEOID10_TRACT": "28047003800", "NAME10": "38", "NAMELSAD10": "Census Tract 38", "MTFCC10": "G5020", "FUNCSTAT10": "S", "ALAND10": 2304789, "AWATER10": 3104014, "INTPTLAT10": "+30.3577592", "INTPTLON10": "-089.1130708" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -89.101237, 30.347697 ], [ -89.117538, 30.342797 ], [ -89.124278, 30.343971 ], [ -89.124335, 30.353194 ], [ -89.124336, 30.353446 ], [ -89.124338, 30.353697 ], [ -89.124555, 30.354007 ], [ -89.124595, 30.353991 ], [ -89.124991, 30.354701 ], [ -89.125114, 30.354921 ], [ -89.125679, 30.355921 ], [ -89.127359, 30.358407 ], [ -89.127508, 30.358574 ], [ -89.127077, 30.35871 ], [ -89.124073, 30.359753 ], [ -89.12318, 30.360048 ], [ -89.122255, 30.360367 ], [ -89.121353, 30.360674 ], [ -89.120354, 30.36101 ], [ -89.117854, 30.36182 ], [ -89.116359, 30.362304 ], [ -89.11492, 30.362785 ], [ -89.113579, 30.363225 ], [ -89.112509, 30.363583 ], [ -89.11135, 30.363984 ], [ -89.11121, 30.364005 ], [ -89.110283, 30.364326 ], [ -89.109295, 30.364647 ], [ -89.108217, 30.365012 ], [ -89.107137, 30.365376 ], [ -89.105342, 30.365959 ], [ -89.102779, 30.36682 ], [ -89.101505, 30.367176 ], [ -89.100242, 30.367636 ], [ -89.098984, 30.368 ], [ -89.097738, 30.368327 ], [ -89.097572, 30.368365 ], [ -89.096742, 30.368555 ], [ -89.096574, 30.368614 ], [ -89.095317, 30.368959 ], [ -89.095334, 30.371183 ], [ -89.095338, 30.371317 ], [ -89.093988, 30.371319 ], [ -89.09397, 30.371327 ], [ -89.093034, 30.371329 ], [ -89.092869, 30.371322 ], [ -89.09153, 30.371326 ], [ -89.090312, 30.371327 ], [ -89.090136, 30.371327 ], [ -89.088809, 30.371327 ], [ -89.088797, 30.372373 ], [ -89.087557, 30.372377 ], [ -89.087432, 30.372371 ], [ -89.087429, 30.371074 ], [ -89.087429, 30.370979 ], [ -89.087431, 30.36924 ], [ -89.087424, 30.368559 ], [ -89.087394, 30.368228 ], [ -89.087398, 30.3681 ], [ -89.087408, 30.367653 ], [ -89.087405, 30.367552 ], [ -89.088805, 30.367086 ], [ -89.090137, 30.366643 ], [ -89.090263, 30.366603 ], [ -89.091459, 30.366215 ], [ -89.092643, 30.365831 ], [ -89.092912, 30.365758 ], [ -89.093006, 30.365732 ], [ -89.093168, 30.365712 ], [ -89.094308, 30.36534 ], [ -89.094388, 30.365301 ], [ -89.094683, 30.365183 ], [ -89.094739, 30.365156 ], [ -89.094852, 30.365118 ], [ -89.095644, 30.364853 ], [ -89.096427, 30.364604 ], [ -89.096534, 30.364567 ], [ -89.097512, 30.364275 ], [ -89.097679, 30.364234 ], [ -89.098915, 30.363843 ], [ -89.10016, 30.363411 ], [ -89.100979, 30.363155 ], [ -89.101422, 30.362993 ], [ -89.101423, 30.362631 ], [ -89.101426, 30.36174 ], [ -89.101417, 30.361088 ], [ -89.101237, 30.347697 ] ] ] } } +] +} diff --git a/data/data-pipeline/data_pipeline/tests/sources/doe_energy_burden/__init__.py b/data/data-pipeline/data_pipeline/tests/sources/doe_energy_burden/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/data/data-pipeline/data_pipeline/tests/sources/doe_energy_burden/data/DOE_LEAD_AMI_TRACT_2018_ALL.csv.zip b/data/data-pipeline/data_pipeline/tests/sources/doe_energy_burden/data/DOE_LEAD_AMI_TRACT_2018_ALL.csv.zip new file mode 100644 index 000000000..32c1edae9 Binary files /dev/null and b/data/data-pipeline/data_pipeline/tests/sources/doe_energy_burden/data/DOE_LEAD_AMI_TRACT_2018_ALL.csv.zip differ diff --git a/data/data-pipeline/data_pipeline/tests/sources/doe_energy_burden/data/extract.csv b/data/data-pipeline/data_pipeline/tests/sources/doe_energy_burden/data/extract.csv new file mode 100644 index 000000000..0ee073310 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/doe_energy_burden/data/extract.csv @@ -0,0 +1,16 @@ +ABV,FIP,BURDEN,QUANTILE +HI,15001021010,0.0380000000,30 +HI,15001021101,0.0410000000,25 +HI,15001021402,0.0240000000,66 +HI,15001021800,0.0290000000,51 +HI,15003010201,0.0270000000,58 +HI,15007040603,0.0440000000,21 +HI,15007040604,0.0330000000,40 +HI,15007040700,0.0260000000,59 +HI,15009030100,0.0350000000,37 +HI,15009030201,0.0220000000,71 +HI,15009030402,0.0200000000,75 +HI,15009030800,0.0190000000,80 +CA,6069000802,0.2000000000,70 +CA,6061021322,0.5000000000,50 +CA,6027000800,0.1990000000,30 diff --git a/data/data-pipeline/data_pipeline/tests/sources/doe_energy_burden/data/output.csv b/data/data-pipeline/data_pipeline/tests/sources/doe_energy_burden/data/output.csv new file mode 100644 index 000000000..9d7996fc1 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/doe_energy_burden/data/output.csv @@ -0,0 +1,16 @@ +GEOID10_TRACT,Energy burden +15001021010,0.0380000000 +15001021101,0.0410000000 +15001021402,0.0240000000 +15001021800,0.0290000000 +15003010201,0.0270000000 +15007040603,0.0440000000 +15007040604,0.0330000000 +15007040700,0.0260000000 +15009030100,0.0350000000 +15009030201,0.0220000000 +15009030402,0.0200000000 +15009030800,0.0190000000 +06069000802,0.2000000000 +06061021322,0.5000000000 +06027000800,0.1990000000 diff --git a/data/data-pipeline/data_pipeline/tests/sources/doe_energy_burden/data/transform.csv b/data/data-pipeline/data_pipeline/tests/sources/doe_energy_burden/data/transform.csv new file mode 100644 index 000000000..08f13bff6 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/doe_energy_burden/data/transform.csv @@ -0,0 +1,16 @@ +ABV,GEOID10_TRACT,Energy burden,QUANTILE +HI,15001021010,0.0380000000,30 +HI,15001021101,0.0410000000,25 +HI,15001021402,0.0240000000,66 +HI,15001021800,0.0290000000,51 +HI,15003010201,0.0270000000,58 +HI,15007040603,0.0440000000,21 +HI,15007040604,0.0330000000,40 +HI,15007040700,0.0260000000,59 +HI,15009030100,0.0350000000,37 +HI,15009030201,0.0220000000,71 +HI,15009030402,0.0200000000,75 +HI,15009030800,0.0190000000,80 +CA,06069000802,0.2000000000,70 +CA,06061021322,0.5000000000,50 +CA,06027000800,0.1990000000,30 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 new file mode 100644 index 000000000..dc10cd42a --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/doe_energy_burden/test_etl.py @@ -0,0 +1,59 @@ +# pylint: disable=protected-access +import pathlib + +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 + +logger = get_module_logger(__name__) + + +class TestDOEEnergyBurdenETL(TestETL): + """Tests the COI ETL. + + This uses pytest-snapshot. + To update individual snapshots: $ poetry run pytest + data_pipeline/tests/sources/doe_energy_burden/test_etl.py::TestClassNameETL:: + --snapshot-update + """ + + _ETL_CLASS = DOEEnergyBurden + + _SAMPLE_DATA_PATH = pathlib.Path(__file__).parents[0] / "data" + _SAMPLE_DATA_FILE_NAME = "DOE_LEAD_AMI_TRACT_2018_ALL.csv" + _SAMPLE_DATA_ZIP_FILE_NAME = "DOE_LEAD_AMI_TRACT_2018_ALL.csv.zip" + _EXTRACT_TMP_FOLDER_NAME = "DOEEnergyBurden" + _EXTRACT_CSV_FILE_NAME = "extract.csv" + + def setup_method(self, _method, filename=__file__): + """Invoke `setup_method` from Parent, but using the current file name. + + This code can be copied identically between all child classes. + """ + super().setup_method(_method=_method, filename=filename) + + def test_init(self, mock_etl, mock_paths): + """Tests that the ChildOpportunityIndexETL class was initialized + correctly. + """ + + etl = DOEEnergyBurden() + data_path, _ = mock_paths + assert etl.DATA_PATH == data_path + assert etl.COLUMNS_TO_KEEP == ["GEOID10_TRACT", "Energy burden"] + assert etl.GEOID_FIELD_NAME == "GEOID10" + assert etl.GEOID_TRACT_FIELD_NAME == "GEOID10_TRACT" + assert etl.INPUT_GEOID_TRACT_FIELD_NAME == "FIP" + assert etl.INPUT_ENERGY_BURDEN_FIELD_NAME == "BURDEN" + assert etl.REVISED_ENERGY_BURDEN_FIELD_NAME == "Energy burden" + + def test_get_output_file_path(self, mock_etl, mock_paths): + """Tests the right file name is returned.""" + etl = self._get_instance_of_etl_class() + data_path, tmp_path = mock_paths + + output_file_path = etl._get_output_file_path() + expected_output_file_path = ( + data_path / "dataset" / "doe_energy_burden" / "usa.csv" + ) + assert output_file_path == expected_output_file_path diff --git a/data/data-pipeline/data_pipeline/tests/sources/dot_travel_composite/__init__.py b/data/data-pipeline/data_pipeline/tests/sources/dot_travel_composite/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/data/data-pipeline/data_pipeline/tests/sources/dot_travel_composite/data/Shapefile_and_Metadata.zip b/data/data-pipeline/data_pipeline/tests/sources/dot_travel_composite/data/Shapefile_and_Metadata.zip new file mode 100644 index 000000000..232735bb6 Binary files /dev/null and b/data/data-pipeline/data_pipeline/tests/sources/dot_travel_composite/data/Shapefile_and_Metadata.zip differ diff --git a/data/data-pipeline/data_pipeline/tests/sources/dot_travel_composite/data/output.csv b/data/data-pipeline/data_pipeline/tests/sources/dot_travel_composite/data/output.csv new file mode 100644 index 000000000..1592ad922 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/dot_travel_composite/data/output.csv @@ -0,0 +1,16 @@ +GEOID10_TRACT,DOT Travel Barriers Score +06061021322,52.3684736425 +06069000802,67.6807523475 +15001021101,65.6905624925 +15001021800,64.6348560575 +15007040603,47.3085751425 +15007040604,48.7634318775 +15007040700,56.8031262775 +15009030201,64.1950173025 +15009030402,50.2530948600 +15009030800,56.1490333775 +15001021010,69.4901838075 +15001021402,53.4854747375 +15003010201,54.7191133125 +15009030100,37.8950511525 +06027000800,38.5533081475 diff --git a/data/data-pipeline/data_pipeline/tests/sources/dot_travel_composite/data/transform.csv b/data/data-pipeline/data_pipeline/tests/sources/dot_travel_composite/data/transform.csv new file mode 100644 index 000000000..98c1140e9 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/dot_travel_composite/data/transform.csv @@ -0,0 +1,16 @@ +ST,STATE,COUNTY_FIP,ST_ABBR,COUNTY,GEOID10_TRACT,LOCATION,AREA_SQMI,E_TOTPOP,total_work,non_transi,transit_us,est_vmiles,est_annual,Avg_Annual,five_year_,Highway_MP,Mean_Annua,Mean_Ann_1,Average_au,Average_An,Average__1,travel_tim,average__2,transporta,zero_vehic,EPL_NOVEH,one_vehicl,two_vehicl,three_vehi,EPL_COMMUT,EPL_TCB,NWKI,EPL_NWKI,DOT Travel Barriers Score,EPL_AGE65,EP_UNINSUR,EPL_UNINSU,EPL_DISABL,Health_TH,EPL_NOHSDP,B25003_c_2,EPL_Renter,EPL_UNEMP,EPL_PCI,EPL_POV,GINI,EPL_GINI,B25106_001,B25106_002,B25106_006,B25106_010,B25106_014,B25106_018,B25106_022,B25106_024,B25106_028,B25106_032,B25106_036,B25106_040,B25106_044,P_HUCB,EPL_HUCB,Economy_TH,EPL_LIMENG,Equity_TH,Resilience,P_LDPNT,P_DSLPM,P_CANCR,P_RESP,P_OZONE,P_PM25,ENVIRO_TH,Transpor_1,HealthDis,EconomyDis,EquityDis,Resilien_1,EnviroDis,SumDis,OverallDis,Shape_Leng,Shape_Area,Count,geometry +06,CALIFORNIA,06061,CA,Placer,06061021322,"Census Tract 213.22, Placer County, California",99.8670726550,17009,8745.0000000000,6901.0000000000,33,54.8900000000,13722.5000000000,65854.0000000000,3.1881804300,23.6157485800,7350,122.5000000000,2.2500000000,16552.5038000000,2098.4362600000,2280.4292510000,15350.5352700000,0.2330995120,1.0000000000,34.2000000000,8.6000000000,55.1000000000,35.4000000000,71.8000000000,15.6944945700,4.7500000000,87.7794000000,52.3684736425,48.2800000000,3.6000000000,19.4138558000,25.4700000000,31.0546186000,24.7200000000,19.2000000000,27.0000000000,49.8800000000,25.8300000000,45.8200000000,0.3891000000,29.0000000000,6549.0000000000,5290.0000000000,110.0000000000,185.0000000000,200.0000000000,369.0000000000,477.0000000000,1259.0000000000,131.0000000000,264.0000000000,88.0000000000,101.0000000000,69.0000000000,30.4473965491,53.3760000000,36.5180000000,63.9300000000,63.9300000000,99.5504474900,41.7379288760,29.9038863348,95.4484974554,95.9045629530,91.4449337761,58.8302647216,68.8783456861,1,0,0,1,1,1,4,1,0.9665177105,0.0268473406,1.0000000000,"POLYGON ((-121.48444000000597 38.75135400038687, -121.46980300040809 38.751939000384596, -121.46962400024739 38.794708999620696, -121.46980899978547 38.824278999876014, -121.46967499990132 38.84410300035324, -121.46999800040737 38.84604700006906, -121.46989800029246 38.85984899983151, -121.46964500031646 38.881140999657475, -121.46947000034021 38.896947000104035, -121.4693559995797 38.92599200043054, -121.451782000339 38.92608999955388, -121.41439900041348 38.92621399987627, -121.4144789996061 38.94859899974409, -121.41437500020606 38.95849200000583, -121.41459499955954 38.95909599998049, -121.41471399965133 38.97942899964869, -121.4148460003426 38.99190500031557, -121.41462500004366 38.9960140000461, -121.41477899995084 38.99645199956018, -121.41476500020457 38.99710399994967, -121.41478700031979 38.99841800029054, -121.41211899959211 38.998992999827124, -121.40789399990814 38.999049999757744, -121.4065780003744 38.99990799975444, -121.39686400027335 38.99431399989123, -121.38302499970393 38.98626600017582, -121.37822799972236 38.98115500010323, -121.37593300000793 38.979595000109214, -121.37503299987299 38.97883400008908, -121.35779900012375 38.959014999842395, -121.35696300024222 38.95783800042341, -121.35641900033659 38.9558440002005, -121.35522099994915 38.94408100003818, -121.35434900020618 38.94147799961007, -121.35303199972697 38.93976499975497, -121.3506159998285 38.93766500003977, -121.34525399987217 38.93309100044934, -121.33720199997231 38.926459000382636, -121.3445980001975 38.926456000244286, -121.35845599984447 38.92645300010594, -121.37712500011861 38.92639500012922, -121.37713699977269 38.89723900007982, -121.3583700003752 38.897268999664675, -121.34026800016807 38.89728300031027, -121.34006599984599 38.89727099975687, -121.34007300016879 38.8760670003918, -121.34007600030714 38.86809799982291, -121.34929299997196 38.868102000007354, -121.34935500013313 38.851421999725574, -121.34937900034055 38.838884999842946, -121.3200409999921 38.83898299986561, -121.30921699996452 38.83902199986545, -121.3070990003186 38.83903400041885, -121.30693599999637 38.839047000119024, -121.30714799988027 38.82448999971376, -121.30723500029501 38.81728400015652, -121.30724599990293 38.810353999837275, -121.30790100043077 38.79772200007028, -121.31016200037601 38.80012300017637, -121.31880899983543 38.80606199976154, -121.32039900031356 38.80719199971105, -121.32412899965357 38.810029000138286, -121.33054100036685 38.81003000018444, -121.34004199963852 38.810005999976966, -121.33994999989255 38.8026400002359, -121.3493800003867 38.80264699965937, -121.3494409996024 38.79896399978884, -121.35264699995906 38.797976000092376, -121.35199899975402 38.7917230004162, -121.35858200025905 38.791678000139655, -121.35857399989015 38.78461700007455, -121.35856899965955 38.78078100034293, -121.35856400032833 38.776881000357946, -121.35854899963658 38.76623599959174, -121.3585470004437 38.76486999955091, -121.3585420002131 38.76151699960991, -121.35852799956751 38.751778000154616, -121.39268099982826 38.75174999976275, -121.39246199962156 38.72861899966716, -121.39738800015607 38.728906000311724, -121.42946399996362 38.73106700014199, -121.44782599957017 38.732277000183444, -121.47407400041476 38.73400599987707, -121.48439599977553 38.73459800019759, -121.48444000000597 38.75135400038687))" +06,CALIFORNIA,06069,CA,San Benito,06069000802,"Census Tract 8.02, San Benito County, California",1153.5321568800,2758,1396.0000000000,1056.0000000000,4,53.5900000000,13397.5000000000,37949.0000000000,3.1881804300,23.6157485800,8200,136.6666667000,2.5650000000,18690.1033800000,2098.4362600000,2544.1523620000,16688.2375400000,0.4397543430,0.5000000000,22.0000000000,8.5000000000,25.0000000000,66.0000000000,84.5000000000,77.6243093900,4.8888888890,86.5987000000,67.6807523475,42.7700000000,5.8000000000,37.1925902000,33.7000000000,37.8875300667,67.2200000000,25.2000000000,39.0000000000,64.6800000000,26.4600000000,37.8500000000,0.4433000000,65.0000000000,955.0000000000,714.0000000000,19.0000000000,16.0000000000,12.0000000000,60.0000000000,139.0000000000,241.0000000000,5.0000000000,34.0000000000,19.0000000000,11.0000000000,0.0000000000,32.9842931937,60.8751000000,51.5835857143,80.6300000000,80.6300000000,98.7915698600,66.4788271988,1.7720760308,19.2816157305,23.5333739769,83.5806909085,5.0568314952,33.2839025568,1,0,1,1,1,0,4,1,3.3179426646,0.3010957941,1.0000000000,"POLYGON ((-121.48395800026145 36.71457499993636, -121.48336800003312 36.71549900027867, -121.47680599959716 36.7152590000029, -121.47438200022907 36.71673199958218, -121.46782199988536 36.71717700031837, -121.46602099956942 36.71811100022251, -121.46412100008405 36.71757399974035, -121.46262500034345 36.718341000037185, -121.4615920003705 36.71763799999377, -121.46014200005322 36.71884099971243, -121.458398999714 36.71915399975734, -121.45587100004656 36.721377999794925, -121.45307199957307 36.72119799958807, -121.45308400012647 36.72304500022665, -121.45133999974115 36.72479299989709, -121.45255900019765 36.72624300021437, -121.45229100042928 36.727975000046285, -121.45264599971307 36.72920900029516, -121.45467399970528 36.730003000038494, -121.45442599995988 36.730974999896375, -121.45889400005802 36.73382900020823, -121.45966100035486 36.735522000040305, -121.45782600026968 36.73634500022166, -121.4601680003529 36.737261000195076, -121.46003000028423 36.74094199997336, -121.46174900041598 36.74208999985365, -121.462368000183 36.743851000123584, -121.4641109996229 36.744190999615, -121.4655490002861 36.743482000194206, -121.4665790001207 36.745555999609735, -121.47138200037898 36.745449000071346, -121.47300200044191 36.74632499999882, -121.47441599999837 36.74939899966415, -121.4756510002934 36.74920999994157, -121.47657099955194 36.75234199958368, -121.47616999994551 36.75425999989915, -121.47436799958348 36.75667199961316, -121.47722099984924 36.76065499982843, -121.47927600018721 36.7610780004494, -121.4830020002421 36.76505000015743, -121.48049000041317 36.76790100033094, -121.48059099967486 36.76990400006957, -121.47919800018752 36.7716329997632, -121.47758500044739 36.77223200040652, -121.47527099985672 36.7755499996328, -121.47360699956334 36.776828000112175, -121.46926800001813 36.77883299994306, -121.46797799988474 36.78022600032972, -121.46681800035043 36.78032899968366, -121.4676849998628 36.7824510004134, -121.46709399958837 36.78407999999206, -121.46539600042507 36.78511299996501, -121.46398900029209 36.785842000308094, -121.46165000034722 36.785363999848755, -121.45823500024505 36.786280999868325, -121.45559599995539 36.78623999977623, -121.45597500034597 36.78814500039152, -121.45473599986644 36.789921999600665, -121.45615200041448 36.79110400014952, -121.45315199966501 36.79026800026804, -121.45265900031256 36.78943200038657, -121.45101399999606 36.7891859998341, -121.44729800040238 36.787658999563234, -121.4411059999419 36.78384099976239, -121.43327999967221 36.7780859996692, -121.43041299966018 36.77713800001874, -121.4283709999217 36.777121000134116, -121.42399000023829 36.77427600023725, -121.41990399976976 36.77340799977941, -121.41503900024964 36.77128199976454, -121.41429800025247 36.769160999980215, -121.41219200026057 36.76871400005109, -121.41237499970646 36.76982900020823, -121.40936500029449 36.77580499970105, -121.40751599956371 36.7778450002466, -121.40425700036025 36.779571999847974, -121.4038280003619 36.7804160000984, -121.4053169997797 36.783457000040585, -121.40394799960046 36.788240000275835, -121.40251600011328 36.79011000017641, -121.40401700008448 36.79113199964212, -121.4044539995524 36.793010999957744, -121.40678099984325 36.79374000030083, -121.40929699985662 36.7969410004269, -121.40896299974258 36.7981719996381, -121.40807700025334 36.80257799957508, -121.40607200042245 36.80572599995497, -121.40147000044016 36.80639600027524, -121.39692100020397 36.809897999892826, -121.39546599965615 36.81300500018068, -121.39378100019297 36.8151629998726, -121.39133499981034 36.81693099956601, -121.39088299965067 36.81867700004358, -121.38829399986815 36.81963500015519, -121.38828300026023 36.8188790003656, -121.38793999973115 36.818045999723154, -121.38610799978431 36.81673799965898, -121.3839910001845 36.81371599969367, -121.38237200016766 36.81307699990367, -121.38005500033796 36.810729000443075, -121.37906799978833 36.81018699973032, -121.37512899980345 36.810085000422475, -121.37253599983649 36.80918899957271, -121.37187800006961 36.80906200001135, -121.36916299987251 36.80837499980646, -121.36761899971702 36.806939000134776, -121.36564599956318 36.8027850001277, -121.36683200029654 36.79936299970274, -121.36633399981423 36.79733999994107, -121.36758599999388 36.79448300039019, -121.36897800033444 36.79248700007503, -121.36873800005861 36.79135600007942, -121.36586000043866 36.78785699970081, -121.36027800022947 36.788506999998106, -121.35909300044159 36.78786400002366, -121.35581799960096 36.788786000273774, -121.34915800004165 36.789194000203, -121.34497000026528 36.78924099967247, -121.34219700009146 36.789249000041366, -121.34218300034513 36.78999500026907, -121.3416390004395 36.79246600000596, -121.3432649998798 36.79347199963314, -121.3399839996618 36.79421799986085, -121.33807799989972 36.79571100036242, -121.33673700011241 36.79555999969426, -121.33633999979111 36.79930100044089, -121.33618099965338 36.800158000391434, -121.34593499980036 36.809162000126264, -121.34718299979556 36.810326999891174, -121.35141499980239 36.81359500040901, -121.35358199990935 36.814343999875746, -121.36354799994024 36.81620000003005, -121.36354399975573 36.816270999706944, -121.36358699994008 36.824335000160204, -121.3636110001475 36.83279900017379, -121.3636120001936 36.83338600026377, -121.36361500033195 36.8392459998031, -121.36362599993993 36.8465619999364, -121.36366299984752 36.85514299994952, -121.36370199984736 36.86108699976529, -121.35318499958805 36.86104999985764, -121.34984999957777 36.86103299997302, -121.3407629996127 36.860922000250184, -121.33667399990514 36.858491999706075, -121.33178900036205 36.85814299979967, -121.33048999981361 36.85778100019303, -121.32120199957257 36.8536650001397, -121.3091979999877 36.85352900016329, -121.28167499970147 36.82431199999883, -121.28143400027886 36.81966299964779, -121.28035900016766 36.81003499991539, -121.27556300023224 36.805661999701556, -121.27474300018929 36.805302000187226, -121.269372999864 36.79799100028447, -121.2663139999911 36.7983970001215, -121.26470200029706 36.796965999781094, -121.2638139998162 36.79704099964249, -121.26143099964088 36.79905199975002, -121.26053399964434 36.801420000132964, -121.26045799973684 36.80519399970336, -121.25615900023763 36.80781299997, -121.25351799985577 36.80833199962211, -121.25245700039022 36.81098499965805, -121.25018700003 36.81203000018439, -121.24923400014893 36.81164200027814, -121.24685200001977 36.81197100016158, -121.24472600000485 36.811080000441734, -121.24451800030545 36.81176299956286, -121.24016700020684 36.81156500032455, -121.23704300003442 36.81232600034468, -121.23535000020229 36.81326799971845, -121.23148900021715 36.81372199997037, -121.22897300020378 36.815065999896035, -121.225642000378 36.815646999709315, -121.22271899958213 36.8138860003387, -121.22113300018776 36.815673000008985, -121.21711800029544 36.81845999992913, -121.21216400026839 36.81959099992474, -121.20821199968401 36.82113500008023, -121.20699400017293 36.822440000006054, -121.20524000022579 36.82816100032994, -121.2072730004486 36.83159000017844, -121.20707600035712 36.834492000005866, -121.20745599989442 36.83644099995223, -121.2059770000385 36.83961699982473, -121.20547400022491 36.841674000254955, -121.20347399972525 36.84251200022868, -121.20307300011882 36.843678000039745, -121.20430700036775 36.844090000153415, -121.20464000043563 36.84526200024118, -121.20321899965705 36.84721699956492, -121.20094800015005 36.848599000343654, -121.1982780002295 36.85478899981257, -121.1967750001661 36.8568349997355, -121.19419499989931 36.85790699970835, -121.1944200003827 36.859003999934714, -121.18688299995046 36.860807000342845, -121.18398300021528 36.86080600029675, -121.18147299957923 36.86213400038389, -121.17841599979852 36.861627000385795, -121.17599599971555 36.859045000026754, -121.17241099986774 36.85807000003052, -121.17029400026786 36.858494999844424, -121.16598400026135 36.857586000193805, -121.16272600020471 36.858325000098716, -121.16196300009233 36.85963200011679, -121.15936599994092 36.86072500015871, -121.15811899999181 36.859661999701586, -121.15769600027016 36.85752800021709, -121.15613999956128 36.85691799996579, -121.1575869997402 36.856170999691926, -121.15644800027496 36.855532999948025, -121.15337199961806 36.855141999903424, -121.15323200035652 36.854263999883756, -121.15134100038682 36.855225000133714, -121.14854400000559 36.85378899956271, -121.14576400040824 36.849584999947865, -121.14522799997218 36.84713999961133, -121.14382299993144 36.84724900014129, -121.14302900018816 36.8463019996376, -121.1427899999585 36.84312199958066, -121.1421799997072 36.84091700041927, -121.14237399966032 36.83876800024308, -121.14152299998642 36.83665599997448, -121.126029000438 36.83040799962953, -121.11953400039374 36.827333999964196, -121.09074200004324 36.816130000399255, -121.00097900018068 36.77944400024046, -120.99283499963548 36.775684000416334, -120.93368200032404 36.75189499965455, -120.9311309995959 36.74998999993858, -120.91873099973583 36.74038100018305, -120.8760160003381 36.70555000013246, -120.87295200023459 36.703329000233225, -120.85599599981549 36.68980199966262, -120.75101100035732 36.60616399986873, -120.74943599967162 36.60529400021801, -120.71725200027953 36.57940299964878, -120.71604600042252 36.57843499997534, -120.60370599993189 36.48824200006828, -120.59715500000323 36.48823499974549, -120.5971040003493 36.48562800003225, -120.59714999977263 36.434482000344076, -120.59728799984129 36.43316299977266, -120.59725600016424 36.41558700043976, -120.5974219997255 36.41515400025696, -120.5971030003032 36.39131399984126, -120.59700000004995 36.35753799987884, -120.59672499995872 36.33932599999497, -120.59687299958921 36.33337799999475, -120.59656199963655 36.32848800022106, -120.60022500038343 36.32828599989904, -120.60209700037626 36.32572200037009, -120.60541200036351 36.32432599984509, -120.61251000033621 36.32436499984493, -120.6128790002656 36.32333299991808, -120.61203199987688 36.32162400024748, -120.61343599987146 36.32026200039104, -120.61478900021217 36.32029400006809, -120.61791499957752 36.318817000304364, -120.61991600012328 36.31994600020778, -120.6243549997834 36.31824299991456, -120.62716699995707 36.318686999705335, -120.63000899971553 36.31690800040394, -120.63157199984789 36.31707199987295, -120.63265500032799 36.31818599998394, -120.63838900035205 36.31875800028155, -120.64085900004278 36.318333999614424, -120.64266999992054 36.31901400039584, -120.64537999988704 36.31856600042062, -120.64578000034669 36.31726799991833, -120.64852900031309 36.3171099998267, -120.65568900044696 36.31606200006132, -120.65880600029664 36.31623499994532, -120.65958400020139 36.314985999904025, -120.66313100009552 36.31438500006777, -120.66368999979363 36.31341899958721, -120.66639100024446 36.311446000332694, -120.66742100007906 36.30896300004247, -120.67008399967682 36.3057730004237, -120.67265400038178 36.305000999896265, -120.67455900009776 36.30272099997421, -120.67556399967879 36.30290000013497, -120.67806299980754 36.29846299966778, -120.68144600023271 36.295801000116114, -120.68136300000242 36.29467999968227, -120.68272299976661 36.294441000351924, -120.6819510001385 36.29248800022111, -120.68045000016735 36.29068099962848, -120.68288500004269 36.28679600033519, -120.68079599993541 36.28514999997259, -120.67804900006126 36.284170999791854, -120.6758769997237 36.28282799991234, -120.67383900016966 36.28239999996009, -120.67262199980541 36.28048899996742, -120.67503300037265 36.27864500036651, -120.67618999976867 36.27683999986613, -120.67621199988383 36.275476999963644, -120.67460200028205 36.274185999784095, -120.67424600005285 36.27273400027394, -120.67535399988714 36.27051799970599, -120.67858200035897 36.26731899967217, -120.67974299993944 36.26961700042426, -120.68165099979376 36.27153900002486, -120.68308300018026 36.271958999608216, -120.68392899962362 36.27089900018876, -120.68722699972625 36.2714460002328, -120.69020699955337 36.27361999976324, -120.69167699989362 36.27633800009869, -120.69313499968047 36.2779050004155, -120.6948969999965 36.277994000023114, -120.69549699978666 36.27986700006204, -120.69703200042642 36.281087999711474, -120.69773000023929 36.28288399979681, -120.69966000020884 36.28415800009168, -120.70089300041161 36.28394099997723, -120.70114100015701 36.285295000364044, -120.70374699982415 36.287054999688564, -120.70639699972173 36.286919999758254, -120.70767900038555 36.285758000131636, -120.70944499998672 36.28721199973404, -120.71076199956661 36.28730699961841, -120.71178399993164 36.2885700003053, -120.71434999955278 36.28929200032559, -120.71619500009916 36.29040100020603, -120.71732700014093 36.29252700022096, -120.71867600029714 36.29209600013036, -120.72085700015043 36.2929859998041, -120.72258399975175 36.29265599987457, -120.72269200023561 36.29416500021466, -120.72556899980947 36.29729499976446, -120.73022499958404 36.30026600007591, -120.73128099971831 36.30126999961084, -120.7351419997035 36.3026280001821, -120.73552200014018 36.30348099994825, -120.74103099968085 36.30583999991609, -120.74508100028788 36.309297000156505, -120.74665399998207 36.31023400019899, -120.75035699987563 36.31015800029155, -120.75257699972872 36.30789800039247, -120.7560499998076 36.307799000323655, -120.7583400001908 36.308603999674915, -120.75637799964494 36.30670000000504, -120.75572600015477 36.30527499994133, -120.75161600037808 36.30436100006017, -120.7493550004329 36.30286300022732, -120.74756100043976 36.30121199963412, -120.74571299975509 36.30037000037527, -120.74485199962004 36.29889899998892, -120.74311400041074 36.298058999922944, -120.7394660003556 36.29198500040752, -120.7382890000373 36.28825099998369, -120.73723099981078 36.28786099998524, -120.73625999999899 36.28571900013179, -120.73384700023882 36.284196000045426, -120.73332500044836 36.279836999577924, -120.73207600040706 36.27697199965809, -120.73200599987695 36.27536600024075, -120.73086899960464 36.274079000245706, -120.72923399974928 36.27362299990159, -120.72840500019055 36.272270999606974, -120.72481300001988 36.27031999956836, -120.72430299988349 36.266904000319414, -120.72160400042424 36.26495000014245, -120.71942899994838 36.260650999743916, -120.7176960000703 36.26001199995386, -120.71636099966037 36.25384299965475, -120.71602799959248 36.25188800033101, -120.71422099989917 36.249605000270606, -120.7146619995516 36.24825900025269, -120.71346199997129 36.24746999984069, -120.71173799960894 36.24237999983717, -120.71182900020818 36.239537000032556, -120.71018199979943 36.23675999967429, -120.70937400030982 36.23669899955922, -120.70801999992301 36.232520000197894, -120.70742899964858 36.23178499957811, -120.70641100036732 36.2276919996861, -120.70733699990257 36.22509799967298, -120.70660400027435 36.224691999835954, -120.70688599978905 36.22039100024449, -120.70601199995377 36.218499000228746, -120.70589700004649 36.212296000160336, -120.70485599970459 36.21167100011661, -120.70575899997783 36.209199000333626, -120.70553799967888 36.20686299962779, -120.70621500032195 36.20590799965453, -120.70612099958441 36.20372999993958, -120.70698699995006 36.203700000354786, -120.70950800019403 36.201414000156035, -120.71125900000283 36.200409999721785, -120.71187300043857 36.198359999614354, -120.7127739997203 36.198569000259226, -120.71842599956022 36.19684800003523, -120.71885999978912 36.19787499973148, -120.72079199985086 36.19849000021338, -120.72042700010593 36.199555999909535, -120.72292800032693 36.199973000253806, -120.72477900025063 36.20131800022557, -120.72725900040251 36.20145000001753, -120.72854799959049 36.2027180000357, -120.73052599997487 36.20160299987862, -120.73139499957955 36.20354699959438, -120.73222299999145 36.2036049995711, -120.73582699981614 36.20316700005708, -120.73852400008252 36.20149600034017, -120.74048899986741 36.200956999765765, -120.74076700009692 36.20013300043769, -120.74379300024674 36.19912099963449, -120.74438899985245 36.198776999958625, -120.74682699986613 36.19975300000101, -120.74860099983624 36.19881599995847, -120.75275599988947 36.19953799997876, -120.75490299997341 36.201198000087686, -120.75585699990057 36.20334099998723, -120.75813499973043 36.20200200029211, -120.76129299967215 36.20338800035597, -120.76236899982945 36.20502000007298, -120.7637899997087 36.20908499957312, -120.76663000027423 36.20972400026244, -120.7669749999962 36.210674000005156, -120.76531199974897 36.21348099994822, -120.76857900022065 36.21409200024567, -120.7692630002872 36.21664700025889, -120.77061000035121 36.21881699960488, -120.77233099967589 36.22017500017614, -120.77477900015072 36.219906000361675, -120.77896699992709 36.22321500007223, -120.78088600028866 36.222359000167785, -120.78149599964064 36.223072999819124, -120.78065500042788 36.22482000034279, -120.7830599998191 36.228961999796525, -120.7889980002575 36.230535000390034, -120.78876100012002 36.23240300019836, -120.78928199986439 36.235001000395926, -120.79128399955692 36.23418200039907, -120.79430600042156 36.234645000166665, -120.79490900035006 36.23642000018293, -120.79657099965186 36.23640400034441, -120.79893099966586 36.235475999817595, -120.80189399960835 36.23743700031736, -120.80031999986807 36.23921100028747, -120.80175000016237 36.2406510001436, -120.8027680003429 36.23999200033063, -120.80547300007885 36.24016800035298, -120.8065110002824 36.2410420001882, -120.80691099984273 36.24323899988002, -120.80973200043144 36.2448270002659, -120.81216600026067 36.24519500014918, -120.81179999957027 36.24735399988725, -120.81044299994448 36.24849700043626, -120.81077399992012 36.251701999847455, -120.81302200016512 36.25025899985303, -120.8142809997683 36.25309800037246, -120.81894499991176 36.25327300034871, -120.8211370002723 36.25417399963044, -120.82158500024752 36.255991999831, -120.8237150004469 36.25727699973379, -120.82464099998214 36.255149999672824, -120.825987 36.2544549999983, -120.82558100016297 36.25773300007796, -120.82706100006504 36.25697200005783, -120.82952100019395 36.257249000241245, -120.82811099992267 36.25834799966049, -120.8294470003787 36.25955100027852, -120.83285200001973 36.25920999984169, -120.8331310002954 36.26203899989997, -120.83705899977298 36.26274199994339, -120.83621200028358 36.26556000039375, -120.83744699967929 36.26671299960532, -120.83935400038678 36.270573999590454, -120.83906699974222 36.27153499984041, -120.83752200043995 36.270729000443055, -120.83671500009712 36.27150900044006, -120.83858099981325 36.27217299958431, -120.83984299955478 36.27362299990159, -120.83935500043287 36.27449100035943, -120.84027799982982 36.276643999820806, -120.84386799990824 36.278956000319226, -120.84502200006523 36.2808899995739, -120.84768299957074 36.28175699998559, -120.84961599967863 36.2816850002626, -120.85135399978725 36.28320100002617, -120.85100199974244 36.2850030003882, -120.85201999992302 36.28596399973884, -120.85628799979133 36.28468800025104, -120.85676300011232 36.28611000017639, -120.85981799980084 36.28812000023788, -120.85965600042402 36.29011399956147, -120.86077599991245 36.29056999990564, -120.86247199988287 36.289833000092926, -120.86507999964226 36.29257799987482, -120.86647099993667 36.29215500015317, -120.86932900043297 36.29371400010109, -120.87154700019386 36.2933830001254, -120.87389000032323 36.29516699965734, -120.87873099963588 36.29537900044056, -120.88047600006729 36.294878999866, -120.88170099990117 36.293358999917984, -120.88324600010282 36.29407899984602, -120.88691800036537 36.29282799971247, -120.8892160002182 36.29036400029844, -120.89236699983712 36.29249000031331, -120.89634499982185 36.297531999901935, -120.89851099988272 36.29933200017172, -120.89901899992685 36.30075500014317, -120.90470599958218 36.30229500011421, -120.90488199960458 36.30403100013058, -120.90711500005716 36.30360899955576, -120.91042599985997 36.30557600033222, -120.91171499994726 36.3082630001374, -120.91279400024291 36.30874099969742, -120.91611999983809 36.308835000434954, -120.9181419995536 36.31056099999023, -120.91977800035443 36.31098399971188, -120.92382299983154 36.30993499990035, -120.92555399961736 36.308074999561654, -120.92615999968422 36.306390000098475, -120.92570500028552 36.30213499993033, -120.92749600014025 36.30061900016676, -120.93037899999081 36.30137600000245, -120.93310399974973 36.29976799959354, -120.934239999976 36.29594300036922, -120.93647899980596 36.29415199961517, -120.93610299955373 36.29250600015183, -120.93442699960633 36.29067600029725, -120.93457400008998 36.28933200037159, -120.93633400031382 36.28956100014011, -120.9372029999185 36.288668000328016, -120.94121299958022 36.28660000028981, -120.93927200000275 36.28532900013329, -120.93915700009546 36.283463000417214, -120.94257700042817 36.28047999955237, -120.94545700014044 36.279009000065344, -120.94868100042777 36.277932999908046, -120.9534320000867 36.274706000381684, -120.95665500032794 36.275974000399856, -120.95827799962996 36.27844099995224, -120.95913300038762 36.28073200038159, -120.96269500007418 36.281022000265125, -120.9642489997915 36.28048899996742, -120.96450099972134 36.28265299993603, -120.9702359997915 36.287227999572565, -120.97226599987596 36.28779899982402, -120.97359700010145 36.290167000206964, -120.9771599998341 36.29060499972104, -120.97964100003207 36.29046499956013, -120.98281299972012 36.29116899964964, -120.98455800015154 36.29261899996692, -120.98579999987004 36.29293700024243, -120.98644900012124 36.29200000019989, -120.98505999991903 36.29020900034516, -120.98806700009197 36.285225999880026, -120.98773400002403 36.28261900016679, -120.98813999986106 36.280074999761496, -120.98720599995693 36.277325999795096, -120.98749199965602 36.27513699957291, -120.98984600029263 36.27380100001619, -120.9907939999431 36.27127899972612, -120.99227199975297 36.270234000099094, -120.99470100025093 36.269897999892805, -121.00016999974565 36.270807000442744, -121.00246000012885 36.26805799957708, -121.00454500005168 36.26707099992677, -121.0104580002365 36.26884699998914, -121.01090200002727 36.26522000000307, -121.01175699988562 36.26452999965983, -121.0131730004336 36.26597000041522, -121.01309799967294 36.267694999924345, -121.01415599989946 36.26859099987479, -121.01551100033237 36.267904999715995, -121.01620800009908 36.26381700005459, -121.01812200023011 36.26158200040902, -121.01878100004308 36.26004999990761, -121.02046300026723 36.259972999954016, -121.02234199968353 36.261473999925215, -121.02471000006642 36.25992599958528, -121.02723999982612 36.25989299986213, -121.02766399959387 36.261788000016224, -121.02618000040667 36.263150999918764, -121.02770000035468 36.264212000283635, -121.02865999965923 36.26723400024895, -121.02861999961328 36.269796999731795, -121.02587799996968 36.27046299986762, -121.02564700010896 36.27217699976876, -121.02773099998564 36.27545699994067, -121.03026599997588 36.275876000377195, -121.03361100044725 36.275212000333624, -121.03576800009307 36.275574999986304, -121.03639999956027 36.27530099994124, -121.03571500034695 36.27367399955551, -121.03697099981179 36.27236700043676, -121.04020000032972 36.27116499986488, -121.04079699998152 36.32396899956973, -121.1169499999425 36.38518999981869, -121.12037200036747 36.38788900017727, -121.14347600011729 36.406176999968636, -121.19346500040939 36.44575100020853, -121.19513800021849 36.44723200015676, -121.19600000039969 36.44806800003823, -121.19791899986194 36.45171600009337, -121.19767000007039 36.455064999849924, -121.19904300043407 36.45646399961396, -121.20204200023807 36.457940000230906, -121.20556199978643 36.46242200007532, -121.20982300023127 36.46480400020448, -121.21391600012328 36.47017299958429, -121.21510700018786 36.47321699966483, -121.2168250002735 36.47403499961558, -121.21936599964113 36.47250300001349, -121.22066800032792 36.47381400021601, -121.22235599992945 36.47384099966246, -121.22327700013341 36.47247000029034, -121.2254650003095 36.471991999831005, -121.22951099983277 36.475277000233405, -121.23047200008273 36.47855700040532, -121.2279539999771 36.480680000281836, -121.22884599974304 36.481612000093776, -121.22810799988423 36.48459900024369, -121.23030100029092 36.48626199959165, -121.23081699980469 36.48813899981502, -121.23248999961373 36.489408999925445, -121.23100999971166 36.49203499961561, -121.23292299979659 36.49312699961138, -121.23458199985936 36.49617699996861, -121.23686499991976 36.49762300010144, -121.23790100003112 36.49948999986367, -121.23728899968756 36.49996500018466, -121.23875699993556 36.50135000020242, -121.23952600032464 36.503434000079096, -121.23929499956455 36.50478200018921, -121.24292299959671 36.50558400030144, -121.2440910003993 36.50691100034243, -121.2472179998108 36.506871000296485, -121.24984000021578 36.50473099963597, -121.25218699963028 36.505586000393635, -121.25488199980441 36.50351100003269, -121.2578819996545 36.50453499959059, -121.25959899969405 36.504463999913696, -121.26309399988816 36.50344200044799, -121.2651969997417 36.50367999973224, -121.26647900040552 36.502372999714225, -121.26895899965808 36.50196899996945, -121.27117200008769 36.502237999783915, -121.27225100038333 36.503167000356825, -121.27561099974781 36.50330000019488, -121.27847000029027 36.502390999644945, -121.28199299997692 36.50270599978211, -121.2840870003148 36.50392800037696, -121.28496300024221 36.50569700011653, -121.2872210000491 36.504763000212336, -121.28815299986104 36.505378999841014, -121.29319000011839 36.506069000184254, -121.29618199959958 36.50515000007249, -121.29714599998789 36.50393599984659, -121.29983900006977 36.505640000185906, -121.30204600022267 36.50506999998055, -121.30449900002878 36.50245699999061, -121.30594200002326 36.50221999985314, -121.30771099976278 36.49967200016272, -121.30884499989679 36.499424999564155, -121.31178799981632 36.502736000266225, -121.31196699997702 36.50458800023608, -121.30978299998543 36.50621399967639, -121.31072600030461 36.508748999666636, -121.308371999668 36.51032899968362, -121.30676200006621 36.512174000230004, -121.3073140003408 36.514222000245184, -121.30718899997231 36.5168120000738, -121.30482299968168 36.51736799963351, -121.30311600010327 36.51840699988321, -121.30324599980304 36.520129000153304, -121.30062600038957 36.52260800025908, -121.29782299973164 36.523816000208285, -121.29688899982744 36.52598899969263, -121.29536199955658 36.52712900010334, -121.29601700008448 36.52924999988761, -121.29711799959597 36.530260999745394, -121.29677199982791 36.53231199989892, -121.29850599975208 36.533056000034435, -121.2987090001202 36.53466300039719, -121.30115000027229 36.537600000040015, -121.30156000029376 36.53924300026432, -121.30514500014164 36.54074400023546, -121.30786699976221 36.54332699974128, -121.3077440003853 36.54496499973499, -121.31004200023807 36.54590099973143, -121.31168200032403 36.548249000091346, -121.31347600031711 36.54991699966985, -121.3161250001686 36.54947900015577, -121.31841100036735 36.55068099982833, -121.31925499971845 36.551821000239045, -121.32144499998674 36.55280799988935, -121.32598799994622 36.55350299956382, -121.32869699986662 36.554739999951096, -121.32975600013924 36.558007000422776, -121.32887900016567 36.56145999957937, -121.3317100003162 36.56194600040766, -121.33077300027372 36.56349099970993, -121.33163499955555 36.565922000300134, -121.33124799969539 36.57050400025946, -121.33347800000968 36.5716789995862, -121.3339199997082 36.57440400024444, -121.33139400013295 36.57622999991463, -121.32863199956711 36.576636999797756, -121.32612399992263 36.576403999844786, -121.32516099958042 36.57696100034991, -121.3234699998406 36.57786899995443, -121.32498999978861 36.58019400015303, -121.32628200001426 36.58075700003559, -121.3249380000886 36.58245300000601, -121.3253340003638 36.583746000277756, -121.32723299980307 36.5841770003683, -121.3273499998026 36.5858860000389, -121.32436899992939 36.5881690000993, -121.32419399995308 36.59025199992993, -121.32513400013397 36.59166500033956, -121.32499800015756 36.5984399998062, -121.32378099979326 36.60236700013701, -121.32155399961738 36.60430000024485, -121.31871099981277 36.60485399971236, -121.31966899992437 36.60652799956756, -121.31840500009065 36.608243999560955, -121.3183730004136 36.61002599990002, -121.32309899981897 36.61252800016712, -121.32446199972145 36.61462599979012, -121.32913200014167 36.61823299975316, -121.33033099967588 36.620045999723175, -121.33143300013279 36.62037799974496, -121.3322469998991 36.62035799972199, -121.33524699974919 36.62347599961777, -121.33582700041569 36.62495999970429, -121.33840000035968 36.62839299973717, -121.3399479998003 36.62918500028758, -121.3420889996076 36.631353999587475, -121.34161000000148 36.633306999718286, -121.34347999990206 36.635414999802435, -121.3431239996728 36.63675000021237, -121.341585999794 36.638008999815554, -121.342314000091 36.63952300038619, -121.34539400003302 36.64126599982609, -121.3465900003282 36.64315199956519, -121.34901199960404 36.64294499991189, -121.35067099966687 36.646171000291474, -121.35009199994579 36.64835700037531, -121.3521310004453 36.647749000216265, -121.35317199988788 36.64945699984071, -121.3548760002272 36.64944500018669, -121.35748900021713 36.65081000018142, -121.35950899984044 36.65280899973561, -121.36331700007946 36.65472900014328, -121.36624800034491 36.656609999651835, -121.36802999978465 36.65674400043531, -121.37116400041828 36.65542900004834, -121.3734230002712 36.65546599995599, -121.37833400011397 36.65286100033495, -121.38072099957446 36.65403100033046, -121.38358400030131 36.65326900026423, -121.38610699973822 36.654904000119586, -121.3883669996373 36.654632000166714, -121.39002899983842 36.65561399958648, -121.39113699967277 36.654655000328034, -121.3958599998391 36.65542900004834, -121.39625299997596 36.656744999582145, -121.39891100024244 36.6570280000422, -121.40194599990792 36.6554239998178, -121.4069929997271 36.656035000115196, -121.40834600006781 36.656659000112825, -121.40982299983153 36.65996399963893, -121.40923399964936 36.66116200002631, -121.41089799994273 36.66281599985854, -121.41205400019192 36.664850000127444, -121.41177800005465 36.66647000019043, -121.41484500029651 36.672459000282686, -121.41553499974043 36.67305800002674, -121.41987500023106 36.67308899965764, -121.42342700035573 36.67450800034402, -121.42539100009452 36.67515899978804, -121.42918200044892 36.6776139996864, -121.43157100000161 36.67872799979739, -121.43281099962792 36.67785399996217, -121.4358949997544 36.67736900007935, -121.43791400023088 36.67559300001699, -121.43922699962627 36.675742999739725, -121.44082599962013 36.67415800039146, -121.44433300036764 36.67314799968051, -121.44611299971513 36.67377199967808, -121.44952999990954 36.67876100041991, -121.45149899987894 36.6799379998389, -121.45373799970889 36.679931000415365, -121.45532099986423 36.68181800020062, -121.4568359995817 36.681963999738855, -121.4586590000128 36.68441899963716, -121.45896199959657 36.685720000277854, -121.46095599981948 36.68668699990519, -121.46297500029601 36.68518299979564, -121.46542900014822 36.68472700035085, -121.46902300041108 36.68543399967939, -121.46837900039054 36.686504999606086, -121.46939100029442 36.690770000235375, -121.47183699977768 36.69358499964807, -121.47282500037346 36.6968890000274, -121.47537200001773 36.69781699965489, -121.47490700015788 36.699051999949916, -121.47667599989745 36.69995999955438, -121.47754500040139 36.70138699971034, -121.47748000010188 36.703018000280565, -121.47854599979803 36.70290699965835, -121.4817079999242 36.70459400011305, -121.48048600022872 36.70653999992112, -121.48159500010911 36.7075240003324, -121.48233199992183 36.70963399960942, -121.48331800042536 36.71010399969987, -121.48450800044384 36.71306200031114, -121.48395800026145 36.71457499993636))" +15,HAWAII,15001,HI,Hawaii,15001021101,"Census Tract 211.01, Hawaii County, Hawaii",41.0551206444,3359,1045.0000000000,579.0000000000,0,32.2500000000,8062.5000000000,24571.0000000000,3.4923035330,25.2432498800,8625,143.7500000000,1.9080000000,11790.0771000000,2098.4362600000,2676.0139170000,9208.5063950000,0.3747713320,0.4000000000,19.6000000000,32.0000000000,44.0000000000,23.6000000000,88.8000000000,57.8000499700,3.4166666670,96.5622000000,65.6905624925,96.0700000000,10.2000000000,64.6501326000,69.9200000000,76.8800442000,27.0500000000,16.3000000000,20.0000000000,89.9100000000,48.2500000000,86.7800000000,0.5795000000,98.0000000000,1543.0000000000,1292.0000000000,219.0000000000,94.0000000000,31.0000000000,25.0000000000,21.0000000000,251.0000000000,45.0000000000,11.0000000000,3.0000000000,0.0000000000,0.0000000000,29.0991574854,49.0787000000,59.8669571429,45.1600000000,45.1600000000,97.8141024800,16.7634693611,0.0420071944,0.0642817045,0.0530561593,0.0000000000,0.0000000000,4.2307036048,1,1,1,0,1,0,4,1,0.5245491385,0.0092006470,1.0000000000,"POLYGON ((-154.9663279998373 19.362453999752347, -154.96573000013936 19.36693999978121, -154.9649170004192 19.36958200020922, -154.9646400002358 19.372660000059, -154.96429000028326 19.37321999980321, -154.96341999973316 19.376860000388774, -154.96238999989853 19.378750000312323, -154.9594300000944 19.38234000039074, -154.95834000019082 19.38434999955291, -154.95785999963925 19.3865100002364, -154.95779999957028 19.393329999979585, -154.95717000019533 19.395580000316784, -154.95370000025477 19.402299999945114, -154.95323000016435 19.40467999998208, -154.95300999991153 19.410280000121986, -154.9525300002593 19.41366999997058, -154.9427560000893 19.442949000296153, -154.94139700037124 19.44738099963348, -154.94094200007322 19.456156999645884, -154.9407700002353 19.459970000115447, -154.94122100034886 19.46648900036712, -154.9408900003732 19.479269999810697, -154.9412390002796 19.487377000448248, -154.94122999986456 19.488879999612323, -154.94077999979712 19.491510000386256, -154.9304340002289 19.48854700044376, -154.9291589998879 19.48822700007605, -154.92698600040356 19.48820700005308, -154.9235159995637 19.4882189997071, -154.92073299982806 19.4878279996625, -154.91718699998003 19.486719999828154, -154.9108530001658 19.485906000061902, -154.90727000041016 19.48513899976507, -154.90587399988516 19.48343400027892, -154.90269099968987 19.480824000427333, -154.90251899985194 19.480705000335547, -154.89798999963875 19.482070000330282, -154.89168000003195 19.48517000029534, -154.88884999992752 19.48729000003351, -154.88108000044164 19.49073000038925, -154.8802899999835 19.490900000134957, -154.86963000032424 19.49030999990663, -154.86785999963925 19.490699999905132, -154.8549759999424 19.494174000030114, -154.85360799980933 19.49477299977417, -154.8501470002838 19.497216000018454, -154.84835000015235 19.49888000031183, -154.84605999976915 19.50219000006848, -154.84473699991258 19.506195000398975, -154.844142000353 19.506668999774547, -154.84141000027125 19.506959999704293, -154.82518999961877 19.509390000248345, -154.82327999967222 19.510159999784207, -154.80687870918504 19.51814182558485, -154.8067730001738 19.516041000291978, -154.81169699971673 19.512090999799852, -154.81118500038744 19.506573999890236, -154.81807795403432 19.48553910544541, -154.8185269999211 19.48509300034175, -154.81857840966583 19.484011888437976, -154.8202650000297 19.478865000019766, -154.82681299982005 19.471227000325882, -154.83139899996385 19.468262000291134, -154.83522700022584 19.46167699969385, -154.86497299960422 19.436098000022753, -154.87182979960554 19.43270416726358, -154.87370100010105 19.431777999555095, -154.8795180003554 19.425620999809325, -154.88569400007802 19.422830999750886, -154.88919000031822 19.4155739996404, -154.90914399959587 19.406536000136327, -154.92388200025408 19.394657000020572, -154.9285919998209 19.394837000227426, -154.9340349999153 19.384176999668853, -154.94889800004265 19.372623000151407, -154.96559900039352 19.35831500043696, -154.96619751000705 19.357641873173975, -154.9663279998373 19.362453999752347))" +15,HAWAII,15001,HI,Hawaii,15001021800,"Census Tract 218, Hawaii County, Hawaii",140.9697992900,6045,2869.0000000000,2149.0000000000,60,50.8100000000,12702.5000000000,35228.0000000000,3.4923035330,25.2432498800,8050,134.1666667000,2.3390000000,16851.4875100000,2098.4362600000,2497.6129890000,15163.9611300000,0.4304519450,0.2000000000,17.0000000000,16.1000000000,33.3000000000,50.4000000000,82.7000000000,75.0909242300,5.2083333330,83.7485000000,64.6348560575,79.4300000000,4.4000000000,26.0293280000,80.5800000000,62.0131093333,23.0500000000,24.9000000000,38.0000000000,75.9000000000,48.9000000000,61.9400000000,0.3964000000,34.0000000000,2112.0000000000,1586.0000000000,81.0000000000,49.0000000000,27.0000000000,80.0000000000,172.0000000000,526.0000000000,99.0000000000,25.0000000000,11.0000000000,49.0000000000,0.0000000000,28.0776515152,45.6971000000,46.7838714286,51.5300000000,51.5300000000,86.1491084600,53.3616188117,0.0539796429,0.0678656633,0.0644263763,0.0000000000,0.0000000000,13.3869726235,1,1,0,1,1,0,4,1,0.7852140366,0.0319744488,1.0000000000,"POLYGON ((-155.90488199980442 20.19717000009547, -155.90232599974507 20.20499999965034, -155.90279699988162 20.213326999641367, -155.89887199964303 20.22486500021961, -155.89937799959498 20.23008700001509, -155.89305700038022 20.24179999967032, -155.88940700023284 20.24351699970981, -155.88879066425773 20.248284671000818, -155.8884561946976 20.25087196387011, -155.88843917682652 20.251003603033894, -155.88830299968365 20.252056999630895, -155.88188599963914 20.25807800029952, -155.8776070001629 20.262091000099645, -155.86786299957774 20.266328000337012, -155.85145200000977 20.268842000258132, -155.84750499965597 20.266628999828527, -155.83819900038353 20.268558999798074, -155.82983599963165 20.265574999786452, -155.82777800005462 20.262169000099334, -155.82112299982654 20.26016300022235, -155.8177950001391 20.261277000333337, -155.81010472195533 20.257965060739025, -155.80040100020597 20.253786000223784, -155.79803299982305 20.249896999846726, -155.79226900021416 20.250282999660783, -155.78324200031804 20.246395000229143, -155.78000400028435 20.244999999750235, -155.77810299985353 20.242992999827152, -155.77619709901688 20.242992999827152, -155.77429999984508 20.242992999827152, -155.77129299967217 20.246439999606366, -155.7647930002967 20.242101000061155, -155.7628846955722 20.239659975627433, -155.7621780002145 20.238755999589785, -155.7571870002798 20.238755999589785, -155.7530170004342 20.23614999992259, -155.74886799975835 20.230726999851186, -155.74423200000678 20.229360999810353, -155.7370040003343 20.22277299997404, -155.7309999995503 20.22003300042269, -155.7313589999179 20.214876000027402, -155.7341320000917 20.210653999582462, -155.72491799966593 20.201631999916913, -155.70584799978533 20.190579000120806, -155.69880512016013 20.1867132463193, -155.6994780001096 20.18631599958377, -155.6998969996468 20.183774000170047, -155.70095800001167 20.182793999943215, -155.70282799991224 20.179023999657886, -155.7036970004162 20.178517999705946, -155.70438999999848 20.176349000406105, -155.70665700022036 20.171423999917693, -155.70753000000946 20.16625599991454, -155.7064980000826 20.164103999599945, -155.70675400019692 20.162667999928317, -155.70817600012228 20.16197999967727, -155.7083269998911 20.160108999730596, -155.70911400021092 20.159322000310112, -155.70927100025642 20.15680100006614, -155.71076299981257 20.155424999564104, -155.71168199992434 20.14929400011806, -155.71170500008566 20.14719200031061, -155.7104750000212 20.144566999767278, -155.71153500033998 20.14241500035206, -155.71148799997118 20.140985000057753, -155.7098449997469 20.139097000226457, -155.71101499974242 20.132965999881037, -155.71303600031115 20.12841200031363, -155.7132539995724 20.124741000097117, -155.71413000039917 20.12188699978526, -155.71386800000818 20.12090899965068, -155.71050499960603 20.11744700007904, -155.7094189998869 20.11510600004192, -155.7077019998474 20.113604000024623, -155.70606199976146 20.110589000382106, -155.71974400028535 20.11494699990419, -155.72203299972313 20.114568999559708, -155.7256979996629 20.112771000281498, -155.72954399985568 20.112737999659032, -155.73141599984848 20.11395299993103, -155.7325999995903 20.11576499985489, -155.74021700011443 20.117032999873118, -155.74376299996246 20.115932000361568, -155.75736799963346 20.109286999695314, -155.75498500035746 20.10618499963806, -155.74876999973566 20.102503999859778, -155.749998999754 20.10137099977186, -155.7507219998204 20.100110000076484, -155.74589800039237 20.096313000344765, -155.7458160002082 20.095080000141934, -155.74407399991514 20.093892000215703, -155.7429720003575 20.09234599996796, -155.74013499993026 20.09085599960474, -155.73802199961557 20.08817600012236, -155.7390239999576 20.087155999849585, -155.74196499978487 20.08591600022328, -155.74343199998677 20.083555000163187, -155.74572000027777 20.082074000215016, -155.74882300038112 20.07810999997656, -155.74994299986952 20.077668000278038, -155.75643199963704 20.087421000378924, -155.75736500039443 20.086564999575103, -155.76384999997748 20.082055000238142, -155.76518999971867 20.081110999872806, -155.7685160002132 20.076670000120487, -155.77110800013406 20.075359999964064, -155.7696009998862 20.071956000369198, -155.78015500005318 20.066349999952592, -155.78477499996626 20.05992899972358, -155.78516499996473 20.058421000328963, -155.7865510000286 20.057156000449083, -155.78933499981036 20.055709000270213, -155.7907559996896 20.05249500044397, -155.7931090002801 20.051026000149818, -155.7970569997807 20.047663999793826, -155.8019780000846 20.0457220001702, -155.80489000037318 20.045357999572047, -155.80599600011527 20.04446199962166, -155.8095130004246 20.042756000089355, -155.8138679998083 20.038242999714726, -155.81513199964203 20.037803000108397, -155.8163140001909 20.036157999791897, -155.8187649999048 20.03484799963553, -155.8196379996939 20.03375300040068, -155.82232500039842 20.03216199987645, -155.82289399965833 20.032137999668976, -155.82568999999347 20.035820000392732, -155.82769099963988 20.03767799973997, -155.82740499994077 20.038513999621443, -155.8288590004425 20.03808399957694, -155.83294099982726 20.042333000367705, -155.8336116854309 20.04179507538248, -155.8379865706237 20.046928470372677, -155.83825500026802 20.047497000186468, -155.83844099985222 20.048592000320582, -155.83824299971462 20.049093000041978, -155.83840099980625 20.049467000201957, -155.8388079996894 20.04947799980988, -155.83887199994282 20.050021999715568, -155.83908199973447 20.050347000313877, -155.83984499984683 20.050831000150595, -155.84073135097105 20.050149135973868, -155.84330500022554 20.053169000049365, -155.84397409672715 20.054051395055865, -155.85038500026752 20.06250599985208, -155.85610399959987 20.06808700001511, -155.85939500027902 20.073882000154242, -155.86310000026478 20.074914000081094, -155.8669309997658 20.078651999789997, -155.88418999976864 20.106749999612816, -155.88524599990293 20.11655799955207, -155.8913899999485 20.12551099963298, -155.89599800020753 20.143417999840892, -155.90133299981807 20.164577999874837, -155.90137499995626 20.17287700037332, -155.90350099997113 20.187602999578814, -155.90488199980442 20.19717000009547))" +15,HAWAII,15007,HI,Kauai,15007040603,"Census Tract 406.03, Kauai County, Hawaii",15.9289723743,3105,1389.0000000000,1143.0000000000,0,43.8300000000,10957.5000000000,34830.0000000000,3.4923035330,25.2432498800,4025,67.0833333300,2.2410000000,15281.3411100000,2098.4362600000,1248.8064950000,13823.7329800000,0.3968915580,1.2000000000,38.4000000000,23.1000000000,26.1000000000,49.6000000000,5.9000000000,65.0726005700,5.6666666670,79.8617000000,47.3085751425,89.0300000000,7.1000000000,46.5242387000,26.9600000000,54.1714129000,25.2800000000,44.2000000000,67.0000000000,38.1600000000,30.8200000000,43.6800000000,0.4958000000,87.0000000000,1058.0000000000,590.0000000000,20.0000000000,29.0000000000,34.0000000000,39.0000000000,79.0000000000,468.0000000000,67.0000000000,40.0000000000,44.0000000000,47.0000000000,10.0000000000,38.6578449905,75.1276000000,52.4382285714,75.9500000000,75.9500000000,80.2526842500,29.7768569509,0.1557923881,0.1084115789,0.1078146139,0.0000000000,0.0000000000,7.5372188830,0,1,1,1,1,0,4,1,0.3021716484,0.0037330903,1.0000000000,"POLYGON ((-159.46903999989604 21.920980000226905, -159.46872999998948 21.9306399996363, -159.4680599996692 21.93186999970078, -159.46866999992054 21.935989999938613, -159.46805000010738 21.93715000037224, -159.46570900007026 21.95080799978939, -159.46094699990408 21.95574299983963, -159.46017500027602 21.952744000035636, -159.45817399973026 21.950877000273408, -159.45620799989925 21.95060100013609, -159.452872999889 21.951604999671076, -159.45315899958814 21.950662000251157, -159.45916599961117 21.945852999716237, -159.4596209999092 21.940824999873882, -159.45808500012262 21.938917000019558, -159.45561300033967 21.93733399986428, -159.45490800020403 21.936332000421544, -159.45268500021257 21.935552999571314, -159.45090499996576 21.93633399961442, -159.44584500044638 21.936074000215, -159.44173299967815 21.935977000238438, -159.44078800016604 21.93503099978085, -159.43803600006132 21.933947000153978, -159.43424399966082 21.93367300010891, -159.4295639996788 21.932814000066116, -159.42775800003164 21.931040000096004, -159.425564999625 21.9302190000069, -159.42055399966733 21.93067300025882, -159.41877799960497 21.929976999638882, -159.41477700035824 21.93023699993762, -159.411271999703 21.93002099986927, -159.40459700035126 21.927978000084693, -159.40299300012683 21.926961999996365, -159.40190899960064 21.925725999655185, -159.40183099960092 21.922951000288492, -159.39994800000017 21.92055699960588, -159.39988499979287 21.918977999635047, -159.40091200038847 21.913657999816905, -159.40064000043563 21.90948699992515, -159.39952800041686 21.90770999981669, -159.39730300033318 21.907197000441272, -159.3920320000767 21.905002999988483, -159.39137200021761 21.90436200010629, -159.38773966365451 21.90301663411043, -159.38953900022466 21.901970999562025, -159.39688299985053 21.902963000342254, -159.40378000044663 21.898499999575392, -159.40461700037423 21.8933670002869, -159.41026299993746 21.88980699979328, -159.41666900037404 21.888301999637633, -159.4169698415849 21.88759308655176, -159.41796800002317 21.88524099967242, -159.41882499997374 21.88233899984499, -159.42716899984944 21.881206999803226, -159.42951800025548 21.87990800015416, -159.43395699991558 21.874198000337515, -159.43689715977607 21.87486262540989, -159.43778800031592 21.875063999803785, -159.44048899986743 21.873263000387226, -159.44108600041855 21.871176000372145, -159.4448680003579 21.868626999736307, -159.45279299979708 21.872808000089208, -159.46179400029285 21.876386999660383, -159.46907299961921 21.879165000064745, -159.46905299959622 21.87984299985459, -159.46809000015335 21.883319000071822, -159.46799999960027 21.88586999990065, -159.46587999986207 21.889470000440213, -159.46606000006892 21.89083999976623, -159.4657900002083 21.896270000160428, -159.4666199998131 21.903530000409262, -159.4653000000949 21.904210000291357, -159.46568199972447 21.906374000259973, -159.4657900002083 21.90943999955641, -159.46799999960027 21.91478999985867, -159.469079999942 21.91915000037227, -159.46903999989604 21.920980000226905))" +15,HAWAII,15007,HI,Kauai,15007040604,"Census Tract 406.04, Kauai County, Hawaii",8.3880250232,3469,1561.0000000000,1187.0000000000,12,46.7500000000,11687.5000000000,35521.0000000000,3.4923035330,25.2432498800,5275,87.9166666700,2.3800000000,16613.0865900000,2098.4362600000,1636.6345990000,14285.5231400000,0.4021711980,0.2000000000,17.0000000000,13.0000000000,35.4000000000,51.4000000000,25.4000000000,66.7689275100,5.0000000000,85.8848000000,48.7634318775,65.9600000000,3.9000000000,21.9411773000,26.9600000000,38.2870591000,21.3400000000,43.8000000000,67.0000000000,42.1900000000,41.1200000000,63.3800000000,0.4660000000,76.0000000000,1187.0000000000,667.0000000000,61.0000000000,12.0000000000,31.0000000000,46.0000000000,48.0000000000,520.0000000000,49.0000000000,108.0000000000,43.0000000000,28.0000000000,40.0000000000,39.2586352148,76.4113000000,55.3487571429,31.0300000000,31.0300000000,44.5483165800,43.4885568174,0.4399675776,0.1196405318,0.1189162431,0.0000000000,0.0000000000,11.0417702925,0,0,1,0,0,0,1,0,0.2190179377,0.0019337085,1.0000000000,"POLYGON ((-159.50966299994747 21.90834799956059, -159.50895899985792 21.909778999900993, -159.50797999967722 21.91181100007765, -159.50762699958634 21.915506999648358, -159.50512400017243 21.915386000363696, -159.50529600001036 21.917318999572217, -159.50449900012873 21.91903799970396, -159.50723200025658 21.920094999884384, -159.50854299955975 21.922682999620804, -159.50791700036925 21.923211999734065, -159.5086879999512 21.92636300025231, -159.5081900003682 21.926480000251843, -159.5067600000739 21.926130000299338, -159.5036820002241 21.923386999710317, -159.49928599984898 21.92301200040356, -159.49314499994176 21.924244999707014, -159.49251999989804 21.924670999567013, -159.4916799998321 21.925589999678778, -159.4862700003602 21.92931000035628, -159.4853999998101 21.930500000374764, -159.48299699961183 21.93554300000949, -159.48187399998508 21.937289999633833, -159.4803150000372 21.94056899975959, -159.47607000033022 21.946209999991538, -159.46809000015335 21.94893000041924, -159.46570900007026 21.95080799978939, -159.46805000010738 21.93715000037224, -159.46866999992054 21.935989999938613, -159.4680599996692 21.93186999970078, -159.46872999998948 21.9306399996363, -159.46903999989604 21.920980000226905, -159.469079999942 21.91915000037227, -159.46799999960027 21.91478999985867, -159.4657900002083 21.90943999955641, -159.46568199972447 21.906374000259973, -159.4653000000949 21.904210000291357, -159.4666199998131 21.903530000409262, -159.4657900002083 21.896270000160428, -159.46606000006892 21.89083999976623, -159.46587999986207 21.889470000440213, -159.46799999960027 21.88586999990065, -159.46809000015335 21.883319000071822, -159.46905299959622 21.87984299985459, -159.46907299961921 21.879165000064745, -159.47534200003324 21.882121999730543, -159.48266599963614 21.882178999661164, -159.48640552459526 21.88452154563288, -159.48725675809288 21.88505478155298, -159.48826599977605 21.885686999555446, -159.50140100025592 21.88463399955947, -159.5027524744471 21.885297067905412, -159.50334600001787 21.889388000256076, -159.50225600011427 21.892791999850942, -159.50350900034007 21.89368699975529, -159.50416500001472 21.89700800001924, -159.50293199981192 21.899975000146185, -159.50447199978294 21.899419999733254, -159.50618499963798 21.901112999565328, -159.50715800044134 21.903048999811517, -159.50734099988722 21.904045999923028, -159.50689900018867 21.904988000196113, -159.50694000028076 21.90535700012549, -159.5075660003706 21.906171999937897, -159.50817899986092 21.906419999683294, -159.5086809996284 21.906877000073564, -159.50942699985612 21.90786699986222, -159.50966299994747 21.90834799956059))" +15,HAWAII,15007,HI,Kauai,15007040700,"Census Tract 407, Kauai County, Hawaii",35.9094751975,9246,4637.0000000000,3848.0000000000,12,50.4500000000,12612.5000000000,36196.0000000000,3.4923035330,25.2432498800,6075,101.2500000000,2.4760000000,17789.2733700000,2098.4362600000,1884.8445850000,16652.6481600000,0.4600687410,0.6000000000,24.7000000000,6.7000000000,37.2000000000,55.5000000000,44.6000000000,82.3482051100,6.1388888890,75.5643000000,56.8031262775,73.5100000000,3.4000000000,17.8044242000,19.9100000000,37.0748080667,19.0000000000,35.4000000000,56.0000000000,27.2400000000,38.5600000000,29.9900000000,0.3986000000,36.0000000000,2895.0000000000,1871.0000000000,153.0000000000,45.0000000000,101.0000000000,98.0000000000,226.0000000000,1024.0000000000,126.0000000000,100.0000000000,99.0000000000,0.0000000000,97.0000000000,36.0967184801,69.1649000000,39.4221285714,59.6300000000,59.6300000000,56.4497724700,39.0341807363,0.1020172065,0.1185658707,0.1106789309,0.0000000000,0.0000000000,9.8413606861,1,0,0,1,0,0,2,0,0.5759005947,0.0082061199,1.0000000000,"POLYGON ((-159.5902670100145 21.902959639575784, -159.58665399988217 21.904530999805843, -159.58579599988545 21.906058000076712, -159.58498999958877 21.90920799964954, -159.58499900000382 21.911434999825417, -159.58396099980027 21.912258000006773, -159.58270300024324 21.91523599974164, -159.57994699995405 21.91583999971624, -159.57693699964278 21.917506000101866, -159.5754769997637 21.91709399998814, -159.57141400035582 21.917665000239595, -159.57002200001526 21.91938799965652, -159.56926800031792 21.920284999653063, -159.56792300034616 21.921737000062535, -159.5666130001898 21.92180799973943, -159.56209799972288 21.92305799982688, -159.55934699966429 21.924662000051285, -159.55890700005799 21.925700000254835, -159.55955999959428 21.929253999572495, -159.55877200012768 21.933793000246794, -159.55723999962626 21.93604799991533, -159.5569879996964 21.939021000318974, -159.55582600006983 21.941791000354442, -159.55523399974925 21.944311999699096, -159.55376000012387 21.947858999593223, -159.55027699958384 21.95049999997508, -159.55025300027572 21.95109799967298, -159.5519769997387 21.954251000283477, -159.54943999965624 21.955598000347493, -159.5464510003134 21.95794899994644, -159.5464039999446 21.95946399966391, -159.54517199978793 21.9610140000961, -159.54551999964823 21.96247199988295, -159.5438809996084 21.965131000195527, -159.54481000018134 21.96728699979525, -159.54329599961068 21.96907000018041, -159.5445099998366 21.970654000381842, -159.54237500030598 21.97148600007887, -159.53982499962402 21.97589099996975, -159.53988399964683 21.978156000099375, -159.53725199968002 21.97915500030308, -159.53428599959918 21.979883999746846, -159.53324200001825 21.980523000436165, -159.53037199986787 21.981008000319036, -159.5296150000322 21.98242500001379, -159.5301539997073 21.983861999731573, -159.52917100024143 21.986498999928926, -159.52757500038592 21.987231000410418, -159.52881299991998 21.991552000024853, -159.52771399960136 21.993294000317917, -159.52913799961897 21.995270999756883, -159.53057300014382 21.995286999595407, -159.53028400030635 21.997638000093673, -159.53101699993456 21.999190999764892, -159.52941199966403 22.002149000376107, -159.52833799959896 22.00522800027204, -159.5290419996885 22.007392000240657, -159.5274590004325 22.008653999982187, -159.529167000057 22.010438000413444, -159.5287359999664 22.011391000294452, -159.5272240003873 22.01163900003985, -159.52718899967257 22.012564000428313, -159.5287370000125 22.012911000242525, -159.52910900008027 22.013972999754174, -159.52725500001822 22.015119000441587, -159.52706600029566 22.01600099974638, -159.52568400041625 22.016849000181253, -159.5254899995638 22.01825899955321, -159.52380099991618 22.01970799982439, -159.52286199978144 22.019278999826042, -159.5201509997688 22.02009999991509, -159.5194839995869 22.021609000255182, -159.51766500023953 22.02324500015669, -159.51627800012957 22.02575099970892, -159.515168000203 22.02648400023645, -159.51287100039633 22.030345000221644, -159.51120600005683 22.031523999732826, -159.5117790004005 22.032763000212356, -159.51120600005683 22.033511999679092, -159.51201599963863 22.035499999625358, -159.51057499973643 22.03603500001526, -159.5110120001037 22.038012000353604, -159.50851400002105 22.039180000256863, -159.50752200014017 22.041052000249636, -159.5060919998459 22.04123999992612, -159.50455099982875 22.04280400010458, -159.50264299997443 22.04370200014722, -159.50290899965057 22.04538200027912, -159.50381900024664 22.046972999904085, -159.50432200006023 22.05004600042264, -159.5025110001825 22.048726999851226, -159.50233800029844 22.04382200028516, -159.50349699978668 22.042295000014292, -159.50377299992397 22.04028499995286, -159.5049720003575 22.03892200005032, -159.50479600033512 22.037573999940207, -159.50255699960582 22.033059000372646, -159.50298300036513 22.030960999850322, -159.50388299960073 22.029867999808403, -159.50539299998692 22.025688000400976, -159.5069560001193 22.02269600002046, -159.50845800013656 22.021394000232988, -159.50851199992883 22.0204469997293, -159.50490499996576 22.014623000051472, -159.50508900035706 22.01364299982464, -159.50409200024558 22.01169900010882, -159.5047740002199 22.00826500002978, -159.5047399995513 22.00655999964431, -159.50339400043273 22.00388500039253, -159.50329400031782 21.999524999878872, -159.50288400029635 21.99734800021008, -159.50059299986702 21.995560999640475, -159.4989830002652 21.995505999802106, -159.49733899999484 21.98989700014647, -159.49795000029226 21.98639100034444, -159.49698799999618 21.98346400026344, -159.49070499983586 21.981437000317385, -159.48735199989486 21.983310000356255, -159.4854559996946 21.983508999640662, -159.48396200004623 21.982660000059013, -159.4824210000291 21.980755000343038, -159.4810810002879 21.980996999811737, -159.4805140002209 21.979852000069798, -159.47590800005412 21.97850800014413, -159.47596700007696 21.97758799998627, -159.47455000038218 21.976680000381748, -159.47483900021965 21.974773999720355, -159.47378200003925 21.972131000145566, -159.47413700022236 21.970319000221707, -159.47207599960765 21.966733000327736, -159.46944899987142 21.96417200003782, -159.46816199987637 21.960558999798025, -159.46753000040917 21.960356000329227, -159.4639879998463 21.961484000186488, -159.4613010000411 21.96162699958643, -159.4610950004339 21.962530999905766, -159.45957699967877 21.96240899967563, -159.458402000352 21.96467299975916, -159.45588700038473 21.966291999776047, -159.4543749999063 21.965658000216592, -159.45379700023133 21.963047000318852, -159.45513699997255 21.963708000224074, -159.4566369998976 21.962507999744446, -159.45648400003654 21.96148900041709, -159.46029799965294 21.960183999591948, -159.46136700038673 21.95772799964749, -159.46094699990408 21.95574299983963, -159.46570900007026 21.95080799978939, -159.46809000015335 21.94893000041924, -159.47607000033022 21.946209999991538, -159.4803150000372 21.94056899975959, -159.48187399998508 21.937289999633833, -159.48299699961183 21.93554300000949, -159.4853999998101 21.930500000374764, -159.4862700003602 21.92931000035628, -159.4916799998321 21.925589999678778, -159.49251999989804 21.924670999567013, -159.49314499994176 21.924244999707014, -159.49928599984898 21.92301200040356, -159.5036820002241 21.923386999710317, -159.5067600000739 21.926130000299338, -159.5081900003682 21.926480000251843, -159.5086879999512 21.92636300025231, -159.50791700036925 21.923211999734065, -159.50854299955975 21.922682999620804, -159.50723200025658 21.920094999884384, -159.50449900012873 21.91903799970396, -159.50529600001036 21.917318999572217, -159.50512400017243 21.915386000363696, -159.50762699958634 21.915506999648358, -159.50797999967722 21.91181100007765, -159.50895899985792 21.909778999900993, -159.50966299994747 21.90834799956059, -159.50942699985612 21.90786699986222, -159.5086809996284 21.906877000073564, -159.50817899986092 21.906419999683294, -159.5075660003706 21.906171999937897, -159.50694000028076 21.90535700012549, -159.50689900018867 21.904988000196113, -159.50734099988722 21.904045999923028, -159.50715800044134 21.903048999811517, -159.50618499963798 21.901112999565328, -159.50447199978294 21.899419999733254, -159.50293199981192 21.899975000146185, -159.50416500001472 21.89700800001924, -159.50350900034007 21.89368699975529, -159.50225600011427 21.892791999850942, -159.50334600001787 21.889388000256076, -159.5027524744471 21.885297067905412, -159.50550799989426 21.886648999851502, -159.50881899969704 21.886576000082414, -159.51220600030663 21.888085000422507, -159.51968199972447 21.88687699957393, -159.52691799976586 21.88388600013883, -159.53178500027752 21.8868680000582, -159.53648200014416 21.886619000266705, -159.5444309997908 21.888105999592256, -159.55180199976246 21.887292999872102, -159.56098899984244 21.88974699972431, -159.5698120002236 21.894055999684667, -159.57452099974432 21.89280599959727, -159.58027799992973 21.896336999652874, -159.58093714093627 21.8963626474183, -159.58354200026307 21.896464000113554, -159.5834860003786 21.89822200024514, -159.58770799992422 21.898767000196926, -159.5899030004231 21.902852999766196, -159.5902670100145 21.902959639575784))" +15,HAWAII,15009,HI,Maui,15009030201,"Census Tract 302.01, Maui County, Hawaii",45.6037678430,2173,1252.0000000000,1003.0000000000,0,45.1100000000,11277.5000000000,30703.0000000000,3.4923035330,25.2432498800,7500,125.0000000000,2.2780000000,15694.7190700000,2098.4362600000,2326.9686240000,14900.2938800000,0.4853041680,0.0000000000,0.0000000000,22.4000000000,27.4000000000,50.2000000000,74.3000000000,87.1109692100,3.6666666670,95.3691000000,64.1950173025,91.7200000000,8.9000000000,57.6958327000,54.3000000000,67.9052775667,14.2600000000,33.1000000000,52.0000000000,66.4000000000,19.4700000000,26.0300000000,0.4457000000,66.0000000000,842.0000000000,563.0000000000,34.0000000000,61.0000000000,32.0000000000,28.0000000000,58.0000000000,279.0000000000,0.0000000000,8.0000000000,41.0000000000,38.0000000000,0.0000000000,35.6294536817,68.0185000000,44.5969285714,20.0900000000,20.0900000000,49.3944101500,40.5411712922,0.0607593938,0.0685388366,0.0608424175,0.0000000000,0.0000000000,10.1828279850,1,1,0,0,0,0,2,0,0.5545256231,0.0103199419,1.0000000000,"POLYGON ((-156.30615099996865 20.868985000257624, -156.3044679996984 20.87100599992698, -156.3043559999294 20.871348999556744, -156.30324900014122 20.871153999557464, -156.3022629996377 20.871492999902102, -156.3027660003506 20.871713000154898, -156.30284200025807 20.87234000029082, -156.302397999568 20.87261000015144, -156.30188300010033 20.87364500021664, -156.30154299970965 20.873715999893534, -156.3016370004472 20.874872000142716, -156.30249200030553 20.87522400018753, -156.3020640003533 20.87592900032314, -156.30226399968382 20.876731999582148, -156.30294899979648 20.877221999695564, -156.30322399988765 20.87798499980795, -156.30211800014555 20.879942000123265, -156.30170700007795 20.882507999744462, -156.29951499971745 20.88357300029378, -156.29941000027128 20.884885999689175, -156.29732799958748 20.88535299964127, -156.29568000003195 20.887048999611693, -156.29254200011317 20.887249999887615, -156.29019399975326 20.885823999777813, -156.28791199973898 20.887620999909245, -156.28772600015475 20.88932400020252, -156.28936600024068 20.89070500003578, -156.28829999964523 20.8913380004484, -156.28981100007755 20.894469000044353, -156.2892900003332 20.896080999738388, -156.2882249997839 20.896131000245532, -156.28803700010744 20.898514000420846, -156.2890330001728 20.898337000352342, -156.28753400029385 20.90004900016129, -156.28883399998907 20.90086900020424, -156.28860500022054 20.90248800022107, -156.28708500027253 20.903136999572894, -156.28560500037045 20.90541500030207, -156.28521400032582 20.902449000221225, -156.2829860001038 20.901225999580276, -156.2827609996204 20.900640999582492, -156.282228000222 20.900857999696996, -156.28291400038077 20.903625999640212, -156.28264599971308 20.906040000345797, -156.28127999967222 20.908720999874276, -156.28292499998872 20.910767999843358, -156.28276199966652 20.913013999996167, -156.2815549997634 20.913294000317933, -156.28085199971997 20.916222000445032, -156.28006200016114 20.914961999896434, -156.27897799963495 20.915732000331616, -156.27821100023743 20.914630999920746, -156.27462500034346 20.919718999832014, -156.27329700025632 20.921021999665584, -156.27464699955937 20.921234000448806, -156.27422800002216 20.922450999913792, -156.27310400034932 20.922042999984512, -156.27302800044183 20.92434399997569, -156.27446200002126 20.926627000036092, -156.2740760002072 20.92807999959234, -156.27514800018002 20.929444999587133, -156.27288700023485 20.93004999960783, -156.27394100027692 20.931530000409225, -156.2719910002844 20.931166999857226, -156.27230699956834 20.93227299959932, -156.2716095834155 20.93470843924314, -156.2687849999278 20.934808999635663, -156.26249500034396 20.93961800017064, -156.25573199963205 20.93412499956912, -156.25562168519258 20.93415605855529, -156.25364000028574 20.934713999751352, -156.25236199980642 20.937966000430606, -156.24028300036014 20.935900999631485, -156.23529200042546 20.93101700013449, -156.23196399983868 20.92857499993636, -156.2274139995564 20.928660000258844, -156.22607599990744 20.921231000310456, -156.22673499972043 20.915254999918375, -156.22297399985018 20.91501200040352, -156.2188919995661 20.915698999709093, -156.21425478213246 20.913841697336522, -156.21382988843857 20.911678654246543, -156.2137010003009 20.90801499969251, -156.20999100008456 20.902950999988718, -156.20289900038853 20.897948000399936, -156.1984599998291 20.895058000226584, -156.19427300009886 20.894227999722432, -156.19337142255307 20.89324138408267, -156.1931630001723 20.89256000014393, -156.1961690002991 20.888515999813592, -156.19761400038578 20.885120999734397, -156.19849799978283 20.88429500031407, -156.19794600040757 20.879904000169518, -156.19936300010235 20.879776999708838, -156.20060900000533 20.876316000183294, -156.20331799992573 20.87348700012501, -156.2036570002703 20.872139000014897, -156.20526699987212 20.871081999834473, -156.20568700035474 20.867141999803493, -156.20503700005747 20.866074000015146, -156.20617799961497 20.864213999676394, -156.2060310000306 20.861891999616148, -156.2076330001628 20.85872200002035, -156.20884600034262 20.857456000094373, -156.2101569996458 20.85707200037257, -156.210584999598 20.85549300040168, -156.21384799988525 20.851013999796294, -156.21583899996983 20.84607200032258, -156.2160699998306 20.844609000305184, -156.21845400005202 20.83864599961322, -156.22006399965383 20.832971999658128, -156.22094899999632 20.83156799966349, -156.21939200014066 20.83064800040495, -156.22022399983769 20.828583999651926, -156.22218500033748 20.82761700002459, -156.22695700006548 20.8228969999966, -156.22719200011068 20.822087999561575, -156.23006600044553 20.81981099977787, -156.23037100012152 20.817896999646848, -156.2316240003473 20.816252000229667, -156.23106899993437 20.81401699968484, -156.23201200025358 20.81278000019688, -156.23081299982005 20.810489999813683, -156.22995299973113 20.80984099956254, -156.2299650002845 20.80842099972938, -156.23101300004987 20.806952000334604, -156.2314119995641 20.80342499956413, -156.23110299970364 20.80011799994577, -156.2318229996317 20.797746000277755, -156.2340479997154 20.794737000012617, -156.23443499957554 20.79203000018441, -156.23449499964448 20.788821999735546, -156.23569500012414 20.786302000437047, -156.23494699980418 20.78370500028558, -156.2355440003553 20.782097999922826, -156.2349770002883 20.779989999838676, -156.2357089998704 20.778670000120485, -156.23348599987895 20.776748999666665, -156.234347000014 20.77475200020467, -156.2336510002934 20.773842999654732, -156.23317199978794 20.771593000216853, -156.23147599981752 20.768779999997037, -156.23085199981992 20.765713999801278, -156.24127000001047 20.771408999825553, -156.24568400031634 20.77345199961013, -156.24931499958754 20.767276999933642, -156.25149100010952 20.76908699976525, -156.2517640001085 20.7697329998781, -156.2524439999906 20.770947000104, -156.25498900044198 20.77377099993174, -156.25638099988322 20.77654400010556, -156.25825299987602 20.779120000187902, -156.25860900010525 20.78106800008817, -156.26138799965642 20.78406699989216, -156.26176299986253 20.785146000187808, -156.2640799996922 20.78769900010883, -156.26813999986106 20.7917059996322, -156.26969100033938 20.792822999881594, -156.2728149996125 20.794027999692503, -156.27366200000128 20.794829999804676, -156.27507999974216 20.79610800028405, -156.2786909998897 20.79737900044057, -156.27488699983513 20.798854000112044, -156.27301099965788 20.80025199982998, -156.27062000001297 20.802413999706346, -156.26994799960048 20.802743999635936, -156.26828500025252 20.802903999819762, -156.2702340001989 20.80765799961705, -156.27304300023425 20.811383999671875, -156.27564699980917 20.812666000335696, -156.2760100003612 20.81479599963575, -156.2756350001551 20.81674899976656, -156.27733800044834 20.81924799989531, -156.27818099975332 20.81924799989531, -156.2781920002606 20.822087000414797, -156.2787950001891 20.8231160002033, -156.2801230002762 20.827534999840395, -156.2799300003692 20.830782000289105, -156.27860100023594 20.83183800042343, -156.2787190002816 20.8331420003031, -156.27772400026237 20.83414199965364, -156.27890099968135 20.834819000296704, -156.2778760000773 20.835506999648373, -156.27880699984314 20.836608000059186, -156.27774400028537 20.836827000265885, -156.27805800037638 20.83872599970516, -156.27909999986508 20.838897000396287, -156.27810499984585 20.83982700011603, -156.27980199986237 20.83961800037048, -156.28147599971757 20.84063000027436, -156.28303399961936 20.84382199998538, -156.2842279998223 20.847651000293467, -156.28800999976164 20.848113000014962, -156.28912199978043 20.849874000284956, -156.2909840002114 20.85047400007511, -156.292529000413 20.849025999850085, -156.2938399997162 20.848856000104377, -156.29550299996345 20.85002199991544, -156.29666300039713 20.852244999906873, -156.29820300036815 20.85406100001518, -156.2978809999082 20.85603100003067, -156.29937999978713 20.856680000281813, -156.3013760001023 20.859002000342116, -156.30073300012782 20.86034999955291, -156.30166399989366 20.861770000285333, -156.30337399961036 20.863221999795485, -156.30609900026863 20.863838000323483, -156.307075000311 20.865304999626062, -156.30615099996865 20.868985000257624))" +15,HAWAII,15009,HI,Maui,15009030402,"Census Tract 304.02, Maui County, Hawaii",17.7865129574,8390,4356.0000000000,3629.0000000000,0,49.5900000000,12397.5000000000,45269.0000000000,3.4923035330,25.2432498800,6575,109.5833333000,2.2780000000,16258.4836100000,2098.4362600000,2039.9758270000,15584.9797400000,0.3442748840,0.9000000000,32.0000000000,10.7000000000,48.1000000000,40.3000000000,56.2000000000,47.3652794400,7.2500000000,65.4471000000,50.2530948600,65.4000000000,3.6000000000,19.4138558000,33.7000000000,39.5046186000,26.4600000000,29.8000000000,47.0000000000,27.2400000000,28.3100000000,39.6800000000,0.3622000000,14.0000000000,3180.0000000000,2233.0000000000,68.0000000000,81.0000000000,68.0000000000,114.0000000000,363.0000000000,947.0000000000,79.0000000000,108.0000000000,55.0000000000,52.0000000000,55.0000000000,32.7987421384,60.3437000000,34.7191000000,33.9500000000,33.9500000000,83.4710402900,26.2574713220,0.2160626237,0.1813537685,0.1503558860,0.0000000000,0.0000000000,6.7013109001,1,0,0,0,1,0,2,0,0.4237490037,0.0040104252,1.0000000000,"POLYGON ((-156.3961269997612 20.84286499991987, -156.39454699974422 20.84580399965489, -156.39695900035755 20.848253000175873, -156.39702899998832 20.849804999800938, -156.39212300037613 20.85166500013969, -156.39122100014902 20.854185000337566, -156.38875599978954 20.855032999873117, -156.38719899993387 20.853459000132773, -156.38626800016803 20.854756999735798, -156.38629100032938 20.85600699982325, -156.3846340003588 20.857100999911268, -156.38302399985767 20.857421000278975, -156.38202299956174 20.85901600008839, -156.38312399997258 20.86012800010718, -156.38262600038956 20.86350700034785, -156.3817709996319 20.864414999952317, -156.3822449999068 20.865168999649654, -156.38060299972864 20.86718299989559, -156.37765599962466 20.86821499982244, -156.37786999960076 20.870863999673873, -156.37657600018224 20.871926000084898, -156.3744619998214 20.872085000222626, -156.37358399980172 20.875447999725452, -156.37043800041337 20.879469999940568, -156.37013399988416 20.879018999827053, -156.37020999979163 20.87803400026894, -156.36886399977374 20.875308999610695, -156.36346199977143 20.870168999999407, -156.36097900038052 20.869853999862244, -156.35394199962354 20.866738000058717, -156.35296400038828 20.865680999878293, -156.35034199998327 20.864519000251732, -156.34944099980228 20.862751999705097, -156.34341199966403 20.859465000109708, -156.3414449997869 20.857664999839926, -156.3403040002294 20.855348000010224, -156.33871299970514 20.85403199957716, -156.3388659995662 20.852342999929533, -156.33675100005857 20.846277999929782, -156.3326040003743 20.84387699982375, -156.330889000427 20.844620999959204, -156.3279269996313 20.843933999754313, -156.32474999971268 20.83945900023275, -156.32403900019966 20.83732799998728, -156.32135100034836 20.833170999841798, -156.32029400016793 20.833592000370572, -156.31721300017978 20.832662999797662, -156.31555300007088 20.831278999826054, -156.3155760002322 20.83001499999233, -156.31250299971364 20.828077999699985, -156.31155500006318 20.826613999636436, -156.31215099966886 20.82548599977912, -156.3112729996492 20.82428600019881, -156.3076499998476 20.822167999653516, -156.30726400003354 20.82101300034975, -156.30550699994805 20.819636999847717, -156.30338800025598 20.817006999973103, -156.30010499994577 20.815588000186096, -156.29756499972493 20.815191999910894, -156.29578500037744 20.813888000031227, -156.29408200008422 20.81353599998647, -156.2929409996274 20.81046499956011, -156.29172900039302 20.809300999841298, -156.2869710004113 20.80526499987991, -156.28652599967512 20.804152999861117, -156.28420299956875 20.802749999912635, -156.283647000009 20.80094500031157, -156.28085599990445 20.800147000383788, -156.2801299996997 20.79834299992956, -156.2786909998897 20.79737900044057, -156.27507999974216 20.79610800028405, -156.27366200000128 20.794829999804676, -156.2728149996125 20.794027999692503, -156.26969100033938 20.792822999881594, -156.26813999986106 20.7917059996322, -156.2640799996922 20.78769900010883, -156.26176299986253 20.785146000187808, -156.26138799965642 20.78406699989216, -156.25860900010525 20.78106800008817, -156.25825299987602 20.779120000187902, -156.25638099988322 20.77654400010556, -156.25498900044198 20.77377099993174, -156.2524439999906 20.770947000104, -156.2517640001085 20.7697329998781, -156.25149100010952 20.76908699976525, -156.24931499958754 20.767276999933642, -156.25208899980746 20.761107999634532, -156.2548559997046 20.76251799990581, -156.25681500011214 20.76467999978223, -156.26015000012237 20.765044000380385, -156.2635840002014 20.766877000373313, -156.26571400040078 20.76856099979034, -156.26727000021032 20.76862099985931, -156.26946399976376 20.769761000270023, -156.27156999975566 20.77138999984868, -156.2718279999622 20.772478999706095, -156.27317299993396 20.773105999842073, -156.2745010000211 20.774636000251235, -156.27710499959602 20.77578099999323, -156.27830500007568 20.77721699966486, -156.2810430004341 20.77945100016359, -156.2826400003357 20.780127999907336, -156.284184999638 20.78213699992267, -156.28447200028256 20.782207999599564, -156.28446600000586 20.782989999688766, -156.28527400039476 20.784596000005422, -156.28819400015294 20.787040000295804, -156.29039399998308 20.787242999764658, -156.29274599962815 20.788321000014207, -156.29663199986686 20.791220999749385, -156.29871000036619 20.79337300006398, -156.30545700034025 20.795837000377333, -156.3091679997034 20.798115000207133, -156.31095300018077 20.799518000155615, -156.31341600044803 20.79948999976375, -156.3138970001464 20.800475000221127, -156.31697499999623 20.800853999712388, -156.31865500012813 20.80276299961281, -156.32160500037045 20.802779000350654, -156.32368199992433 20.804153999907214, -156.32541499980238 20.80450599995197, -156.3275500002323 20.805894000108083, -156.32894399976576 20.80621100033744, -156.33036100035986 20.808515999613746, -156.33451699955987 20.80974899981652, -156.33439400018293 20.81178500017768, -156.3369150004269 20.814455000098235, -156.3400280000921 20.816453999652424, -156.3397010003009 20.816844999697025, -156.33927799967992 20.81760299957881, -156.34145999957929 20.819617999870843, -156.35073500012012 20.823925999785104, -156.355079999942 20.82654400000564, -156.35666800032791 20.826767000396785, -156.36189600040007 20.829277000133516, -156.36175500019309 20.830634999805454, -156.362585999844 20.833329999979583, -156.36356900020917 20.8339580001616, -156.3648679998583 20.833312000048807, -156.3670810002879 20.834465000159696, -156.36907699970374 20.834311000252512, -156.37052900011324 20.835737000362315, -156.3734610004248 20.83596800022309, -156.37467899993587 20.835500000224897, -156.37505900037254 20.836381000382914, -156.38104200018813 20.836068000338003, -156.38272200032003 20.837312000148756, -156.38504000019583 20.837466000055883, -156.3865970000515 20.83852799956759, -156.38858199985938 20.838808999935452, -156.3901910003144 20.838263999983667, -156.39175400044672 20.83937099977186, -156.39527299994896 20.84045500029805, -156.3978069998931 20.840609000205234, -156.3961269997612 20.84286499991987))" +15,HAWAII,15009,HI,Maui,15009030800,"Census Tract 308, Maui County, Hawaii",54.6734076845,7427,4024.0000000000,3116.0000000000,43,57.2000000000,14300.0000000000,41085.0000000000,3.4923035330,25.2432498800,5450,90.8333333300,2.4210000000,18296.8598000000,2098.4362600000,1690.9305330000,15881.5985000000,0.3865546670,1.4000000000,42.2000000000,8.4000000000,36.9000000000,53.3000000000,29.5000000000,61.7049335100,4.3333333330,91.1912000000,56.1490333775,45.2300000000,3.5000000000,18.6008082000,26.9600000000,30.2636027333,19.5700000000,19.8000000000,28.0000000000,48.5900000000,35.5400000000,23.4900000000,0.3456000000,8.0000000000,2235.0000000000,1792.0000000000,81.0000000000,43.0000000000,36.0000000000,145.0000000000,268.0000000000,443.0000000000,9.0000000000,9.0000000000,21.0000000000,40.0000000000,43.0000000000,31.0961968680,55.3091000000,31.2141571429,43.2600000000,43.2600000000,68.1862549700,41.0517755129,0.1293391227,0.1787546317,0.1610845282,0.0000000000,0.0000000000,10.3802384489,1,0,0,0,0,0,1,0,0.6743112437,0.0123484728,1.0000000000,"POLYGON ((-156.59390999964674 20.872441999598664, -156.58935900021766 20.878246000152842, -156.5896310001705 20.879494000148043, -156.58904500012662 20.884212000083778, -156.589312999895 20.886801999912393, -156.58722499983384 20.89096700042677, -156.58589499965447 20.891494999594613, -156.58392499963898 20.89126299968774, -156.577714000101 20.891780000146923, -156.57479200025057 20.89323299970323, -156.5761689998994 20.894765000204643, -156.57829900009875 20.895685000362505, -156.58139699997153 20.897769000239236, -156.58213399978425 20.89873199968207, -156.5829899996887 20.901953999877264, -156.5820250001536 20.904073999615434, -156.58057799997468 20.9057860003237, -156.5794019997025 20.906278999676147, -156.5766379999437 20.90984400040037, -156.5751549999033 20.90943599957177, -156.5727640002584 20.912434000228984, -156.57321400032583 20.915117999895813, -156.57157999961726 20.9173080001641, -156.57201699998453 20.918044999976814, -156.57430999960675 20.91851199992891, -156.57487000025029 20.920865999666205, -156.57869100018948 20.925971000361415, -156.5790250003035 20.92894299981964, -156.577714000101 20.93010500034552, -156.5787700002353 20.933902000077296, -156.5787080000741 20.935840999562515, -156.57971599979354 20.938771999827964, -156.5787839999816 20.94158500004778, -156.57903599991144 20.94238400002166, -156.5782549998683 20.94581499996235, -156.5788050000507 20.94796900036914, -156.5800760002072 20.950168000153155, -156.58145900013272 20.950830000104474, -156.58209499978437 20.95347399972536, -156.58319099996464 20.960806999743284, -156.5828030000584 20.963236000241295, -156.58338099973332 20.96637600025224, -156.58313299998792 20.968861999781495, -156.5847479998203 20.97098799979642, -156.58514200000326 20.972440000205893, -156.58505200034952 20.978568000412963, -156.58818900022214 20.98323699988771, -156.58786399962386 20.98480999958184, -156.58883200019662 20.98847400037488, -156.5853499997027 20.9944099998217, -156.58488499984284 20.99661499988241, -156.58361799987077 20.999444999986792, -156.58522000000298 21.00386000033882, -156.58441199961405 21.006306999868173, -156.58485999958927 21.00715300021085, -156.58472100037383 21.019680999678428, -156.58426392084326 21.021110050288655, -156.58347499957154 21.018602000282158, -156.57870399988965 21.016857999896843, -156.57336500009464 21.017871999892918, -156.56933699960283 21.015941999923427, -156.5656840002164 21.011853000215865, -156.56013499973042 21.013881000208016, -156.55494599965812 21.008629999974573, -156.55211899969206 21.000706999728322, -156.54950399960987 20.998266999622388, -156.54566699983215 21.002307999814377, -156.54367399965534 21.001301000141098, -156.54119699964178 20.995916000023442, -156.53813100034537 20.989250000187383, -156.5356900001933 20.984965999581277, -156.53097799963496 20.984641999928385, -156.52540499984084 20.9873059995723, -156.52500700037274 20.981081000287986, -156.52568099997814 20.972523000436183, -156.52515900018767 20.96426199989145, -156.52093399960438 20.961916999669825, -156.51813099984574 20.956544000105566, -156.5159780003844 20.952107999684472, -156.50935408342417 20.947958277752377, -156.50843899985992 20.947385000417512, -156.50787199979294 20.939883999846757, -156.50726299958774 20.93684600004292, -156.5042409996224 20.93442399986776, -156.49641500025203 20.930871999743033, -156.49251000003645 20.922797999727948, -156.49149594608102 20.918001224576926, -156.49394000033072 20.918548999836503, -156.49740299994846 20.91750300016338, -156.4977679996934 20.91758300025532, -156.500142000353 20.911770000185413, -156.50208399997658 20.903727999847376, -156.5026730001588 20.901522999786664, -156.50234999965272 20.903191000264485, -156.50363200031654 20.905307999864363, -156.50647099993668 20.905931999861934, -156.50648299959073 20.904947000303878, -156.50893100006556 20.903427000355805, -156.51061799962096 20.90151300022484, -156.51557899997084 20.901110999672937, -156.51562800043183 20.897951999685063, -156.5140020000922 20.89506999988066, -156.51511099997265 20.893145000141715, -156.51683300024274 20.892393999683406, -156.51767999973217 20.889167000156988, -156.52114799958048 20.885342000033347, -156.52851600031315 20.885987000100044, -156.5350630000574 20.884010999807856, -156.5373539995874 20.882976999788752, -156.53644299984452 20.881905999862056, -156.52932499984882 20.881353999587475, -156.52770899997034 20.881838000323512, -156.52601600013827 20.8811229997267, -156.5247130003047 20.87511799979592, -156.52477999979712 20.871186000133832, -156.52737900004078 20.869438999610168, -156.52113299978808 20.868501999567684, -156.51875499984334 20.86715400035689, -156.5117460003776 20.866587000289883, -156.50671000016635 20.867807999939316, -156.50486599966612 20.867714000101046, -156.50030899996034 20.870088999907466, -156.5005179997059 20.867612999940036, -156.49850799964443 20.862235000145176, -156.4983620001062 20.86088199980452, -156.49857199989785 20.858436000321205, -156.49612600041456 20.853356999925666, -156.49608999965372 20.852476999813746, -156.49631700022934 20.85184899963167, -156.49207799989975 20.850516000213304, -156.48939999961027 20.85017199963812, -156.48485200031953 20.848773999920184, -156.48600400038427 20.846696000320208, -156.49046099997514 20.838714000051084, -156.4917849998778 20.835173000433656, -156.4935139995714 20.828822999881595, -156.4946059995672 20.826798000027736, -156.49558999997848 20.825503999709895, -156.49945900033256 20.82201499979243, -156.50311499985733 20.81836499964504, -156.50439999976015 20.81749399994817, -156.50510199975744 20.817181999949412, -156.50691899991187 20.81675399999716, -156.51069200033552 20.81547400032491, -156.5148600000889 20.81393300030777, -156.51733600005633 20.81405399959243, -156.52070699992808 20.813405000240607, -156.52393899968507 20.81407699975381, -156.52551300032468 20.814736999612876, -156.53037699979868 20.81465500032806, -156.533094000088 20.815062000211185, -156.53465099994366 20.81725799985685, -156.53610200030704 20.81746200027112, -156.5381630000224 20.819162000426047, -156.54049899982894 20.8197509997089, -156.5414879995715 20.82096199979651, -156.54255900039752 20.821210000441226, -156.54503000013437 20.824252999576345, -156.54563900033958 20.826613999636436, -156.5465700001054 20.827093000141872, -156.54923899997985 20.830317999576096, -156.54980700009295 20.83199100028446, -156.54988400004655 20.834702000297113, -156.55213899971503 20.837200000379767, -156.55211000017633 20.839835999631703, -156.55281200017365 20.840369999975564, -156.55304099994217 20.842363000152375, -156.5584670001519 20.848178000314533, -156.5590629997576 20.849085999918998, -156.55859999998998 20.85148399988674, -156.56027699998353 20.852537999928813, -156.56115199986488 20.85506400040333, -156.56143100014052 20.855571000401426, -156.5656480003549 20.856210000191425, -156.56693000011938 20.857251999680102, -156.56768499986282 20.85983199994689, -156.5714259997101 20.863119000441543, -156.5735179999557 20.86449199990591, -156.5768630004271 20.864934999650586, -156.5785370002823 20.864372999814123, -156.57961699972472 20.864905000065733, -156.5814149999023 20.8681349997305, -156.5829190000118 20.86829299982213, -156.5849740003498 20.8695959996557, -156.58738600006382 20.870062999607796, -156.58845299980607 20.87142799960253, -156.59084799963546 20.870799000273678, -156.59390999964674 20.872441999598664))" +15,HAWAII,15001,HI,Hawaii,15001021010,"Census Tract 210.10, Hawaii County, Hawaii",58.3726845373,8298,2969.0000000000,2169.0000000000,4,38.0600000000,9515.0000000000,30754.0000000000,3.4923035330,25.2432498800,7750,129.1666667000,2.0780000000,13507.4971000000,2098.4362600000,2404.5342440000,12275.2499600000,0.3991432000,1.3000000000,40.3000000000,18.7000000000,50.6000000000,29.3000000000,78.4000000000,65.8069352300,4.0000000000,93.4538000000,69.4901838075,60.0700000000,5.6000000000,35.6491189000,66.5000000000,54.0730396333,28.8700000000,20.7000000000,30.0000000000,78.1300000000,73.2200000000,76.4400000000,0.4717000000,79.0000000000,3300.0000000000,2618.0000000000,260.0000000000,236.0000000000,60.0000000000,79.0000000000,22.0000000000,682.0000000000,79.0000000000,112.0000000000,11.0000000000,58.0000000000,0.0000000000,27.7878787879,44.7223000000,58.6260428571,54.1600000000,54.1600000000,99.2576197100,13.7727716584,0.0811785725,0.0795413331,0.0701104006,0.0000000000,0.0000000000,3.5009004911,1,1,1,1,1,0,5,1,0.6294638875,0.0130071035,1.0000000000,"POLYGON ((-155.24291699971974 19.42249300035172, -155.2385899998286 19.423399999910146, -155.23682000004294 19.42401999972327, -155.23370000005494 19.42612000033779, -155.22038000003695 19.437869999900613, -155.21894999974268 19.438959999804183, -155.21713000034921 19.440029999684782, -155.20502000037268 19.445979999777194, -155.19876000037368 19.44929999999505, -155.19546000017883 19.450349999852676, -155.17572900039303 19.454495000344025, -155.17358000021682 19.455450000317285, -155.17167599964765 19.457424999664056, -155.1660999997152 19.46598000027683, -155.16365000004743 19.471659999609358, -155.16092000005793 19.474979999827156, -155.14491999965824 19.49720000017993, -155.14452999965974 19.497900000084996, -155.13432000006793 19.527350000202375, -155.133439999956 19.528739999551362, -155.12516000033372 19.536690000143437, -155.12276999983558 19.538930000019548, -155.11882999980463 19.54202999998455, -155.11221999985307 19.547280000171895, -155.10889000007342 19.549080000441734, -155.10425899965307 19.553834000238965, -155.09888900022716 19.558418000290544, -155.09579999987008 19.555097000026592, -155.09051599991344 19.549333000417676, -155.08929700035625 19.549581000163073, -155.08828899973753 19.550295999860566, -155.08532000041765 19.55286000028883, -155.0851269996113 19.55525300002597, -155.0816019998324 19.558389999898623, -155.08154699999403 19.55951499961759, -155.07856099989021 19.56217600002242, -155.07370699997804 19.565050000357303, -155.06792999976963 19.566769999635824, -155.06560799970939 19.571463000217364, -155.05569100013952 19.580263999583963, -155.0533500001024 19.58073000038928, -155.04985399986217 19.584829999704766, -155.03591400003106 19.56188800023108, -155.02898000042666 19.550300000045013, -155.03789000032322 19.545450000317317, -155.03307000018035 19.537510000186387, -155.01831999986808 19.513199999680296, -155.0142599996992 19.506469999590877, -155.01215799989174 19.501972999954035, -155.01894800005013 19.498375999552763, -155.0268720003425 19.494860000188908, -155.04841600009829 19.484194000252955, -155.05124900034107 19.482793000396725, -155.0706140003358 19.473173000133897, -155.09100199984238 19.46187299973917, -155.09249300025172 19.46113900006486, -155.09501999987307 19.46037399986028, -155.12215000002246 19.445409999571893, -155.1639880003459 19.435025000003805, -155.16995500032297 19.433260999595518, -155.1908150000122 19.428077999799882, -155.21718400014146 19.42010099976136, -155.23563800039338 19.41802400020748, -155.23921599991843 19.420766999897182, -155.2393980002175 19.422540999867294, -155.24252100034386 19.42175100030846, -155.24291699971974 19.42249300035172))" +15,HAWAII,15001,HI,Hawaii,15001021402,"Census Tract 214.02, Hawaii County, Hawaii",16.1940321695,3791,1745.0000000000,1388.0000000000,7,46.8600000000,11715.0000000000,36480.0000000000,3.4923035330,25.2432498800,6500,108.3333333000,2.2690000000,15852.0623100000,2098.4362600000,2016.7061400000,14634.0995700000,0.4011540450,0.3000000000,17.8000000000,20.1000000000,32.0000000000,47.6000000000,54.5000000000,66.4440989500,6.1666666670,75.1978000000,53.4854747375,87.3300000000,2.1000000000,8.3103051000,71.5800000000,55.7401017000,35.1700000000,39.2000000000,61.0000000000,11.3600000000,38.9300000000,35.9200000000,0.4672000000,77.0000000000,1374.0000000000,835.0000000000,50.0000000000,26.0000000000,24.0000000000,41.0000000000,42.0000000000,539.0000000000,173.0000000000,30.0000000000,41.0000000000,11.0000000000,0.0000000000,31.8777292576,57.6898000000,45.2956857143,58.6600000000,58.6600000000,98.4465005000,51.8683305635,0.0396097307,0.0896847823,0.0712848139,0.0000000000,0.0000000000,13.0172274726,1,1,0,1,1,0,4,1,0.3920523002,0.0036062992,1.0000000000,"POLYGON ((-155.9602130000299 19.52015800039146, -155.9559650001846 19.525152999611294, -155.9564303984441 19.52960072629253, -155.9553200001179 19.52904800026505, -155.95480000041965 19.528270000360294, -155.9548399995663 19.518480000351758, -155.95359999994002 19.518710000166436, -155.95144999971768 19.520310000206393, -155.94918000025677 19.51865999965929, -155.94690999989655 19.518670000120437, -155.94522000020282 19.5172999998951, -155.94327999977213 19.517990000238342, -155.94125700001052 19.517487000424808, -155.94093999978114 19.51744999961784, -155.93305999971918 19.520159999584337, -155.93020000002994 19.520600000089985, -155.92162999962474 19.522869999550892, -155.92217999980713 19.524190000168403, -155.92320999964173 19.52583000025436, -155.9250999995653 19.530180000306814, -155.9250010003958 19.53052600007487, -155.9277500003622 19.534769999735772, -155.92827999962225 19.53735000000256, -155.92862000001296 19.538749999812694, -155.924639999936 19.53936999962582, -155.92377000028526 19.539139999811198, -155.92092000015785 19.53958000031679, -155.91891999965821 19.540320000267855, -155.91805000000747 19.538999999650287, -155.91618999966872 19.538510000436247, -155.91394999979264 19.539859999739235, -155.9123800002368 19.541459999779192, -155.90891000029626 19.54248999961385, -155.9076099997017 19.543170000395264, -155.9048300001044 19.543560000393768, -155.89992899982346 19.546295999760616, -155.89668999974367 19.546560000243858, -155.89532999997948 19.545330000179433, -155.8926230001513 19.544929999719784, -155.8873980002175 19.54457799967497, -155.87824399986067 19.54580000026982, -155.87516499996474 19.545905999762113, -155.87404799971537 19.54717199968809, -155.8722840002064 19.547034999665527, -155.8705660001208 19.548111999868922, -155.8687170002893 19.548464999959833, -155.86519699984163 19.55031799997579, -155.8594300000944 19.550979999927108, -155.8588199998431 19.550190000368275, -155.85575999992403 19.548590000328318, -155.85631999966822 19.546879999712246, -155.85579999997 19.53958000031679, -155.85733999994102 19.536249999637846, -155.85647599966762 19.532411999813974, -155.85456000034372 19.5232299999646, -155.85434999965273 19.52271000026633, -155.85684899978148 19.52162799983239, -155.86134200013316 19.520601000136082, -155.8632590004025 19.52060400027443, -155.8684820002441 19.51920899979558, -155.87178100039282 19.51904500032657, -155.87695000044215 19.516510000336268, -155.88435099999862 19.5150559998346, -155.88620400001457 19.515097999972795, -155.89391400033082 19.51161999966331, -155.89633200032154 19.51124600040265, -155.898059999969 19.512383999821793, -155.89939000014837 19.51235999961432, -155.90081200007373 19.511767000147017, -155.89944099980227 19.50393000026935, -155.89914100035685 19.50315399955747, -155.90113999991104 19.50182999965483, -155.90938000038668 19.499070000080508, -155.91035000015236 19.49831000010647, -155.90960499997075 19.496495000044263, -155.90631400019092 19.492064999899867, -155.90296999976565 19.494180000306812, -155.90128999963375 19.493509999986543, -155.89908000024178 19.490360000413716, -155.89688000041167 19.489460000278825, -155.89797000031524 19.48848999961382, -155.90163999958628 19.488009999961605, -155.9044699996907 19.48595000029235, -155.90518999961876 19.48597000031532, -155.9095599996942 19.488600000189933, -155.91183999961626 19.487279999572365, -155.91341999963325 19.48870999986667, -155.9149399995813 19.487450000217393, -155.91649999957528 19.489779999747213, -155.91667999978213 19.49038999999857, -155.92012000013787 19.488219999753255, -155.92145999987906 19.488520000097992, -155.9236399996862 19.486920000057978, -155.92285000012737 19.485660000408757, -155.92484999972768 19.484589999628838, -155.9344720000827 19.487753999847257, -155.93586699966227 19.488717000189467, -155.93998599985397 19.48718100040287, -155.93793100041532 19.48531699987967, -155.9337622857009 19.47930684323626, -155.9337900001084 19.47911099967297, -155.93725299972613 19.479067000341843, -155.9410430000344 19.483078000049716, -155.94651999989804 19.483160000233852, -155.95042500011363 19.486648000105163, -155.94819799993772 19.495473999725334, -155.95184700003898 19.50492200015026, -155.95755099957893 19.514108000184137, -155.96016599966111 19.515004000134525, -155.9602130000299 19.52015800039146))" +15,HAWAII,15003,HI,Honolulu,15003010201,"Census Tract 102.01, Honolulu County, Hawaii",25.5816853094,5411,2061.0000000000,1311.0000000000,72,46.7500000000,11687.5000000000,38246.0000000000,3.4923035330,25.2432498800,9650,160.8333333000,2.2180000000,15482.2798500000,2098.4362600000,2994.0329620000,12915.6032200000,0.3376981440,0.7000000000,27.3000000000,22.6000000000,30.9000000000,45.8000000000,95.0000000000,45.0359532500,8.8888888890,51.5405000000,54.7191133125,28.8500000000,9.8000000000,62.6581312000,42.5400000000,44.6827104000,34.5900000000,47.3000000000,71.0000000000,51.0500000000,56.3100000000,39.6800000000,0.4199000000,50.0000000000,1441.0000000000,759.0000000000,72.0000000000,28.0000000000,58.0000000000,48.0000000000,100.0000000000,682.0000000000,44.0000000000,82.0000000000,86.0000000000,93.0000000000,43.0000000000,45.3851492019,86.9226000000,55.6503714286,46.9500000000,46.9500000000,61.4539655500,52.9862321205,0.1349044974,0.1446449100,0.1224506355,0.0000000000,0.0000000000,13.3470580409,1,0,1,0,0,0,2,0,0.3676378222,0.0058447962,1.0000000000,"POLYGON ((-157.93551099993266 21.574498000382448, -157.93518100000313 21.57620499996085, -157.93649999967522 21.579481999994357, -157.93523899997984 21.58177300042371, -157.93440900037504 21.581266000425614, -157.93344900017118 21.582609000305183, -157.9343779998448 21.58594100017706, -157.93532600039458 21.587351000448336, -157.93248699987512 21.59054999958289, -157.93341799964094 21.59117799976491, -157.9323519999448 21.59261000015141, -157.93380000016984 21.59248299969073, -157.93371099966288 21.59411300021486, -157.935271999703 21.594488000420938, -157.9346180001206 21.596789999558894, -157.93486399977374 21.598558000151627, -157.93379299984704 21.599609000055352, -157.93344499998673 21.601228000072183, -157.92924000032573 21.603815999808603, -157.92603500001522 21.606827000165993, -157.92434400027537 21.609503000363247, -157.92469200013568 21.610273999945207, -157.920815000312 21.61466800022805, -157.91867000032022 21.615549000386125, -157.91494300021927 21.617170999641985, -157.91389999978514 21.617223000241324, -157.91297000006543 21.616972000357578, -157.91197292441092 21.616820660645033, -157.91152800011707 21.614338000298517, -157.90724999978764 21.608814000066104, -157.90057400038978 21.605884999892908, -157.8980940002379 21.602617000274392, -157.89608719906497 21.59805534837568, -157.8948899999735 21.595333999864238, -157.88927299994896 21.58986899965464, -157.88673499982036 21.587646999709307, -157.88562099970935 21.581188999572703, -157.88395633032036 21.579732363158087, -157.88158000041665 21.577653000185876, -157.87734999960276 21.575277000333358, -157.874211999684 21.573011000157578, -157.874211999684 21.563704999985816, -157.874211999684 21.563286000448613, -157.87563799979384 21.559749000116312, -157.87207299996894 21.55621199978401, -157.8682699999605 21.558644000420315, -157.86470500013561 21.560190999814836, -157.86416791601647 21.560072724576628, -157.85567300000892 21.558201999822472, -157.85053899977498 21.55491800036549, -157.84668300002042 21.549829999554902, -157.8466409998822 21.54493799968901, -157.84587235742333 21.544455739141085, -157.84188499999271 21.54195399967739, -157.8384693649692 21.53521878531876, -157.84073800015855 21.533034000219004, -157.84218000010688 21.528952999981016, -157.84330900001032 21.52685799959704, -157.84784299955476 21.523132000441535, -157.8485610002899 21.521793999893248, -157.85317199978792 21.519919999808167, -157.8563459995682 21.517838000023744, -157.85988700008497 21.517133999934174, -157.86138399987166 21.51592099975437, -157.864314000091 21.51564499961711, -157.86748899991738 21.51624300021433, -157.86955099967886 21.517524999978832, -157.87210000031473 21.51296800027302, -157.87202100026892 21.510248999891473, -157.8727780001046 21.510961000349937, -157.87486500011963 21.511489999563878, -157.87629000018333 21.51278900011232, -157.87867599959768 21.513895999900512, -157.883378999741 21.51290700015801, -157.8857450000317 21.5120930003917, -157.8888920003655 21.50890700005806, -157.89126800021802 21.50513000034931, -157.8932299998646 21.503409000125316, -157.89624300031417 21.501560000293807, -157.89680800028896 21.501460000178895, -157.90125100013353 21.50152699967134, -157.9069490002961 21.508240999922236, -157.90745100006356 21.50852699962138, -157.90716300027222 21.510297000306366, -157.90954300030918 21.512649999997564, -157.91097799993472 21.513115999903505, -157.91241200041347 21.514745000381538, -157.9130530002957 21.516350999798874, -157.91430400042924 21.517055999934485, -157.91470099985122 21.518711999858965, -157.9157689996396 21.520290999829854, -157.91662400039726 21.52374700002406, -157.91994999999247 21.527127000310884, -157.91970600043155 21.530738999605205, -157.92065099994366 21.531926000384658, -157.92132300035615 21.534923000096455, -157.92135299994098 21.54032900028318, -157.91918599983399 21.543583000155365, -157.9191560002492 21.54578400003163, -157.9183999995603 21.548356999975624, -157.91826100034487 21.55226999966078, -157.9204329997831 21.554288000091162, -157.9221059995922 21.555087000065043, -157.923672999909 21.557167999803426, -157.92368999979362 21.5594020003021, -157.92540000040967 21.562166000060927, -157.9269279998273 21.56204399983079, -157.92789500035394 21.564220000352805, -157.92993500000023 21.56420100037593, -157.93257400028986 21.56760600001695, -157.93491999965823 21.56837699959891, -157.93606899958462 21.569695000124227, -157.93542899974852 21.571953999977154, -157.93664199992833 21.57464700005903, -157.93551099993266 21.574498000382448))" +15,HAWAII,15009,HI,Maui,15009030100,"Census Tract 301, Maui County, Hawaii",214.3878544390,1642,688.0000000000,487.0000000000,0,40.8300000000,10207.5000000000,29522.0000000000,3.4923035330,25.2432498800,3850,64.1666666700,2.3210000000,15442.2126900000,2098.4362600000,1194.5105600000,12125.2628600000,0.4107195600,0.0000000000,0.0000000000,24.3000000000,19.3000000000,56.4000000000,4.4000000000,69.4439046100,5.9166666670,77.7363000000,37.8950511525,76.7800000000,5.7000000000,36.4302279000,47.9000000000,53.7034093000,21.9100000000,39.4000000000,61.0000000000,68.9100000000,54.9600000000,49.8000000000,0.4252000000,54.0000000000,467.0000000000,283.0000000000,46.0000000000,9.0000000000,8.0000000000,12.0000000000,11.0000000000,184.0000000000,15.0000000000,5.0000000000,0.0000000000,0.0000000000,5.0000000000,23.7687366167,30.7004000000,48.7543428571,23.8100000000,23.8100000000,48.6657776400,44.1752102791,0.0377277573,0.0545639065,0.0431788196,0.0000000000,0.0000000000,11.0776701906,0,1,0,0,0,0,1,0,1.4029912972,0.0483475487,1.0000000000,"POLYGON ((-156.3174330004326 20.67141500030209, -156.30570600013178 20.68274700037381, -156.26676300021225 20.702433999929212, -156.26615299996095 20.701071000026673, -156.2517219999703 20.70646399961396, -156.23931199964903 20.700253000075918, -156.2384359997216 20.673654000132046, -156.23763000032423 20.672306000021933, -156.23671899968207 20.6671220001802, -156.2362529997761 20.66632500029857, -156.2366859999589 20.66980799993928, -156.23393699999252 20.669451999710077, -156.2321640000685 20.66678499992787, -156.23075099965888 20.667160000133947, -156.22877800040436 20.66432599984506, -156.22761399978623 20.66398999963883, -156.22665599967462 20.666121999930397, -156.22762999962475 20.669474999871397, -156.22790399966982 20.67330200008729, -156.22983999991604 20.67585299991606, -156.22462999977463 20.677605999817104, -156.22102099971934 20.671088999657684, -156.21635600042904 20.664985999704186, -156.20447999955232 20.67001499959258, -156.198367000037 20.672005999677197, -156.17201499979237 20.67837800034448, -156.16866099980527 20.67931600043312, -156.15640000005993 20.68232899998344, -156.1373369996028 20.683656000024428, -156.13675000041215 20.688106000191794, -156.1368309996509 20.69012299967676, -156.13765699997055 20.692498000382443, -156.13750700024784 20.697316999579925, -156.13788999992352 20.702607999859367, -156.13888199980443 20.710883000150375, -156.13889000017335 20.713841999908425, -156.13901000031123 20.71870400018952, -156.14140099995615 20.722339999691258, -156.14488000031173 20.724107000237893, -156.14465499982836 20.73362400024746, -156.14543299973312 20.737235000395003, -156.1556749999013 20.737014000096053, -156.15835800042134 20.737123999772848, -156.17617299998392 20.737049999957605, -156.19206699999202 20.746218000060708, -156.22078799976634 20.760072000422554, -156.23085199981992 20.765713999801278, -156.23147599981752 20.768779999997037, -156.23317199978794 20.771593000216853, -156.2336510002934 20.773842999654732, -156.234347000014 20.77475200020467, -156.23348599987895 20.776748999666665, -156.2357089998704 20.778670000120485, -156.2349770002883 20.779989999838676, -156.2355440003553 20.782097999922826, -156.23494699980418 20.78370500028558, -156.23569500012414 20.786302000437047, -156.23449499964448 20.788821999735546, -156.23443499957554 20.79203000018441, -156.2340479997154 20.794737000012617, -156.2318229996317 20.797746000277755, -156.23110299970364 20.80011799994577, -156.2314119995641 20.80342499956413, -156.23101300004987 20.806952000334604, -156.2299650002845 20.80842099972938, -156.22995299973113 20.80984099956254, -156.23081299982005 20.810489999813683, -156.23201200025358 20.81278000019688, -156.23106899993437 20.81401699968484, -156.2316240003473 20.816252000229667, -156.23037100012152 20.817896999646848, -156.23006600044553 20.81981099977787, -156.22719200011068 20.822087999561575, -156.22695700006548 20.8228969999966, -156.22218500033748 20.82761700002459, -156.22022399983769 20.828583999651926, -156.21939200014066 20.83064800040495, -156.22094899999632 20.83156799966349, -156.22006399965383 20.832971999658128, -156.21845400005202 20.83864599961322, -156.2160699998306 20.844609000305184, -156.21583899996983 20.84607200032258, -156.21384799988525 20.851013999796294, -156.210584999598 20.85549300040168, -156.2101569996458 20.85707200037257, -156.20884600034262 20.857456000094373, -156.2076330001628 20.85872200002035, -156.2060310000306 20.861891999616148, -156.20617799961497 20.864213999676394, -156.20503700005747 20.866074000015146, -156.20568700035474 20.867141999803493, -156.20526699987212 20.871081999834473, -156.2036570002703 20.872139000014897, -156.20331799992573 20.87348700012501, -156.20060900000533 20.876316000183294, -156.19936300010235 20.879776999708838, -156.19794600040757 20.879904000169518, -156.19849799978283 20.88429500031407, -156.19761400038578 20.885120999734397, -156.1961690002991 20.888515999813592, -156.1931630001723 20.89256000014393, -156.19337142255307 20.89324138408267, -156.1920360003611 20.891780000146923, -156.1928019997125 20.889699999555376, -156.19112699981116 20.887631000370448, -156.18580199976245 20.884468000198126, -156.18141799994072 20.87951200007882, -156.17444600038257 20.87684000006601, -156.16684000036568 20.871288000340996, -156.16674599962815 20.865646000062895, -156.16153999967122 20.863342999979523, -156.1582330000529 20.8620440003304, -156.15590699980817 20.859516999809728, -156.15234700021387 20.85980100031594, -156.14692200005024 20.8651850003875, -156.14425999959929 20.865291999925887, -156.1441960002452 20.8581099996768, -156.13035699967577 20.859452000409533, -156.12953943769486 20.85649567073864, -156.12930761585375 20.855657395572393, -156.1290470004187 20.854714999597604, -156.12824729357772 20.848155201601344, -156.12756058115588 20.84252225030167, -156.12738500021754 20.841082000434028, -156.1207299999895 20.838638000143646, -156.11522000040267 20.82998300031528, -156.11486400017344 20.826631999567155, -156.10873700001252 20.82460000028982, -156.1047169998896 20.824934000403857, -156.09524099997213 20.82692300039622, -156.08793100011553 20.828762999812625, -156.08207499986133 20.82497100031145, -156.07226299973763 20.81861799962104, -156.0658580002465 20.816155000253104, -156.05978800001617 20.810540000320827, -156.0545870002898 20.807969999615864, -156.04823200040647 20.8080519998, -156.04419699959183 20.805981999669598, -156.0396719995631 20.806348000360003, -156.03547102976418 20.805603432752264, -156.0338380003234 20.8053140003409, -156.02479101299483 20.802517290440676, -156.02090500016558 20.801316000333202, -156.01825100008355 20.798931000065636, -156.01413800016854 20.797048999611718, -156.0083579998218 20.796828000212088, -156.00371753943287 20.793675077842636, -156.00047799975985 20.791473999725383, -156.0004735759947 20.79094124674117, -156.00043300038263 20.786054999838427, -155.99674700037374 20.785069000234216, -155.98794400001555 20.77655199957519, -155.98511499995726 20.773546000347665, -155.9844089997755 20.76776399990871, -155.9835430003092 20.76635499968353, -155.98115099971884 20.76578799961652, -155.97981200002374 20.76590899980056, -155.97894799975035 20.764611000197533, -155.9802189999069 20.763615000132177, -155.98317799966492 20.76298099967346, -155.98549600044004 20.76241499965255, -155.98640099990618 20.7598520001697, -155.98463999963624 20.757414000156018, -155.9838560003541 20.755781000392915, -155.98196600043056 20.755914000230973, -155.97972000027775 20.757147000433747, -155.9790510000036 20.755921999700604, -155.97927200030253 20.753101000011213, -155.9813129999949 20.751923999692906, -155.98285199991983 20.750082000184193, -155.98284899978148 20.741806999893186, -155.982967781338 20.741019999573382, -155.98406700019189 20.733737000062547, -155.98571699983964 20.7314150000023, -155.98318600003384 20.72703500036505, -155.9833510004483 20.72175199955518, -155.98775600033912 20.71637399976032, -155.9876289998784 20.708191000114596, -155.99353199960208 20.70544300019435, -155.99682699956634 20.700209999891626, -155.9985879998363 20.69490599991201, -156.00537799999466 20.688156999845717, -156.01279800042735 20.682123000376237, -156.01691899981196 20.683796000185282, -156.02053800032843 20.68126000014894, -156.02532499984883 20.67999700036131, -156.02851000013638 20.679285999949002, -156.03139500007916 20.675043000334256, -156.03425999999897 20.673519000201736, -156.03730500012563 20.67000299993856, -156.040804999651 20.667247999695462, -156.0403939995834 20.66105099990375, -156.04662199990534 20.65259500025911, -156.04987699982365 20.650564000128554, -156.05540100005607 20.65045899978304, -156.0646769997437 20.646529000213263, -156.07266700038173 20.647875000231124, -156.0787419999433 20.65110299980364, -156.08477200012769 20.64676400025843, -156.0937060002317 20.641756999585937, -156.10409199984588 20.641034000418813, -156.11074800012008 20.639699000008875, -156.11229899969905 20.635056999980634, -156.11925200017964 20.630170000345288, -156.1238570003003 20.630055999584783, -156.12800800016905 20.62309100034946, -156.13404000044562 20.623683999816762, -156.1357880001161 20.620088000360965, -156.13903100038033 20.618122999676757, -156.14458800033592 20.624031999677072, -156.1543910000446 20.626316999829726, -156.16351199977893 20.621903999569952, -156.16670000020483 20.624698999858992, -156.17051599991345 20.62108799971145, -156.17692799972738 20.6225570000056, -156.1787290000433 20.62699699971182, -156.1867830000354 20.626930000219375, -156.1913120002486 20.628502999913565, -156.20534399982571 20.625463000017476, -156.21331300039463 20.623145000141676, -156.2190305068524 20.62063838994976, -156.22279499968946 20.61898799999625, -156.22743699971772 20.614802000312125, -156.2318204221747 20.612304514641664, -156.23410299955376 20.61100399963493, -156.23498790996405 20.610965916044222, -156.2382389996301 20.61082600041965, -156.24364643423553 20.60831595301886, -156.24387899981596 20.608208000199113, -156.24612399992262 20.60551700020943, -156.24874800041985 20.60592500013871, -156.25209346763938 20.60385513130933, -156.25717618942957 20.600710408058944, -156.2573109996029 20.600627000435793, -156.25870605583978 20.59972389943846, -156.26162699988612 20.59783300019285, -156.26233040462444 20.598032166751125, -156.26457600008231 20.598668000028226, -156.27724000042565 20.593567000416783, -156.2818911249754 20.592172127641618, -156.2832420002181 20.591767000147, -156.28656100038984 20.58783300039272, -156.2907559995897 20.585481999894455, -156.2996129997401 20.583082999880617, -156.30495000034222 20.583774000269955, -156.31439443855245 20.5844233602499, -156.31937099987172 20.62186699966236, -156.3174330004326 20.67141500030209))" +06,CALIFORNIA,06027,CA,Inyo,06027000800,"Census Tract 8, Inyo County, California",6834.6544756900,2929,1332.0000000000,803.0000000000,13,36.1000000000,9025.0000000000,29135.0000000000,3.1881804300,23.6157485800,3450,57.5000000000,2.1080000000,13372.6602800000,2098.4362600000,1070.4055670000,9152.6322020000,0.3141456050,1.4000000000,42.2000000000,30.2000000000,24.6000000000,43.8000000000,2.3000000000,36.9277325900,6.4166666670,72.7855000000,38.5533081475,88.3000000000,10.0000000000,63.7315485000,71.0100000000,74.3471828333,83.8600000000,41.9000000000,65.0000000000,56.7000000000,56.8400000000,68.8400000000,0.4133000000,46.0000000000,1420.0000000000,825.0000000000,111.0000000000,85.0000000000,27.0000000000,48.0000000000,9.0000000000,595.0000000000,52.0000000000,58.0000000000,8.0000000000,87.0000000000,0.0000000000,34.1549295775,64.0919000000,63.0474142857,83.0500000000,83.0500000000,82.4262087700,70.1442608018,0.5256343855,4.4114267252,4.7489192268,93.9998167065,4.1465928656,29.6627751186,0,1,1,1,1,0,4,1,7.9872414721,1.7836492095,1.0000000000,"POLYGON ((-118.33757899997084 36.654800999866325, -118.33087099999659 36.65901900012682, -118.32863400025889 36.65975299980113, -118.32596699957736 36.663153000110924, -118.32591399983119 36.66427299959929, -118.32468699990511 36.66654700014402, -118.32365199983991 36.6675250002786, -118.32136799973335 36.66797600039217, -118.3212289996186 36.66899299962728, -118.31804000004593 36.67029100012962, -118.31507299991898 36.669266999672345, -118.31361400008598 36.671245000056786, -118.3117070002778 36.672079999892105, -118.30957199984789 36.67444099995225, -118.30781899994685 36.67890199972754, -118.30620900034506 36.680198000137636, -118.30236999957577 36.68601799963102, -118.29727999957231 36.689309000310175, -118.29416499981488 36.690632000166715, -118.29150500035547 36.69292199965059, -118.2876610002549 36.69743600007138, -118.28732700014092 36.698380000436714, -118.2878669998621 36.70100600012688, -118.28978099999313 36.7012369999876, -118.29052600017474 36.702024000307404, -118.28611099982277 36.70750000012498, -118.2822299998146 36.70765700017046, -118.28023000021432 36.70952499997884, -118.27742699955633 36.71295399982728, -118.27315200026459 36.71594700025389, -118.26861599972858 36.71876299971274, -118.26694399996558 36.718631999966874, -118.26518699988009 36.71690100018105, -118.26323399974927 36.71671199955921, -118.2619319999618 36.71756900040907, -118.25631399989118 36.718424000267476, -118.25137599970259 36.718211000337476, -118.2489739995504 36.71866499969002, -118.24558899993235 36.71810700003806, -118.2404149996525 36.71833999999103, -118.23783500028497 36.7179400004307, -118.23480499995077 36.71799100008462, -118.23219099991468 36.71899200038058, -118.22871000036616 36.71913000044924, -118.22631499963751 36.719598000447434, -118.22488900042697 36.72058800023609, -118.2233670003867 36.72069799991283, -118.2203370000525 36.72187999956236, -118.21669899955913 36.72212900025323, -118.21455599965964 36.722705999882066, -118.20888399979674 36.72331199994886, -118.20812599991496 36.722828000112145, -118.20342399981769 36.72461499978249, -118.2020929995922 36.72543399977934, -118.19567699959384 36.72761100034745, -118.19351999994802 36.729776000362165, -118.19236699983713 36.72997299955432, -118.19089200016566 36.731435000424995, -118.18734300017928 36.73285800039645, -118.18476199986634 36.73435800032149, -118.18169000029326 36.73450099972143, -118.17632400015248 36.73742399961793, -118.17337499995625 36.737259000102824, -118.17133300021777 36.738049999707755, -118.16996800022298 36.73959900009385, -118.16580299970866 36.74097299960431, -118.16410299955373 36.74182400017753, -118.16081199977395 36.74192200020019, -118.15689900008874 36.743668999824536, -118.15509000030323 36.74121700006458, -118.15214200015316 36.73819700019146, -118.14943799956399 36.7345690001593, -118.14348500023254 36.73748699982525, -118.13870400008949 36.73943699981771, -118.13750399960986 36.73936500009472, -118.11470100025093 36.739355999679674, -118.1123020002371 36.740692000135766, -118.11076599955118 36.74052200039006, -118.10856999990551 36.73936199995637, -118.08085099957395 36.7393830000255, -118.07926600022569 36.73982899990847, -118.0782769995838 36.73915999963435, -118.06168099957841 36.70970700027789, -118.05322700002597 36.69469699966686, -118.05207499996123 36.69318800022609, -118.04382800006209 36.67919099956504, -118.04052699982117 36.672629000028394, -118.02912500011865 36.65278400038136, -118.02884899998134 36.650955999719656, -118.02284400005055 36.64052699992118, -118.01971200040845 36.63432699999112, -118.00193800003865 36.60418899962269, -118.00124000022578 36.60341699999458, -117.95931999971816 36.56541100011759, -117.95715999993399 36.56419199966109, -117.93738499991775 36.546242000168206, -117.9344949997444 36.543877999969766, -117.9309410004268 36.540531000305464, -117.9272189996571 36.5374999999251, -117.92368699955534 36.53509300044169, -117.91197199980792 36.52938199967957, -117.91055199997476 36.52856199963662, -117.90436599979103 36.52376799979339, -117.90265700012043 36.52198600035371, -117.89753899972504 36.51532799998728, -117.8935029997636 36.51064900005139, -117.88480699984314 36.502393999783294, -117.87086599996587 36.48926599962624, -117.86282399962784 36.48361499983241, -117.86184500034648 36.482710000366296, -117.86110699958834 36.481807000093056, -117.85195900040753 36.46891399998117, -117.81405900002278 36.41537100037141, -117.81280899993538 36.413091000449356, -117.81127900042549 36.40914200000333, -117.80743300023272 36.39448000015193, -117.80729800030241 36.392724000112594, -117.80522800017206 36.38486300002751, -117.80296600018073 36.37809499998434, -117.7996320002166 36.37344599963325, -117.79094499981187 36.365434999825425, -117.78832899968353 36.36356299983265, -117.78325000018731 36.36094699970431, -117.78107499971145 36.359564999824954, -117.7787310004353 36.35738299992556, -117.77240600013675 36.3499299997697, -117.77069200023561 36.34846000032883, -117.75009900026862 36.335859000192784, -117.74694799975038 36.33490899955075, -117.70517000039519 36.32939399973333, -117.70207299966916 36.32869900005886, -117.6949910004343 36.325077000303395, -117.68949699978668 36.320976000042435, -117.68767999963222 36.318359999914094, -117.68492200015015 36.31642199957565, -117.67877399992011 36.31585200026967, -117.6719370002923 36.31817200023767, -117.66500399983471 36.32181700015451, -117.65772699970125 36.3277440000856, -117.65714099965737 36.328377999645, -117.64510200025705 36.34389999958535, -117.64232699999104 36.347765999801084, -117.63855100032839 36.35422700007604, -117.63447899960613 36.35885100017356, -117.63320300011833 36.359764000008624, -117.6261270002608 36.363849999577894, -117.62889800034242 36.376043999830756, -117.63009099959993 36.38364899980155, -117.63076900028909 36.38649999997506, -117.6328330001428 36.38929700035635, -117.63531100020248 36.39083500023514, -117.63518099960339 36.39313900036461, -117.6364339998292 36.395193999803325, -117.63642100012902 36.39704000039575, -117.63345800018652 36.400962999642786, -117.63337099977178 36.40516400001866, -117.63644000010589 36.41255299992105, -117.63996199974645 36.418031999876916, -117.64065900041248 36.419484000286445, -117.64165899976297 36.426722999566834, -117.64067900043551 36.42851799960607, -117.63843999970618 36.4301090001303, -117.634031999677 36.43128400035636, -117.62829000018331 36.43136499959513, -117.62366700013189 36.43250700009804, -117.62297599974255 36.43671800003574, -117.62418199959956 36.43963399960944, -117.62554200026307 36.44078799976643, -117.6240200002228 36.443299999595354, -117.62239499992927 36.44407900044558, -117.6216600002088 36.448093000291806, -117.62176899983945 36.44917299973423, -117.62416699980719 36.45410200040703, -117.62360700006298 36.455691999985845, -117.62381599980853 36.45869600002044, -117.62682400002757 36.46540500004079, -117.6269070002578 36.46714999957288, -117.61522900041803 36.48893200041152, -117.6142359995917 36.493992999977024, -117.61283499973541 36.49632300040622, -117.60643799971388 36.500365999791086, -117.6056379996939 36.502142999899604, -117.60376899983942 36.50360199973255, -117.60156199968651 36.50400799956958, -117.59960100008607 36.50352699987121, -117.59762599983998 36.50160300017836, -117.59555100037835 36.5015410000172, -117.59296299974261 36.50222299999149, -117.58874400033534 36.500746000227764, -117.58578599972407 36.50147399962543, -117.58420599970708 36.50236700033685, -117.57954899988641 36.502420000082964, -117.57905599963465 36.5050770003034, -117.57769099963991 36.50704600027274, -117.57436399999858 36.50904099964248, -117.56993900008473 36.51270699962839, -117.56485699955084 36.5149179999658, -117.56189299956225 36.518638999790085, -117.55613800036838 36.52213500003029, -117.55484700018889 36.5220509997539, -117.54943399967931 36.52285700005058, -117.54886000018882 36.52389200011578, -117.54695300038065 36.52433299976815, -117.54718700037972 36.52709600038014, -117.55265399978225 36.529274000095086, -117.55650100002111 36.53145599999448, -117.55993700019235 36.53291699991968, -117.56228999988355 36.53474799982041, -117.5653990002636 36.53639400018301, -117.56794699995407 36.53585000027732, -117.56593799993874 36.53806499989986, -117.56655899979796 36.53883999966632, -117.56799500036891 36.5427819997895, -117.57178199963954 36.542828000112195, -117.57217699986859 36.5439939999232, -117.57394499956206 36.54594700005407, -117.57427600043701 36.54815700034533, -117.57329800030243 36.54985300031575, -117.57515799974186 36.55011099962297, -117.57497500029598 36.55110899978058, -117.57635400003704 36.55313499968054, -117.57679699978166 36.55480300015836, -117.58122799997221 36.55830699986819, -117.58365000014737 36.55885800009668, -117.58540099995616 36.55853100030549, -117.5871549999033 36.55915899958819, -117.5866229996517 36.560553000021, -117.58882400042722 36.5611980000877, -117.58993999973114 36.564155999799596, -117.59116300037215 36.56412400012255, -117.5932939997183 36.56556900020922, -117.59437800024449 36.5678989997391, -117.59877000043514 36.56742200022518, -117.60198400026138 36.56588300030029, -117.60508899955767 36.56675500004326, -117.60828600039855 36.569194000103096, -117.61554799984026 36.57322299974169, -117.61741200036352 36.57493100026551, -117.62217799981482 36.57855700020542, -117.62423100006055 36.58092699978124, -117.62540200010221 36.58121200033361, -117.62767000037019 36.58522199999538, -117.62905699958083 36.592583999552005, -117.63013799996867 36.59306300005744, -117.63005799987678 36.596165000114695, -117.63117300003387 36.598434000428824, -117.63252000009788 36.5999019997775, -117.63364599986295 36.60261399983625, -117.6348959999504 36.60408600026875, -117.63649199980591 36.607084000026646, -117.63912599986497 36.608683000020505, -117.64151899960211 36.6091039996499, -117.6424660001058 36.610175999622754, -117.646459999929 36.612648000305, -117.64715499960352 36.61338500011772, -117.64889699989658 36.6198499996778, -117.6271250004184 36.639334999810444, -117.626585999844 36.64013799996877, -117.62457799987476 36.64465100034346, -117.6244049999907 36.650634000159016, -117.6259829999155 36.65116400031843, -117.62467299975907 36.65208699971532, -117.62167299990898 36.651303999579966, -117.61829799985276 36.65198500040748, -117.61657400038979 36.65313100019557, -117.61267599959768 36.651125000318586, -117.61150699964827 36.64991600032323, -117.60812800030692 36.648249999937605, -117.60472299976658 36.64759899959421, -117.59989900033855 36.64572400036241, -117.59847899960613 36.64429199997585, -117.59550299996346 36.64378800011616, -117.59733099972584 36.64264699965935, -117.59449100005958 36.64277200002783, -117.59044699972924 36.641017000034594, -117.59255399976723 36.640291999875956, -117.59120399956487 36.63932000001802, -117.58910900008027 36.63937599990254, -117.58455200037446 36.63700700037282, -117.58265099994367 36.63720799974942, -117.58153599978652 36.63806199956167, -117.58102899978849 36.63979600038516, -117.57990800025397 36.64042100042889, -117.57449699983664 36.641552000424554, -117.57386899965456 36.646910000196385, -117.57269000014338 36.652469000244196, -117.57122299994148 36.654918999911956, -117.56966700013191 36.65670300034327, -117.56894900029607 36.660086999915166, -117.56826300013734 36.66582199998538, -117.56866099960541 36.669940000130964, -117.5716030003781 36.67781600000842, -117.57258699989012 36.6844700001904, -117.5712819999643 36.69278399958199, -117.57213699982265 36.69942800020209, -117.57177400016991 36.70518200024918, -117.57297199965802 36.70741699989469, -117.57379099965488 36.710780000296836, -117.57444400009052 36.7153349999104, -117.57381800000064 36.71784599969317, -117.57401199995383 36.71952199964062, -117.57337200011767 36.72300500018065, -117.57352800011705 36.72449899982905, -117.57279100030439 36.727788000415956, -117.5727059999819 36.73060800005919, -117.57371399970128 36.73343600007138, -117.57337600030212 36.73730100024102, -117.57369199958606 36.742001000246034, -117.57495800041136 36.744009000215215, -117.57672700015092 36.745300000394764, -117.57586099978528 36.74515500000331, -117.56447299982904 36.749422999871626, -117.56238000043663 36.74958300005545, -117.5599330000079 36.750465000259624, -117.5589040002194 36.75159400016304, -117.55797399960039 36.75301800018059, -117.55512799965743 36.75472699985119, -117.55392599998487 36.754904999965845, -117.54910899998032 36.7578000003698, -117.54461599962866 36.759498000432416, -117.54349199995579 36.75952900006337, -117.5381689999993 36.76252000039773, -117.53497700028828 36.768338999845014, -117.53322200029504 36.770790999605026, -117.53103200002676 36.77592699993113, -117.52778899976249 36.7793349997105, -117.52456500037442 36.782260999745404, -117.52262099975928 36.78469899975909, -117.51957699967875 36.78726899956473, -117.52048400013649 36.79019699969183, -117.51981599990842 36.79308899995743, -117.51698599980404 36.794974999696535, -117.51663799994373 36.79915199986493, -117.51415399960734 36.801912000338575, -117.51220100037585 36.80706299955784, -117.51028200001423 36.81101800028051, -117.5096909997398 36.81375699978577, -117.51083400028887 36.81700300018838, -117.510775000266 36.8191260000649, -117.50709899981894 36.82848600002893, -117.5044849997829 36.83391699956991, -117.50413299973809 36.83641000032134, -117.50224800004514 36.83955000033228, -117.5017080003239 36.84162099960952, -117.49854400010548 36.849680999878274, -117.49701699983461 36.85102199966559, -117.4982049997609 36.852880999958245, -117.50050399965983 36.85454400020552, -117.50312199988036 36.858526000374695, -117.50333099962592 36.859314999887374, -117.49979200010068 36.86427400014503, -117.49905200014967 36.8660369996079, -117.49948000010187 36.86843000024436, -117.49894799985026 36.87153200030161, -117.5006999997052 36.875031999827, -117.49976799989327 36.876619000166784, -117.50228299986054 36.880361000060134, -117.5047050000357 36.88218599968417, -117.5058099997317 36.884441000252025, -117.5051659997111 36.886558999898, -117.50170900037006 36.892130999645985, -117.50167699979369 36.89612200023015, -117.50151100023243 36.897699000108844, -117.49968499966297 36.90229599986054, -117.49837100022143 36.904446000082885, -117.49726400043323 36.90808599976913, -117.4970939997882 36.909988000246074, -117.49792000010791 36.91409399983826, -117.49540800027893 36.919782000439, -117.49524399991066 36.9240199998232, -117.49433800039839 36.92565699977075, -117.49420499966095 36.92830599962224, -117.4929660000808 36.930515999913496, -117.49283799957396 36.93252800006718, -117.49117500022606 36.934856000404125, -117.49001099960793 36.93733100032546, -117.49027099990667 36.93973200043155, -117.49012999969972 36.944073000068954, -117.48891000009638 36.94861499998234, -117.4850449999268 36.953859999939084, -117.48302300021123 36.95803700010754, -117.48085299996592 36.95940999957185, -117.47864599981301 36.9598069998932, -117.47676100012 36.961023000211355, -117.47328599994893 36.96529200012577, -117.47237700029831 36.967091000349455, -117.47201899997685 36.96986399962395, -117.47077900035055 36.971255999964455, -117.46979199980092 36.97387100004664, -117.46982599957016 36.978131999592165, -117.46922999996451 36.98070799967451, -117.470592999867 36.9857540003469, -117.46809399973824 36.99184199960865, -117.46824999973768 36.994383999921695, -117.46882900035803 36.995665999686196, -117.46708700006496 36.99938899960273, -117.46460599986699 37.00283200009676, -117.46383400023888 37.00675700033537, -117.46175799983178 37.01159999974027, -117.45861799982077 37.012889999873664, -117.45668999994353 37.010304000229496, -117.4548949999043 37.01082600001996, -117.45424899979145 37.01389000012347, -117.45273300002788 37.015072999819154, -117.44985400036177 37.01514599958824, -117.44730599977203 37.01782299983165, -117.4441600003837 37.01762699978627, -117.43591499967744 37.01883299964328, -117.42001500029198 37.017453999902216, -117.41621799966094 37.017733000177884, -117.4133949998793 37.018607000013105, -117.41207300006886 37.0181830002453, -117.39261999961326 37.007961000100124, -117.3805470004437 37.00435800032153, -117.36799499986932 36.999309999556885, -117.36660699971321 36.998536999882674, -117.36404600032262 36.99988600003894, -117.36143000019433 37.00009599983059, -117.3591609998802 37.00088800038094, -117.35702400025735 37.00374599997798, -117.35394600040757 37.009999999700256, -117.35294500011162 37.01155899964817, -117.35040800002912 37.01355299987108, -117.34858799973637 37.01414200005331, -117.34825200042945 37.01688399969686, -117.34588300000041 37.0192819996646, -117.34421400037576 37.020089000007374, -117.34264499996675 37.02745799988685, -117.3417970004312 37.03044800017511, -117.34062600038959 37.03106099966544, -117.33844100035185 37.03096000040375, -117.33431399979122 37.03276299991256, -117.33203099973082 37.0326320001667, -117.3285900002283 37.031129000103306, -117.32582300033118 37.03157800012468, -117.32272300036612 37.03278099984334, -117.32039700012143 37.033058000026756, -117.31212299987652 37.03240499959111, -117.31041500025202 37.033318000325494, -117.3091030000034 37.03323900027971, -117.30735300024071 37.034347000113996, -117.30573500027003 37.033976000092366, -117.3037620001162 37.034576999928674, -117.30232600044451 37.0362390001298, -117.3026090000053 37.037122000380066, -117.30121400042577 37.03916400011855, -117.303467000002 37.041589000432054, -117.30015800029145 37.04796600043062, -117.29684600044254 37.04927699973382, -117.2951210000341 37.051360999610495, -117.29150299956376 37.05230600002193, -117.29072100037382 37.05289900038861, -117.28953000030924 37.055485000032775, -117.28692799992723 37.05792200000036, -117.28604961679633 37.05982872641465, -117.2660460001228 37.04490999979669, -117.24491699971975 37.03024399976084, -117.1660004901305 36.97122396431456, -117.13197500024603 36.94577700040827, -117.06672799959745 36.89635400013702, -117.06447584088733 36.894689333446024, -117.00089499980436 36.84769399997816, -116.92800433283367 36.792460870272976, -116.88936137822498 36.763179049673454, -116.71028635073446 36.6274843885937, -116.54198299981556 36.499951999585164, -116.50088200020411 36.46822299959183, -116.48823299965318 36.459096999626865, -116.38034000009088 36.37495499997334, -116.37587500013115 36.3725620002362, -116.25086900010422 36.27697899998094, -116.18971631235792 36.22976399721074, -116.10855802673149 36.16710299530706, -116.0972160001183 36.15834599976813, -116.0936009997863 36.155805000400505, -115.97885381724984 36.06664092294028, -115.97547554276207 36.064015840558625, -115.96250611556474 36.05393797295915, -115.91285799969688 36.0153589997181, -115.89454331791973 36.001181079743105, -115.89297500009616 35.99996700037684, -115.85290799960444 35.96966000030881, -115.84598392941479 35.96420745840754, -115.75825125519123 35.89512003965814, -115.75084399995058 35.88928699999508, -115.68954287460394 35.8421880682248, -115.68930200018713 35.84200300033825, -115.66900500038042 35.82651500016715, -115.64802031058883 35.809629422060254, -115.73574499973193 35.809097000026554, -115.73589100016949 35.79362000036275, -116.05763000022432 35.79397299955434, -116.05915500040294 35.79371400020102, -116.067159999934 35.793689999993546, -116.0703060002217 35.7934729998791, -116.10957299979407 35.79344799962553, -116.21091300023471 35.79329699985669, -116.25315800044132 35.79354399955599, -116.2818250004234 35.7934380000637, -116.91941499970244 35.79538900010232, -116.93572099982424 35.79539500037902, -117.11759299981708 35.79524499975696, -117.12588299990051 35.79565799991684, -117.14522199959555 35.79554700019395, -117.26948300034019 35.79506000021888, -117.31569600007032 35.795197000241444, -117.35533899989491 35.79520199957267, -117.36842299982158 35.79516899984952, -117.41633200042145 35.7955500003323, -117.42146299961769 35.79560099998622, -117.63299599956571 35.797250999634, -117.84983200034651 35.79805099965398, -117.8568300002043 35.79806300020732, -117.88254799999015 35.79814300029926, -117.8858969997467 35.79809800002272, -117.90344300039413 35.79810000011497, -117.92445900008278 35.79814899967664, -117.92312000038766 35.78681200027364, -117.9393519997949 35.786761999766554, -117.95335799997167 35.78729199992591, -117.9554359995717 35.78758099976341, -118.00090800020399 35.78948799957158, -118.00804300008434 35.78916099978039, -118.00788099980826 35.78990900010035, -118.00937600040209 35.79531100010263, -118.0087890003121 35.79716200002633, -118.00737699994858 35.798841000112134, -118.0075360000863 35.79992099955456, -118.01048000005193 35.804386000413615, -118.00877699975871 35.806603000128405, -118.00747900015568 35.810002000392046, -118.00751299992498 35.81128300011039, -118.00886900040399 35.81220000012996, -118.00772699990108 35.817082999580805, -118.00371900033156 35.81827699978379, -118.0016860001088 35.82018899982256, -118.00046100027492 35.82028000042175, -117.99860500012062 35.82302900038809, -117.99888699963532 35.82376200001636, -118.00265299973614 35.82539199964111, -118.00619500029899 35.82903699955796, -118.00633400041374 35.83119300005694, -118.00445900028262 35.83609100019953, -118.00504799956548 35.83908199963463, -118.00451200002874 35.84034400027542, -118.00291300003488 35.84128999983369, -118.00543500032495 35.84327399959545, -118.00554099981724 35.845744000185505, -118.00478399998156 35.85126500027957, -118.00510200025707 35.853172000087795, -118.00654000002095 35.8548399996663, -118.00643299958324 35.85710599984208, -118.00741800004062 35.85817999990712, -118.00645799983681 35.85897100041137, -118.00548900011722 35.86269899965913, -118.00225100008356 35.863896000000466, -118.00172500010865 35.86515799974194, -117.99984000041565 35.86640199955269, -117.99825800030641 35.86878199958966, -117.99670099955148 35.869493000002024, -117.99365700037026 35.869611000047655, -117.99053700038223 35.86582299983161, -117.98843699976771 35.86570099960153, -117.9849899999885 35.86665599957479, -117.98104299963467 35.86691199968908, -117.98076100012003 35.86751499961758, -117.98213200039146 35.86904399998065, -117.98201899967705 35.87024499960711, -117.9832760000873 35.87277600031223, -117.98287100029637 35.87494699970432, -117.98570299959374 35.8782829997607, -117.98880200041197 35.87976899993947, -117.98845699979069 35.88211300011494, -117.98901200020362 35.88411599985358, -117.98739000004844 35.88626700012202, -117.98469199973596 35.88772099972442, -117.9843110001525 35.89066699978224, -117.98219799983781 35.8930879999113, -117.98247299992897 35.895795999785605, -117.98565700017036 35.897448999571736, -117.98707399986517 35.899246999749266, -117.98772600025467 35.90262199980549, -117.98549699998654 35.90581300036973, -117.98901500034196 35.907898000292505, -117.98887500018105 35.91017299998401, -117.99021800006062 35.912740999697405, -117.99004600022272 35.91591899966215, -117.98800599967711 35.91753699963289, -117.98583800042337 35.922667999728446, -117.98445499959854 35.92418200029914, -117.98328699969522 35.9265630003822, -117.98643099989067 35.93216399966889, -117.9853820000792 35.93414400014552, -117.98796699967727 35.93733899999489, -117.98967100001659 35.93886800035796, -117.98981000013134 35.94040600023675, -117.99194399961584 35.94377099983183, -117.99334899965658 35.94426400008359, -117.99593900038451 35.94408099973839, -117.99812899975348 35.94493599959674, -117.99859599970557 35.94627200005283, -118.00036799958349 35.94652800016712, -118.00353700003251 35.94592700033087, -118.00688199960456 35.94648299989058, -118.00945000021733 35.9486109999977, -118.00954199996329 35.9523539999372, -118.01107200037251 35.95460100013611, -118.01679099970482 35.954550999628964, -118.01713500028 35.95812900005336, -118.018239999976 35.96097700008852, -118.01757900007078 35.9630240000576, -118.01522799957252 35.96450600005193, -118.01379600008528 35.967823000131375, -118.01267699974369 35.967840000016054, -118.0124330001828 35.969723999662904, -118.01382200038495 35.97072199982051, -118.0145669996673 35.97289100001967, -118.01143199988684 35.974226999576445, -118.01152499967895 35.975811999823975, -118.01009500028402 35.97761700032436, -118.00961399968628 35.97817800011467, -118.00524399961085 35.97696700002706, -118.00402500005367 35.97782600006991, -118.00392199980041 35.97883599988154, -118.00529800030245 35.980507999644544, -118.00357700007845 35.983718000185604, -118.00637699969872 35.98675900012779, -118.00623500034493 35.989756999885685, -118.01067199991286 35.9917439997858, -118.01207699995354 35.99830500017566, -118.01427000036017 35.998505999552265, -118.01450999973667 35.999944000215464, -118.01641100016747 36.00104399968092, -118.01901099955796 36.00334399962594, -118.02231099975279 36.00454400010557, -118.02531099960294 36.004843999550985, -118.0270109997578 36.00584399980079, -118.03081099962787 36.007044000280416, -118.03361100014752 36.00894399976585, -118.03411099982276 36.010944000265454, -118.03541199956408 36.01304399998065, -118.03461200044342 36.01434399967587, -118.03621199958405 36.02024400016052, -118.03581200002372 36.023344000125576, -118.03701199960409 36.02614399974584, -118.03761200029356 36.02974300023931, -118.04141200016363 36.029844000400374, -118.04020500026053 36.03239400018299, -118.03951199977894 36.0342430000145, -118.04171199960905 36.03654299995952, -118.0421120000687 36.038443000344216, -118.04561199959409 36.0407430002893, -118.04631200039847 36.04294300011941, -118.04401199955413 36.04464300027428, -118.04271199985885 36.048543000259315, -118.04701200030354 36.05294299991954, -118.0486120003435 36.05324300026433, -118.04791200043843 36.055942999769684, -118.05091300033467 36.0580430003842, -118.05171300035465 36.05954300030925, -118.05161300023974 36.06574300023931, -118.05101300044959 36.0692429997647, -118.05121299978009 36.073443000094414, -118.04991300008487 36.075142000203186, -118.04981299996996 36.076742000243144, -118.05071300010485 36.08004200043803, -118.05151300012483 36.08134200013325, -118.05151300012483 36.08324199961862, -118.05281299982005 36.085641999678614, -118.05521299987998 36.087341999833484, -118.05681299992 36.089442000448, -118.05761299993998 36.09164200027817, -118.05871300030469 36.09184199960862, -118.06221299983002 36.08934200033309, -118.06731300029469 36.09344199964863, -118.06621399997607 36.10394200002332, -118.0664140002059 36.10604199973852, -118.06831399969133 36.10854199991343, -118.06801400024585 36.10984199960865, -118.06601399974625 36.10954200016323, -118.06491400028085 36.11034200018321, -118.06631400009098 36.114641999728576, -118.06631400009098 36.11934099968744, -118.06821399957636 36.12024099982233, -118.06831399969133 36.1255409996175, -118.07161399988615 36.129241000271975, -118.071014000096 36.133741000047166, -118.07361400038576 36.13904099984234, -118.07351400027085 36.14034100043688, -118.07151399977124 36.143341000286966, -118.06811400036082 36.14534099988731, -118.06541399995609 36.147740999947246, -118.06401400014596 36.147740999947246, -118.06041399960634 36.14974100044685, -118.05971399970127 36.15084099991225, -118.0589139996813 36.1529409996275, -118.05881399956638 36.1569409997274, -118.05931400014094 36.15874099999718, -118.06081400006599 36.16073999955137, -118.06261400033583 36.162040000145964, -118.06031400039075 36.165039999996054, -118.05951400037077 36.165439999556384, -118.0605149997674 36.1675400001709, -118.0593150001871 36.1701399995614, -118.0603150004369 36.17234000029083, -118.06201499969245 36.174239999776205, -118.06591499967743 36.1766399998362, -118.06851499996725 36.17753999997109, -118.0700149998923 36.178640000335804, -118.07171500004716 36.186540000420734, -118.0737149996475 36.18944000015591, -118.07711499995725 36.19153999987117, -118.08151499961753 36.19543999985615, -118.08301500044189 36.195339999741236, -118.08591500017707 36.19753999957135, -118.090715000297 36.19734000024084, -118.09201499999222 36.20114000011097, -118.09461600032813 36.20493899993494, -118.09811599985346 36.206538999974896, -118.10191599972359 36.208838999919976, -118.10361599987846 36.21043899995993, -118.10561600037806 36.21343899981002, -118.10691600007328 36.21603900009984, -118.10801600043806 36.22003900019973, -118.10741599974858 36.22213899991499, -118.10921600001836 36.22553900022473, -118.10861600022821 36.22763899993993, -118.10581599970857 36.22823899973008, -118.10491599957368 36.22933900009485, -118.10551600026315 36.230638999790074, -118.10521599991841 36.23363899964016, -118.10801600043806 36.237239000179784, -118.10931600013328 36.237738999855026, -118.11221599986845 36.24003899980005, -118.11411600025315 36.2440389999, -118.11441599969862 36.24783799972397, -118.11556799976336 36.24993800033849, -118.1168899995738 36.25094800015012, -118.11936600044055 36.255560999740396, -118.11928400025636 36.25959699970184, -118.11759199957106 36.2630250004035, -118.11788100030788 36.26437100042136, -118.11705499998823 36.26749799983287, -118.11738499991776 36.27116499986488, -118.11973899965506 36.27308700036485, -118.12196899996934 36.27769899990898, -118.1271470004337 36.27965600022429, -118.1276009997863 36.28034799976041, -118.12734299957975 36.283532000001856, -118.12502000037267 36.28674399973585, -118.12504699981918 36.289550999678966, -118.12577099993166 36.29165999980921, -118.12544400014048 36.292872999989015, -118.12591700036921 36.29625999969926, -118.12569700011642 36.297798999624206, -118.12700800031894 36.30022299989156, -118.12421700021434 36.3013380000487, -118.12111700024934 36.30113799981888, -118.12011699999954 36.30223800018359, -118.11971700043921 36.30333799964899, -118.12161699992458 36.3068370000276, -118.11841000042114 36.307668999724626, -118.11457699992854 36.30698399961193, -118.11181700035422 36.308336999952644, -118.11041699964477 36.30983699987769, -118.11255300012084 36.313338000348494, -118.1116439995709 36.31555700015548, -118.11341999963327 36.316972999804136, -118.11416399976872 36.31926100009514, -118.11281699970476 36.320636999697854, -118.11251700025934 36.322037000407306, -118.10940499974089 36.323864000123535, -118.10755299977109 36.32560699956343, -118.10304999985755 36.32539699977178, -118.10321500027203 36.32704600027273, -118.10011600035313 36.32882300038119, -118.09974400028534 36.33057100005169, -118.09769100003956 36.3310990001188, -118.09831700012944 36.3327370001125, -118.09951699970975 36.332937000342326, -118.10071800023547 36.335358999618165, -118.10181699965477 36.33933699960289, -118.10141700009444 36.34323699958793, -118.10031699972973 36.34613700022243, -118.10241700034425 36.34743699991765, -118.10541800024049 36.348236999937626, -118.10841800009058 36.3480369997078, -118.11071800003566 36.34893699984269, -118.1162180000606 36.3493370003024, -118.1208179999507 36.35023700043729, -118.12251800010557 36.350937000342356, -118.1242180002605 36.35193699969284, -118.12251800010557 36.354737000212424, -118.12681799965094 36.362637000297354, -118.12911799959596 36.36443699966787, -118.1304180001905 36.367137000072546, -118.13051800030541 36.37033600010636, -118.13111800009557 36.37073599966669, -118.13821800016052 36.37163599980158, -118.14101799978084 36.37163599980158, -118.1415180003554 36.37333599995651, -118.14411799974584 36.377035999711666, -118.14661799992075 36.37813600007638, -118.14781800040038 36.3794359997716, -118.15311800019549 36.379535999886514, -118.15611800004564 36.38733599985653, -118.15811899969202 36.388935999896546, -118.16301899992686 36.38963599980161, -118.16101900032658 36.39173600041613, -118.16001900007677 36.39383600013133, -118.15391900026162 36.39683599998148, -118.14621900040652 36.39863600025126, -118.14031899992187 36.40353599958678, -118.13901900022665 36.408535999936475, -118.13901900022665 36.410835999881556, -118.13751900030161 36.41473599986654, -118.13791899986194 36.41803600006142, -118.14121900005676 36.4209359997966, -118.14441900013674 36.421236000141334, -118.14751900010174 36.42463599955181, -118.14921900025661 36.4253360003562, -118.1516190003166 36.42513600012637, -118.15251899955217 36.42673600016633, -118.15421899970704 36.42713599972666, -118.15701900022663 36.43263599975165, -118.16271899958213 36.43113599982661, -118.16421900040649 36.42973600001642, -118.16831899972203 36.429535999786594, -118.17091900001179 36.42903600011135, -118.17481899999683 36.42673600016633, -118.17831900042148 36.42763600030122, -118.18171899983196 36.42753600018631, -118.18441900023663 36.42663600005142, -118.1897190000318 36.42773600041613, -118.19361900001678 36.426535999936505, -118.19541900028662 36.427835999631725, -118.1974189998869 36.42803599986155, -118.1995189996021 36.43013599957675, -118.20371899993188 36.43123599994152, -118.20981899974703 36.43033599980657, -118.21131999971817 36.43123599994152, -118.21262000031271 36.433535999886544, -118.21441999968323 36.43433599990652, -118.21461999991305 36.436635999851546, -118.21211999973815 36.437036000311195, -118.21041999958328 36.43893599979663, -118.21041999958328 36.44093600029623, -118.2096199995633 36.44213599987654, -118.21022000025278 36.444836000281214, -118.21332000021778 36.44683599988156, -118.21441999968323 36.44873600026625, -118.21531999981812 36.455036000311225, -118.21591999960827 36.456735999566774, -118.21851999989804 36.45863499990537, -118.22102000007288 36.459835000385, -118.22251999999798 36.46273500012023, -118.2238199996932 36.463635000255124, -118.22761999956327 36.464535000390015, -118.23021999985309 36.464535000390015, -118.23261999991303 36.46633499976048, -118.23261999991303 36.468834999935325, -118.2370199995733 36.47393500039999, -118.2370199995733 36.47703500036505, -118.24002000032272 36.477334999810466, -118.24271999982807 36.47933500031007, -118.24622000025278 36.48013500033005, -118.24992000000793 36.482435000275075, -118.24981999989302 36.484735000220155, -118.24891999975813 36.48653499959062, -118.24671999992802 36.488134999630574, -118.24162000036267 36.49023500024509, -118.23912000018782 36.490734999920335, -118.2379199997082 36.49223499984544, -118.23501999997296 36.49373499977048, -118.23672000012789 36.495635000155175, -118.23922100034883 36.496934999850396, -118.241421000179 36.500034999815455, -118.23812099998412 36.505835000185186, -118.23942099967934 36.509234999595606, -118.23742100007905 36.51163499965554, -118.23912100023392 36.512835000135226, -118.23902100011901 36.523634999955334, -118.24162100040883 36.52203499991538, -118.24692100020394 36.521535000240135, -118.24772100022398 36.52313500028009, -118.25092200034999 36.52563499955562, -118.25092200034999 36.52883499963559, -118.25012200033001 36.53093500025011, -118.24862200040496 36.53273499962057, -118.25042199977543 36.536034999815456, -118.24992200010018 36.537734999970326, -118.25192199970047 36.54013500003026, -118.25202199981538 36.542134999630605, -118.25842199997527 36.54333500011023, -118.26022200024511 36.54413500013021, -118.26162200005524 36.546034999615586, -118.26122199959559 36.54743500032504, -118.26532299985655 36.55153499964058, -118.26742299957175 36.55183499998532, -118.27272300026624 36.55163499975549, -118.27492300009635 36.5505350002901, -118.27802300006135 36.55333499991036, -118.27942299987149 36.555135000180144, -118.2862229995917 36.556635000105246, -118.29052300003639 36.55853499959062, -118.29122299994145 36.5593349996106, -118.29212300007634 36.56273499992034, -118.29132300005637 36.56473500042, -118.29232300030617 36.56553500043998, -118.29242399956792 36.56903499996531, -118.29184399980073 36.57047499982144, -118.28982400017742 36.57213499993037, -118.28982400017742 36.573235000295085, -118.29412399972279 36.57633500026009, -118.29412399972279 36.57743499972548, -118.29222400023741 36.57883500043499, -118.29302400025739 36.57923499999532, -118.28802399990764 36.58373399972436, -118.28782399967781 36.5850340003189, -118.28932399960286 36.588433999729375, -118.28902400015744 36.5907339996744, -118.2831239996728 36.59083399978931, -118.27802400010751 36.592333999714356, -118.27542399981769 36.59563399990924, -118.27462399979771 36.59733400006411, -118.28022399993762 36.60213400018404, -118.28162499979385 36.60453400024397, -118.28592500023854 36.603333999764345, -118.29082499957406 36.603734000223994, -118.29392500043838 36.60513400003413, -118.29452500022853 36.60643399972935, -118.29702500040344 36.60733399986424, -118.29822499998374 36.60923400024899, -118.29792499963901 36.61113399973436, -118.30102499960401 36.612534000443816, -118.30262499964397 36.61543400017899, -118.3019249997389 36.6181339996844, -118.30572499960903 36.620334000413834, -118.30752499987881 36.62043399962943, -118.3103250003984 36.62223399989921, -118.31102600034961 36.62493400030394, -118.31652600037461 36.62593399965442, -118.32082599991992 36.62703400001914, -118.32022600012976 36.633133999834286, -118.320725999805 36.63513400033389, -118.32032600024468 36.63723400004909, -118.31892600043454 36.638433999629456, -118.32222599973005 36.641434000378865, -118.32332600009477 36.644434000228955, -118.3252259995802 36.647133999734365, -118.3281260002147 36.648033999869256, -118.33492699998101 36.65263399975936, -118.33642699990611 36.65303400021901, -118.33757899997084 36.654800999866325))" 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 new file mode 100644 index 000000000..602be9014 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/dot_travel_composite/test_etl.py @@ -0,0 +1,46 @@ +import pathlib + +import geopandas as gpd +from data_pipeline.etl.sources.dot_travel_composite.etl import ( + TravelCompositeETL, +) +from data_pipeline.tests.sources.example.test_etl import TestETL + + +class TestTravelCompositeETL(TestETL): + _ETL_CLASS = TravelCompositeETL + + _SAMPLE_DATA_PATH = pathlib.Path(__file__).parents[0] / "data" + _SAMPLE_DATA_FILE_NAME = "DOT_Disadvantage_Layer_Final_April2022.shp" + _SAMPLE_DATA_ZIP_FILE_NAME = "Shapefile_and_Metadata.zip" + _EXTRACT_TMP_FOLDER_NAME = "TravelCompositeETL" + + def setup_method(self, _method, filename=__file__): + """Invoke `setup_method` from Parent, but using the current file name. + + This code can be copied identically between all child classes. + """ + super().setup_method(_method=_method, filename=filename) + + def test_extract_produces_valid_data(self, mock_etl, mock_paths): + etl = self._setup_etl_instance_and_run_extract( + mock_etl=mock_etl, + mock_paths=mock_paths, + ) + df = gpd.read_file( + etl.get_tmp_path() / self._SAMPLE_DATA_FILE_NAME, + dtype={etl.GEOID_TRACT_FIELD_NAME: str}, + ) + assert df.shape[0] == 30 + assert df.shape[1] == 86 + + def test_transform_removes_blank_tracts(self, mock_etl, mock_paths): + etl: TravelCompositeETL = self._setup_etl_instance_and_run_extract( + mock_etl=mock_etl, + mock_paths=mock_paths, + ) + etl.transform() + etl.load() + df = etl.get_data_frame() + assert df.shape[0] == 15 + assert df.shape[1] == len(etl.COLUMNS_TO_KEEP) diff --git a/data/data-pipeline/data_pipeline/tests/sources/eamlis/__init__.py b/data/data-pipeline/data_pipeline/tests/sources/eamlis/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/data/data-pipeline/data_pipeline/tests/sources/eamlis/data/eAMLIS export of all data.tsv.zip b/data/data-pipeline/data_pipeline/tests/sources/eamlis/data/eAMLIS export of all data.tsv.zip new file mode 100644 index 000000000..d4729a9f1 Binary files /dev/null and b/data/data-pipeline/data_pipeline/tests/sources/eamlis/data/eAMLIS export of all data.tsv.zip differ diff --git a/data/data-pipeline/data_pipeline/tests/sources/eamlis/data/extract.csv b/data/data-pipeline/data_pipeline/tests/sources/eamlis/data/extract.csv new file mode 100644 index 000000000..8e8f79062 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/eamlis/data/extract.csv @@ -0,0 +1,16 @@ +AMLIS Key State/Tribe County Congressional District Quadrangle Name Watershed HUC Code FIPS Code Latitude Longitude Funding Source / Program Problem Area Name Problem Area Number Planning Unit Name Planning Unit Number Problem Priority Problem Type Mining Type Ore Types Date Prepared Date Revised Private Owner % State Owner % Other Federal Owner % Park Service Owner % Forest Service Owner % Indian Owner % BLM Owner % Unfunded Standard Units Unfunded Costs Unfunded GPRA Acres Unfunded Metric Units Funded Standard Units Funded Costs Funded GPRA Acres Funded Metric Units Completed Standard Units Completed Costs Completed GPRA Acres Completed Metric Units Unnamed: 40 +CA000001 CA MATANUSKA-SUSITNA 1.0 ANCHORAGE C-8 02170 36.25161281807095 -117.11772856883819 FRA EAST HOUSTON MINE 1 HOUSTON 1 1 VO S 12/3/1986 12:00:00 AM 4/23/2014 6:40:28 PM 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 10000.0 0.2 2.0 +CA000002 CA MATANUSKA-SUSITNA 1.0 ANCHORAGE C-8 02170 36.5498780497345 -121.0070599015156 FRA EAST HOUSTON MINE 1 HOUSTON 1 1 VO S 12/3/1986 12:00:00 AM 4/23/2014 6:40:28 PM 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 10000.0 0.2 2.0 +CA000003 CA MATANUSKA-SUSITNA 1.0 ANCHORAGE C-8 02170 38.84602113669345 -121.40564726784282 FRA EAST HOUSTON MINE 1 HOUSTON 1 1 VO S 12/3/1986 12:00:00 AM 4/23/2014 6:40:28 PM 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 10000.0 0.2 2.0 +HI000004 HI MATANUSKA-SUSITNA 1.0 ANCHORAGE C-8 02170 19.49784370888389 -155.10321769858746 FRA EAST HOUSTON MINE 1 HOUSTON 1 1 VO S 12/3/1986 12:00:00 AM 4/23/2014 6:40:28 PM 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 10000.0 0.2 2.0 +HI000005 HI MATANUSKA-SUSITNA 1.0 ANCHORAGE C-8 02170 19.446650238354696 -154.89548634140738 FRA EAST HOUSTON MINE 1 HOUSTON 1 1 VO S 12/3/1986 12:00:00 AM 4/23/2014 6:40:28 PM 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 10000.0 0.2 2.0 +HI000006 HI MATANUSKA-SUSITNA 1.0 ANCHORAGE C-8 02170 21.904412260968197 -159.43665201302525 FRA EAST HOUSTON MINE 1 HOUSTON 1 1 VO S 12/3/1986 12:00:00 AM 4/23/2014 6:40:28 PM 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 10000.0 0.2 2.0 +HI000007 HI MATANUSKA-SUSITNA 1.0 ANCHORAGE C-8 02170 21.94208315793464 -159.52362041178708 FRA EAST HOUSTON MINE 1 HOUSTON 1 1 VO S 12/3/1986 12:00:00 AM 4/23/2014 6:40:28 PM 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 10000.0 0.2 2.0 +HI000008 HI MATANUSKA-SUSITNA 1.0 ANCHORAGE C-8 02170 20.72796381691298 -156.14177664396527 FRA EAST HOUSTON MINE 1 HOUSTON 1 1 VO S 12/3/1986 12:00:00 AM 4/23/2014 6:40:28 PM 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 10000.0 0.2 2.0 +HI000009 HI MATANUSKA-SUSITNA 1.0 ANCHORAGE C-8 02170 20.86486713282688 -156.2497797752935 FRA EAST HOUSTON MINE 1 HOUSTON 1 1 VO S 12/3/1986 12:00:00 AM 4/23/2014 6:40:28 PM 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 10000.0 0.2 2.0 +HI000010 HI MATANUSKA-SUSITNA 1.0 ANCHORAGE C-8 02170 19.516629328900667 -155.91378867633992 FRA EAST HOUSTON MINE 1 HOUSTON 1 1 VO S 12/3/1986 12:00:00 AM 4/23/2014 6:40:28 PM 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 10000.0 0.2 2.0 +HI000011 HI MATANUSKA-SUSITNA 1.0 ANCHORAGE C-8 02170 20.164406070883054 -155.81110884967674 FRA EAST HOUSTON MINE 1 HOUSTON 1 1 VO S 12/3/1986 12:00:00 AM 4/23/2014 6:40:28 PM 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 10000.0 0.2 2.0 +HI000012 HI MATANUSKA-SUSITNA 1.0 ANCHORAGE C-8 02170 20.825369670478306 -156.33064622489087 FRA EAST HOUSTON MINE 1 HOUSTON 1 1 VO S 12/3/1986 12:00:00 AM 4/23/2014 6:40:28 PM 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 10000.0 0.2 2.0 +HI000013 HI MATANUSKA-SUSITNA 1.0 ANCHORAGE C-8 02170 20.9170439162332 -156.54289869319305 FRA EAST HOUSTON MINE 1 HOUSTON 1 1 VO S 12/3/1986 12:00:00 AM 4/23/2014 6:40:28 PM 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 10000.0 0.2 2.0 +HI000014 HI MATANUSKA-SUSITNA 1.0 ANCHORAGE C-8 02170 21.556464980367483 -157.89225964427064 FRA EAST HOUSTON MINE 1 HOUSTON 1 1 VO S 12/3/1986 12:00:00 AM 4/23/2014 6:40:28 PM 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 10000.0 0.2 2.0 +HI000015 HI MATANUSKA-SUSITNA 1.0 ANCHORAGE C-8 02170 21.90754283544759 -159.48416846823164 FRA EAST HOUSTON MINE 1 HOUSTON 1 1 VO S 12/3/1986 12:00:00 AM 4/23/2014 6:40:28 PM 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 10000.0 0.2 2.0 diff --git a/data/data-pipeline/data_pipeline/tests/sources/eamlis/data/output.csv b/data/data-pipeline/data_pipeline/tests/sources/eamlis/data/output.csv new file mode 100644 index 000000000..87d5ca8d0 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/eamlis/data/output.csv @@ -0,0 +1,16 @@ +GEOID10_TRACT,Is there at least one abandoned mine in this census tract? +06027000800,True +06069000802,True +06061021322,True +15001021010,True +15001021101,True +15007040603,True +15007040700,True +15009030100,True +15009030201,True +15001021402,True +15001021800,True +15009030402,True +15009030800,True +15003010201,True +15007040604,True diff --git a/data/data-pipeline/data_pipeline/tests/sources/eamlis/data/transform.csv b/data/data-pipeline/data_pipeline/tests/sources/eamlis/data/transform.csv new file mode 100644 index 000000000..87d5ca8d0 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/eamlis/data/transform.csv @@ -0,0 +1,16 @@ +GEOID10_TRACT,Is there at least one abandoned mine in this census tract? +06027000800,True +06069000802,True +06061021322,True +15001021010,True +15001021101,True +15007040603,True +15007040700,True +15009030100,True +15009030201,True +15001021402,True +15001021800,True +15009030402,True +15009030800,True +15003010201,True +15007040604,True 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 new file mode 100644 index 000000000..f99949772 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/eamlis/test_etl.py @@ -0,0 +1,157 @@ +# pylint: disable=protected-access +import pathlib +from unittest import mock + +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 + +logger = get_module_logger(__name__) + + +def _fake_add_tracts_for_geometries(df): + """The actual geojoin is too slow for tests. Use precomputed results.""" + lookups = { + (-117.1177285688382, 36.25161281807095): "06027000800", + (-121.0070599015156, 36.5498780497345): "06069000802", + (-121.40564726784282, 38.84602113669345): "06061021322", + (-155.10321769858746, 19.49784370888389): "15001021010", + (-154.89548634140738, 19.446650238354696): "15001021101", + (-159.43665201302525, 21.9044122609682): "15007040603", + (-159.52362041178708, 21.94208315793464): "15007040700", + (-156.14177664396527, 20.72796381691298): "15009030100", + (-156.2497797752935, 20.86486713282688): "15009030201", + (-155.91378867633992, 19.516629328900667): "15001021402", + (-155.81110884967674, 20.164406070883054): "15001021800", + (-156.33064622489087, 20.825369670478302): "15009030402", + (-156.54289869319305, 20.9170439162332): "15009030800", + (-157.89225964427064, 21.556464980367483): "15003010201", + (-159.48416846823164, 21.90754283544759): "15007040604", + } + df["GEOID10_TRACT"] = df.geometry.apply( + lambda point: lookups[(point.x, point.y)] + ) + return df + + +class TestAbandondedLandMineETL(TestETL): + """Tests the Abandoned Mine Dataset ETL + + This uses pytest-snapshot. + To update individual snapshots: $ poetry run pytest + data_pipeline/tests/sources/eamlis/test_etl.py::TestClassNameETL:: + --snapshot-update + """ + + _ETL_CLASS = AbandonedMineETL + + _SAMPLE_DATA_PATH = pathlib.Path(__file__).parents[0] / "data" + _SAMPLE_DATA_FILE_NAME = "eAMLIS export of all data.tsv" + _SAMPLE_DATA_ZIP_FILE_NAME = "eAMLIS export of all data.tsv.zip" + _EXTRACT_TMP_FOLDER_NAME = "AbandonedMineETL" + + def setup_method(self, _method, filename=__file__): + """Invoke `setup_method` from Parent, but using the current file name. + + This code can be copied identically between all child classes. + """ + super().setup_method(_method=_method, filename=filename) + + def test_init(self, mock_etl, mock_paths): + """Tests that the mock class instance was + initiliazed correctly. + """ + # setup + etl = self._get_instance_of_etl_class() + # validation + assert etl.GEOID_FIELD_NAME == "GEOID10" + assert etl.GEOID_TRACT_FIELD_NAME == "GEOID10_TRACT" + assert etl.NAME == "eamlis" + assert etl.GEO_LEVEL == ValidGeoLevel.CENSUS_TRACT + assert etl.COLUMNS_TO_KEEP == [ + etl.GEOID_TRACT_FIELD_NAME, + etl.AML_BOOLEAN, + ] + + def test_get_output_file_path(self, mock_etl, mock_paths): + """Tests the right file name is returned.""" + etl = self._get_instance_of_etl_class() + data_path, tmp_path = mock_paths + + output_file_path = etl._get_output_file_path() + expected_output_file_path = ( + data_path / "dataset" / self._ETL_CLASS.NAME / "usa.csv" + ) + assert output_file_path == expected_output_file_path + + def test_fixtures_contain_shared_tract_ids_base(self, mock_etl, mock_paths): + with mock.patch( + "data_pipeline.etl.sources.eamlis.etl.add_tracts_for_geometries", + new=_fake_add_tracts_for_geometries, + ): + return super().test_fixtures_contain_shared_tract_ids_base( + mock_etl, mock_paths + ) + + def test_transform_base(self, snapshot, mock_etl, mock_paths): + with mock.patch( + "data_pipeline.etl.sources.eamlis.etl.add_tracts_for_geometries", + new=_fake_add_tracts_for_geometries, + ): + super().test_transform_base( + snapshot=snapshot, mock_etl=mock_etl, mock_paths=mock_paths + ) + + def test_transform_sets_output_df_base(self, mock_etl, mock_paths): + with mock.patch( + "data_pipeline.etl.sources.eamlis.etl.add_tracts_for_geometries", + new=_fake_add_tracts_for_geometries, + ): + super().test_transform_sets_output_df_base( + mock_etl=mock_etl, mock_paths=mock_paths + ) + + def test_validate_base(self, mock_etl, mock_paths): + with mock.patch( + "data_pipeline.etl.sources.eamlis.etl.add_tracts_for_geometries", + new=_fake_add_tracts_for_geometries, + ): + super().test_validate_base(mock_etl=mock_etl, mock_paths=mock_paths) + + def test_full_etl_base(self, mock_etl, mock_paths): + with mock.patch( + "data_pipeline.etl.sources.eamlis.etl.add_tracts_for_geometries", + new=_fake_add_tracts_for_geometries, + ): + return super().test_full_etl_base(mock_etl, mock_paths) + + def test_get_data_frame_base(self, mock_etl, mock_paths): + with mock.patch( + "data_pipeline.etl.sources.eamlis.etl.add_tracts_for_geometries", + new=_fake_add_tracts_for_geometries, + ): + return super().test_get_data_frame_base(mock_etl, mock_paths) + + def test_tracts_without_fuds_not_in_results(self, mock_etl, mock_paths): + with mock.patch( + "data_pipeline.etl.sources.eamlis.etl.add_tracts_for_geometries", + new=_fake_add_tracts_for_geometries, + ): + etl = self._setup_etl_instance_and_run_extract( + mock_etl=mock_etl, mock_paths=mock_paths + ) + etl.transform() + etl.validate() + etl.load() + df = etl.get_data_frame() + assert len(df[etl.GEOID_TRACT_FIELD_NAME]) == len( + self._FIXTURES_SHARED_TRACT_IDS + ) + + def test_tract_id_lengths(self, mock_etl, mock_paths): + with mock.patch( + "data_pipeline.etl.sources.eamlis.etl.add_tracts_for_geometries", + new=_fake_add_tracts_for_geometries, + ): + super().test_tract_id_lengths(mock_etl, mock_paths) diff --git a/data/data-pipeline/data_pipeline/tests/sources/ejscreen/__init__.py b/data/data-pipeline/data_pipeline/tests/sources/ejscreen/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/data/data-pipeline/data_pipeline/tests/sources/ejscreen/data/EJSCREEN_2021_USPR_Tracts.csv.zip b/data/data-pipeline/data_pipeline/tests/sources/ejscreen/data/EJSCREEN_2021_USPR_Tracts.csv.zip new file mode 100644 index 000000000..5ea1817b9 Binary files /dev/null and b/data/data-pipeline/data_pipeline/tests/sources/ejscreen/data/EJSCREEN_2021_USPR_Tracts.csv.zip differ diff --git a/data/data-pipeline/data_pipeline/tests/sources/ejscreen/data/extract.csv b/data/data-pipeline/data_pipeline/tests/sources/ejscreen/data/extract.csv new file mode 100644 index 000000000..a4f5266e9 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/ejscreen/data/extract.csv @@ -0,0 +1,16 @@ +OBJECTID,ID,ACSTOTPOP,ACSIPOVBAS,ACSEDUCBAS,ACSTOTHH,ACSTOTHU,ACSUNEMPBAS,MINORPOP,MINORPCT,LOWINCOME,LOWINCPCT,LESSHS,LESSHSPCT,LINGISO,LINGISOPCT,UNDER5,UNDER5PCT,OVER64,OVER64PCT,UNEMP,UNEMPPCT,PRE1960,PRE1960PCT,VULEOPCT,VULSVI6PCT,VULEO,VULSVI6,DISPEO,DISPSVI6,DSLPM,CANCER,RESP,PTRAF,PWDIS,PNPL,PRMP,PTSDF,OZONE,PM25,UST,D_LDPNT_2,D_DSLPM_2,D_CANCR_2,D_RESP_2,D_PTRAF_2,D_PWDIS_2,D_PNPL_2,D_PRMP_2,D_PTSDF_2,D_OZONE_2,D_PM25_2,D_UST_2,STATE_NAME,ST_ABBREV,REGION,P_MINORPCT,P_LWINCPCT,P_LESHSPCT,P_LNGISPCT,P_UNDR5PCT,P_OVR64PCT,P_UNEMP,P_UNEMPPCT,P_LDPNT,P_VULEOPCT,P_VULSVI6PCT,P_VULSVI6,P_DISPSVI6,P_DSLPM,P_CANCR,P_RESP,P_PTRAF,P_PWDIS,P_PNPL,P_PRMP,P_PTSDF,P_OZONE,P_PM25,P_UST,P_LDPNT_D2,P_DSLPM_D2,P_CANCR_D2,P_RESP_D2,P_PTRAF_D2,P_PWDIS_D2,P_PNPL_D2,P_PRMP_D2,P_PTSDF_D2,P_OZONE_D2,P_PM25_D2,P_UST_D2,B_MINORPCT,B_LWINCPCT,B_LESHSPCT,B_LNGISPCT,B_UNDR5PCT,B_OVR64PCT,B_UNEMP,B_UNEMPPCT,B_LDPNT,B_VULEOPCT,B_VULSVI6PCT,B_VULSVI6,B_DISPSVI6,B_DSLPM,B_CANCR,B_RESP,B_PTRAF,B_PWDIS,B_PNPL,B_PRMP,B_PTSDF,B_OZONE,B_PM25,B_UST,B_LDPNT_D2,B_DSLPM_D2,B_CANCR_D2,B_RESP_D2,B_PTRAF_D2,B_PWDIS_D2,B_PNPL_D2,B_PRMP_D2,B_PTSDF_D2,B_OZONE_D2,B_PM25_D2,B_UST_D2,T_MINORPCT,T_LWINCPCT,T_LESHSPCT,T_LNGISPCT,T_UNDR5PCT,T_OVR64PCT,T_UNEMPPCT,T_VULEOPCT,T_LDPNT,T_LDPNT_D2,T_DSLPM,T_DSLPM_D2,T_CANCR,T_CANCR_D2,T_RESP,T_RESP_D2,T_PTRAF,T_PTRAF_D2,T_PWDIS,T_PWDIS_D2,T_PNPL,T_PNPL_D2,T_PRMP,T_PRMP_D2,T_PTSDF,T_PTSDF_D2,T_OZONE,T_OZONE_D2,T_PM25,T_PM25_D2,T_UST,T_UST_D2,AREALAND,AREAWATER,NPL_CNT,TSDF_CNT,Shape_Length,Shape_Area +4529,6027000800,3054,3009,2337,1420,2067,1443,1218,0.3988212181,1210,0.4021269525,475,0.2032520325,134,0.0943661972,129,0.0422396857,747,0.2445972495,62,0.0429660430,763,0.3691340106,0.4004740853,0.2309005559,1223.0478564307,705.1702977293,135.9429095904,144.8520486255,0.0162608457,20.0000000000,0.2000000000,134.3731709435,0.0000000476,0.0088169702,0.0161739005,0.0231458734,59.8143830065,5.9332945205,0.0271801764,50.1811514356,2.2105466749,2718.8581918080,27.1885819181,18267.0798289539,0.0000064773,1.1986045786,2.1987270931,3.1465173743,8131.3412612630,806.5893205801,3.6949522625,California,CA,9,58.2565807824,70.8357682483,82.0300855712,83.4211514441,22.4791060804,91.4310072487,20.6342392033,44.8003303446,69.4492207493,64.4805710566,73.9747591523,41.2001973366,69.9936559849,0.4881982980,32.2031638835,14.4688811492,33.6358789383,2.7793036790,3.1380644255,0.3541522801,2.0598614138,97.6642425963,3.6388096802,6.3535808084,71.4956721564,59.1319320934,61.5316181718,60.9745786385,62.4689837463,62.0864910202,59.8317854029,59.0710337447,59.2599060994,64.9284478117,62.2619591744,60.9702180540,6,8,9,9,3,10,3,5,7,7,8,5,7,1,4,2,4,1,1,1,1,11,1,1,8,6,7,7,7,7,6,6,6,7,7,7,40% (58%ile),40% (70%ile),20% (82%ile),9% (83%ile),4% (22%ile),24% (91%ile),4% (44%ile),40% (64%ile),0.37 = fraction pre-1960 (69%ile),71%ile,0.0163 ug/m3 (0%ile),59%ile,20 lifetime risk per million (32%ile),61%ile,0.2 (14%ile),60%ile,130 daily vehicles/meters distance (33%ile),62%ile,0.000000048 toxicity-weighted concentration/meters distance (2%ile),62%ile,0.0088 sites/km distance (3%ile),59%ile,0.016 facilities/km distance (0%ile),59%ile,0.023 facilities/km distance (2%ile),59%ile,59.8 ppb (97%ile),64%ile,5.93 ug/m3 (3%ile),62%ile,0.027 facilities/sq km area (6%ile),60%ile,17743852489.0000000000,41257887.0000000000,0,1,969231.5231135677,27404749177.8422279358 +8028,6061021322,20899,20874,13290,6549,6904,9172,9199,0.4401646012,3881,0.1859250743,825,0.0620767494,225,0.0343563903,1429,0.0683764773,2939,0.1406287382,312,0.0340165722,231,0.0334588644,0.3130448377,0.1552546718,6542.3240634282,3244.6673856589,-896.9052371663,-589.6780917541,0.1849562857,30.0000000000,0.5000000000,12.5173455346,0.2667203153,0.0687928975,0.4515663958,0.2027045525,52.7832287582,12.1102756164,0.0258826940,-30.0094307337,-165.8882612555,-26907.1571149896,-448.4526185832,-11226.8727654026,-239.2228476257,-61.7007100657,-405.0122653138,-181.8067747336,-47341.5543077505,-10861.7696239112,-23.2143238368,California,CA,9,61.7694531724,28.3124099080,32.2625612545,63.3138029183,65.9392366308,44.1611446180,92.1063805127,31.2336817151,19.3531578232,52.0599864076,48.1147912182,98.1253263672,8.5598852754,35.4160437794,83.7767623034,95.2520218071,6.7786023570,88.6613290583,53.5138135020,56.0049245976,28.8270859466,89.7745222973,94.2035706464,6.2511191138,43.0185694890,24.7769097248,17.2770098374,9.5647689629,49.9350307593,5.0850465016,20.5837755437,15.4478896201,34.6338200533,14.8104044330,10.3206402564,53.0011626680,7,3,4,7,7,5,10,4,2,6,5,11,1,4,9,11,1,9,6,6,3,9,10,1,5,3,2,1,5,1,3,2,4,2,2,6,44% (61%ile),19% (28%ile),6% (32%ile),3% (63%ile),7% (65%ile),14% (44%ile),3% (31%ile),31% (52%ile),0.033 = fraction pre-1960 (19%ile),43%ile,0.185 ug/m3 (35%ile),24%ile,30 lifetime risk per million (83%ile),17%ile,0.5 (95%ile),9%ile,13 daily vehicles/meters distance (6%ile),49%ile,0.27 toxicity-weighted concentration/meters distance (88%ile),5%ile,0.069 sites/km distance (53%ile),20%ile,0.45 facilities/km distance (56%ile),15%ile,0.2 facilities/km distance (28%ile),34%ile,52.8 ppb (89%ile),14%ile,12.1 ug/m3 (94%ile),10%ile,0.026 facilities/sq km area (6%ile),53%ile,258653359.0000000000,119890.0000000000,0,0,124755.3452199987,427225089.6229769588 +8849,6069000802,3049,3045,2076,955,1119,1493,1247,0.4089865530,747,0.2453201970,307,0.1478805395,31,0.0324607330,240,0.0787143326,468,0.1534929485,93,0.0622906899,390,0.3485254692,0.3271533750,0.1778092173,997.4906403941,542.1403034316,-87.8345013597,-17.2605942492,0.0375346206,20.0000000000,0.2000000000,15.7944927934,,0.0396183204,0.0811927061,0.1674220356,47.0434058824,7.4113546849,0.0102735941,-30.6125607956,-3.2968346872,-1756.6900271942,-17.5669002719,-1387.3013987358,,-3.4798554127,-7.1315208575,-14.7054310128,-4132.0340979390,-650.9726431509,-0.9023760119,California,CA,9,59.1858457424,41.3904741949,69.9513617378,62.0187896062,79.0518001240,52.1216510370,37.3180569516,68.3483551403,67.5701406274,54.3994266601,57.9926859232,26.1831217492,58.7612911558,2.0014414700,32.2031638835,14.4688811492,8.1570460385,,34.5749415665,10.3739430074,25.1131375379,84.5333172848,19.2864164585,4.9410824602,42.8621394303,58.0471933934,56.5430390950,57.0023528116,55.7266348497,,54.6373148803,57.1359685902,54.8116596007,56.2167239668,56.9568759225,56.2801621878,6,5,7,7,8,6,4,7,7,6,6,3,6,1,4,2,1,0,4,2,3,9,2,1,5,6,6,6,6,0,6,6,6,6,6,6,41% (59%ile),25% (41%ile),15% (69%ile),3% (62%ile),8% (79%ile),15% (52%ile),6% (68%ile),33% (54%ile),0.35 = fraction pre-1960 (67%ile),42%ile,0.0375 ug/m3 (2%ile),58%ile,20 lifetime risk per million (32%ile),56%ile,0.2 (14%ile),57%ile,16 daily vehicles/meters distance (8%ile),55%ile,,,0.04 sites/km distance (34%ile),54%ile,0.081 facilities/km distance (10%ile),57%ile,0.17 facilities/km distance (25%ile),54%ile,47 ppb (84%ile),56%ile,7.41 ug/m3 (19%ile),56%ile,0.01 facilities/sq km area (4%ile),56%ile,2987635876.0000000000,3272257.0000000000,1,0,422237.6856758550,4643687820.1565904617 +20324,15001021010,8606,8586,6124,3300,4089,3602,5362,0.6230536835,4430,0.5159562078,425,0.0693990856,36,0.0109090909,315,0.0366023704,1715,0.1992795724,502,0.1393670183,46,0.0112496943,0.5695049456,0.2425333351,4901.1595620778,2087.2418818153,1837.7590471768,508.2966127298,0.0067389217,10.0000000000,0.1000000000,0.1074143214,,0.0027318608,0.0478749209,0.0931096253,,,0.0259838494,20.6742274811,12.3845143014,18377.5904717679,183.7759047177,197.4016409694,,5.0205019537,87.9825690670,171.1130563323,,,47.7520542990,Hawaii,HI,9,74.7108013633,85.0291087110,36.7675143964,39.4832933303,15.2054293702,77.9602931979,98.1974410889,95.8100562593,9.2273848439,81.1726508957,76.5777942789,91.7961653862,85.2496673015,0.0699884723,1.8303662611,1.0748659980,0.5930748980,,0.1022787768,3.9663081684,14.5954101870,,,6.2654376121,66.8695670869,60.7245800447,74.1372134844,71.3832220072,58.5855777989,,62.7945832024,66.7236133386,67.8259227785,,,62.6039374599,8,9,4,4,2,8,11,11,1,9,8,10,9,1,1,1,1,0,1,1,2,0,0,1,7,7,8,8,6,0,7,7,7,0,0,7,62% (74%ile),52% (85%ile),7% (36%ile),1% (39%ile),4% (15%ile),20% (77%ile),14% (95%ile),57% (81%ile),0.011 = fraction pre-1960 (9%ile),66%ile,0.00674 ug/m3 (0%ile),60%ile,10 lifetime risk per million (1%ile),74%ile,0.1 (1%ile),71%ile,0.11 daily vehicles/meters distance (0%ile),58%ile,,,0.0027 sites/km distance (0%ile),62%ile,0.048 facilities/km distance (3%ile),66%ile,0.093 facilities/km distance (14%ile),67%ile,,,,,0.026 facilities/sq km area (6%ile),62%ile,151184621.0000000000,0.0000000000,0,0,71817.3979516648,171030272.0024483502 +20327,15001021101,3054,3049,2569,1543,1958,1227,1086,0.3555992141,1450,0.4755657593,159,0.0618917867,30,0.0194426442,92,0.0301244270,909,0.2976424361,144,0.1173594132,33,0.0168539326,0.4155824867,0.2067110446,1269.1889143982,631.2955301209,182.0839675579,70.9772810171,0.0033713587,10.0000000000,0.1000000000,1.7167679255,,0.0025910486,0.2484740667,0.2746856427,,,0.0375389154,3.0688309139,0.6138703733,1820.8396755785,18.2083967558,312.5959152482,,0.4717884163,45.2431438983,50.0158516497,,,6.8352346500,Hawaii,HI,9,53.9485559986,80.7725127831,32.1386664749,50.6977998974,9.0084816593,96.6414513706,60.5643076662,92.9519087655,12.2637725970,66.3100091245,67.7573127614,34.5728724616,65.2982705045,0.0304238852,1.8303662611,1.0748659980,2.1438079687,,0.0856704529,41.7496844562,33.9762800526,,,7.1437776548,61.7192931562,58.8385531222,60.6418036749,60.2753222588,58.6611251941,,59.1844884925,63.7189045047,63.4569851575,,,61.1560978740,6,9,4,6,1,11,7,10,2,7,7,4,7,1,1,1,1,0,1,5,4,0,0,1,7,6,7,7,6,0,6,7,7,0,0,7,36% (53%ile),48% (80%ile),6% (32%ile),2% (50%ile),3% (9%ile),30% (96%ile),12% (92%ile),42% (66%ile),0.017 = fraction pre-1960 (12%ile),61%ile,0.00337 ug/m3 (0%ile),58%ile,10 lifetime risk per million (1%ile),60%ile,0.1 (1%ile),60%ile,1.7 daily vehicles/meters distance (2%ile),58%ile,,,0.0026 sites/km distance (0%ile),59%ile,0.25 facilities/km distance (41%ile),63%ile,0.27 facilities/km distance (33%ile),63%ile,,,,,0.038 facilities/sq km area (7%ile),61%ile,106332317.0000000000,11164968.0000000000,0,1,61396.6485753379,132838116.6897320002 +20331,15001021402,3778,3755,2731,1374,1583,1803,3034,0.8030704076,705,0.1877496671,214,0.0783595752,56,0.0407569141,284,0.0751720487,933,0.2469560614,23,0.0127565169,276,0.1743524953,0.4954100374,0.2386774457,1871.6591211718,901.7233898617,526.8383978048,208.5726547229,0.0131608945,10.0000000000,0.1000000000,635.9981128640,,0.0033357209,0.0225482603,0.6278707343,,,0.5088713177,91.8555892572,6.9336645713,5268.3839780481,52.6838397805,335068.2267881447,,1.7573858477,11.8792893273,330.7864116735,,,268.0929496982,Hawaii,HI,9,84.7051677398,28.7308989413,41.8348284107,67.0398022547,74.9080519616,91.8116448026,3.9836481634,4.5613171192,47.5766504879,74.5975822746,75.7504514060,55.7976616902,73.4870488517,0.2827998785,1.8303662611,1.0748659980,72.8760884284,,0.2741900811,0.7727230166,47.2090589343,,,27.1111550629,75.5651255220,59.8939075539,64.0364159199,62.9860278691,78.3054903833,,60.2827950818,60.4356420863,71.4747506314,,,66.1787674526,9,3,5,7,8,10,1,1,5,8,8,6,8,1,1,1,8,0,1,1,5,0,0,3,8,6,7,7,8,0,7,7,8,0,0,7,80% (84%ile),19% (28%ile),8% (41%ile),4% (67%ile),8% (74%ile),25% (91%ile),1% (4%ile),50% (74%ile),0.17 = fraction pre-1960 (47%ile),75%ile,0.0132 ug/m3 (0%ile),59%ile,10 lifetime risk per million (1%ile),64%ile,0.1 (1%ile),62%ile,640 daily vehicles/meters distance (72%ile),78%ile,,,0.0033 sites/km distance (0%ile),60%ile,0.023 facilities/km distance (0%ile),60%ile,0.63 facilities/km distance (47%ile),71%ile,,,,,0.51 facilities/sq km area (27%ile),66%ile,41940841.0000000000,6313950.0000000000,0,1,49320.0395726063,54601507.7207057551 +20340,15001021800,5998,5977,4357,2112,2631,3179,4020,0.6702234078,1613,0.2698678267,180,0.0413128299,76,0.0359848485,352,0.0586862287,1411,0.2352450817,241,0.0758100031,441,0.1676168757,0.4700456172,0.2185533706,2819.3336121800,1310.8831165809,684.2794304026,210.4283496771,0.0049503455,10.0000000000,0.1000000000,0.0743045071,,0.0038298946,0.0402733327,0.0410968274,,,0.1071290552,114.6967802385,3.3874195708,6842.7943040262,68.4279430403,50.8450457862,,2.6207181028,27.5582131707,28.1217136206,,,73.3062089025,Hawaii,HI,9,77.3411360526,46.5995830170,19.2008132329,64.3649112351,50.1501995746,89.5998226210,84.7007475319,78.6950985799,46.5822171086,72.0610072717,71.0200691830,75.5958544882,73.5619777633,0.0461211856,1.8303662611,1.0748659980,0.4752886632,,0.3337575583,2.8011103792,5.4042726335,,,11.7520153164,77.1764003076,59.3164619569,65.4523902797,64.1879137098,58.4409328484,,60.9620163260,62.2019174282,62.1288554973,,,63.2369902585,8,5,2,7,6,9,9,8,5,8,8,8,8,1,1,1,1,0,1,1,1,0,0,2,8,6,7,7,6,0,7,7,7,0,0,7,67% (77%ile),27% (46%ile),4% (19%ile),4% (64%ile),6% (50%ile),24% (89%ile),8% (78%ile),47% (72%ile),0.17 = fraction pre-1960 (46%ile),77%ile,0.00495 ug/m3 (0%ile),59%ile,10 lifetime risk per million (1%ile),65%ile,0.1 (1%ile),64%ile,0.074 daily vehicles/meters distance (0%ile),58%ile,,,0.0038 sites/km distance (0%ile),60%ile,0.04 facilities/km distance (2%ile),62%ile,0.041 facilities/km distance (5%ile),62%ile,,,,,0.11 facilities/sq km area (11%ile),63%ile,365110254.0000000000,37900489.0000000000,0,0,92961.9049100969,459707845.8010936975 +20560,15003010201,4936,4798,3182,1441,1938,2266,3695,0.7485818476,1439,0.2999166319,231,0.0725958517,49,0.0340041638,476,0.0964343598,651,0.1318881686,115,0.0507502207,413,0.2131062951,0.5242492398,0.2305701706,2587.6942476032,1138.0943619037,830.6706662005,232.4850372225,0.0171119880,10.0000000000,0.1000000000,1493.8870892160,,0.0694550700,0.0548137804,0.4080845621,,,0.0995447326,177.0211481635,14.2144264416,8306.7066620049,83.0670666200,1240928.1836273719,,57.6942892272,45.5321994534,338.9838750865,,,82.6888893711,Hawaii,HI,9,81.7629198374,52.7224313484,38.5909198362,63.0702607098,91.9817357703,38.9013315993,48.2935747432,55.4563410918,53.0116816593,77.2470730276,73.8991238733,68.7030659293,74.5973100320,0.5552831600,1.8303662611,1.0748659980,88.8972054263,,53.8623224639,5.1063675682,39.9537688137,,,11.2751492958,80.6790478991,60.9966060167,66.7493132622,65.1696166202,90.1940360178,,78.6444132849,63.7434121326,71.6211763075,,,63.4227438652,9,6,4,7,10,4,5,6,6,8,8,7,8,1,1,1,9,0,6,1,4,0,0,2,9,7,7,7,10,0,8,7,8,0,0,7,75% (81%ile),30% (52%ile),7% (38%ile),3% (63%ile),10% (91%ile),13% (38%ile),5% (55%ile),52% (77%ile),0.21 = fraction pre-1960 (53%ile),80%ile,0.0171 ug/m3 (0%ile),60%ile,10 lifetime risk per million (1%ile),66%ile,0.1 (1%ile),65%ile,1500 daily vehicles/meters distance (88%ile),90%ile,,,0.069 sites/km distance (53%ile),78%ile,0.055 facilities/km distance (5%ile),63%ile,0.41 facilities/km distance (39%ile),71%ile,,,,,0.1 facilities/sq km area (11%ile),63%ile,66256288.0000000000,7249455.0000000000,0,0,42997.4044651793,85395519.3857139796 +20614,15007040603,2984,2978,2104,1058,2064,1468,2011,0.6739276139,797,0.2676292814,138,0.0655893536,33,0.0311909263,168,0.0563002681,756,0.2533512064,64,0.0435967302,193,0.0935077519,0.4707784477,0.2246647750,1404.8028878442,670.3996884791,342.6152122150,122.9243592959,0.0225796264,10.0000000000,0.1000000000,255.5966484444,,0.0065810172,0.1042895043,0.5200441984,,,0.1610354485,32.0371782740,7.7361234992,3426.1521221502,34.2615212215,87571.2999482384,,2.2547565999,35.7311706322,178.1750534077,,,55.1731943631,Hawaii,HI,9,77.5456369017,46.0970850340,34.4418368771,61.1045870101,46.0008635792,92.7630589707,21.6211577108,45.6650954498,34.4080455626,72.1367523014,72.5017628853,38.1901457794,68.6478207991,0.9188048692,1.8303662611,1.0748659980,48.7907692784,,1.7474241413,15.4267424965,43.8004140051,,,14.6634418792,68.8698351102,60.0337698662,62.2468364816,61.5558275260,68.4712288534,,60.6727330898,62.8928664453,68.0134997705,,,62.8256530053,8,5,4,7,5,10,3,5,4,8,8,4,7,1,1,1,5,0,1,2,5,0,0,2,7,7,7,7,7,0,7,7,7,0,0,7,67% (77%ile),27% (46%ile),7% (34%ile),3% (61%ile),6% (46%ile),25% (92%ile),4% (45%ile),47% (72%ile),0.094 = fraction pre-1960 (34%ile),68%ile,0.0226 ug/m3 (0%ile),60%ile,10 lifetime risk per million (1%ile),62%ile,0.1 (1%ile),61%ile,260 daily vehicles/meters distance (48%ile),68%ile,,,0.0066 sites/km distance (1%ile),60%ile,0.1 facilities/km distance (15%ile),62%ile,0.52 facilities/km distance (43%ile),68%ile,,,,,0.16 facilities/sq km area (14%ile),62%ile,41255867.0000000000,7041518.0000000000,0,0,36855.9892981643,56378891.3118786365 +20615,15007040604,3529,3458,2370,1187,1625,1757,2203,0.6242561632,1275,0.3687102371,133,0.0561181435,42,0.0353833193,333,0.0943610088,632,0.1790875602,109,0.0620375640,322,0.1981538462,0.4964832002,0.2263194054,1752.0892134182,798.6811814815,495.9027833594,151.2145472028,0.0297040750,10.0000000000,0.1000000000,464.0468169721,,0.0064334940,0.1282189641,0.3810520320,,,0.2277699060,98.2650438411,14.7303334730,4959.0278335940,49.5902783359,230122.1081455294,,3.1903875793,63.5841411863,188.9647632974,,,112.9517303753,Hawaii,HI,9,74.7796778307,65.5138546463,28.4761545436,63.9820945208,90.9928060818,67.6211097498,45.4287763592,68.1087856009,51.0102487547,74.6953085329,72.8443904311,48.6363888652,70.3699602168,1.3729134893,1.8303662611,1.0748659980,64.8054389268,,1.7014251995,20.6071512154,38.9237463430,,,17.5743663328,76.0259182532,61.0699450431,63.7308514802,62.7533582560,75.0094643983,,61.3999056181,65.1045697304,68.3212418487,,,64.0124628341,8,7,3,7,10,7,5,7,6,8,8,5,8,1,1,1,7,0,1,3,4,0,0,2,8,7,7,7,8,0,7,7,7,0,0,7,62% (74%ile),37% (65%ile),6% (28%ile),4% (63%ile),9% (90%ile),18% (67%ile),6% (68%ile),50% (74%ile),0.2 = fraction pre-1960 (51%ile),76%ile,0.0297 ug/m3 (1%ile),61%ile,10 lifetime risk per million (1%ile),63%ile,0.1 (1%ile),62%ile,460 daily vehicles/meters distance (64%ile),75%ile,,,0.0064 sites/km distance (1%ile),61%ile,0.13 facilities/km distance (20%ile),65%ile,0.38 facilities/km distance (38%ile),68%ile,,,,,0.23 facilities/sq km area (17%ile),64%ile,21724894.0000000000,2371158.0000000000,0,1,27760.3117775823,28129042.7970332205 +20616,15007040700,9552,9523,6234,2895,3298,4974,7071,0.7402638191,1980,0.2079176730,309,0.0495668912,95,0.0328151986,772,0.0808207705,1834,0.1920016750,205,0.0412143144,346,0.1049120679,0.4740907460,0.2172310046,4528.5148062585,2074.9905558098,1128.3751689898,322.4823975128,0.0120486502,10.0000000000,0.1000000000,829.6297843840,,0.0062317499,0.2776903565,0.5315584393,,,0.8605507426,118.3801723682,13.5953976825,11283.7516898982,112.8375168990,936133.6481533048,,7.0317517976,313.3389029609,599.7973437979,,,971.0240895638,Hawaii,HI,9,81.2804870193,33.1925490446,24.3539720817,62.2442189921,81.2507708079,74.5290795692,78.3337372056,42.2880946853,36.4589583341,72.4690666385,70.6843205648,91.6638490724,78.6800785920,0.2182262554,1.8303662611,1.0748659980,78.8807149861,,1.6540510210,44.6852775053,44.1677595343,,,35.8025350464,77.4223719690,60.9007569981,69.0968995957,67.2008685709,87.5969776098,,64.0977043448,75.6532891441,75.2184280558,,,72.0462363568,9,4,3,7,9,8,8,5,4,8,8,10,8,1,1,1,8,0,1,5,5,0,0,4,8,7,7,7,9,0,7,8,8,0,0,8,74% (81%ile),21% (33%ile),5% (24%ile),3% (62%ile),8% (81%ile),19% (74%ile),4% (42%ile),47% (72%ile),0.1 = fraction pre-1960 (36%ile),77%ile,0.012 ug/m3 (0%ile),60%ile,10 lifetime risk per million (1%ile),69%ile,0.1 (1%ile),67%ile,830 daily vehicles/meters distance (78%ile),87%ile,,,0.0062 sites/km distance (1%ile),64%ile,0.28 facilities/km distance (44%ile),75%ile,0.53 facilities/km distance (44%ile),75%ile,,,,,0.86 facilities/sq km area (35%ile),72%ile,93005151.0000000000,5658877.0000000000,0,1,70950.4293149945,115233329.7073323578 +20624,15009030100,1405,1374,980,467,796,729,1060,0.7544483986,400,0.2911208151,44,0.0448979592,0,0.0000000000,124,0.0882562278,342,0.2434163701,41,0.0562414266,170,0.2135678392,0.5227846069,0.2370232951,734.5123726346,333.0177296537,234.3871433253,75.2419798205,0.0026846006,10.0000000000,0.1000000000,,,0.0046765532,0.0398066625,0.0329594792,,,0.0973247551,50.0575557353,0.6292358547,2343.8714332533,23.4387143325,,,1.0961239415,9.3301699117,7.7252781836,,,22.8116713113,Hawaii,HI,9,82.0728020535,51.0042892937,21.4097431797,22.2149776961,87.3264635475,91.2196103997,10.4895772204,61.9590696975,53.0589655984,77.1174117652,75.3619764353,7.5930221772,65.5506156308,0.0292580509,1.8303662611,1.0748659980,,,0.7827594098,2.7444494654,3.8365691660,,,11.1452377410,71.4770935032,58.8413451490,61.1806956436,60.6714580607,,,59.7579323526,60.0938330974,59.9756316335,,,61.8121208766,9,6,3,3,9,10,2,7,6,8,8,1,7,1,1,1,0,0,1,1,1,0,0,2,8,6,7,7,0,0,6,7,6,0,0,7,75% (82%ile),29% (51%ile),4% (21%ile),0% (22%ile),9% (87%ile),24% (91%ile),6% (61%ile),52% (77%ile),0.21 = fraction pre-1960 (53%ile),71%ile,0.00268 ug/m3 (0%ile),58%ile,10 lifetime risk per million (1%ile),61%ile,0.1 (1%ile),60%ile,,,,,0.0047 sites/km distance (0%ile),59%ile,0.04 facilities/km distance (2%ile),60%ile,0.033 facilities/km distance (3%ile),59%ile,,,,,0.097 facilities/sq km area (11%ile),61%ile,555262221.0000000000,25398369.0000000000,0,0,165450.9181509207,667169893.1947253942 +20625,15009030201,2340,2327,1879,842,1045,1395,992,0.4239316239,623,0.2677266867,62,0.0329962746,0,0.0000000000,150,0.0641025641,554,0.2367521368,133,0.0953405018,97,0.0928229665,0.3458291553,0.1709182144,809.2402234637,399.9486215874,-23.7085570230,-29.3718443271,0.0063521816,10.0000000000,0.1000000000,7.0868595222,,0.0053511202,0.1292001112,0.0908033666,,,0.0098923140,-2.2006985945,-0.1506010605,-237.0855702299,-2.3708557023,-168.0192130960,,-0.1268673373,-3.0631482031,-2.1528167944,,,-0.2345324900,Hawaii,HI,9,60.4734810662,46.1223337837,13.8610651481,22.2149776961,59.2951174656,89.9006101655,56.2295738392,87.6116027815,34.2663836750,57.2620275919,55.1869446757,12.9269845729,57.7176364334,0.0651806253,1.8303662611,1.0748659980,4.6368984700,,1.3707744996,20.8229399202,14.1722671160,,,4.9075810703,55.1341860078,58.6779670685,58.4263245996,58.4806520514,57.3658121936,,58.5702573228,58.1201119303,58.2216584263,,,56.4332033900,7,5,2,3,6,9,6,9,4,6,6,2,6,1,1,1,1,0,1,3,2,0,0,1,6,6,6,6,6,0,6,6,6,0,0,6,42% (60%ile),27% (46%ile),3% (13%ile),0% (22%ile),6% (59%ile),24% (89%ile),10% (87%ile),35% (57%ile),0.093 = fraction pre-1960 (34%ile),55%ile,0.00635 ug/m3 (0%ile),58%ile,10 lifetime risk per million (1%ile),58%ile,0.1 (1%ile),58%ile,7.1 daily vehicles/meters distance (4%ile),57%ile,,,0.0054 sites/km distance (1%ile),58%ile,0.13 facilities/km distance (20%ile),58%ile,0.091 facilities/km distance (14%ile),58%ile,,,,,0.0099 facilities/sq km area (4%ile),56%ile,118113265.0000000000,4116462.0000000000,0,0,68639.8224567451,140691933.2772550285 +20629,15009030402,8562,8562,6540,3180,3473,4778,5420,0.6330296660,1535,0.1792805419,294,0.0449541284,39,0.0122641509,397,0.0463676711,1550,0.1810324690,210,0.0439514441,264,0.0760149726,0.4061551039,0.1828214379,3477.5000000000,1565.3171513473,429.7617698603,-5.5554252167,0.0153866969,10.0000000000,0.1000000000,233.6880574427,,0.0055146115,0.6633705951,0.5914191729,,,0.4432670413,32.6683291803,6.6126141119,4297.6176986027,42.9761769860,100430.1931617688,,2.3699691830,285.0913210180,254.1693504667,,,190.4992282028,Hawaii,HI,9,75.2886221409,26.8565530362,21.4439231945,41.5097856648,28.7449442824,68.6690121278,79.3833218173,46.1798708736,30.8409993308,65.1595288992,59.9703175674,82.9721886150,59.7346670413,0.4238414396,1.8303662611,1.0748659980,46.4851154373,,1.4363834459,65.6894718646,46.0793962757,,,25.2542546354,68.9789876320,59.8548490559,63.0853618909,62.2063722143,69.2554009969,,60.7689024131,74.9199434460,69.9134569074,,,65.2067338787,8,3,3,5,3,7,8,5,4,7,6,9,6,1,1,1,5,0,1,7,5,0,0,3,7,6,7,7,7,0,7,8,7,0,0,7,63% (75%ile),18% (26%ile),4% (21%ile),1% (41%ile),5% (28%ile),18% (68%ile),4% (46%ile),41% (65%ile),0.076 = fraction pre-1960 (30%ile),68%ile,0.0154 ug/m3 (0%ile),59%ile,10 lifetime risk per million (1%ile),63%ile,0.1 (1%ile),62%ile,230 daily vehicles/meters distance (46%ile),69%ile,,,0.0055 sites/km distance (1%ile),60%ile,0.66 facilities/km distance (65%ile),74%ile,0.59 facilities/km distance (46%ile),69%ile,,,,,0.44 facilities/sq km area (25%ile),65%ile,46066876.0000000000,109238.0000000000,0,1,49929.5140313853,53123180.2369696796 +20639,15009030800,7879,7871,5174,2235,2335,4210,6161,0.7819520244,1091,0.1386100877,195,0.0376884422,3,0.0013422819,594,0.0753902780,1027,0.1303464907,163,0.0387173397,285,0.1220556745,0.4602810560,0.1942216008,3626.5544403507,1530.2719926347,821.9375850282,84.7096204381,0.0169064550,10.0000000000,0.1000000000,575.9991000531,0.0008675195,0.0061499864,1.0347888110,0.5999348163,,,0.0263640121,100.3221463525,13.8960508008,8219.3758502819,82.1937585028,473435.3092760353,0.7130468458,5.0549049971,850.5318163110,493.1089740953,,,21.6695724544,Hawaii,HI,9,83.5697361596,17.7978784355,16.7867123482,22.7576898463,75.1762179508,37.9999341618,67.3605976499,38.4952526223,39.4719140158,71.0499579469,63.9144112870,82.0845801288,66.2238170511,0.5328167647,1.8303662611,1.0748659980,70.4238972397,46.4801242962,1.6311542890,76.8934515139,46.3897571267,,,6.2894452647,76.1966079716,60.9434745816,66.6801583126,65.1083356253,81.3398307482,78.4421389238,62.8183222708,84.3474497827,73.9856189804,,,61.7713841743,9,2,2,3,8,4,7,4,4,8,7,9,7,1,1,1,8,5,1,8,5,0,0,1,8,7,7,7,9,8,7,9,8,0,0,7,78% (83%ile),14% (17%ile),4% (16%ile),0% (22%ile),8% (75%ile),13% (37%ile),4% (38%ile),46% (71%ile),0.12 = fraction pre-1960 (39%ile),76%ile,0.0169 ug/m3 (0%ile),60%ile,10 lifetime risk per million (1%ile),66%ile,0.1 (1%ile),65%ile,580 daily vehicles/meters distance (70%ile),81%ile,0.00087 toxicity-weighted concentration/meters distance (46%ile),78%ile,0.0061 sites/km distance (1%ile),62%ile,1 facilities/km distance (76%ile),84%ile,0.6 facilities/km distance (46%ile),73%ile,,,,,0.026 facilities/sq km area (6%ile),61%ile,141603534.0000000000,11781155.0000000000,0,0,80194.4536675024,176674254.7197769880 diff --git a/data/data-pipeline/data_pipeline/tests/sources/ejscreen/data/output.csv b/data/data-pipeline/data_pipeline/tests/sources/ejscreen/data/output.csv new file mode 100644 index 000000000..d66576471 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/ejscreen/data/output.csv @@ -0,0 +1,16 @@ +GEOID10_TRACT,Air toxics cancer risk,Respiratory hazard index,Diesel particulate matter exposure,PM2.5 in the air,Ozone,Traffic proximity and volume,Proximity to Risk Management Plan (RMP) facilities,Proximity to hazardous waste sites,Proximity to NPL sites,Wastewater discharge,Percent of households in linguistic isolation,Poverty (Less than 200% of federal poverty line),Individuals over 64 years old,Individuals under 5 years old,Percent pre-1960s housing (lead paint indicator),Leaky underground storage tanks +06027000800,20.0000000000,0.2000000000,0.0162608457,5.9332945205,59.8143830065,134.3731709435,0.0161739005,0.0231458734,0.0088169702,0.0000000476,0.0943661972,0.4021269525,0.2445972495,0.0422396857,0.3691340106,0.0271801764 +06061021322,30.0000000000,0.5000000000,0.1849562857,12.1102756164,52.7832287582,12.5173455346,0.4515663958,0.2027045525,0.0687928975,0.2667203153,0.0343563903,0.1859250743,0.1406287382,0.0683764773,0.0334588644,0.0258826940 +06069000802,20.0000000000,0.2000000000,0.0375346206,7.4113546849,47.0434058824,15.7944927934,0.0811927061,0.1674220356,0.0396183204,,0.0324607330,0.2453201970,0.1534929485,0.0787143326,0.3485254692,0.0102735941 +15001021010,10.0000000000,0.1000000000,0.0067389217,,,0.1074143214,0.0478749209,0.0931096253,0.0027318608,,0.0109090909,0.5159562078,0.1992795724,0.0366023704,0.0112496943,0.0259838494 +15001021101,10.0000000000,0.1000000000,0.0033713587,,,1.7167679255,0.2484740667,0.2746856427,0.0025910486,,0.0194426442,0.4755657593,0.2976424361,0.0301244270,0.0168539326,0.0375389154 +15001021402,10.0000000000,0.1000000000,0.0131608945,,,635.9981128640,0.0225482603,0.6278707343,0.0033357209,,0.0407569141,0.1877496671,0.2469560614,0.0751720487,0.1743524953,0.5088713177 +15001021800,10.0000000000,0.1000000000,0.0049503455,,,0.0743045071,0.0402733327,0.0410968274,0.0038298946,,0.0359848485,0.2698678267,0.2352450817,0.0586862287,0.1676168757,0.1071290552 +15003010201,10.0000000000,0.1000000000,0.0171119880,,,1493.8870892160,0.0548137804,0.4080845621,0.0694550700,,0.0340041638,0.2999166319,0.1318881686,0.0964343598,0.2131062951,0.0995447326 +15007040603,10.0000000000,0.1000000000,0.0225796264,,,255.5966484444,0.1042895043,0.5200441984,0.0065810172,,0.0311909263,0.2676292814,0.2533512064,0.0563002681,0.0935077519,0.1610354485 +15007040604,10.0000000000,0.1000000000,0.0297040750,,,464.0468169721,0.1282189641,0.3810520320,0.0064334940,,0.0353833193,0.3687102371,0.1790875602,0.0943610088,0.1981538462,0.2277699060 +15007040700,10.0000000000,0.1000000000,0.0120486502,,,829.6297843840,0.2776903565,0.5315584393,0.0062317499,,0.0328151986,0.2079176730,0.1920016750,0.0808207705,0.1049120679,0.8605507426 +15009030100,10.0000000000,0.1000000000,0.0026846006,,,,0.0398066625,0.0329594792,0.0046765532,,0.0000000000,0.2911208151,0.2434163701,0.0882562278,0.2135678392,0.0973247551 +15009030201,10.0000000000,0.1000000000,0.0063521816,,,7.0868595222,0.1292001112,0.0908033666,0.0053511202,,0.0000000000,0.2677266867,0.2367521368,0.0641025641,0.0928229665,0.0098923140 +15009030402,10.0000000000,0.1000000000,0.0153866969,,,233.6880574427,0.6633705951,0.5914191729,0.0055146115,,0.0122641509,0.1792805419,0.1810324690,0.0463676711,0.0760149726,0.4432670413 +15009030800,10.0000000000,0.1000000000,0.0169064550,,,575.9991000531,1.0347888110,0.5999348163,0.0061499864,0.0008675195,0.0013422819,0.1386100877,0.1303464907,0.0753902780,0.1220556745,0.0263640121 diff --git a/data/data-pipeline/data_pipeline/tests/sources/ejscreen/data/transform.csv b/data/data-pipeline/data_pipeline/tests/sources/ejscreen/data/transform.csv new file mode 100644 index 000000000..9c353ca40 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/ejscreen/data/transform.csv @@ -0,0 +1,16 @@ +OBJECTID,GEOID10_TRACT,ACSTOTPOP,ACSIPOVBAS,ACSEDUCBAS,ACSTOTHH,ACSTOTHU,ACSUNEMPBAS,MINORPOP,MINORPCT,LOWINCOME,Poverty (Less than 200% of federal poverty line),LESSHS,LESSHSPCT,LINGISO,Percent of households in linguistic isolation,UNDER5,Individuals under 5 years old,OVER64,Individuals over 64 years old,UNEMP,UNEMPPCT,PRE1960,Percent pre-1960s housing (lead paint indicator),VULEOPCT,VULSVI6PCT,VULEO,VULSVI6,DISPEO,DISPSVI6,Diesel particulate matter exposure,Air toxics cancer risk,Respiratory hazard index,Traffic proximity and volume,Wastewater discharge,Proximity to NPL sites,Proximity to Risk Management Plan (RMP) facilities,Proximity to hazardous waste sites,Ozone,PM2.5 in the air,Leaky underground storage tanks,D_LDPNT_2,D_DSLPM_2,D_CANCR_2,D_RESP_2,D_PTRAF_2,D_PWDIS_2,D_PNPL_2,D_PRMP_2,D_PTSDF_2,D_OZONE_2,D_PM25_2,D_UST_2,STATE_NAME,ST_ABBREV,REGION,P_MINORPCT,P_LWINCPCT,P_LESHSPCT,P_LNGISPCT,P_UNDR5PCT,P_OVR64PCT,P_UNEMP,P_UNEMPPCT,P_LDPNT,P_VULEOPCT,P_VULSVI6PCT,P_VULSVI6,P_DISPSVI6,P_DSLPM,P_CANCR,P_RESP,P_PTRAF,P_PWDIS,P_PNPL,P_PRMP,P_PTSDF,P_OZONE,P_PM25,P_UST,P_LDPNT_D2,P_DSLPM_D2,P_CANCR_D2,P_RESP_D2,P_PTRAF_D2,P_PWDIS_D2,P_PNPL_D2,P_PRMP_D2,P_PTSDF_D2,P_OZONE_D2,P_PM25_D2,P_UST_D2,B_MINORPCT,B_LWINCPCT,B_LESHSPCT,B_LNGISPCT,B_UNDR5PCT,B_OVR64PCT,B_UNEMP,B_UNEMPPCT,B_LDPNT,B_VULEOPCT,B_VULSVI6PCT,B_VULSVI6,B_DISPSVI6,B_DSLPM,B_CANCR,B_RESP,B_PTRAF,B_PWDIS,B_PNPL,B_PRMP,B_PTSDF,B_OZONE,B_PM25,B_UST,B_LDPNT_D2,B_DSLPM_D2,B_CANCR_D2,B_RESP_D2,B_PTRAF_D2,B_PWDIS_D2,B_PNPL_D2,B_PRMP_D2,B_PTSDF_D2,B_OZONE_D2,B_PM25_D2,B_UST_D2,T_MINORPCT,T_LWINCPCT,T_LESHSPCT,T_LNGISPCT,T_UNDR5PCT,T_OVR64PCT,T_UNEMPPCT,T_VULEOPCT,T_LDPNT,T_LDPNT_D2,T_DSLPM,T_DSLPM_D2,T_CANCR,T_CANCR_D2,T_RESP,T_RESP_D2,T_PTRAF,T_PTRAF_D2,T_PWDIS,T_PWDIS_D2,T_PNPL,T_PNPL_D2,T_PRMP,T_PRMP_D2,T_PTSDF,T_PTSDF_D2,T_OZONE,T_OZONE_D2,T_PM25,T_PM25_D2,T_UST,T_UST_D2,AREALAND,AREAWATER,NPL_CNT,TSDF_CNT,Shape_Length,Shape_Area +4529,06027000800,3054,3009,2337,1420,2067,1443,1218,0.3988212181,1210,0.4021269525,475,0.2032520325,134,0.0943661972,129,0.0422396857,747,0.2445972495,62,0.0429660430,763,0.3691340106,0.4004740853,0.2309005559,1223.0478564307,705.1702977293,135.9429095904,144.8520486255,0.0162608457,20.0000000000,0.2000000000,134.3731709435,0.0000000476,0.0088169702,0.0161739005,0.0231458734,59.8143830065,5.9332945205,0.0271801764,50.1811514356,2.2105466749,2718.8581918080,27.1885819181,18267.0798289539,0.0000064773,1.1986045786,2.1987270931,3.1465173743,8131.3412612630,806.5893205801,3.6949522625,California,CA,9,58.2565807824,70.8357682483,82.0300855712,83.4211514441,22.4791060804,91.4310072487,20.6342392033,44.8003303446,69.4492207493,64.4805710566,73.9747591523,41.2001973366,69.9936559849,0.4881982980,32.2031638835,14.4688811492,33.6358789383,2.7793036790,3.1380644255,0.3541522801,2.0598614138,97.6642425963,3.6388096802,6.3535808084,71.4956721564,59.1319320934,61.5316181718,60.9745786385,62.4689837463,62.0864910202,59.8317854029,59.0710337447,59.2599060994,64.9284478117,62.2619591744,60.9702180540,6,8,9,9,3,10,3,5,7,7,8,5,7,1,4,2,4,1,1,1,1,11,1,1,8,6,7,7,7,7,6,6,6,7,7,7,40% (58%ile),40% (70%ile),20% (82%ile),9% (83%ile),4% (22%ile),24% (91%ile),4% (44%ile),40% (64%ile),0.37 = fraction pre-1960 (69%ile),71%ile,0.0163 ug/m3 (0%ile),59%ile,20 lifetime risk per million (32%ile),61%ile,0.2 (14%ile),60%ile,130 daily vehicles/meters distance (33%ile),62%ile,0.000000048 toxicity-weighted concentration/meters distance (2%ile),62%ile,0.0088 sites/km distance (3%ile),59%ile,0.016 facilities/km distance (0%ile),59%ile,0.023 facilities/km distance (2%ile),59%ile,59.8 ppb (97%ile),64%ile,5.93 ug/m3 (3%ile),62%ile,0.027 facilities/sq km area (6%ile),60%ile,17743852489.0000000000,41257887.0000000000,0,1,969231.5231135677,27404749177.8422279358 +8028,06061021322,20899,20874,13290,6549,6904,9172,9199,0.4401646012,3881,0.1859250743,825,0.0620767494,225,0.0343563903,1429,0.0683764773,2939,0.1406287382,312,0.0340165722,231,0.0334588644,0.3130448377,0.1552546718,6542.3240634282,3244.6673856589,-896.9052371663,-589.6780917541,0.1849562857,30.0000000000,0.5000000000,12.5173455346,0.2667203153,0.0687928975,0.4515663958,0.2027045525,52.7832287582,12.1102756164,0.0258826940,-30.0094307337,-165.8882612555,-26907.1571149896,-448.4526185832,-11226.8727654026,-239.2228476257,-61.7007100657,-405.0122653138,-181.8067747336,-47341.5543077505,-10861.7696239112,-23.2143238368,California,CA,9,61.7694531724,28.3124099080,32.2625612545,63.3138029183,65.9392366308,44.1611446180,92.1063805127,31.2336817151,19.3531578232,52.0599864076,48.1147912182,98.1253263672,8.5598852754,35.4160437794,83.7767623034,95.2520218071,6.7786023570,88.6613290583,53.5138135020,56.0049245976,28.8270859466,89.7745222973,94.2035706464,6.2511191138,43.0185694890,24.7769097248,17.2770098374,9.5647689629,49.9350307593,5.0850465016,20.5837755437,15.4478896201,34.6338200533,14.8104044330,10.3206402564,53.0011626680,7,3,4,7,7,5,10,4,2,6,5,11,1,4,9,11,1,9,6,6,3,9,10,1,5,3,2,1,5,1,3,2,4,2,2,6,44% (61%ile),19% (28%ile),6% (32%ile),3% (63%ile),7% (65%ile),14% (44%ile),3% (31%ile),31% (52%ile),0.033 = fraction pre-1960 (19%ile),43%ile,0.185 ug/m3 (35%ile),24%ile,30 lifetime risk per million (83%ile),17%ile,0.5 (95%ile),9%ile,13 daily vehicles/meters distance (6%ile),49%ile,0.27 toxicity-weighted concentration/meters distance (88%ile),5%ile,0.069 sites/km distance (53%ile),20%ile,0.45 facilities/km distance (56%ile),15%ile,0.2 facilities/km distance (28%ile),34%ile,52.8 ppb (89%ile),14%ile,12.1 ug/m3 (94%ile),10%ile,0.026 facilities/sq km area (6%ile),53%ile,258653359.0000000000,119890.0000000000,0,0,124755.3452199987,427225089.6229769588 +8849,06069000802,3049,3045,2076,955,1119,1493,1247,0.4089865530,747,0.2453201970,307,0.1478805395,31,0.0324607330,240,0.0787143326,468,0.1534929485,93,0.0622906899,390,0.3485254692,0.3271533750,0.1778092173,997.4906403941,542.1403034316,-87.8345013597,-17.2605942492,0.0375346206,20.0000000000,0.2000000000,15.7944927934,,0.0396183204,0.0811927061,0.1674220356,47.0434058824,7.4113546849,0.0102735941,-30.6125607956,-3.2968346872,-1756.6900271942,-17.5669002719,-1387.3013987358,,-3.4798554127,-7.1315208575,-14.7054310128,-4132.0340979390,-650.9726431509,-0.9023760119,California,CA,9,59.1858457424,41.3904741949,69.9513617378,62.0187896062,79.0518001240,52.1216510370,37.3180569516,68.3483551403,67.5701406274,54.3994266601,57.9926859232,26.1831217492,58.7612911558,2.0014414700,32.2031638835,14.4688811492,8.1570460385,,34.5749415665,10.3739430074,25.1131375379,84.5333172848,19.2864164585,4.9410824602,42.8621394303,58.0471933934,56.5430390950,57.0023528116,55.7266348497,,54.6373148803,57.1359685902,54.8116596007,56.2167239668,56.9568759225,56.2801621878,6,5,7,7,8,6,4,7,7,6,6,3,6,1,4,2,1,0,4,2,3,9,2,1,5,6,6,6,6,0,6,6,6,6,6,6,41% (59%ile),25% (41%ile),15% (69%ile),3% (62%ile),8% (79%ile),15% (52%ile),6% (68%ile),33% (54%ile),0.35 = fraction pre-1960 (67%ile),42%ile,0.0375 ug/m3 (2%ile),58%ile,20 lifetime risk per million (32%ile),56%ile,0.2 (14%ile),57%ile,16 daily vehicles/meters distance (8%ile),55%ile,,,0.04 sites/km distance (34%ile),54%ile,0.081 facilities/km distance (10%ile),57%ile,0.17 facilities/km distance (25%ile),54%ile,47 ppb (84%ile),56%ile,7.41 ug/m3 (19%ile),56%ile,0.01 facilities/sq km area (4%ile),56%ile,2987635876.0000000000,3272257.0000000000,1,0,422237.6856758550,4643687820.1565904617 +20324,15001021010,8606,8586,6124,3300,4089,3602,5362,0.6230536835,4430,0.5159562078,425,0.0693990856,36,0.0109090909,315,0.0366023704,1715,0.1992795724,502,0.1393670183,46,0.0112496943,0.5695049456,0.2425333351,4901.1595620778,2087.2418818153,1837.7590471768,508.2966127298,0.0067389217,10.0000000000,0.1000000000,0.1074143214,,0.0027318608,0.0478749209,0.0931096253,,,0.0259838494,20.6742274811,12.3845143014,18377.5904717679,183.7759047177,197.4016409694,,5.0205019537,87.9825690670,171.1130563323,,,47.7520542990,Hawaii,HI,9,74.7108013633,85.0291087110,36.7675143964,39.4832933303,15.2054293702,77.9602931979,98.1974410889,95.8100562593,9.2273848439,81.1726508957,76.5777942789,91.7961653862,85.2496673015,0.0699884723,1.8303662611,1.0748659980,0.5930748980,,0.1022787768,3.9663081684,14.5954101870,,,6.2654376121,66.8695670869,60.7245800447,74.1372134844,71.3832220072,58.5855777989,,62.7945832024,66.7236133386,67.8259227785,,,62.6039374599,8,9,4,4,2,8,11,11,1,9,8,10,9,1,1,1,1,0,1,1,2,0,0,1,7,7,8,8,6,0,7,7,7,0,0,7,62% (74%ile),52% (85%ile),7% (36%ile),1% (39%ile),4% (15%ile),20% (77%ile),14% (95%ile),57% (81%ile),0.011 = fraction pre-1960 (9%ile),66%ile,0.00674 ug/m3 (0%ile),60%ile,10 lifetime risk per million (1%ile),74%ile,0.1 (1%ile),71%ile,0.11 daily vehicles/meters distance (0%ile),58%ile,,,0.0027 sites/km distance (0%ile),62%ile,0.048 facilities/km distance (3%ile),66%ile,0.093 facilities/km distance (14%ile),67%ile,,,,,0.026 facilities/sq km area (6%ile),62%ile,151184621.0000000000,0.0000000000,0,0,71817.3979516648,171030272.0024483502 +20327,15001021101,3054,3049,2569,1543,1958,1227,1086,0.3555992141,1450,0.4755657593,159,0.0618917867,30,0.0194426442,92,0.0301244270,909,0.2976424361,144,0.1173594132,33,0.0168539326,0.4155824867,0.2067110446,1269.1889143982,631.2955301209,182.0839675579,70.9772810171,0.0033713587,10.0000000000,0.1000000000,1.7167679255,,0.0025910486,0.2484740667,0.2746856427,,,0.0375389154,3.0688309139,0.6138703733,1820.8396755785,18.2083967558,312.5959152482,,0.4717884163,45.2431438983,50.0158516497,,,6.8352346500,Hawaii,HI,9,53.9485559986,80.7725127831,32.1386664749,50.6977998974,9.0084816593,96.6414513706,60.5643076662,92.9519087655,12.2637725970,66.3100091245,67.7573127614,34.5728724616,65.2982705045,0.0304238852,1.8303662611,1.0748659980,2.1438079687,,0.0856704529,41.7496844562,33.9762800526,,,7.1437776548,61.7192931562,58.8385531222,60.6418036749,60.2753222588,58.6611251941,,59.1844884925,63.7189045047,63.4569851575,,,61.1560978740,6,9,4,6,1,11,7,10,2,7,7,4,7,1,1,1,1,0,1,5,4,0,0,1,7,6,7,7,6,0,6,7,7,0,0,7,36% (53%ile),48% (80%ile),6% (32%ile),2% (50%ile),3% (9%ile),30% (96%ile),12% (92%ile),42% (66%ile),0.017 = fraction pre-1960 (12%ile),61%ile,0.00337 ug/m3 (0%ile),58%ile,10 lifetime risk per million (1%ile),60%ile,0.1 (1%ile),60%ile,1.7 daily vehicles/meters distance (2%ile),58%ile,,,0.0026 sites/km distance (0%ile),59%ile,0.25 facilities/km distance (41%ile),63%ile,0.27 facilities/km distance (33%ile),63%ile,,,,,0.038 facilities/sq km area (7%ile),61%ile,106332317.0000000000,11164968.0000000000,0,1,61396.6485753379,132838116.6897320002 +20331,15001021402,3778,3755,2731,1374,1583,1803,3034,0.8030704076,705,0.1877496671,214,0.0783595752,56,0.0407569141,284,0.0751720487,933,0.2469560614,23,0.0127565169,276,0.1743524953,0.4954100374,0.2386774457,1871.6591211718,901.7233898617,526.8383978048,208.5726547229,0.0131608945,10.0000000000,0.1000000000,635.9981128640,,0.0033357209,0.0225482603,0.6278707343,,,0.5088713177,91.8555892572,6.9336645713,5268.3839780481,52.6838397805,335068.2267881447,,1.7573858477,11.8792893273,330.7864116735,,,268.0929496982,Hawaii,HI,9,84.7051677398,28.7308989413,41.8348284107,67.0398022547,74.9080519616,91.8116448026,3.9836481634,4.5613171192,47.5766504879,74.5975822746,75.7504514060,55.7976616902,73.4870488517,0.2827998785,1.8303662611,1.0748659980,72.8760884284,,0.2741900811,0.7727230166,47.2090589343,,,27.1111550629,75.5651255220,59.8939075539,64.0364159199,62.9860278691,78.3054903833,,60.2827950818,60.4356420863,71.4747506314,,,66.1787674526,9,3,5,7,8,10,1,1,5,8,8,6,8,1,1,1,8,0,1,1,5,0,0,3,8,6,7,7,8,0,7,7,8,0,0,7,80% (84%ile),19% (28%ile),8% (41%ile),4% (67%ile),8% (74%ile),25% (91%ile),1% (4%ile),50% (74%ile),0.17 = fraction pre-1960 (47%ile),75%ile,0.0132 ug/m3 (0%ile),59%ile,10 lifetime risk per million (1%ile),64%ile,0.1 (1%ile),62%ile,640 daily vehicles/meters distance (72%ile),78%ile,,,0.0033 sites/km distance (0%ile),60%ile,0.023 facilities/km distance (0%ile),60%ile,0.63 facilities/km distance (47%ile),71%ile,,,,,0.51 facilities/sq km area (27%ile),66%ile,41940841.0000000000,6313950.0000000000,0,1,49320.0395726063,54601507.7207057551 +20340,15001021800,5998,5977,4357,2112,2631,3179,4020,0.6702234078,1613,0.2698678267,180,0.0413128299,76,0.0359848485,352,0.0586862287,1411,0.2352450817,241,0.0758100031,441,0.1676168757,0.4700456172,0.2185533706,2819.3336121800,1310.8831165809,684.2794304026,210.4283496771,0.0049503455,10.0000000000,0.1000000000,0.0743045071,,0.0038298946,0.0402733327,0.0410968274,,,0.1071290552,114.6967802385,3.3874195708,6842.7943040262,68.4279430403,50.8450457862,,2.6207181028,27.5582131707,28.1217136206,,,73.3062089025,Hawaii,HI,9,77.3411360526,46.5995830170,19.2008132329,64.3649112351,50.1501995746,89.5998226210,84.7007475319,78.6950985799,46.5822171086,72.0610072717,71.0200691830,75.5958544882,73.5619777633,0.0461211856,1.8303662611,1.0748659980,0.4752886632,,0.3337575583,2.8011103792,5.4042726335,,,11.7520153164,77.1764003076,59.3164619569,65.4523902797,64.1879137098,58.4409328484,,60.9620163260,62.2019174282,62.1288554973,,,63.2369902585,8,5,2,7,6,9,9,8,5,8,8,8,8,1,1,1,1,0,1,1,1,0,0,2,8,6,7,7,6,0,7,7,7,0,0,7,67% (77%ile),27% (46%ile),4% (19%ile),4% (64%ile),6% (50%ile),24% (89%ile),8% (78%ile),47% (72%ile),0.17 = fraction pre-1960 (46%ile),77%ile,0.00495 ug/m3 (0%ile),59%ile,10 lifetime risk per million (1%ile),65%ile,0.1 (1%ile),64%ile,0.074 daily vehicles/meters distance (0%ile),58%ile,,,0.0038 sites/km distance (0%ile),60%ile,0.04 facilities/km distance (2%ile),62%ile,0.041 facilities/km distance (5%ile),62%ile,,,,,0.11 facilities/sq km area (11%ile),63%ile,365110254.0000000000,37900489.0000000000,0,0,92961.9049100969,459707845.8010936975 +20560,15003010201,4936,4798,3182,1441,1938,2266,3695,0.7485818476,1439,0.2999166319,231,0.0725958517,49,0.0340041638,476,0.0964343598,651,0.1318881686,115,0.0507502207,413,0.2131062951,0.5242492398,0.2305701706,2587.6942476032,1138.0943619037,830.6706662005,232.4850372225,0.0171119880,10.0000000000,0.1000000000,1493.8870892160,,0.0694550700,0.0548137804,0.4080845621,,,0.0995447326,177.0211481635,14.2144264416,8306.7066620049,83.0670666200,1240928.1836273719,,57.6942892272,45.5321994534,338.9838750865,,,82.6888893711,Hawaii,HI,9,81.7629198374,52.7224313484,38.5909198362,63.0702607098,91.9817357703,38.9013315993,48.2935747432,55.4563410918,53.0116816593,77.2470730276,73.8991238733,68.7030659293,74.5973100320,0.5552831600,1.8303662611,1.0748659980,88.8972054263,,53.8623224639,5.1063675682,39.9537688137,,,11.2751492958,80.6790478991,60.9966060167,66.7493132622,65.1696166202,90.1940360178,,78.6444132849,63.7434121326,71.6211763075,,,63.4227438652,9,6,4,7,10,4,5,6,6,8,8,7,8,1,1,1,9,0,6,1,4,0,0,2,9,7,7,7,10,0,8,7,8,0,0,7,75% (81%ile),30% (52%ile),7% (38%ile),3% (63%ile),10% (91%ile),13% (38%ile),5% (55%ile),52% (77%ile),0.21 = fraction pre-1960 (53%ile),80%ile,0.0171 ug/m3 (0%ile),60%ile,10 lifetime risk per million (1%ile),66%ile,0.1 (1%ile),65%ile,1500 daily vehicles/meters distance (88%ile),90%ile,,,0.069 sites/km distance (53%ile),78%ile,0.055 facilities/km distance (5%ile),63%ile,0.41 facilities/km distance (39%ile),71%ile,,,,,0.1 facilities/sq km area (11%ile),63%ile,66256288.0000000000,7249455.0000000000,0,0,42997.4044651793,85395519.3857139796 +20614,15007040603,2984,2978,2104,1058,2064,1468,2011,0.6739276139,797,0.2676292814,138,0.0655893536,33,0.0311909263,168,0.0563002681,756,0.2533512064,64,0.0435967302,193,0.0935077519,0.4707784477,0.2246647750,1404.8028878442,670.3996884791,342.6152122150,122.9243592959,0.0225796264,10.0000000000,0.1000000000,255.5966484444,,0.0065810172,0.1042895043,0.5200441984,,,0.1610354485,32.0371782740,7.7361234992,3426.1521221502,34.2615212215,87571.2999482384,,2.2547565999,35.7311706322,178.1750534077,,,55.1731943631,Hawaii,HI,9,77.5456369017,46.0970850340,34.4418368771,61.1045870101,46.0008635792,92.7630589707,21.6211577108,45.6650954498,34.4080455626,72.1367523014,72.5017628853,38.1901457794,68.6478207991,0.9188048692,1.8303662611,1.0748659980,48.7907692784,,1.7474241413,15.4267424965,43.8004140051,,,14.6634418792,68.8698351102,60.0337698662,62.2468364816,61.5558275260,68.4712288534,,60.6727330898,62.8928664453,68.0134997705,,,62.8256530053,8,5,4,7,5,10,3,5,4,8,8,4,7,1,1,1,5,0,1,2,5,0,0,2,7,7,7,7,7,0,7,7,7,0,0,7,67% (77%ile),27% (46%ile),7% (34%ile),3% (61%ile),6% (46%ile),25% (92%ile),4% (45%ile),47% (72%ile),0.094 = fraction pre-1960 (34%ile),68%ile,0.0226 ug/m3 (0%ile),60%ile,10 lifetime risk per million (1%ile),62%ile,0.1 (1%ile),61%ile,260 daily vehicles/meters distance (48%ile),68%ile,,,0.0066 sites/km distance (1%ile),60%ile,0.1 facilities/km distance (15%ile),62%ile,0.52 facilities/km distance (43%ile),68%ile,,,,,0.16 facilities/sq km area (14%ile),62%ile,41255867.0000000000,7041518.0000000000,0,0,36855.9892981643,56378891.3118786365 +20615,15007040604,3529,3458,2370,1187,1625,1757,2203,0.6242561632,1275,0.3687102371,133,0.0561181435,42,0.0353833193,333,0.0943610088,632,0.1790875602,109,0.0620375640,322,0.1981538462,0.4964832002,0.2263194054,1752.0892134182,798.6811814815,495.9027833594,151.2145472028,0.0297040750,10.0000000000,0.1000000000,464.0468169721,,0.0064334940,0.1282189641,0.3810520320,,,0.2277699060,98.2650438411,14.7303334730,4959.0278335940,49.5902783359,230122.1081455294,,3.1903875793,63.5841411863,188.9647632974,,,112.9517303753,Hawaii,HI,9,74.7796778307,65.5138546463,28.4761545436,63.9820945208,90.9928060818,67.6211097498,45.4287763592,68.1087856009,51.0102487547,74.6953085329,72.8443904311,48.6363888652,70.3699602168,1.3729134893,1.8303662611,1.0748659980,64.8054389268,,1.7014251995,20.6071512154,38.9237463430,,,17.5743663328,76.0259182532,61.0699450431,63.7308514802,62.7533582560,75.0094643983,,61.3999056181,65.1045697304,68.3212418487,,,64.0124628341,8,7,3,7,10,7,5,7,6,8,8,5,8,1,1,1,7,0,1,3,4,0,0,2,8,7,7,7,8,0,7,7,7,0,0,7,62% (74%ile),37% (65%ile),6% (28%ile),4% (63%ile),9% (90%ile),18% (67%ile),6% (68%ile),50% (74%ile),0.2 = fraction pre-1960 (51%ile),76%ile,0.0297 ug/m3 (1%ile),61%ile,10 lifetime risk per million (1%ile),63%ile,0.1 (1%ile),62%ile,460 daily vehicles/meters distance (64%ile),75%ile,,,0.0064 sites/km distance (1%ile),61%ile,0.13 facilities/km distance (20%ile),65%ile,0.38 facilities/km distance (38%ile),68%ile,,,,,0.23 facilities/sq km area (17%ile),64%ile,21724894.0000000000,2371158.0000000000,0,1,27760.3117775823,28129042.7970332205 +20616,15007040700,9552,9523,6234,2895,3298,4974,7071,0.7402638191,1980,0.2079176730,309,0.0495668912,95,0.0328151986,772,0.0808207705,1834,0.1920016750,205,0.0412143144,346,0.1049120679,0.4740907460,0.2172310046,4528.5148062585,2074.9905558098,1128.3751689898,322.4823975128,0.0120486502,10.0000000000,0.1000000000,829.6297843840,,0.0062317499,0.2776903565,0.5315584393,,,0.8605507426,118.3801723682,13.5953976825,11283.7516898982,112.8375168990,936133.6481533048,,7.0317517976,313.3389029609,599.7973437979,,,971.0240895638,Hawaii,HI,9,81.2804870193,33.1925490446,24.3539720817,62.2442189921,81.2507708079,74.5290795692,78.3337372056,42.2880946853,36.4589583341,72.4690666385,70.6843205648,91.6638490724,78.6800785920,0.2182262554,1.8303662611,1.0748659980,78.8807149861,,1.6540510210,44.6852775053,44.1677595343,,,35.8025350464,77.4223719690,60.9007569981,69.0968995957,67.2008685709,87.5969776098,,64.0977043448,75.6532891441,75.2184280558,,,72.0462363568,9,4,3,7,9,8,8,5,4,8,8,10,8,1,1,1,8,0,1,5,5,0,0,4,8,7,7,7,9,0,7,8,8,0,0,8,74% (81%ile),21% (33%ile),5% (24%ile),3% (62%ile),8% (81%ile),19% (74%ile),4% (42%ile),47% (72%ile),0.1 = fraction pre-1960 (36%ile),77%ile,0.012 ug/m3 (0%ile),60%ile,10 lifetime risk per million (1%ile),69%ile,0.1 (1%ile),67%ile,830 daily vehicles/meters distance (78%ile),87%ile,,,0.0062 sites/km distance (1%ile),64%ile,0.28 facilities/km distance (44%ile),75%ile,0.53 facilities/km distance (44%ile),75%ile,,,,,0.86 facilities/sq km area (35%ile),72%ile,93005151.0000000000,5658877.0000000000,0,1,70950.4293149945,115233329.7073323578 +20624,15009030100,1405,1374,980,467,796,729,1060,0.7544483986,400,0.2911208151,44,0.0448979592,0,0.0000000000,124,0.0882562278,342,0.2434163701,41,0.0562414266,170,0.2135678392,0.5227846069,0.2370232951,734.5123726346,333.0177296537,234.3871433253,75.2419798205,0.0026846006,10.0000000000,0.1000000000,,,0.0046765532,0.0398066625,0.0329594792,,,0.0973247551,50.0575557353,0.6292358547,2343.8714332533,23.4387143325,,,1.0961239415,9.3301699117,7.7252781836,,,22.8116713113,Hawaii,HI,9,82.0728020535,51.0042892937,21.4097431797,22.2149776961,87.3264635475,91.2196103997,10.4895772204,61.9590696975,53.0589655984,77.1174117652,75.3619764353,7.5930221772,65.5506156308,0.0292580509,1.8303662611,1.0748659980,,,0.7827594098,2.7444494654,3.8365691660,,,11.1452377410,71.4770935032,58.8413451490,61.1806956436,60.6714580607,,,59.7579323526,60.0938330974,59.9756316335,,,61.8121208766,9,6,3,3,9,10,2,7,6,8,8,1,7,1,1,1,0,0,1,1,1,0,0,2,8,6,7,7,0,0,6,7,6,0,0,7,75% (82%ile),29% (51%ile),4% (21%ile),0% (22%ile),9% (87%ile),24% (91%ile),6% (61%ile),52% (77%ile),0.21 = fraction pre-1960 (53%ile),71%ile,0.00268 ug/m3 (0%ile),58%ile,10 lifetime risk per million (1%ile),61%ile,0.1 (1%ile),60%ile,,,,,0.0047 sites/km distance (0%ile),59%ile,0.04 facilities/km distance (2%ile),60%ile,0.033 facilities/km distance (3%ile),59%ile,,,,,0.097 facilities/sq km area (11%ile),61%ile,555262221.0000000000,25398369.0000000000,0,0,165450.9181509207,667169893.1947253942 +20625,15009030201,2340,2327,1879,842,1045,1395,992,0.4239316239,623,0.2677266867,62,0.0329962746,0,0.0000000000,150,0.0641025641,554,0.2367521368,133,0.0953405018,97,0.0928229665,0.3458291553,0.1709182144,809.2402234637,399.9486215874,-23.7085570230,-29.3718443271,0.0063521816,10.0000000000,0.1000000000,7.0868595222,,0.0053511202,0.1292001112,0.0908033666,,,0.0098923140,-2.2006985945,-0.1506010605,-237.0855702299,-2.3708557023,-168.0192130960,,-0.1268673373,-3.0631482031,-2.1528167944,,,-0.2345324900,Hawaii,HI,9,60.4734810662,46.1223337837,13.8610651481,22.2149776961,59.2951174656,89.9006101655,56.2295738392,87.6116027815,34.2663836750,57.2620275919,55.1869446757,12.9269845729,57.7176364334,0.0651806253,1.8303662611,1.0748659980,4.6368984700,,1.3707744996,20.8229399202,14.1722671160,,,4.9075810703,55.1341860078,58.6779670685,58.4263245996,58.4806520514,57.3658121936,,58.5702573228,58.1201119303,58.2216584263,,,56.4332033900,7,5,2,3,6,9,6,9,4,6,6,2,6,1,1,1,1,0,1,3,2,0,0,1,6,6,6,6,6,0,6,6,6,0,0,6,42% (60%ile),27% (46%ile),3% (13%ile),0% (22%ile),6% (59%ile),24% (89%ile),10% (87%ile),35% (57%ile),0.093 = fraction pre-1960 (34%ile),55%ile,0.00635 ug/m3 (0%ile),58%ile,10 lifetime risk per million (1%ile),58%ile,0.1 (1%ile),58%ile,7.1 daily vehicles/meters distance (4%ile),57%ile,,,0.0054 sites/km distance (1%ile),58%ile,0.13 facilities/km distance (20%ile),58%ile,0.091 facilities/km distance (14%ile),58%ile,,,,,0.0099 facilities/sq km area (4%ile),56%ile,118113265.0000000000,4116462.0000000000,0,0,68639.8224567451,140691933.2772550285 +20629,15009030402,8562,8562,6540,3180,3473,4778,5420,0.6330296660,1535,0.1792805419,294,0.0449541284,39,0.0122641509,397,0.0463676711,1550,0.1810324690,210,0.0439514441,264,0.0760149726,0.4061551039,0.1828214379,3477.5000000000,1565.3171513473,429.7617698603,-5.5554252167,0.0153866969,10.0000000000,0.1000000000,233.6880574427,,0.0055146115,0.6633705951,0.5914191729,,,0.4432670413,32.6683291803,6.6126141119,4297.6176986027,42.9761769860,100430.1931617688,,2.3699691830,285.0913210180,254.1693504667,,,190.4992282028,Hawaii,HI,9,75.2886221409,26.8565530362,21.4439231945,41.5097856648,28.7449442824,68.6690121278,79.3833218173,46.1798708736,30.8409993308,65.1595288992,59.9703175674,82.9721886150,59.7346670413,0.4238414396,1.8303662611,1.0748659980,46.4851154373,,1.4363834459,65.6894718646,46.0793962757,,,25.2542546354,68.9789876320,59.8548490559,63.0853618909,62.2063722143,69.2554009969,,60.7689024131,74.9199434460,69.9134569074,,,65.2067338787,8,3,3,5,3,7,8,5,4,7,6,9,6,1,1,1,5,0,1,7,5,0,0,3,7,6,7,7,7,0,7,8,7,0,0,7,63% (75%ile),18% (26%ile),4% (21%ile),1% (41%ile),5% (28%ile),18% (68%ile),4% (46%ile),41% (65%ile),0.076 = fraction pre-1960 (30%ile),68%ile,0.0154 ug/m3 (0%ile),59%ile,10 lifetime risk per million (1%ile),63%ile,0.1 (1%ile),62%ile,230 daily vehicles/meters distance (46%ile),69%ile,,,0.0055 sites/km distance (1%ile),60%ile,0.66 facilities/km distance (65%ile),74%ile,0.59 facilities/km distance (46%ile),69%ile,,,,,0.44 facilities/sq km area (25%ile),65%ile,46066876.0000000000,109238.0000000000,0,1,49929.5140313853,53123180.2369696796 +20639,15009030800,7879,7871,5174,2235,2335,4210,6161,0.7819520244,1091,0.1386100877,195,0.0376884422,3,0.0013422819,594,0.0753902780,1027,0.1303464907,163,0.0387173397,285,0.1220556745,0.4602810560,0.1942216008,3626.5544403507,1530.2719926347,821.9375850282,84.7096204381,0.0169064550,10.0000000000,0.1000000000,575.9991000531,0.0008675195,0.0061499864,1.0347888110,0.5999348163,,,0.0263640121,100.3221463525,13.8960508008,8219.3758502819,82.1937585028,473435.3092760353,0.7130468458,5.0549049971,850.5318163110,493.1089740953,,,21.6695724544,Hawaii,HI,9,83.5697361596,17.7978784355,16.7867123482,22.7576898463,75.1762179508,37.9999341618,67.3605976499,38.4952526223,39.4719140158,71.0499579469,63.9144112870,82.0845801288,66.2238170511,0.5328167647,1.8303662611,1.0748659980,70.4238972397,46.4801242962,1.6311542890,76.8934515139,46.3897571267,,,6.2894452647,76.1966079716,60.9434745816,66.6801583126,65.1083356253,81.3398307482,78.4421389238,62.8183222708,84.3474497827,73.9856189804,,,61.7713841743,9,2,2,3,8,4,7,4,4,8,7,9,7,1,1,1,8,5,1,8,5,0,0,1,8,7,7,7,9,8,7,9,8,0,0,7,78% (83%ile),14% (17%ile),4% (16%ile),0% (22%ile),8% (75%ile),13% (37%ile),4% (38%ile),46% (71%ile),0.12 = fraction pre-1960 (39%ile),76%ile,0.0169 ug/m3 (0%ile),60%ile,10 lifetime risk per million (1%ile),66%ile,0.1 (1%ile),65%ile,580 daily vehicles/meters distance (70%ile),81%ile,0.00087 toxicity-weighted concentration/meters distance (46%ile),78%ile,0.0061 sites/km distance (1%ile),62%ile,1 facilities/km distance (76%ile),84%ile,0.6 facilities/km distance (46%ile),73%ile,,,,,0.026 facilities/sq km area (6%ile),61%ile,141603534.0000000000,11781155.0000000000,0,0,80194.4536675024,176674254.7197769880 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 new file mode 100644 index 000000000..fc0694674 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/ejscreen/test_etl.py @@ -0,0 +1,20 @@ +import pathlib + +from data_pipeline.etl.sources.ejscreen.etl import EJSCREENETL +from data_pipeline.tests.sources.example.test_etl import TestETL + + +class TestEJSCREENETL(TestETL): + _ETL_CLASS = EJSCREENETL + + _SAMPLE_DATA_PATH = pathlib.Path(__file__).parents[0] / "data" + _SAMPLE_DATA_FILE_NAME = "EJSCREEN_2021_USPR_Tracts.csv" + _SAMPLE_DATA_ZIP_FILE_NAME = "EJSCREEN_2021_USPR_Tracts.csv.zip" + _EXTRACT_TMP_FOLDER_NAME = "EJSCREENETL" + + def setup_method(self, _method, filename=__file__): + """Invoke `setup_method` from Parent, but using the current file name. + + This code can be copied identically between all child classes. + """ + super().setup_method(_method=_method, filename=filename) diff --git a/data/data-pipeline/data_pipeline/tests/sources/example/data/extract.csv b/data/data-pipeline/data_pipeline/tests/sources/example/data/extract.csv index 8531b3b34..6a5bdf73c 100644 --- a/data/data-pipeline/data_pipeline/tests/sources/example/data/extract.csv +++ b/data/data-pipeline/data_pipeline/tests/sources/example/data/extract.csv @@ -1,7 +1,7 @@ GEOID10_TRACT,Input Field 1 -06007040300,2.0000000000 -06001020100,6.1000000000 -06007040500,-7.8000000000 +06027000800,2.0000000000 +06069000802,6.1000000000 +06061021322,-7.8000000000 15001021010,12.0000000000 15001021101,12.0552478300 15007040603,13.5141757800 diff --git a/data/data-pipeline/data_pipeline/tests/sources/example/data/input.zip b/data/data-pipeline/data_pipeline/tests/sources/example/data/input.zip index 17293f6cb..d0a8235cb 100644 Binary files a/data/data-pipeline/data_pipeline/tests/sources/example/data/input.zip and b/data/data-pipeline/data_pipeline/tests/sources/example/data/input.zip differ diff --git a/data/data-pipeline/data_pipeline/tests/sources/example/data/output.csv b/data/data-pipeline/data_pipeline/tests/sources/example/data/output.csv index fd3904e5c..3f302a5a7 100644 --- a/data/data-pipeline/data_pipeline/tests/sources/example/data/output.csv +++ b/data/data-pipeline/data_pipeline/tests/sources/example/data/output.csv @@ -1,7 +1,7 @@ GEOID10_TRACT,Example Field 1 -06007040300,4.0000000000 -06001020100,12.2000000000 -06007040500,-15.6000000000 +06027000800,4.0000000000 +06069000802,12.2000000000 +06061021322,-15.6000000000 15001021010,24.0000000000 15001021101,24.1104956600 15007040603,27.0283515600 diff --git a/data/data-pipeline/data_pipeline/tests/sources/example/data/transform.csv b/data/data-pipeline/data_pipeline/tests/sources/example/data/transform.csv index b52455788..837a01f98 100644 --- a/data/data-pipeline/data_pipeline/tests/sources/example/data/transform.csv +++ b/data/data-pipeline/data_pipeline/tests/sources/example/data/transform.csv @@ -1,7 +1,7 @@ GEOID10_TRACT,Input Field 1,Example Field 1 -06007040300,2.0000000000,4.0000000000 -06001020100,6.1000000000,12.2000000000 -06007040500,-7.8000000000,-15.6000000000 +06027000800,2.0000000000,4.0000000000 +06069000802,6.1000000000,12.2000000000 +06061021322,-7.8000000000,-15.6000000000 15001021010,12.0000000000,24.0000000000 15001021101,12.0552478300,24.1104956600 15007040603,13.5141757800,27.0283515600 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 1f7c5dc5a..9aca968aa 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__) @@ -21,6 +22,7 @@ class ExampleETL(ExtractTransformLoad): LAST_UPDATED_YEAR = 2017 SOURCE_URL = "https://www.example.com/example.zip" GEO_LEVEL = ValidGeoLevel.CENSUS_TRACT + LOAD_YAML_CONFIG: bool = True def __init__(self): self.COLUMNS_TO_KEEP = [ 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 2b9c887ce..3e7d9cb0b 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 @@ -1,14 +1,19 @@ -# pylint: disable=protected-access,unsubscriptable-object +# pylint: disable=protected-access, unsubscriptable-object, unnecessary-dunder-call import copy import os import pathlib +from typing import Optional from typing import Type -import pytest +from unittest import mock import numpy as np import pandas as pd - -from data_pipeline.etl.base import ExtractTransformLoad, ValidGeoLevel +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 @@ -39,7 +44,7 @@ class TestETL: # so that we do not have to manually copy the "sample data" when we run the tests. _SAMPLE_DATA_PATH = pathlib.Path(__file__).parents[0] / "data" _SAMPLE_DATA_FILE_NAME = "input.csv" - _SAMPLE_DATA_ZIP_FILE_NAME = "input.zip" + _SAMPLE_DATA_ZIP_FILE_NAME: Optional[str] = "input.zip" _EXTRACT_TMP_FOLDER_NAME = "ExampleETL" # Note: We used shared census tract IDs so that later our tests can join all the @@ -47,9 +52,9 @@ class TestETL: # we use the same tract IDs across fixtures. # The test fixtures may also contain other tract IDs that are not on this list. _FIXTURES_SHARED_TRACT_IDS = [ - "06007040300", - "06001020100", - "06007040500", + "06027000800", + "06069000802", + "06061021322", "15001021010", "15001021101", "15007040603", @@ -84,7 +89,25 @@ def setup_method(self, _method, filename=__file__): self._DATA_DIRECTORY_FOR_TEST = pathlib.Path(filename).parent / "data" def _get_instance_of_etl_class(self) -> Type[ExtractTransformLoad]: - return self._ETL_CLASS() + etl_class = self._ETL_CLASS() + + # Find out what unique state codes are present in the test fixture data. + states_expected_from_fixtures = { + x[0:2] for x in self._FIXTURES_SHARED_TRACT_IDS + } + + # Set values to match test fixtures + etl_class.EXPECTED_MISSING_STATES = [ + x + for x in TILES_CONTINENTAL_US_FIPS_CODE + + TILES_ALASKA_AND_HAWAII_FIPS_CODE + if x not in states_expected_from_fixtures + ] + etl_class.PUERTO_RICO_EXPECTED_IN_DATA = False + etl_class.ISLAND_AREAS_EXPECTED_IN_DATA = False + etl_class.ALASKA_AND_HAWAII_EXPECTED_IN_DATA = True + + return etl_class def _setup_etl_instance_and_run_extract( self, mock_etl, mock_paths @@ -98,18 +121,47 @@ def _setup_etl_instance_and_run_extract( In order to re-implement this method, usually it will involve a decent amount of work to monkeypatch `requests` or another method that's used to retrieve data in order to force that method to retrieve the fixture - data. + data. A basic version of that patching is included here for classes that can use it. """ - # When running this in child classes, make sure the child class re-implements - # this method. - if self._ETL_CLASS is not ExampleETL: - raise NotImplementedError( - "Prepare and run extract method not defined for this class." - ) - # The rest of this method applies for `ExampleETL` only. - etl = self._get_instance_of_etl_class() - etl.extract() + with mock.patch( + "data_pipeline.utils.requests" + ) as requests_mock, mock.patch( + "data_pipeline.etl.score.etl_utils.get_state_fips_codes" + ) as mock_get_state_fips_codes: + tmp_path = mock_paths[1] + if self._SAMPLE_DATA_ZIP_FILE_NAME is not None: + zip_file_fixture_src = ( + self._DATA_DIRECTORY_FOR_TEST + / self._SAMPLE_DATA_ZIP_FILE_NAME + ) + + # Create mock response. + with open(zip_file_fixture_src, mode="rb") as file: + file_contents = file.read() + else: + with open( + self._DATA_DIRECTORY_FOR_TEST / self._SAMPLE_DATA_FILE_NAME, + "rb", + ) as file: + file_contents = file.read() + response_mock = requests.Response() + response_mock.status_code = 200 + # pylint: disable=protected-access + response_mock._content = file_contents + # Return text fixture: + requests_mock.get = mock.MagicMock(return_value=response_mock) + mock_get_state_fips_codes.return_value = [ + x[0:2] for x in self._FIXTURES_SHARED_TRACT_IDS + ] + # Instantiate the ETL class. + etl = self._get_instance_of_etl_class() + + # Monkey-patch the temporary directory to the one used in the test + etl.TMP_PATH = tmp_path + + # Run the extract method. + etl.extract() return etl @@ -154,6 +206,16 @@ def test_get_output_file_path_base(self, mock_etl, mock_paths): assert actual_file_path == expected_file_path + def test_tract_id_lengths(self, mock_etl, mock_paths): + etl = self._setup_etl_instance_and_run_extract( + mock_etl=mock_etl, mock_paths=mock_paths + ) + etl.transform() + etl.validate() + etl.load() + df = etl.get_data_frame() + assert (df[etl.GEOID_TRACT_FIELD_NAME].str.len() == 11).all() + def test_fixtures_contain_shared_tract_ids_base(self, mock_etl, mock_paths): """Check presence of necessary shared tract IDs. Note: We used shared census tract IDs so that later our tests can join all the @@ -185,9 +247,14 @@ def test_sample_data_exists(self): """This will test that the sample data exists where it's supposed to as it's supposed to As per conversation with Jorge, here we can *just* test that the zip file exists. """ - assert ( - self._SAMPLE_DATA_PATH / self._SAMPLE_DATA_ZIP_FILE_NAME - ).exists() + if self._SAMPLE_DATA_ZIP_FILE_NAME is not None: + assert ( + self._SAMPLE_DATA_PATH / self._SAMPLE_DATA_ZIP_FILE_NAME + ).exists() + else: + assert ( + self._SAMPLE_DATA_PATH / self._SAMPLE_DATA_FILE_NAME + ).exists() def test_extract_unzips_base(self, mock_etl, mock_paths): """Tests the extract method. @@ -195,17 +262,18 @@ def test_extract_unzips_base(self, mock_etl, mock_paths): As per conversation with Jorge, no longer includes snapshot. Instead, verifies that the file was unzipped from a "fake" downloaded zip (located in data) in a temporary path. """ - tmp_path = mock_paths[1] + if self._SAMPLE_DATA_ZIP_FILE_NAME is not None: + tmp_path = mock_paths[1] - _ = self._setup_etl_instance_and_run_extract( - mock_etl=mock_etl, - mock_paths=mock_paths, - ) - assert ( - tmp_path - / self._EXTRACT_TMP_FOLDER_NAME - / self._SAMPLE_DATA_FILE_NAME - ).exists() + _ = self._setup_etl_instance_and_run_extract( + mock_etl=mock_etl, + mock_paths=mock_paths, + ) + assert ( + tmp_path + / self._EXTRACT_TMP_FOLDER_NAME + / self._SAMPLE_DATA_FILE_NAME + ).exists() def test_extract_produces_valid_data(self, snapshot, mock_etl, mock_paths): """Tests the extract method. @@ -363,9 +431,14 @@ def test_validate_base(self, mock_etl, mock_paths): etl_with_duplicate_geo_field.output_df = actual_output_df.copy( deep=True ) + etl_with_duplicate_geo_field.output_df.reset_index(inplace=True) etl_with_duplicate_geo_field.output_df.loc[ 0:1, ExtractTransformLoad.GEOID_TRACT_FIELD_NAME - ] = "06007040300" + ] = etl_with_duplicate_geo_field.output_df[ + ExtractTransformLoad.GEOID_TRACT_FIELD_NAME + ].iloc[ + 0 + ] with pytest.raises(ValueError) as error: etl_with_duplicate_geo_field.validate() assert str(error.value).startswith("Duplicate values:") @@ -436,7 +509,7 @@ def test_validate_base(self, mock_etl, mock_paths): # Remove another column to keep and make sure error occurs. etl_with_missing_column = copy.deepcopy(etl) - columns_to_keep = actual_output_df.columns[:-1] + columns_to_keep = etl.COLUMNS_TO_KEEP[:-1] etl_with_missing_column.output_df = actual_output_df[columns_to_keep] with pytest.raises(ValueError) as error: etl_with_missing_column.validate() diff --git a/data/data-pipeline/data_pipeline/tests/sources/fsf_flood_risk/__init__.py b/data/data-pipeline/data_pipeline/tests/sources/fsf_flood_risk/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/data/data-pipeline/data_pipeline/tests/sources/fsf_flood_risk/data/extract.csv b/data/data-pipeline/data_pipeline/tests/sources/fsf_flood_risk/data/extract.csv new file mode 100644 index 000000000..7a37fcd1f --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/fsf_flood_risk/data/extract.csv @@ -0,0 +1,17 @@ +GEOID,count_properties,mid_depth_100_year00,mid_depth_100_year30 +6027000800,942,214,215 +6069000802,1131,283,292 +6061021322,1483,100,108 +15001021010,1888,179,186 +15001021101,3463,130,137 +15007040603,1557,152,181 +15007040700,1533,177,191 +15009030100,1658,232,242 +15009030201,6144,431,447 +15001021402,4118,321,329 +15001021800,2813,350,356 +15009030402,3374,852,888 +15009030800,4847,1003,1019 +15003010201,2335,220,227 +15007040604,5364,630,641 +2290000400,1,1,1 diff --git a/data/data-pipeline/data_pipeline/tests/sources/fsf_flood_risk/data/fsf_flood.zip b/data/data-pipeline/data_pipeline/tests/sources/fsf_flood_risk/data/fsf_flood.zip new file mode 100644 index 000000000..c605c1410 Binary files /dev/null and b/data/data-pipeline/data_pipeline/tests/sources/fsf_flood_risk/data/fsf_flood.zip differ diff --git a/data/data-pipeline/data_pipeline/tests/sources/fsf_flood_risk/data/output.csv b/data/data-pipeline/data_pipeline/tests/sources/fsf_flood_risk/data/output.csv new file mode 100644 index 000000000..cdb3b9d50 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/fsf_flood_risk/data/output.csv @@ -0,0 +1,17 @@ +GEOID10_TRACT,Count of properties eligible for flood risk calculation within tract (floor of 250),Count of properties at risk of flood today,Count of properties at risk of flood in 30 years,Share of properties at risk of flood today,Share of properties at risk of flood in 30 years +06027000800,942,214,215,0.2271762208,0.2282377919 +06069000802,1131,283,292,0.2502210433,0.2581786030 +06061021322,1483,100,108,0.0674308833,0.0728253540 +15001021010,1888,179,186,0.0948093220,0.0985169492 +15001021101,3463,130,137,0.0375397055,0.0395610742 +15007040603,1557,152,181,0.0976236352,0.1162491972 +15007040700,1533,177,191,0.1154598826,0.1245923027 +15009030100,1658,232,242,0.1399276236,0.1459589867 +15009030201,6144,431,447,0.0701497396,0.0727539062 +15001021402,4118,321,329,0.0779504614,0.0798931520 +15001021800,2813,350,356,0.1244223249,0.1265552791 +15009030402,3374,852,888,0.2525192650,0.2631890931 +15009030800,4847,1003,1019,0.2069321230,0.2102331339 +15003010201,2335,220,227,0.0942184154,0.0972162741 +15007040604,5364,630,641,0.1174496644,0.1195003729 +02290000400,250,1,1,0.0040000000,0.0040000000 diff --git a/data/data-pipeline/data_pipeline/tests/sources/fsf_flood_risk/data/transform.csv b/data/data-pipeline/data_pipeline/tests/sources/fsf_flood_risk/data/transform.csv new file mode 100644 index 000000000..f33814034 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/fsf_flood_risk/data/transform.csv @@ -0,0 +1,17 @@ +GEOID,count_properties,Count of properties at risk of flood today,Count of properties at risk of flood in 30 years,GEOID10_TRACT,Count of properties eligible for flood risk calculation within tract (floor of 250),Share of properties at risk of flood today,Share of properties at risk of flood in 30 years +06027000800,942,214,215,06027000800,942,0.2271762208,0.2282377919 +06069000802,1131,283,292,06069000802,1131,0.2502210433,0.2581786030 +06061021322,1483,100,108,06061021322,1483,0.0674308833,0.0728253540 +15001021010,1888,179,186,15001021010,1888,0.0948093220,0.0985169492 +15001021101,3463,130,137,15001021101,3463,0.0375397055,0.0395610742 +15007040603,1557,152,181,15007040603,1557,0.0976236352,0.1162491972 +15007040700,1533,177,191,15007040700,1533,0.1154598826,0.1245923027 +15009030100,1658,232,242,15009030100,1658,0.1399276236,0.1459589867 +15009030201,6144,431,447,15009030201,6144,0.0701497396,0.0727539062 +15001021402,4118,321,329,15001021402,4118,0.0779504614,0.0798931520 +15001021800,2813,350,356,15001021800,2813,0.1244223249,0.1265552791 +15009030402,3374,852,888,15009030402,3374,0.2525192650,0.2631890931 +15009030800,4847,1003,1019,15009030800,4847,0.2069321230,0.2102331339 +15003010201,2335,220,227,15003010201,2335,0.0942184154,0.0972162741 +15007040604,5364,630,641,15007040604,5364,0.1174496644,0.1195003729 +2290000400,1,1,1,02290000400,250,0.0040000000,0.0040000000 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 new file mode 100644 index 000000000..acc009c2e --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/fsf_flood_risk/test_etl.py @@ -0,0 +1,23 @@ +import pathlib + +from data_pipeline.etl.sources.fsf_flood_risk.etl import FloodRiskETL +from data_pipeline.tests.sources.example.test_etl import TestETL + + +class TestFloodRiskETL(TestETL): + _ETL_CLASS = FloodRiskETL + + _SAMPLE_DATA_PATH = pathlib.Path(__file__).parents[0] / "data" + _SAMPLE_DATA_FILE_NAME = "fsf_flood/flood-tract2010.csv" + _SAMPLE_DATA_ZIP_FILE_NAME = "fsf_flood.zip" + _EXTRACT_TMP_FOLDER_NAME = "FloodRiskETL" + _FIXTURES_SHARED_TRACT_IDS = TestETL._FIXTURES_SHARED_TRACT_IDS + [ + "02290000400" # A tract with 1 property + ] + + def setup_method(self, _method, filename=__file__): + """Invoke `setup_method` from Parent, but using the current file name. + + This code can be copied identically between all child classes. + """ + super().setup_method(_method=_method, filename=filename) diff --git a/data/data-pipeline/data_pipeline/tests/sources/fsf_wildfire_risk/__init__.py b/data/data-pipeline/data_pipeline/tests/sources/fsf_wildfire_risk/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/data/data-pipeline/data_pipeline/tests/sources/fsf_wildfire_risk/data/extract.csv b/data/data-pipeline/data_pipeline/tests/sources/fsf_wildfire_risk/data/extract.csv new file mode 100644 index 000000000..11a310d2d --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/fsf_wildfire_risk/data/extract.csv @@ -0,0 +1,17 @@ +GEOID,count_properties,burnprob_year00_flag,burnprob_year30_flag +6027000800,942,31,634 +6069000802,1131,0,264 +6061021322,1483,13,478 +15001021010,1888,62,550 +15001021101,3463,18,192 +15007040603,1557,0,509 +15007040700,1535,0,43 +15009030100,1660,177,968 +15009030201,6144,173,2856 +15001021402,4118,20,329 +15001021800,2814,111,770 +15009030402,3375,7,437 +15009030800,4847,3268,3529 +15003010201,2335,1949,2005 +15007040604,5365,3984,4439 +4003001402,1,1,1 diff --git a/data/data-pipeline/data_pipeline/tests/sources/fsf_wildfire_risk/data/fsf_fire.zip b/data/data-pipeline/data_pipeline/tests/sources/fsf_wildfire_risk/data/fsf_fire.zip new file mode 100644 index 000000000..51778725a Binary files /dev/null and b/data/data-pipeline/data_pipeline/tests/sources/fsf_wildfire_risk/data/fsf_fire.zip differ diff --git a/data/data-pipeline/data_pipeline/tests/sources/fsf_wildfire_risk/data/output.csv b/data/data-pipeline/data_pipeline/tests/sources/fsf_wildfire_risk/data/output.csv new file mode 100644 index 000000000..b5eef117c --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/fsf_wildfire_risk/data/output.csv @@ -0,0 +1,17 @@ +GEOID10_TRACT,Count of properties eligible for wildfire risk calculation within tract (floor of 250),Count of properties at risk of wildfire today,Count of properties at risk of wildfire in 30 years,Share of properties at risk of fire today,Share of properties at risk of fire in 30 years +06027000800,942,31,634,0.0329087049,0.6730360934 +06069000802,1131,0,264,0.0000000000,0.2334217507 +06061021322,1483,13,478,0.0087660148,0.3223196224 +15001021010,1888,62,550,0.0328389831,0.2913135593 +15001021101,3463,18,192,0.0051978054,0.0554432573 +15007040603,1557,0,509,0.0000000000,0.3269107258 +15007040700,1535,0,43,0.0000000000,0.0280130293 +15009030100,1660,177,968,0.1066265060,0.5831325301 +15009030201,6144,173,2856,0.0281575521,0.4648437500 +15001021402,4118,20,329,0.0048567266,0.0798931520 +15001021800,2814,111,770,0.0394456290,0.2736318408 +15009030402,3375,7,437,0.0020740741,0.1294814815 +15009030800,4847,3268,3529,0.6742314834,0.7280792243 +15003010201,2335,1949,2005,0.8346895075,0.8586723769 +15007040604,5365,3984,4439,0.7425908667,0.8273998136 +04003001402,250,1,1,0.0040000000,0.0040000000 diff --git a/data/data-pipeline/data_pipeline/tests/sources/fsf_wildfire_risk/data/transform.csv b/data/data-pipeline/data_pipeline/tests/sources/fsf_wildfire_risk/data/transform.csv new file mode 100644 index 000000000..1e65f5084 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/fsf_wildfire_risk/data/transform.csv @@ -0,0 +1,17 @@ +GEOID,count_properties,Count of properties at risk of wildfire today,Count of properties at risk of wildfire in 30 years,GEOID10_TRACT,Count of properties eligible for wildfire risk calculation within tract (floor of 250),Share of properties at risk of fire today,Share of properties at risk of fire in 30 years +06027000800,942,31,634,06027000800,942,0.0329087049,0.6730360934 +06069000802,1131,0,264,06069000802,1131,0.0000000000,0.2334217507 +06061021322,1483,13,478,06061021322,1483,0.0087660148,0.3223196224 +15001021010,1888,62,550,15001021010,1888,0.0328389831,0.2913135593 +15001021101,3463,18,192,15001021101,3463,0.0051978054,0.0554432573 +15007040603,1557,0,509,15007040603,1557,0.0000000000,0.3269107258 +15007040700,1535,0,43,15007040700,1535,0.0000000000,0.0280130293 +15009030100,1660,177,968,15009030100,1660,0.1066265060,0.5831325301 +15009030201,6144,173,2856,15009030201,6144,0.0281575521,0.4648437500 +15001021402,4118,20,329,15001021402,4118,0.0048567266,0.0798931520 +15001021800,2814,111,770,15001021800,2814,0.0394456290,0.2736318408 +15009030402,3375,7,437,15009030402,3375,0.0020740741,0.1294814815 +15009030800,4847,3268,3529,15009030800,4847,0.6742314834,0.7280792243 +15003010201,2335,1949,2005,15003010201,2335,0.8346895075,0.8586723769 +15007040604,5365,3984,4439,15007040604,5365,0.7425908667,0.8273998136 +4003001402,1,1,1,04003001402,250,0.0040000000,0.0040000000 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 new file mode 100644 index 000000000..b34381476 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/fsf_wildfire_risk/test_etl.py @@ -0,0 +1,23 @@ +import pathlib + +from data_pipeline.etl.sources.fsf_wildfire_risk.etl import WildfireRiskETL +from data_pipeline.tests.sources.example.test_etl import TestETL + + +class TestWildfireRiskETL(TestETL): + _ETL_CLASS = WildfireRiskETL + + _SAMPLE_DATA_PATH = pathlib.Path(__file__).parents[0] / "data" + _SAMPLE_DATA_FILE_NAME = "fsf_fire/fire-tract2010.csv" + _SAMPLE_DATA_ZIP_FILE_NAME = "fsf_fire.zip" + _EXTRACT_TMP_FOLDER_NAME = "WildfireRiskETL" + _FIXTURES_SHARED_TRACT_IDS = TestETL._FIXTURES_SHARED_TRACT_IDS + [ + "04003001402" # A tract with 1 property, also missing a digit + ] + + def setup_method(self, _method, filename=__file__): + """Invoke `setup_method` from Parent, but using the current file name. + + This code can be copied identically between all child classes. + """ + super().setup_method(_method=_method, filename=filename) diff --git a/data/data-pipeline/data_pipeline/tests/sources/geocorr/__init__.py b/data/data-pipeline/data_pipeline/tests/sources/geocorr/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/data/data-pipeline/data_pipeline/tests/sources/geocorr/data/extract.csv b/data/data-pipeline/data_pipeline/tests/sources/geocorr/data/extract.csv new file mode 100644 index 000000000..bcfcf9fa6 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/geocorr/data/extract.csv @@ -0,0 +1,16 @@ +GEOID10_TRACT,population_in_rural_areas,population_in_urban_areas,perc_population_in_rural_areas,perc_population_in_urban_areas,urban_heuristic_flag +06027000800,3378.0000000000,,1.0000000000,,0 +06061021322,2252.0000000000,6510.0000000000,0.2570189454,0.7429810546,1 +06069000802,2007.0000000000,527.0000000000,0.7920284136,0.2079715864,0 +15001021010,7884.0000000000,,1.0000000000,,0 +15001021101,3312.0000000000,219.0000000000,0.9379779099,0.0620220901,0 +15001021402,1532.0000000000,2493.0000000000,0.3806211180,0.6193788820,1 +15001021800,2725.0000000000,3597.0000000000,0.4310344828,0.5689655172,1 +15003010201,827.0000000000,5055.0000000000,0.1405984359,0.8594015641,1 +15007040603,789.0000000000,1755.0000000000,0.3101415094,0.6898584906,1 +15007040604,275.0000000000,2864.0000000000,0.0876075183,0.9123924817,1 +15007040700,814.0000000000,7589.0000000000,0.0968701654,0.9031298346,1 +15009030100,2291.0000000000,,1.0000000000,,0 +15009030201,1982.0000000000,471.0000000000,0.8079902161,0.1920097839,0 +15009030402,419.0000000000,8233.0000000000,0.0484281091,0.9515718909,1 +15009030800,1100.0000000000,5807.0000000000,0.1592587230,0.8407412770,1 diff --git a/data/data-pipeline/data_pipeline/tests/sources/geocorr/data/geocorr_urban_rural.csv b/data/data-pipeline/data_pipeline/tests/sources/geocorr/data/geocorr_urban_rural.csv new file mode 100644 index 000000000..3dd9bf0dc --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/geocorr/data/geocorr_urban_rural.csv @@ -0,0 +1,16 @@ +GEOID10_TRACT,population_in_rural_areas,population_in_urban_areas,perc_population_in_rural_areas,perc_population_in_urban_areas,urban_heuristic_flag +06027000800,3378.0,,1.0,,0 +06061021322,2252.0,6510.0,0.25701894544624515,0.7429810545537548,1 +06069000802,2007.0,527.0,0.7920284135753749,0.2079715864246251,0 +15001021010,7884.0,,1.0,,0 +15001021101,3312.0,219.0,0.9379779099405268,0.062022090059473234,0 +15001021402,1532.0,2493.0,0.3806211180124224,0.6193788819875776,1 +15001021800,2725.0,3597.0,0.43103448275862066,0.5689655172413793,1 +15003010201,827.0,5055.0,0.14059843590615437,0.8594015640938456,1 +15007040603,789.0,1755.0,0.31014150943396224,0.6898584905660378,1 +15007040604,275.0,2864.0,0.08760751831793565,0.9123924816820643,1 +15007040700,814.0,7589.0,0.09687016541711294,0.9031298345828871,1 +15009030100,2291.0,,1.0,,0 +15009030201,1982.0,471.0,0.807990216061965,0.19200978393803506,0 +15009030402,419.0,8233.0,0.04842810910772076,0.9515718908922792,1 +15009030800,1100.0,5807.0,0.1592587230346026,0.8407412769653975,1 diff --git a/data/data-pipeline/data_pipeline/tests/sources/geocorr/data/geocorr_urban_rural.csv.zip b/data/data-pipeline/data_pipeline/tests/sources/geocorr/data/geocorr_urban_rural.csv.zip new file mode 100644 index 000000000..9ca015021 Binary files /dev/null and b/data/data-pipeline/data_pipeline/tests/sources/geocorr/data/geocorr_urban_rural.csv.zip differ diff --git a/data/data-pipeline/data_pipeline/tests/sources/geocorr/data/output.csv b/data/data-pipeline/data_pipeline/tests/sources/geocorr/data/output.csv new file mode 100644 index 000000000..5311c0f4c --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/geocorr/data/output.csv @@ -0,0 +1,16 @@ +GEOID10_TRACT,Urban Heuristic Flag +06027000800,0 +06061021322,1 +06069000802,0 +15001021010,0 +15001021101,0 +15001021402,1 +15001021800,1 +15003010201,1 +15007040603,1 +15007040604,1 +15007040700,1 +15009030100,0 +15009030201,0 +15009030402,1 +15009030800,1 diff --git a/data/data-pipeline/data_pipeline/tests/sources/geocorr/data/transform.csv b/data/data-pipeline/data_pipeline/tests/sources/geocorr/data/transform.csv new file mode 100644 index 000000000..2c12f718b --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/geocorr/data/transform.csv @@ -0,0 +1,16 @@ +GEOID10_TRACT,population_in_rural_areas,population_in_urban_areas,perc_population_in_rural_areas,perc_population_in_urban_areas,Urban Heuristic Flag +06027000800,3378.0000000000,,1.0000000000,,0 +06061021322,2252.0000000000,6510.0000000000,0.2570189454,0.7429810546,1 +06069000802,2007.0000000000,527.0000000000,0.7920284136,0.2079715864,0 +15001021010,7884.0000000000,,1.0000000000,,0 +15001021101,3312.0000000000,219.0000000000,0.9379779099,0.0620220901,0 +15001021402,1532.0000000000,2493.0000000000,0.3806211180,0.6193788820,1 +15001021800,2725.0000000000,3597.0000000000,0.4310344828,0.5689655172,1 +15003010201,827.0000000000,5055.0000000000,0.1405984359,0.8594015641,1 +15007040603,789.0000000000,1755.0000000000,0.3101415094,0.6898584906,1 +15007040604,275.0000000000,2864.0000000000,0.0876075183,0.9123924817,1 +15007040700,814.0000000000,7589.0000000000,0.0968701654,0.9031298346,1 +15009030100,2291.0000000000,,1.0000000000,,0 +15009030201,1982.0000000000,471.0000000000,0.8079902161,0.1920097839,0 +15009030402,419.0000000000,8233.0000000000,0.0484281091,0.9515718909,1 +15009030800,1100.0000000000,5807.0000000000,0.1592587230,0.8407412770,1 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 new file mode 100644 index 000000000..95bdf0b77 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/geocorr/test_etl.py @@ -0,0 +1,20 @@ +import pathlib + +from data_pipeline.etl.sources.geocorr.etl import GeoCorrETL +from data_pipeline.tests.sources.example.test_etl import TestETL + + +class TestGeoCorrETL(TestETL): + _ETL_CLASS = GeoCorrETL + + _SAMPLE_DATA_PATH = pathlib.Path(__file__).parents[0] / "data" + _SAMPLE_DATA_FILE_NAME = "geocorr_urban_rural.csv" + _SAMPLE_DATA_ZIP_FILE_NAME = "geocorr_urban_rural.csv.zip" + _EXTRACT_TMP_FOLDER_NAME = "GeoCorrETL" + + def setup_method(self, _method, filename=__file__): + """Invoke `setup_method` from Parent, but using the current file name. + + This code can be copied identically between all child classes. + """ + super().setup_method(_method=_method, filename=filename) diff --git a/data/data-pipeline/data_pipeline/tests/sources/historic_redlining/__init__.py b/data/data-pipeline/data_pipeline/tests/sources/historic_redlining/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/data/data-pipeline/data_pipeline/tests/sources/historic_redlining/data/HRS_2010.zip b/data/data-pipeline/data_pipeline/tests/sources/historic_redlining/data/HRS_2010.zip new file mode 100644 index 000000000..c8c43cbe7 Binary files /dev/null and b/data/data-pipeline/data_pipeline/tests/sources/historic_redlining/data/HRS_2010.zip differ diff --git a/data/data-pipeline/data_pipeline/tests/sources/historic_redlining/data/output.csv b/data/data-pipeline/data_pipeline/tests/sources/historic_redlining/data/output.csv new file mode 100644 index 000000000..8b86f139b --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/historic_redlining/data/output.csv @@ -0,0 +1,16 @@ +GEOID10_TRACT,Tract-level redlining score,Tract-level redlining score meets or exceeds 3.25,Tract-level redlining score meets or exceeds 3.5,Tract-level redlining score meets or exceeds 3.75 +06027000800,3.3000000000,True,False,False +06061021322,3.9900000000,True,True,True +06069000802,3.7800000000,True,True,True +15001021010,4.0000000000,True,True,True +15001021101,4.0000000000,True,True,True +15001021402,3.8600000000,True,True,True +15001021800,4.0000000000,True,True,True +15003010201,3.9600000000,True,True,True +15007040603,3.9700000000,True,True,True +15007040604,3.9400000000,True,True,True +15007040700,3.2000000000,False,False,False +15009030100,3.7700000000,True,True,True +15009030201,3.2300000000,False,False,False +15009030402,3.0000000000,False,False,False +15009030800,3.4000000000,True,False,False diff --git a/data/data-pipeline/data_pipeline/tests/sources/historic_redlining/data/transform.csv b/data/data-pipeline/data_pipeline/tests/sources/historic_redlining/data/transform.csv new file mode 100644 index 000000000..5c49681c6 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/historic_redlining/data/transform.csv @@ -0,0 +1,16 @@ +GEOID10,CBSA_NAME,CBSA_NUM,EQINTERVAL2010,Tract-level redlining score,GEOID10_TRACT,Tract-level redlining score meets or exceeds 3.25,Tract-level redlining score meets or exceeds 3.5,Tract-level redlining score meets or exceeds 3.75 +6027000800,"Birmingham-Hoover, AL",13820,4,3.3000000000,06027000800,True,False,False +6061021322,"Birmingham-Hoover, AL",13820,4,3.9900000000,06061021322,True,True,True +6069000802,"Birmingham-Hoover, AL",13820,4,3.7800000000,06069000802,True,True,True +15001021010,"Birmingham-Hoover, AL",13820,4,4.0000000000,15001021010,True,True,True +15001021101,"Birmingham-Hoover, AL",13820,4,4.0000000000,15001021101,True,True,True +15001021402,"Birmingham-Hoover, AL",13820,4,3.8600000000,15001021402,True,True,True +15001021800,"Birmingham-Hoover, AL",13820,4,4.0000000000,15001021800,True,True,True +15003010201,"Birmingham-Hoover, AL",13820,4,3.9600000000,15003010201,True,True,True +15007040603,"Birmingham-Hoover, AL",13820,4,3.9700000000,15007040603,True,True,True +15007040604,"Birmingham-Hoover, AL",13820,4,3.9400000000,15007040604,True,True,True +15007040700,"Birmingham-Hoover, AL",13820,3,3.2000000000,15007040700,False,False,False +15009030100,"Birmingham-Hoover, AL",13820,4,3.7700000000,15009030100,True,True,True +15009030201,"Birmingham-Hoover, AL",13820,3,3.2300000000,15009030201,False,False,False +15009030402,"Birmingham-Hoover, AL",13820,3,3.0000000000,15009030402,False,False,False +15009030800,"Birmingham-Hoover, AL",13820,4,3.4000000000,15009030800,True,False,False 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 new file mode 100644 index 000000000..de2c7f8f9 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/historic_redlining/test_etl.py @@ -0,0 +1,67 @@ +# pylint: disable=protected-access +import pathlib + +import pandas as pd +from data_pipeline.etl.sources.historic_redlining.etl import ( + HistoricRedliningETL, +) +from data_pipeline.tests.sources.example.test_etl import TestETL + + +class TestHistoricRedliningETL(TestETL): + _ETL_CLASS = HistoricRedliningETL + + _SAMPLE_DATA_PATH = pathlib.Path(__file__).parents[0] / "data" + _SAMPLE_DATA_FILE_NAME = "HRS_2010.xlsx" + _SAMPLE_DATA_ZIP_FILE_NAME = "HRS_2010.zip" + _EXTRACT_TMP_FOLDER_NAME = "HistoricRedliningETL" + + def setup_method(self, _method, filename=__file__): + """Invoke `setup_method` from Parent, but using the current file name. + + This code can be copied identically between all child classes. + """ + super().setup_method(_method=_method, filename=filename) + + def test_extract_produces_valid_data(self, snapshot, mock_etl, mock_paths): + etl = self._setup_etl_instance_and_run_extract( + mock_etl=mock_etl, + mock_paths=mock_paths, + ) + tmp_df = pd.read_excel( + etl.get_tmp_path() / self._SAMPLE_DATA_FILE_NAME, + dtype={etl.GEOID_TRACT_FIELD_NAME: str}, + ) + assert tmp_df.shape == (15, 5) + + def test_load_base(self, snapshot, mock_etl, mock_paths): + """Test load method. + We need to run transform here for real to add + the dynamic cols to keep + """ + # setup - input variables + etl = self._setup_etl_instance_and_run_extract( + mock_etl=mock_etl, + mock_paths=mock_paths, + ) + etl.transform() + etl.load() + + # Make sure it creates the file. + actual_output_path = etl._get_output_file_path() + assert actual_output_path.exists() + + # Check COLUMNS_TO_KEEP remain + actual_output = pd.read_csv( + actual_output_path, dtype={etl.GEOID_TRACT_FIELD_NAME: str} + ) + + for col in etl.COLUMNS_TO_KEEP: + assert col in actual_output.columns, f"{col} is missing from output" + + # Check the snapshots + snapshot.snapshot_dir = self._DATA_DIRECTORY_FOR_TEST + snapshot.assert_match( + actual_output.to_csv(index=False, float_format=self._FLOAT_FORMAT), + self._OUTPUT_CSV_FILE_NAME, + ) diff --git a/data/data-pipeline/data_pipeline/tests/sources/hud_housing/__init__.py b/data/data-pipeline/data_pipeline/tests/sources/hud_housing/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/data/data-pipeline/data_pipeline/tests/sources/hud_housing/data/2014thru2018-140-csv.zip b/data/data-pipeline/data_pipeline/tests/sources/hud_housing/data/2014thru2018-140-csv.zip new file mode 100644 index 000000000..436070293 Binary files /dev/null and b/data/data-pipeline/data_pipeline/tests/sources/hud_housing/data/2014thru2018-140-csv.zip differ diff --git a/data/data-pipeline/data_pipeline/tests/sources/hud_housing/data/extract.csv b/data/data-pipeline/data_pipeline/tests/sources/hud_housing/data/extract.csv new file mode 100644 index 000000000..74ad03681 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/hud_housing/data/extract.csv @@ -0,0 +1,16 @@ +source,sumlevel,geoid,name,st,cnty,tract,T3_est1,T3_est2,T3_est3,T3_est4,T3_est5,T3_est6,T3_est7,T3_est8,T3_est9,T3_est10,T3_est11,T3_est12,T3_est13,T3_est14,T3_est15,T3_est16,T3_est17,T3_est18,T3_est19,T3_est20,T3_est21,T3_est22,T3_est23,T3_est24,T3_est25,T3_est26,T3_est27,T3_est28,T3_est29,T3_est30,T3_est31,T3_est32,T3_est33,T3_est34,T3_est35,T3_est36,T3_est37,T3_est38,T3_est39,T3_est40,T3_est41,T3_est42,T3_est43,T3_est44,T3_est45,T3_est46,T3_est47,T3_est48,T3_est49,T3_est50,T3_est51,T3_est52,T3_est53,T3_est54,T3_est55,T3_est56,T3_est57,T3_est58,T3_est59,T3_est60,T3_est61,T3_est62,T3_est63,T3_est64,T3_est65,T3_est66,T3_est67,T3_est68,T3_est69,T3_est70,T3_est71,T3_est72,T3_est73,T3_est74,T3_est75,T3_est76,T3_est77,T3_est78,T3_est79,T3_est80,T3_est81,T3_est82,T3_est83,T3_est84,T3_est85,T3_est86,T3_est87,T3_moe1,T3_moe2,T3_moe3,T3_moe4,T3_moe5,T3_moe6,T3_moe7,T3_moe8,T3_moe9,T3_moe10,T3_moe11,T3_moe12,T3_moe13,T3_moe14,T3_moe15,T3_moe16,T3_moe17,T3_moe18,T3_moe19,T3_moe20,T3_moe21,T3_moe22,T3_moe23,T3_moe24,T3_moe25,T3_moe26,T3_moe27,T3_moe28,T3_moe29,T3_moe30,T3_moe31,T3_moe32,T3_moe33,T3_moe34,T3_moe35,T3_moe36,T3_moe37,T3_moe38,T3_moe39,T3_moe40,T3_moe41,T3_moe42,T3_moe43,T3_moe44,T3_moe45,T3_moe46,T3_moe47,T3_moe48,T3_moe49,T3_moe50,T3_moe51,T3_moe52,T3_moe53,T3_moe54,T3_moe55,T3_moe56,T3_moe57,T3_moe58,T3_moe59,T3_moe60,T3_moe61,T3_moe62,T3_moe63,T3_moe64,T3_moe65,T3_moe66,T3_moe67,T3_moe68,T3_moe69,T3_moe70,T3_moe71,T3_moe72,T3_moe73,T3_moe74,T3_moe75,T3_moe76,T3_moe77,T3_moe78,T3_moe79,T3_moe80,T3_moe81,T3_moe82,T3_moe83,T3_moe84,T3_moe85,T3_moe86,T3_moe87 +2014thru2018,140,14000US06027000800,"Census Tract 8, Inyo County, California",6,27,800,1375,800,30,30,0,0,0,0,0,0,0,0,0,0,10,0,0,0,10,0,115,35,30,50,0,4,115,15,35,10,15,35,0,0,0,0,0,0,530,30,65,70,50,320,580,35,25,10,0,0,0,0,0,0,0,0,0,65,0,10,0,55,0,90,70,20,0,0,0,95,10,30,40,0,10,0,0,0,0,0,0,300,10,40,85,0,165,133,101,31,31,12,12,12,12,12,12,12,12,12,12,15,12,12,12,15,12,57,26,32,41,12,5,56,15,34,13,22,35,12,12,12,12,12,12,90,31,34,41,25,79,122,34,30,16,12,12,12,12,12,12,12,12,12,67,12,18,12,64,12,83,79,32,12,12,12,52,20,32,35,12,14,12,12,12,12,12,12,89,14,30,50,12,64 +2014thru2018,140,14000US06061021322,"Census Tract 213.22, Placer County, California",6,61,21322,5395,4250,0,0,0,0,0,0,15,0,0,0,0,15,120,0,0,0,55,65,250,70,45,105,35,0,630,30,75,130,105,290,65,65,0,0,0,0,3170,15,45,140,60,2905,1145,0,0,0,0,0,0,50,50,0,0,0,0,45,0,45,0,0,0,240,160,30,50,0,0,270,0,160,85,30,0,15,15,0,0,0,0,520,65,0,135,105,215,179,212,19,19,19,19,19,19,26,19,19,19,19,26,108,19,19,19,65,84,122,57,39,84,39,19,151,37,88,78,67,116,87,87,19,19,19,19,238,20,38,92,56,249,187,19,19,19,19,19,19,81,81,19,19,19,19,73,19,73,19,19,19,100,95,35,52,19,19,115,19,93,90,30,19,26,26,19,19,19,19,170,83,19,105,87,99 +2014thru2018,140,14000US06069000802,"Census Tract 8.02, San Benito County, California",6,69,802,885,615,4,4,0,4,0,4,4,0,0,0,0,4,0,0,0,0,0,0,70,4,20,20,4,25,90,4,10,10,10,55,4,4,0,0,0,0,440,10,25,35,35,335,265,4,0,0,4,0,0,4,0,0,0,4,0,20,4,15,0,0,0,25,4,20,0,0,0,25,4,4,15,0,0,4,4,0,0,0,0,190,20,35,20,35,80,69,70,11,5,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,25,12,16,12,1,20,28,3,11,11,12,23,10,10,12,12,12,12,62,10,31,20,19,46,45,4,12,12,4,12,12,11,12,12,12,11,12,19,12,17,12,12,12,17,11,18,12,12,12,14,2,7,14,12,12,3,3,12,12,12,12,43,14,19,14,18,28 +2014thru2018,140,14000US15001021010,"Census Tract 210.10, Hawaii County, Hawaii",15,1,21010,3130,2515,230,85,70,4,20,50,55,10,35,0,0,10,110,10,15,50,0,30,245,155,85,4,0,0,275,30,60,135,40,4,55,55,0,0,0,0,1550,170,290,140,190,760,615,40,20,4,0,4,10,65,20,0,0,0,45,50,20,0,0,25,4,55,40,4,0,10,0,100,0,50,45,0,0,70,70,0,0,0,0,235,30,20,40,35,105,176,219,100,44,81,10,32,43,37,13,35,15,15,14,56,23,22,41,15,32,121,112,62,19,15,15,136,38,40,118,34,15,40,40,15,15,15,15,212,104,145,72,107,189,168,26,18,9,15,10,13,77,30,15,15,15,70,40,22,15,15,33,2,35,31,14,15,15,15,55,15,40,44,15,15,86,86,15,15,15,15,111,25,27,36,30,91 +2014thru2018,140,14000US15001021101,"Census Tract 211.01, Hawaii County, Hawaii",15,1,21101,1690,1385,125,75,30,0,0,20,35,4,10,10,0,10,4,4,0,0,0,0,255,140,80,35,0,0,125,50,4,20,20,30,30,30,0,0,0,0,810,85,115,115,170,320,300,40,4,0,35,0,0,25,25,0,0,0,0,4,0,0,0,0,4,70,70,0,0,0,0,35,15,10,4,10,0,4,4,0,0,0,0,125,30,10,20,15,50,157,136,73,58,29,11,11,36,29,8,20,15,11,13,3,3,11,11,11,11,78,69,46,34,11,11,40,27,10,14,22,24,23,23,11,11,11,11,117,39,55,61,65,96,98,52,12,11,54,11,11,38,38,11,11,11,11,2,11,11,11,11,2,60,60,11,11,11,11,28,22,13,11,15,11,11,11,11,11,11,11,51,26,13,23,21,36 +2014thru2018,140,14000US15001021402,"Census Tract 214.02, Hawaii County, Hawaii",15,1,21402,1340,830,4,0,0,4,0,0,4,0,0,0,0,4,70,0,0,0,10,60,70,30,4,25,4,0,130,10,10,55,0,55,0,0,0,0,0,0,550,10,4,50,30,455,510,30,30,0,0,0,0,10,0,0,10,0,0,15,0,10,0,0,4,115,100,4,4,0,0,85,20,20,15,25,4,0,0,0,0,0,0,250,40,15,35,45,120,103,132,1,11,11,1,11,11,13,11,11,11,11,13,61,11,11,11,19,59,53,46,14,21,2,11,68,16,20,52,11,32,11,11,11,11,11,11,122,17,15,31,30,107,102,50,50,11,11,11,11,13,11,11,13,11,11,21,11,16,11,11,12,74,70,10,13,11,11,51,21,31,22,40,7,11,11,11,11,11,11,92,22,22,33,47,58 +2014thru2018,140,14000US15001021800,"Census Tract 218, Hawaii County, Hawaii",15,1,21800,2015,1375,30,25,0,0,0,4,10,0,4,4,4,4,65,0,4,4,4,55,100,35,15,30,0,20,285,25,20,20,15,205,15,15,0,0,0,0,870,15,40,105,95,615,640,55,55,0,4,0,0,15,10,0,0,0,4,25,10,4,0,0,10,55,40,15,0,0,0,100,25,25,35,10,4,0,0,0,0,0,0,395,25,0,50,25,290,201,188,41,40,15,15,15,15,13,15,9,4,5,3,41,15,3,5,1,41,53,34,21,28,15,26,118,25,20,16,20,115,21,21,15,15,15,15,159,16,27,51,40,140,159,80,79,15,15,15,15,17,14,15,15,15,11,24,14,10,15,15,14,37,31,18,15,15,15,53,30,20,42,14,3,15,15,15,15,15,15,162,27,15,34,24,155 +2014thru2018,140,14000US15003010201,"Census Tract 102.01, Honolulu County, Hawaii",15,3,10201,1515,785,15,4,0,10,0,0,35,4,0,15,10,4,85,0,4,40,10,30,95,50,10,15,4,10,125,4,15,50,25,35,4,4,0,0,0,0,425,15,4,45,55,305,730,50,10,15,20,0,4,95,25,4,40,15,10,75,0,15,35,4,20,150,55,85,10,0,0,95,10,10,40,25,15,30,30,0,0,0,0,230,4,10,50,45,120,66,73,16,10,15,13,15,15,27,10,15,25,12,9,46,15,9,33,13,22,31,30,13,12,3,17,33,15,13,18,16,15,11,11,15,15,15,15,69,15,11,22,31,52,72,23,11,20,17,15,15,42,21,11,32,14,13,36,15,23,25,15,18,48,28,42,13,15,15,43,14,13,32,22,15,25,25,15,15,15,15,53,10,17,28,23,48 +2014thru2018,140,14000US15007040603,"Census Tract 406.03, Kauai County, Hawaii",15,7,40603,1035,595,4,0,0,0,0,4,4,0,0,0,0,4,30,0,0,4,4,25,100,15,20,20,30,20,80,0,15,4,4,55,4,4,0,0,0,0,370,10,20,55,10,275,440,4,0,0,0,0,4,10,10,0,0,0,0,30,4,4,4,10,10,105,55,25,25,0,4,80,4,15,30,15,10,10,10,0,0,0,0,195,15,0,35,35,115,84,70,11,11,11,11,11,11,18,11,11,11,11,18,25,11,11,4,11,26,34,15,16,12,22,13,31,11,14,11,11,29,11,11,11,11,11,11,66,15,16,29,12,55,75,11,11,11,11,11,11,15,15,11,11,11,11,27,3,3,16,13,14,45,26,20,23,11,17,35,15,21,20,13,14,13,13,11,11,11,11,52,16,11,24,25,45 +2014thru2018,140,14000US15007040604,"Census Tract 406.04, Kauai County, Hawaii",15,7,40604,1235,655,10,0,0,0,0,10,10,0,0,0,4,4,15,0,4,0,0,10,75,45,4,15,4,0,120,4,15,20,25,55,15,15,0,0,0,0,410,15,30,35,15,315,580,4,4,0,0,0,0,30,0,20,0,0,10,25,4,4,0,4,15,90,15,50,20,0,0,165,35,70,15,20,30,0,0,0,0,0,0,260,30,40,20,25,150,79,96,14,11,11,11,11,14,13,11,11,11,10,1,18,11,10,11,11,13,36,33,10,14,9,11,55,11,22,23,28,32,15,15,11,11,11,11,80,28,30,18,18,74,101,11,11,11,11,11,11,31,11,29,11,11,13,25,7,3,11,10,21,45,18,35,24,11,11,56,28,44,15,23,24,11,11,11,11,11,11,77,27,26,16,22,63 +2014thru2018,140,14000US15007040700,"Census Tract 407, Kauai County, Hawaii",15,7,40700,2875,1930,0,0,0,0,0,0,0,0,0,0,0,0,115,0,0,4,0,110,245,80,10,115,15,25,380,80,20,45,70,170,25,25,0,0,0,0,1165,40,20,110,75,920,950,25,0,0,0,4,15,80,0,10,0,10,60,45,0,10,4,0,30,205,90,60,55,0,0,105,20,15,25,0,45,15,15,0,0,0,0,470,25,20,45,100,285,162,199,15,15,15,15,15,15,15,15,15,15,15,15,51,15,15,10,15,52,98,62,17,62,21,30,128,74,29,32,53,83,27,27,15,15,15,15,171,34,17,46,53,179,157,29,15,15,15,13,25,67,15,19,15,21,61,48,15,17,15,15,44,94,64,48,43,15,15,75,23,23,41,15,53,19,19,15,15,15,15,107,18,24,35,72,115 +2014thru2018,140,14000US15009030100,"Census Tract 301, Maui County, Hawaii",15,9,30100,500,320,20,10,0,0,0,10,10,0,0,4,0,4,40,4,0,15,0,20,30,25,0,10,0,0,15,0,0,4,0,10,0,0,0,0,0,0,200,4,65,15,20,95,175,4,4,0,0,0,0,10,0,0,0,0,10,20,0,0,0,20,0,20,20,0,0,0,0,4,0,4,0,0,0,0,0,0,0,0,0,120,25,4,10,0,80,71,75,27,18,11,11,11,18,15,11,11,14,11,10,23,11,11,23,11,14,25,19,11,15,11,11,20,11,11,10,11,18,11,11,11,11,11,11,62,11,57,15,23,53,69,11,11,11,11,11,11,16,11,11,11,11,16,25,11,11,11,25,11,24,24,11,11,11,11,9,11,9,11,11,11,11,11,11,11,11,11,62,30,9,12,11,59 +2014thru2018,140,14000US15009030201,"Census Tract 302.01, Maui County, Hawaii",15,9,30201,820,605,0,0,0,0,0,0,15,0,0,0,0,15,10,0,0,0,10,0,70,25,35,0,0,10,160,10,10,65,15,60,0,0,0,0,0,0,350,40,40,35,10,225,215,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,10,0,0,4,0,4,0,0,0,45,0,0,45,0,0,0,0,0,0,0,0,155,0,10,55,0,90,99,113,11,11,11,11,11,11,23,11,11,11,11,23,24,11,11,11,24,11,47,30,31,11,11,17,81,15,18,73,21,31,11,11,11,11,11,11,91,36,34,34,21,80,100,11,11,11,11,11,11,11,11,11,11,11,11,20,11,11,20,11,11,20,11,20,11,11,11,49,11,11,49,11,11,11,11,11,11,11,11,85,11,21,49,11,78 +2014thru2018,140,14000US15009030402,"Census Tract 304.02, Maui County, Hawaii",15,9,30402,3140,2205,0,0,0,0,0,0,15,0,0,0,0,15,70,25,0,0,0,45,360,100,85,75,85,20,275,10,0,10,10,245,45,45,0,0,0,0,1435,0,90,150,90,1105,935,0,0,0,0,0,0,0,0,0,0,0,0,75,0,15,15,0,45,95,30,30,40,0,0,220,0,45,90,0,80,0,0,0,0,0,0,540,35,0,85,155,270,167,236,15,15,15,15,15,15,30,15,15,15,15,30,55,39,15,15,15,43,150,74,71,65,62,32,130,19,15,21,21,128,70,70,15,15,15,15,227,15,59,122,67,235,244,15,15,15,15,15,15,15,15,15,15,15,15,83,15,29,36,15,72,67,36,34,48,15,15,141,15,44,98,15,97,15,15,15,15,15,15,182,49,15,97,105,127 +2014thru2018,140,14000US15009030800,"Census Tract 308, Maui County, Hawaii",15,9,30800,2250,1810,20,0,0,0,0,20,25,0,4,4,0,20,65,4,0,4,4,60,185,70,30,60,15,15,365,30,15,45,80,195,4,4,0,0,0,0,1140,4,80,50,110,895,445,0,0,0,0,0,0,25,0,10,4,0,10,30,0,0,20,0,10,65,20,15,30,0,0,65,0,10,25,4,25,0,0,0,0,0,0,260,20,35,115,10,85,110,134,27,15,15,15,15,27,19,15,3,8,15,17,38,3,15,4,4,36,70,45,28,36,18,23,120,33,18,31,65,110,11,11,15,15,15,15,166,15,82,41,49,167,132,15,15,15,15,15,15,22,15,17,15,15,15,29,15,15,28,15,17,38,24,19,29,15,15,34,15,17,21,10,32,15,15,15,15,15,15,114,29,31,108,13,40 diff --git a/data/data-pipeline/data_pipeline/tests/sources/hud_housing/data/output.csv b/data/data-pipeline/data_pipeline/tests/sources/hud_housing/data/output.csv new file mode 100644 index 000000000..acd005728 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/hud_housing/data/output.csv @@ -0,0 +1,16 @@ +GEOID10_TRACT,HOUSING_BURDEN_NUMERATOR,HOUSING_BURDEN_DENOMINATOR,Housing burden (percent),Share of homes with no kitchen or indoor plumbing (percent),DENOM INCL NOT COMPUTED +06027000800,370,1376,0.2688953488,0.0471014493,1380 +06061021322,985,5265,0.1870845204,0.0000000000,5395 +06069000802,136,872,0.1559633028,0.0090909091,880 +15001021010,723,2970,0.2434343434,0.0862619808,3130 +15001021101,449,1610,0.2788819876,0.0979228487,1685 +15001021402,354,1340,0.2641791045,0.0253731343,1340 +15001021800,355,2000,0.1775000000,0.0421836228,2015 +15003010201,504,1471,0.3426240653,0.0429042904,1515 +15007040603,238,1021,0.2331047992,0.0077294686,1035 +15007040604,328,1220,0.2688524590,0.0113360324,1235 +15007040700,635,2840,0.2235915493,0.0086805556,2880 +15009030100,84,491,0.1710794297,0.0484848485,495 +15009030201,194,820,0.2365853659,0.0000000000,820 +15009030402,555,3095,0.1793214863,0.0000000000,3140 +15009030800,385,2251,0.1710350955,0.0088691796,2255 diff --git a/data/data-pipeline/data_pipeline/tests/sources/hud_housing/data/transform.csv b/data/data-pipeline/data_pipeline/tests/sources/hud_housing/data/transform.csv new file mode 100644 index 000000000..1eb4b6263 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/hud_housing/data/transform.csv @@ -0,0 +1,16 @@ +source_x,sumlevel_x,geoid_x,name_x,st_x,cnty_x,tract_x,T8_est1,T8_est2,T8_est3,T8_est4,T8_est5,T8_est6,T8_est7,T8_est8,T8_est9,T8_est10,T8_est11,T8_est12,T8_est13,T8_est14,T8_est15,T8_est16,T8_est17,T8_est18,T8_est19,T8_est20,T8_est21,T8_est22,T8_est23,T8_est24,T8_est25,T8_est26,T8_est27,T8_est28,T8_est29,T8_est30,T8_est31,T8_est32,T8_est33,T8_est34,T8_est35,T8_est36,T8_est37,T8_est38,T8_est39,T8_est40,T8_est41,T8_est42,T8_est43,T8_est44,T8_est45,T8_est46,T8_est47,T8_est48,T8_est49,T8_est50,T8_est51,T8_est52,T8_est53,T8_est54,T8_est55,T8_est56,T8_est57,T8_est58,T8_est59,T8_est60,T8_est61,T8_est62,T8_est63,T8_est64,T8_est65,T8_est66,T8_est67,T8_est68,T8_est69,T8_est70,T8_est71,T8_est72,T8_est73,T8_est74,T8_est75,T8_est76,T8_est77,T8_est78,T8_est79,T8_est80,T8_est81,T8_est82,T8_est83,T8_est84,T8_est85,T8_est86,T8_est87,T8_est88,T8_est89,T8_est90,T8_est91,T8_est92,T8_est93,T8_est94,T8_est95,T8_est96,T8_est97,T8_est98,T8_est99,T8_est100,T8_est101,T8_est102,T8_est103,T8_est104,T8_est105,T8_est106,T8_est107,T8_est108,T8_est109,T8_est110,T8_est111,T8_est112,T8_est113,T8_est114,T8_est115,T8_est116,T8_est117,T8_est118,T8_est119,T8_est120,T8_est121,T8_est122,T8_est123,T8_est124,T8_est125,T8_est126,T8_est127,T8_est128,T8_est129,T8_est130,T8_est131,T8_est132,T8_est133,T8_moe1,T8_moe2,T8_moe3,T8_moe4,T8_moe5,T8_moe6,T8_moe7,T8_moe8,T8_moe9,T8_moe10,T8_moe11,T8_moe12,T8_moe13,T8_moe14,T8_moe15,T8_moe16,T8_moe17,T8_moe18,T8_moe19,T8_moe20,T8_moe21,T8_moe22,T8_moe23,T8_moe24,T8_moe25,T8_moe26,T8_moe27,T8_moe28,T8_moe29,T8_moe30,T8_moe31,T8_moe32,T8_moe33,T8_moe34,T8_moe35,T8_moe36,T8_moe37,T8_moe38,T8_moe39,T8_moe40,T8_moe41,T8_moe42,T8_moe43,T8_moe44,T8_moe45,T8_moe46,T8_moe47,T8_moe48,T8_moe49,T8_moe50,T8_moe51,T8_moe52,T8_moe53,T8_moe54,T8_moe55,T8_moe56,T8_moe57,T8_moe58,T8_moe59,T8_moe60,T8_moe61,T8_moe62,T8_moe63,T8_moe64,T8_moe65,T8_moe66,T8_moe67,T8_moe68,T8_moe69,T8_moe70,T8_moe71,T8_moe72,T8_moe73,T8_moe74,T8_moe75,T8_moe76,T8_moe77,T8_moe78,T8_moe79,T8_moe80,T8_moe81,T8_moe82,T8_moe83,T8_moe84,T8_moe85,T8_moe86,T8_moe87,T8_moe88,T8_moe89,T8_moe90,T8_moe91,T8_moe92,T8_moe93,T8_moe94,T8_moe95,T8_moe96,T8_moe97,T8_moe98,T8_moe99,T8_moe100,T8_moe101,T8_moe102,T8_moe103,T8_moe104,T8_moe105,T8_moe106,T8_moe107,T8_moe108,T8_moe109,T8_moe110,T8_moe111,T8_moe112,T8_moe113,T8_moe114,T8_moe115,T8_moe116,T8_moe117,T8_moe118,T8_moe119,T8_moe120,T8_moe121,T8_moe122,T8_moe123,T8_moe124,T8_moe125,T8_moe126,T8_moe127,T8_moe128,T8_moe129,T8_moe130,T8_moe131,T8_moe132,T8_moe133,GEOID10_TRACT,source_y,sumlevel_y,geoid_y,name_y,st_y,cnty_y,tract_y,T3_est1,T3_est2,T3_est3,T3_est4,T3_est5,T3_est6,T3_est7,T3_est8,T3_est9,T3_est10,T3_est11,T3_est12,T3_est13,T3_est14,T3_est15,T3_est16,T3_est17,T3_est18,T3_est19,T3_est20,T3_est21,T3_est22,T3_est23,T3_est24,T3_est25,T3_est26,T3_est27,T3_est28,T3_est29,T3_est30,T3_est31,T3_est32,T3_est33,T3_est34,T3_est35,T3_est36,T3_est37,T3_est38,T3_est39,T3_est40,T3_est41,T3_est42,T3_est43,T3_est44,T3_est45,T3_est46,T3_est47,T3_est48,T3_est49,T3_est50,T3_est51,T3_est52,T3_est53,T3_est54,T3_est55,T3_est56,T3_est57,T3_est58,T3_est59,T3_est60,T3_est61,T3_est62,T3_est63,T3_est64,T3_est65,T3_est66,T3_est67,T3_est68,T3_est69,T3_est70,T3_est71,T3_est72,T3_est73,T3_est74,T3_est75,T3_est76,T3_est77,T3_est78,T3_est79,T3_est80,T3_est81,T3_est82,T3_est83,T3_est84,T3_est85,T3_est86,T3_est87,T3_moe1,T3_moe2,T3_moe3,T3_moe4,T3_moe5,T3_moe6,T3_moe7,T3_moe8,T3_moe9,T3_moe10,T3_moe11,T3_moe12,T3_moe13,T3_moe14,T3_moe15,T3_moe16,T3_moe17,T3_moe18,T3_moe19,T3_moe20,T3_moe21,T3_moe22,T3_moe23,T3_moe24,T3_moe25,T3_moe26,T3_moe27,T3_moe28,T3_moe29,T3_moe30,T3_moe31,T3_moe32,T3_moe33,T3_moe34,T3_moe35,T3_moe36,T3_moe37,T3_moe38,T3_moe39,T3_moe40,T3_moe41,T3_moe42,T3_moe43,T3_moe44,T3_moe45,T3_moe46,T3_moe47,T3_moe48,T3_moe49,T3_moe50,T3_moe51,T3_moe52,T3_moe53,T3_moe54,T3_moe55,T3_moe56,T3_moe57,T3_moe58,T3_moe59,T3_moe60,T3_moe61,T3_moe62,T3_moe63,T3_moe64,T3_moe65,T3_moe66,T3_moe67,T3_moe68,T3_moe69,T3_moe70,T3_moe71,T3_moe72,T3_moe73,T3_moe74,T3_moe75,T3_moe76,T3_moe77,T3_moe78,T3_moe79,T3_moe80,T3_moe81,T3_moe82,T3_moe83,T3_moe84,T3_moe85,T3_moe86,T3_moe87,Share of homes with no kitchen or indoor plumbing (percent),HOUSING_BURDEN_NUMERATOR,HOUSING_BURDEN_DENOMINATOR,DENOM INCL NOT COMPUTED,Housing burden (percent) +2014thru2018,140,14000US06027000800,"Census Tract 8, Inyo County, California",6,27,800,1375,800,105,40,15,30,15,0,15,50,15,35,0,0,0,130,65,0,65,35,0,35,30,0,30,0,0,0,130,70,0,70,10,0,10,50,0,50,0,0,0,70,55,0,55,15,0,15,0,0,0,0,0,0,360,320,0,320,35,0,35,4,0,4,0,0,0,580,120,30,20,10,10,0,10,70,0,70,4,4,0,110,50,10,40,40,0,40,20,0,20,0,0,0,125,85,0,85,40,0,40,0,0,0,0,0,0,55,0,0,0,55,0,55,0,0,0,0,0,0,170,165,0,165,10,0,10,0,0,0,0,0,0,133,101,51,30,15,31,15,12,15,37,31,26,12,12,12,48,34,12,34,34,12,34,32,12,32,12,12,12,59,41,12,41,13,12,13,41,12,41,12,12,12,38,33,12,33,22,12,22,12,12,12,12,12,12,87,79,12,79,35,12,35,5,12,5,12,12,12,122,84,29,28,14,20,12,20,79,12,79,12,12,12,54,34,16,30,37,12,37,32,12,32,12,12,12,56,50,12,50,35,12,35,12,12,12,12,12,12,64,12,12,12,64,12,64,12,12,12,12,12,12,68,64,12,64,14,12,14,12,12,12,12,12,12,06027000800,2014thru2018,140,14000US06027000800,"Census Tract 8, Inyo County, California",6,27,800,1375,800,30,30,0,0,0,0,0,0,0,0,0,0,10,0,0,0,10,0,115,35,30,50,0,4,115,15,35,10,15,35,0,0,0,0,0,0,530,30,65,70,50,320,580,35,25,10,0,0,0,0,0,0,0,0,0,65,0,10,0,55,0,90,70,20,0,0,0,95,10,30,40,0,10,0,0,0,0,0,0,300,10,40,85,0,165,133,101,31,31,12,12,12,12,12,12,12,12,12,12,15,12,12,12,15,12,57,26,32,41,12,5,56,15,34,13,22,35,12,12,12,12,12,12,90,31,34,41,25,79,122,34,30,16,12,12,12,12,12,12,12,12,12,67,12,18,12,64,12,83,79,32,12,12,12,52,20,32,35,12,14,12,12,12,12,12,12,89,14,30,50,12,64,0.0471014493,370,1376,1380,0.2688953488 +2014thru2018,140,14000US06061021322,"Census Tract 213.22, Placer County, California",6,61,21322,5395,4250,185,15,0,15,30,0,30,70,0,70,65,0,65,165,45,0,45,75,0,75,45,0,45,0,0,0,375,140,0,140,130,0,130,105,0,105,0,0,0,255,60,0,60,160,0,160,35,0,35,0,0,0,3275,2990,0,2990,290,0,290,0,0,0,0,0,0,1145,295,65,0,65,0,0,0,160,0,160,65,0,65,235,0,0,0,205,0,205,30,0,30,0,0,0,270,135,0,135,85,0,85,50,0,50,0,0,0,130,105,0,105,30,0,30,0,0,0,0,0,0,215,215,0,215,0,0,0,0,0,0,0,0,0,179,212,100,20,19,20,37,19,37,57,19,57,87,19,87,100,38,19,38,88,19,88,39,19,39,19,19,19,164,92,19,92,78,19,78,84,19,84,19,19,19,109,56,19,56,88,19,88,39,19,39,19,19,19,232,232,19,232,116,19,116,19,19,19,19,19,19,187,139,83,19,83,19,19,19,95,19,95,94,19,94,115,19,19,19,100,19,100,35,19,35,19,19,19,146,105,19,105,90,19,90,52,19,52,19,19,19,91,87,19,87,30,19,30,19,19,19,19,19,19,99,99,19,99,19,19,19,19,19,19,19,19,19,06061021322,2014thru2018,140,14000US06061021322,"Census Tract 213.22, Placer County, California",6,61,21322,5395,4250,0,0,0,0,0,0,15,0,0,0,0,15,120,0,0,0,55,65,250,70,45,105,35,0,630,30,75,130,105,290,65,65,0,0,0,0,3170,15,45,140,60,2905,1145,0,0,0,0,0,0,50,50,0,0,0,0,45,0,45,0,0,0,240,160,30,50,0,0,270,0,160,85,30,0,15,15,0,0,0,0,520,65,0,135,105,215,179,212,19,19,19,19,19,19,26,19,19,19,19,26,108,19,19,19,65,84,122,57,39,84,39,19,151,37,88,78,67,116,87,87,19,19,19,19,238,20,38,92,56,249,187,19,19,19,19,19,19,81,81,19,19,19,19,73,19,73,19,19,19,100,95,35,52,19,19,115,19,93,90,30,19,26,26,19,19,19,19,170,83,19,105,87,99,0.0000000000,985,5265,5395,0.1870845204 +2014thru2018,140,14000US06069000802,"Census Tract 8.02, San Benito County, California",6,69,802,885,615,25,10,4,10,4,0,4,4,0,4,4,0,4,55,25,0,25,10,0,10,20,0,20,0,0,0,70,40,4,35,10,0,10,20,0,20,0,0,0,45,35,0,35,10,0,10,4,0,4,0,0,0,420,340,4,335,55,0,55,25,0,25,0,0,0,265,35,20,0,20,4,0,4,10,0,10,4,0,4,75,35,0,35,4,0,4,35,0,35,0,0,0,35,25,4,20,15,0,15,0,0,0,0,0,0,40,40,0,40,0,0,0,0,0,0,0,0,0,80,80,0,80,0,0,0,0,0,0,0,0,0,69,70,14,12,5,10,3,12,3,12,12,12,10,12,10,35,31,12,31,11,12,11,16,12,16,12,12,12,22,18,12,20,11,12,11,12,12,12,12,12,12,20,19,12,19,12,12,12,1,12,1,12,12,12,49,47,12,47,23,12,23,20,12,20,12,12,12,45,15,14,12,14,2,12,2,9,12,9,3,12,3,28,19,12,19,7,12,7,23,12,23,12,12,12,21,15,4,14,14,12,14,12,12,12,12,12,12,20,20,12,20,12,12,12,12,12,12,12,12,12,28,28,12,28,12,12,12,12,12,12,12,12,12,06069000802,2014thru2018,140,14000US06069000802,"Census Tract 8.02, San Benito County, California",6,69,802,885,615,4,4,0,4,0,4,4,0,0,0,0,4,0,0,0,0,0,0,70,4,20,20,4,25,90,4,10,10,10,55,4,4,0,0,0,0,440,10,25,35,35,335,265,4,0,0,4,0,0,4,0,0,0,4,0,20,4,15,0,0,0,25,4,20,0,0,0,25,4,4,15,0,0,4,4,0,0,0,0,190,20,35,20,35,80,69,70,11,5,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,25,12,16,12,1,20,28,3,11,11,12,23,10,10,12,12,12,12,62,10,31,20,19,46,45,4,12,12,4,12,12,11,12,12,12,11,12,19,12,17,12,12,12,17,11,18,12,12,12,14,2,7,14,12,12,3,3,12,12,12,12,43,14,19,14,18,28,0.0090909091,136,872,880,0.1559633028 +2014thru2018,140,14000US15001021010,"Census Tract 210.10, Hawaii County, Hawaii",15,1,21010,3130,2515,520,210,25,190,40,10,30,190,30,155,80,20,60,555,385,70,310,90,0,90,85,0,85,0,0,0,345,200,4,190,135,0,135,4,0,4,0,0,0,245,205,20,190,40,0,40,0,0,0,0,0,0,855,840,40,800,15,10,4,0,0,0,0,0,0,615,200,40,10,30,0,0,0,80,10,70,80,0,80,85,25,4,20,50,0,50,4,0,4,0,0,0,90,40,0,40,45,0,45,0,0,0,0,0,0,80,70,4,65,0,0,0,10,0,10,0,0,0,160,160,10,155,0,0,0,0,0,0,0,0,0,176,219,147,112,21,107,40,13,38,116,33,112,43,21,40,166,161,81,146,48,15,48,62,15,62,15,15,15,143,80,10,81,118,15,118,19,15,19,15,15,15,100,99,32,107,34,15,34,15,15,15,15,15,15,196,199,39,189,22,13,15,15,15,15,15,15,15,168,111,30,13,25,15,15,15,50,17,44,92,15,92,51,29,9,27,40,15,40,14,15,14,15,15,15,53,36,15,36,44,15,44,15,15,15,15,15,15,43,43,10,42,15,15,15,15,15,15,15,15,15,114,114,13,114,15,15,15,15,15,15,15,15,15,15001021010,2014thru2018,140,14000US15001021010,"Census Tract 210.10, Hawaii County, Hawaii",15,1,21010,3130,2515,230,85,70,4,20,50,55,10,35,0,0,10,110,10,15,50,0,30,245,155,85,4,0,0,275,30,60,135,40,4,55,55,0,0,0,0,1550,170,290,140,190,760,615,40,20,4,0,4,10,65,20,0,0,0,45,50,20,0,0,25,4,55,40,4,0,10,0,100,0,50,45,0,0,70,70,0,0,0,0,235,30,20,40,35,105,176,219,100,44,81,10,32,43,37,13,35,15,15,14,56,23,22,41,15,32,121,112,62,19,15,15,136,38,40,118,34,15,40,40,15,15,15,15,212,104,145,72,107,189,168,26,18,9,15,10,13,77,30,15,15,15,70,40,22,15,15,33,2,35,31,14,15,15,15,55,15,40,44,15,15,86,86,15,15,15,15,111,25,27,36,30,91,0.0862619808,723,2970,3130,0.2434343434 +2014thru2018,140,14000US15001021101,"Census Tract 211.01, Hawaii County, Hawaii",15,1,21101,1690,1385,390,145,60,85,50,0,50,145,0,145,50,15,30,240,140,15,125,20,15,4,80,0,80,0,0,0,185,130,0,130,20,0,20,35,0,35,0,0,0,190,170,0,170,20,0,20,0,0,0,0,0,0,380,350,20,330,30,0,30,0,0,0,0,0,0,300,150,35,4,30,15,0,15,70,0,70,25,0,25,15,10,0,10,10,0,10,0,0,0,0,0,0,55,55,35,20,4,0,4,0,0,0,0,0,0,25,15,0,15,10,0,10,0,0,0,0,0,0,55,55,0,55,0,0,0,0,0,0,0,0,0,157,136,98,63,54,39,27,11,27,71,11,71,33,24,25,79,63,22,59,23,24,10,46,11,46,11,11,11,74,63,11,63,14,11,14,34,11,34,11,11,11,68,65,11,65,22,11,22,11,11,11,11,11,11,101,97,36,97,24,11,24,11,11,11,11,11,11,98,76,29,12,26,22,11,22,60,11,60,36,11,36,21,13,11,13,13,11,13,11,11,11,11,11,11,58,57,54,23,11,11,11,11,11,11,11,11,11,22,21,11,21,15,11,15,11,11,11,11,11,11,33,33,11,33,11,11,11,11,11,11,11,11,11,15001021101,2014thru2018,140,14000US15001021101,"Census Tract 211.01, Hawaii County, Hawaii",15,1,21101,1690,1385,125,75,30,0,0,20,35,4,10,10,0,10,4,4,0,0,0,0,255,140,80,35,0,0,125,50,4,20,20,30,30,30,0,0,0,0,810,85,115,115,170,320,300,40,4,0,35,0,0,25,25,0,0,0,0,4,0,0,0,0,4,70,70,0,0,0,0,35,15,10,4,10,0,4,4,0,0,0,0,125,30,10,20,15,50,157,136,73,58,29,11,11,36,29,8,20,15,11,13,3,3,11,11,11,11,78,69,46,34,11,11,40,27,10,14,22,24,23,23,11,11,11,11,117,39,55,61,65,96,98,52,12,11,54,11,11,38,38,11,11,11,11,2,11,11,11,11,2,60,60,11,11,11,11,28,22,13,11,15,11,11,11,11,11,11,11,51,26,13,23,21,36,0.0979228487,449,1610,1685,0.2788819876 +2014thru2018,140,14000US15001021402,"Census Tract 214.02, Hawaii County, Hawaii",15,1,21402,1340,830,55,10,0,10,10,0,10,30,0,30,0,0,0,25,4,0,4,10,0,10,4,0,4,0,0,0,130,50,0,50,55,0,55,30,4,25,0,0,0,45,40,0,40,0,0,0,4,0,4,0,0,0,575,520,0,520,55,0,55,0,0,0,0,0,0,510,195,40,0,40,20,0,20,130,30,100,0,0,0,50,15,0,15,20,0,20,15,0,15,0,0,0,65,35,0,35,15,0,15,15,0,15,0,0,0,70,45,0,45,25,0,25,0,0,0,0,0,0,130,125,0,125,4,0,4,0,0,0,0,0,0,103,132,51,17,11,17,16,11,16,46,11,46,11,11,11,21,15,11,15,20,11,20,14,11,14,11,11,11,58,31,11,31,52,11,52,24,1,21,11,11,11,34,34,11,34,11,11,11,2,11,2,11,11,11,119,121,11,121,32,11,32,11,11,11,11,11,11,102,83,22,11,22,21,11,21,84,50,70,11,11,11,39,22,11,22,31,11,31,19,11,19,11,11,11,41,33,11,33,22,11,22,20,11,20,11,11,11,59,47,11,47,40,11,40,11,11,11,11,11,11,60,60,11,60,7,11,7,11,11,11,11,11,11,15001021402,2014thru2018,140,14000US15001021402,"Census Tract 214.02, Hawaii County, Hawaii",15,1,21402,1340,830,4,0,0,4,0,0,4,0,0,0,0,4,70,0,0,0,10,60,70,30,4,25,4,0,130,10,10,55,0,55,0,0,0,0,0,0,550,10,4,50,30,455,510,30,30,0,0,0,0,10,0,0,10,0,0,15,0,10,0,0,4,115,100,4,4,0,0,85,20,20,15,25,4,0,0,0,0,0,0,250,40,15,35,45,120,103,132,1,11,11,1,11,11,13,11,11,11,11,13,61,11,11,11,19,59,53,46,14,21,2,11,68,16,20,52,11,32,11,11,11,11,11,11,122,17,15,31,30,107,102,50,50,11,11,11,11,13,11,11,13,11,11,21,11,16,11,11,12,74,70,10,13,11,11,51,21,31,22,40,7,11,11,11,11,11,11,92,22,22,33,47,58,0.0253731343,354,1340,1340,0.2641791045 +2014thru2018,140,14000US15001021800,"Census Tract 218, Hawaii County, Hawaii",15,1,21800,2015,1375,120,40,25,15,25,0,25,35,0,35,15,0,15,80,45,0,45,20,0,20,15,0,15,0,0,0,155,110,0,110,20,0,20,30,0,30,0,0,0,110,100,0,100,15,0,15,0,0,0,0,0,0,905,680,4,675,205,0,205,20,0,20,0,0,0,640,160,25,0,25,25,0,25,110,55,55,0,0,0,45,4,0,4,25,0,25,15,0,15,0,0,0,85,55,4,50,35,0,35,0,0,0,0,0,0,35,25,0,25,10,0,10,0,0,0,0,0,0,310,310,0,310,4,0,4,0,0,0,0,0,0,201,188,62,43,40,16,25,15,25,34,15,34,21,15,21,39,31,15,31,20,15,20,21,15,21,15,15,15,58,49,15,49,16,15,16,28,15,28,15,15,15,45,40,15,40,20,15,20,15,15,15,15,15,15,170,149,15,148,115,15,115,26,15,26,15,15,15,159,91,27,15,27,30,15,30,86,79,37,15,15,15,29,10,15,10,20,15,20,18,15,18,15,15,15,50,36,15,34,42,15,42,15,15,15,15,15,15,27,24,15,24,14,15,14,15,15,15,15,15,15,155,155,15,155,3,15,3,15,15,15,15,15,15,15001021800,2014thru2018,140,14000US15001021800,"Census Tract 218, Hawaii County, Hawaii",15,1,21800,2015,1375,30,25,0,0,0,4,10,0,4,4,4,4,65,0,4,4,4,55,100,35,15,30,0,20,285,25,20,20,15,205,15,15,0,0,0,0,870,15,40,105,95,615,640,55,55,0,4,0,0,15,10,0,0,0,4,25,10,4,0,0,10,55,40,15,0,0,0,100,25,25,35,10,4,0,0,0,0,0,0,395,25,0,50,25,290,201,188,41,40,15,15,15,15,13,15,9,4,5,3,41,15,3,5,1,41,53,34,21,28,15,26,118,25,20,16,20,115,21,21,15,15,15,15,159,16,27,51,40,140,159,80,79,15,15,15,15,17,14,15,15,15,11,24,14,10,15,15,14,37,31,18,15,15,15,53,30,20,42,14,3,15,15,15,15,15,15,162,27,15,34,24,155,0.0421836228,355,2000,2015,0.1775000000 +2014thru2018,140,14000US15003010201,"Census Tract 102.01, Honolulu County, Hawaii",15,3,10201,1515,785,85,15,0,15,4,0,4,65,4,55,4,0,4,35,4,0,4,15,0,15,15,0,15,0,0,0,180,75,4,70,75,10,65,30,0,30,0,0,0,100,70,0,70,25,0,25,4,0,4,0,0,0,385,340,0,340,35,0,35,10,0,10,0,0,0,730,135,10,4,4,10,0,10,75,4,70,40,0,40,150,10,0,10,50,15,35,85,0,85,0,0,0,195,110,10,100,65,4,65,15,4,10,0,0,0,90,65,0,65,25,0,25,0,0,0,0,0,0,165,145,4,140,20,0,20,0,0,0,0,0,0,66,73,36,15,15,15,15,15,15,31,10,31,11,15,11,18,11,15,11,13,15,13,14,15,14,15,15,15,50,35,15,35,26,15,28,24,15,24,15,15,15,35,33,15,33,16,15,16,3,15,3,15,15,15,54,50,15,50,15,15,15,17,15,17,15,15,15,72,46,14,15,10,14,15,14,33,10,34,28,15,28,55,17,15,17,35,20,31,42,15,42,15,15,15,57,43,13,41,34,15,33,22,13,13,15,15,15,34,29,15,29,22,15,22,15,15,15,15,15,15,57,54,15,56,18,15,18,15,15,15,15,15,15,15003010201,2014thru2018,140,14000US15003010201,"Census Tract 102.01, Honolulu County, Hawaii",15,3,10201,1515,785,15,4,0,10,0,0,35,4,0,15,10,4,85,0,4,40,10,30,95,50,10,15,4,10,125,4,15,50,25,35,4,4,0,0,0,0,425,15,4,45,55,305,730,50,10,15,20,0,4,95,25,4,40,15,10,75,0,15,35,4,20,150,55,85,10,0,0,95,10,10,40,25,15,30,30,0,0,0,0,230,4,10,50,45,120,66,73,16,10,15,13,15,15,27,10,15,25,12,9,46,15,9,33,13,22,31,30,13,12,3,17,33,15,13,18,16,15,11,11,15,15,15,15,69,15,11,22,31,52,72,23,11,20,17,15,15,42,21,11,32,14,13,36,15,23,25,15,18,48,28,42,13,15,15,43,14,13,32,22,15,25,25,15,15,15,15,53,10,17,28,23,48,0.0429042904,504,1471,1515,0.3426240653 +2014thru2018,140,14000US15007040603,"Census Tract 406.03, Kauai County, Hawaii",15,7,40603,1035,595,25,10,0,10,0,0,0,15,0,15,4,0,4,55,20,0,20,15,0,15,20,0,20,0,0,0,80,55,0,55,4,0,4,20,0,20,0,0,0,50,10,0,10,10,0,10,30,0,30,0,0,0,385,310,4,305,55,0,55,20,0,20,0,0,0,440,100,25,0,25,4,0,4,55,0,55,10,0,10,40,4,0,4,15,0,15,25,0,25,0,0,0,100,35,0,35,40,0,40,25,0,25,0,0,0,60,40,0,40,15,0,15,0,0,0,0,0,0,145,125,4,125,10,0,10,4,0,4,0,0,0,84,70,15,15,11,15,11,11,11,15,11,15,11,11,11,24,16,11,16,14,11,14,16,11,16,11,11,11,33,29,11,29,11,11,11,14,11,14,11,11,11,21,12,11,12,10,11,10,22,11,22,11,11,11,67,60,11,61,29,11,29,13,11,13,11,11,11,75,34,21,11,21,15,11,15,28,11,28,13,11,13,29,3,11,3,21,11,21,20,11,20,11,11,11,43,24,11,24,23,11,23,23,11,23,11,11,11,32,30,11,30,13,11,13,11,11,11,11,11,11,53,49,11,49,14,11,14,17,11,17,11,11,11,15007040603,2014thru2018,140,14000US15007040603,"Census Tract 406.03, Kauai County, Hawaii",15,7,40603,1035,595,4,0,0,0,0,4,4,0,0,0,0,4,30,0,0,4,4,25,100,15,20,20,30,20,80,0,15,4,4,55,4,4,0,0,0,0,370,10,20,55,10,275,440,4,0,0,0,0,4,10,10,0,0,0,0,30,4,4,4,10,10,105,55,25,25,0,4,80,4,15,30,15,10,10,10,0,0,0,0,195,15,0,35,35,115,84,70,11,11,11,11,11,11,18,11,11,11,11,18,25,11,11,4,11,26,34,15,16,12,22,13,31,11,14,11,11,29,11,11,11,11,11,11,66,15,16,29,12,55,75,11,11,11,11,11,11,15,15,11,11,11,11,27,3,3,16,13,14,45,26,20,23,11,17,35,15,21,20,13,14,13,13,11,11,11,11,52,16,11,24,25,45,0.0077294686,238,1021,1035,0.2331047992 +2014thru2018,140,14000US15007040604,"Census Tract 406.04, Kauai County, Hawaii",15,7,40604,1235,655,85,15,0,15,4,0,4,45,0,45,15,0,15,55,35,0,35,15,0,15,4,0,4,0,0,0,70,35,0,35,20,0,20,15,0,15,0,0,0,50,20,0,20,25,0,25,4,0,4,0,0,0,395,335,4,330,60,4,55,0,0,0,0,0,0,580,95,35,4,30,40,0,40,15,0,15,0,0,0,180,45,0,45,85,0,85,50,0,50,0,0,0,55,20,0,20,15,0,15,20,0,20,0,0,0,45,25,0,25,20,0,20,0,0,0,0,0,0,205,175,0,175,30,0,30,0,0,0,0,0,0,79,96,46,28,11,28,11,11,11,33,11,33,15,11,15,35,30,11,30,22,11,22,10,11,10,11,11,11,31,18,11,18,23,11,23,14,11,14,11,11,11,36,19,11,19,28,11,28,9,11,9,11,11,11,80,74,13,76,33,5,32,11,11,11,11,11,11,101,44,28,11,27,30,11,30,18,11,18,11,11,11,65,29,11,29,50,11,50,35,11,35,11,11,11,28,16,11,16,15,11,15,24,11,24,11,11,11,29,21,11,21,23,11,23,11,11,11,11,11,11,72,69,11,69,24,11,24,11,11,11,11,11,11,15007040604,2014thru2018,140,14000US15007040604,"Census Tract 406.04, Kauai County, Hawaii",15,7,40604,1235,655,10,0,0,0,0,10,10,0,0,0,4,4,15,0,4,0,0,10,75,45,4,15,4,0,120,4,15,20,25,55,15,15,0,0,0,0,410,15,30,35,15,315,580,4,4,0,0,0,0,30,0,20,0,0,10,25,4,4,0,4,15,90,15,50,20,0,0,165,35,70,15,20,30,0,0,0,0,0,0,260,30,40,20,25,150,79,96,14,11,11,11,11,14,13,11,11,11,10,1,18,11,10,11,11,13,36,33,10,14,9,11,55,11,22,23,28,32,15,15,11,11,11,11,80,28,30,18,18,74,101,11,11,11,11,11,11,31,11,29,11,11,13,25,7,3,11,10,21,45,18,35,24,11,11,56,28,44,15,23,24,11,11,11,11,11,11,77,27,26,16,22,63,0.0113360324,328,1220,1235,0.2688524590 +2014thru2018,140,14000US15007040700,"Census Tract 407, Kauai County, Hawaii",15,7,40700,2875,1930,220,40,0,40,80,0,80,80,0,80,25,0,25,50,20,0,20,20,0,20,10,0,10,0,0,0,275,115,0,115,45,0,45,115,0,115,0,0,0,160,75,0,75,70,0,70,15,0,15,0,0,0,1225,1030,0,1030,170,0,170,25,0,25,0,0,0,950,150,25,0,25,20,0,20,90,0,90,15,0,15,120,35,0,35,25,0,25,60,0,60,0,0,0,135,45,0,45,35,0,35,55,0,55,0,0,0,115,115,4,110,0,0,0,0,0,0,0,0,0,430,370,0,370,60,15,45,0,0,0,0,0,0,162,199,93,34,15,34,74,15,74,62,15,62,27,15,27,38,17,15,17,29,15,29,17,15,17,15,15,15,82,46,15,46,32,15,32,62,15,62,15,15,15,73,53,15,53,53,15,53,21,15,21,15,15,15,187,173,15,173,83,15,83,30,15,30,15,15,15,157,73,18,15,18,23,15,23,64,15,64,19,15,19,68,32,15,32,33,15,33,48,15,48,15,15,15,66,35,15,35,44,15,44,43,15,43,15,15,15,79,79,13,74,15,15,15,15,15,15,15,15,15,141,134,15,134,57,25,53,15,15,15,15,15,15,15007040700,2014thru2018,140,14000US15007040700,"Census Tract 407, Kauai County, Hawaii",15,7,40700,2875,1930,0,0,0,0,0,0,0,0,0,0,0,0,115,0,0,4,0,110,245,80,10,115,15,25,380,80,20,45,70,170,25,25,0,0,0,0,1165,40,20,110,75,920,950,25,0,0,0,4,15,80,0,10,0,10,60,45,0,10,4,0,30,205,90,60,55,0,0,105,20,15,25,0,45,15,15,0,0,0,0,470,25,20,45,100,285,162,199,15,15,15,15,15,15,15,15,15,15,15,15,51,15,15,10,15,52,98,62,17,62,21,30,128,74,29,32,53,83,27,27,15,15,15,15,171,34,17,46,53,179,157,29,15,15,15,13,25,67,15,19,15,21,61,48,15,17,15,15,44,94,64,48,43,15,15,75,23,23,41,15,53,19,19,15,15,15,15,107,18,24,35,72,115,0.0086805556,635,2840,2880,0.2235915493 +2014thru2018,140,14000US15009030100,"Census Tract 301, Maui County, Hawaii",15,9,30100,500,320,45,4,0,4,10,10,0,25,0,25,4,0,4,65,65,0,65,0,0,0,0,0,0,0,0,0,50,35,0,35,10,0,10,10,0,10,0,0,0,20,20,0,20,0,0,0,0,0,0,0,0,0,145,135,10,120,10,0,10,0,0,0,0,0,0,175,50,25,0,25,0,0,0,25,4,20,0,0,0,10,4,0,4,4,0,4,0,0,0,0,0,0,10,10,0,10,0,0,0,0,0,0,0,0,0,20,15,0,15,4,0,4,0,0,0,0,0,0,90,90,0,90,0,0,0,0,0,0,0,0,0,71,75,25,11,11,11,18,18,11,19,11,19,11,11,11,57,57,11,57,11,11,11,11,11,11,11,11,11,32,27,11,27,14,11,14,15,11,15,11,11,11,23,23,11,23,11,11,11,11,11,11,11,11,11,58,55,18,53,18,11,18,11,11,11,11,11,11,69,41,30,11,30,11,11,11,24,11,24,11,11,11,14,9,11,9,9,11,9,11,11,11,11,11,11,12,12,11,12,11,11,11,11,11,11,11,11,11,25,25,11,25,10,11,10,11,11,11,11,11,11,59,59,11,59,11,11,11,11,11,11,11,11,11,15009030100,2014thru2018,140,14000US15009030100,"Census Tract 301, Maui County, Hawaii",15,9,30100,500,320,20,10,0,0,0,10,10,0,0,4,0,4,40,4,0,15,0,20,30,25,0,10,0,0,15,0,0,4,0,10,0,0,0,0,0,0,200,4,65,15,20,95,175,4,4,0,0,0,0,10,0,0,0,0,10,20,0,0,0,20,0,20,20,0,0,0,0,4,0,4,0,0,0,0,0,0,0,0,0,120,25,4,10,0,80,71,75,27,18,11,11,11,18,15,11,11,14,11,10,23,11,11,23,11,14,25,19,11,15,11,11,20,11,11,10,11,18,11,11,11,11,11,11,62,11,57,15,23,53,69,11,11,11,11,11,11,16,11,11,11,11,16,25,11,11,11,25,11,24,24,11,11,11,11,9,11,9,11,11,11,11,11,11,11,11,11,62,30,9,12,11,59,0.0484848485,84,491,495,0.1710794297 +2014thru2018,140,14000US15009030201,"Census Tract 302.01, Maui County, Hawaii",15,9,30201,820,605,75,40,0,40,10,0,10,25,0,25,0,0,0,85,40,0,40,10,0,10,35,0,35,0,0,0,100,35,0,35,65,0,65,0,0,0,0,0,0,40,10,0,10,15,0,15,10,0,10,0,0,0,310,240,0,240,60,0,60,10,0,10,0,0,0,215,0,0,0,0,0,0,0,0,0,0,0,0,0,15,10,0,10,0,0,0,4,0,4,0,0,0,110,65,0,65,45,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,90,0,90,0,0,0,0,0,0,0,0,0,99,113,49,36,11,36,15,11,15,30,11,30,11,11,11,48,34,11,34,18,11,18,31,11,31,11,11,11,79,34,11,34,73,11,73,11,11,11,11,11,11,35,21,11,21,21,11,21,24,11,24,11,11,11,88,84,11,84,31,11,31,17,11,17,11,11,11,100,11,11,11,11,11,11,11,11,11,11,11,11,11,25,21,11,21,11,11,11,20,11,20,11,11,11,67,45,11,45,49,11,49,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,78,78,11,78,11,11,11,11,11,11,11,11,11,15009030201,2014thru2018,140,14000US15009030201,"Census Tract 302.01, Maui County, Hawaii",15,9,30201,820,605,0,0,0,0,0,0,15,0,0,0,0,15,10,0,0,0,10,0,70,25,35,0,0,10,160,10,10,65,15,60,0,0,0,0,0,0,350,40,40,35,10,225,215,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,10,0,0,4,0,4,0,0,0,45,0,0,45,0,0,0,0,0,0,0,0,155,0,10,55,0,90,99,113,11,11,11,11,11,11,23,11,11,11,11,23,24,11,11,11,24,11,47,30,31,11,11,17,81,15,18,73,21,31,11,11,11,11,11,11,91,36,34,34,21,80,100,11,11,11,11,11,11,11,11,11,11,11,11,20,11,11,20,11,11,20,11,20,11,11,11,49,11,11,49,11,11,11,11,11,11,11,11,85,11,21,49,11,78,0.0000000000,194,820,820,0.2365853659 +2014thru2018,140,14000US15009030402,"Census Tract 304.02, Maui County, Hawaii",15,9,30402,3140,2205,185,0,0,0,10,0,10,125,0,125,45,0,45,175,90,0,90,0,0,0,85,0,85,0,0,0,235,150,0,150,10,0,10,75,0,75,0,0,0,185,90,0,90,10,0,10,85,0,85,0,0,0,1425,1165,0,1165,245,0,245,20,0,20,0,0,0,935,65,35,0,35,0,0,0,30,0,30,0,0,0,90,0,0,0,45,0,45,45,0,45,0,0,0,230,100,0,100,90,0,90,40,0,40,0,0,0,155,155,0,155,0,0,0,0,0,0,0,0,0,395,315,0,315,80,0,80,0,0,0,0,0,0,167,236,102,15,15,15,19,15,19,84,15,84,70,15,70,88,59,15,59,15,15,15,71,15,71,15,15,15,139,122,15,122,21,15,21,65,15,65,15,15,15,93,67,15,67,21,15,21,62,15,62,15,15,15,218,231,15,231,128,15,128,32,15,32,15,15,15,244,62,49,15,49,15,15,15,36,15,36,15,15,15,57,15,15,15,44,15,44,46,15,46,15,15,15,155,100,15,100,98,15,98,48,15,48,15,15,15,105,105,15,105,15,15,15,15,15,15,15,15,15,167,148,15,148,97,15,97,15,15,15,15,15,15,15009030402,2014thru2018,140,14000US15009030402,"Census Tract 304.02, Maui County, Hawaii",15,9,30402,3140,2205,0,0,0,0,0,0,15,0,0,0,0,15,70,25,0,0,0,45,360,100,85,75,85,20,275,10,0,10,10,245,45,45,0,0,0,0,1435,0,90,150,90,1105,935,0,0,0,0,0,0,0,0,0,0,0,0,75,0,15,15,0,45,95,30,30,40,0,0,220,0,45,90,0,80,0,0,0,0,0,0,540,35,0,85,155,270,167,236,15,15,15,15,15,15,30,15,15,15,15,30,55,39,15,15,15,43,150,74,71,65,62,32,130,19,15,21,21,128,70,70,15,15,15,15,227,15,59,122,67,235,244,15,15,15,15,15,15,15,15,15,15,15,15,83,15,29,36,15,72,67,36,34,48,15,15,141,15,44,98,15,97,15,15,15,15,15,15,182,49,15,97,105,127,0.0000000000,555,3095,3140,0.1793214863 +2014thru2018,140,14000US15009030800,"Census Tract 308, Maui County, Hawaii",15,9,30800,2250,1810,110,4,0,4,30,0,30,75,0,75,4,0,4,125,80,0,80,15,0,15,30,0,30,0,0,0,160,55,0,55,45,0,45,60,0,60,0,0,0,210,115,0,115,80,0,80,15,0,15,0,0,0,1205,995,20,980,195,0,195,15,0,15,0,0,0,445,40,20,0,20,0,0,0,20,0,20,0,0,0,70,35,0,35,10,0,10,25,0,25,0,0,0,190,115,0,115,45,0,45,30,0,30,0,0,0,15,10,0,10,4,0,4,0,0,0,0,0,0,130,105,0,105,25,0,25,0,0,0,0,0,0,110,134,56,15,15,15,33,15,33,47,15,47,11,15,11,87,82,15,82,15,15,15,28,15,28,15,15,15,61,40,15,40,31,15,31,36,15,36,15,15,15,82,47,15,47,65,15,65,18,15,18,15,15,15,159,175,27,168,110,15,110,23,15,23,15,15,15,132,34,29,15,29,15,15,15,24,15,24,15,15,15,42,31,15,31,17,15,17,23,15,23,15,15,15,120,106,15,106,30,15,30,29,15,29,15,15,15,16,13,15,13,10,15,10,15,15,15,15,15,15,57,48,15,48,32,15,32,15,15,15,15,15,15,15009030800,2014thru2018,140,14000US15009030800,"Census Tract 308, Maui County, Hawaii",15,9,30800,2250,1810,20,0,0,0,0,20,25,0,4,4,0,20,65,4,0,4,4,60,185,70,30,60,15,15,365,30,15,45,80,195,4,4,0,0,0,0,1140,4,80,50,110,895,445,0,0,0,0,0,0,25,0,10,4,0,10,30,0,0,20,0,10,65,20,15,30,0,0,65,0,10,25,4,25,0,0,0,0,0,0,260,20,35,115,10,85,110,134,27,15,15,15,15,27,19,15,3,8,15,17,38,3,15,4,4,36,70,45,28,36,18,23,120,33,18,31,65,110,11,11,15,15,15,15,166,15,82,41,49,167,132,15,15,15,15,15,15,22,15,17,15,15,15,29,15,15,28,15,17,38,24,19,29,15,15,34,15,17,21,10,32,15,15,15,15,15,15,114,29,31,108,13,40,0.0088691796,385,2251,2255,0.1710350955 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 new file mode 100644 index 000000000..920f4f127 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/hud_housing/test_etl.py @@ -0,0 +1,20 @@ +import pathlib + +from data_pipeline.etl.sources.hud_housing.etl import HudHousingETL +from data_pipeline.tests.sources.example.test_etl import TestETL + + +class TestHudHousingETL(TestETL): + _ETL_CLASS = HudHousingETL + + _SAMPLE_DATA_PATH = pathlib.Path(__file__).parents[0] / "data" + _SAMPLE_DATA_FILE_NAME = "140/Table3.csv" + _SAMPLE_DATA_ZIP_FILE_NAME = "2014thru2018-140-csv.zip" + _EXTRACT_TMP_FOLDER_NAME = "HudHousingETL" + + def setup_method(self, _method, filename=__file__): + """Invoke `setup_method` from Parent, but using the current file name. + + This code can be copied identically between all child classes. + """ + super().setup_method(_method=_method, filename=filename) diff --git a/data/data-pipeline/data_pipeline/tests/sources/national_risk_index/data/NRI_Table_CensusTracts.zip b/data/data-pipeline/data_pipeline/tests/sources/national_risk_index/data/NRI_Table_CensusTracts.zip index 0a2c61297..11d182d08 100644 Binary files a/data/data-pipeline/data_pipeline/tests/sources/national_risk_index/data/NRI_Table_CensusTracts.zip and b/data/data-pipeline/data_pipeline/tests/sources/national_risk_index/data/NRI_Table_CensusTracts.zip differ diff --git a/data/data-pipeline/data_pipeline/tests/sources/national_risk_index/data/extract.csv b/data/data-pipeline/data_pipeline/tests/sources/national_risk_index/data/extract.csv index 5e2f79e66..ce92d4f4c 100644 --- a/data/data-pipeline/data_pipeline/tests/sources/national_risk_index/data/extract.csv +++ b/data/data-pipeline/data_pipeline/tests/sources/national_risk_index/data/extract.csv @@ -1,7 +1,7 @@ OID_,NRI_ID,STATE,STATEABBRV,STATEFIPS,COUNTY,COUNTYTYPE,COUNTYFIPS,STCOFIPS,TRACT,TRACTFIPS,POPULATION,BUILDVALUE,AGRIVALUE,AREA,RISK_SCORE,RISK_RATNG,RISK_NPCTL,RISK_SPCTL,EAL_SCORE,EAL_RATNG,EAL_NPCTL,EAL_SPCTL,EAL_VALT,EAL_VALB,EAL_VALP,EAL_VALPE,EAL_VALA,SOVI_SCORE,SOVI_RATNG,SOVI_NPCTL,SOVI_SPCTL,SOVI_VALUE,RESL_SCORE,RESL_RATNG,RESL_NPCTL,RESL_SPCTL,RESL_VALUE,AVLN_EVNTS,AVLN_AFREQ,AVLN_EXPB,AVLN_EXPP,AVLN_EXPPE,AVLN_EXPT,AVLN_HLRB,AVLN_HLRP,AVLN_HLRR,AVLN_EALB,AVLN_EALP,AVLN_EALPE,AVLN_EALT,AVLN_EALS,AVLN_EALR,AVLN_RISKS,AVLN_RISKR,CFLD_EVNTS,CFLD_AFREQ,CFLD_EXPB,CFLD_EXPP,CFLD_EXPPE,CFLD_EXPT,CFLD_HLRB,CFLD_HLRP,CFLD_HLRR,CFLD_EALB,CFLD_EALP,CFLD_EALPE,CFLD_EALT,CFLD_EALS,CFLD_EALR,CFLD_RISKS,CFLD_RISKR,CWAV_EVNTS,CWAV_AFREQ,CWAV_EXPB,CWAV_EXPP,CWAV_EXPPE,CWAV_EXPA,CWAV_EXPT,CWAV_HLRB,CWAV_HLRP,CWAV_HLRA,CWAV_HLRR,CWAV_EALB,CWAV_EALP,CWAV_EALPE,CWAV_EALA,CWAV_EALT,CWAV_EALS,CWAV_EALR,CWAV_RISKS,CWAV_RISKR,DRGT_EVNTS,DRGT_AFREQ,DRGT_EXPA,DRGT_EXPT,DRGT_HLRA,DRGT_HLRR,DRGT_EALA,DRGT_EALT,DRGT_EALS,DRGT_EALR,DRGT_RISKS,DRGT_RISKR,ERQK_EVNTS,ERQK_AFREQ,ERQK_EXPB,ERQK_EXPP,ERQK_EXPPE,ERQK_EXPT,ERQK_HLRB,ERQK_HLRP,ERQK_HLRR,ERQK_EALB,ERQK_EALP,ERQK_EALPE,ERQK_EALT,ERQK_EALS,ERQK_EALR,ERQK_RISKS,ERQK_RISKR,HAIL_EVNTS,HAIL_AFREQ,HAIL_EXPB,HAIL_EXPP,HAIL_EXPPE,HAIL_EXPA,HAIL_EXPT,HAIL_HLRB,HAIL_HLRP,HAIL_HLRA,HAIL_HLRR,HAIL_EALB,HAIL_EALP,HAIL_EALPE,HAIL_EALA,HAIL_EALT,HAIL_EALS,HAIL_EALR,HAIL_RISKS,HAIL_RISKR,HWAV_EVNTS,HWAV_AFREQ,HWAV_EXPB,HWAV_EXPP,HWAV_EXPPE,HWAV_EXPA,HWAV_EXPT,HWAV_HLRB,HWAV_HLRP,HWAV_HLRA,HWAV_HLRR,HWAV_EALB,HWAV_EALP,HWAV_EALPE,HWAV_EALA,HWAV_EALT,HWAV_EALS,HWAV_EALR,HWAV_RISKS,HWAV_RISKR,HRCN_EVNTS,HRCN_AFREQ,HRCN_EXPB,HRCN_EXPP,HRCN_EXPPE,HRCN_EXPA,HRCN_EXPT,HRCN_HLRB,HRCN_HLRP,HRCN_HLRA,HRCN_HLRR,HRCN_EALB,HRCN_EALP,HRCN_EALPE,HRCN_EALA,HRCN_EALT,HRCN_EALS,HRCN_EALR,HRCN_RISKS,HRCN_RISKR,ISTM_EVNTS,ISTM_AFREQ,ISTM_EXPB,ISTM_EXPP,ISTM_EXPPE,ISTM_EXPT,ISTM_HLRB,ISTM_HLRP,ISTM_HLRR,ISTM_EALB,ISTM_EALP,ISTM_EALPE,ISTM_EALT,ISTM_EALS,ISTM_EALR,ISTM_RISKS,ISTM_RISKR,LNDS_EVNTS,LNDS_AFREQ,LNDS_EXPB,LNDS_EXPP,LNDS_EXPPE,LNDS_EXPT,LNDS_HLRB,LNDS_HLRP,LNDS_HLRR,LNDS_EALB,LNDS_EALP,LNDS_EALPE,LNDS_EALT,LNDS_EALS,LNDS_EALR,LNDS_RISKS,LNDS_RISKR,LTNG_EVNTS,LTNG_AFREQ,LTNG_EXPB,LTNG_EXPP,LTNG_EXPPE,LTNG_EXPT,LTNG_HLRB,LTNG_HLRP,LTNG_HLRR,LTNG_EALB,LTNG_EALP,LTNG_EALPE,LTNG_EALT,LTNG_EALS,LTNG_EALR,LTNG_RISKS,LTNG_RISKR,RFLD_EVNTS,RFLD_AFREQ,RFLD_EXPB,RFLD_EXPP,RFLD_EXPPE,RFLD_EXPA,RFLD_EXPT,RFLD_HLRB,RFLD_HLRP,RFLD_HLRA,RFLD_HLRR,RFLD_EALB,RFLD_EALP,RFLD_EALPE,RFLD_EALA,RFLD_EALT,RFLD_EALS,RFLD_EALR,RFLD_RISKS,RFLD_RISKR,SWND_EVNTS,SWND_AFREQ,SWND_EXPB,SWND_EXPP,SWND_EXPPE,SWND_EXPA,SWND_EXPT,SWND_HLRB,SWND_HLRP,SWND_HLRA,SWND_HLRR,SWND_EALB,SWND_EALP,SWND_EALPE,SWND_EALA,SWND_EALT,SWND_EALS,SWND_EALR,SWND_RISKS,SWND_RISKR,TRND_EVNTS,TRND_AFREQ,TRND_EXPB,TRND_EXPP,TRND_EXPPE,TRND_EXPA,TRND_EXPT,TRND_HLRB,TRND_HLRP,TRND_HLRA,TRND_HLRR,TRND_EALB,TRND_EALP,TRND_EALPE,TRND_EALA,TRND_EALT,TRND_EALS,TRND_EALR,TRND_RISKS,TRND_RISKR,TSUN_EVNTS,TSUN_AFREQ,TSUN_EXPB,TSUN_EXPP,TSUN_EXPPE,TSUN_EXPT,TSUN_HLRB,TSUN_HLRP,TSUN_HLRR,TSUN_EALB,TSUN_EALP,TSUN_EALPE,TSUN_EALT,TSUN_EALS,TSUN_EALR,TSUN_RISKS,TSUN_RISKR,VLCN_EVNTS,VLCN_AFREQ,VLCN_EXPB,VLCN_EXPP,VLCN_EXPPE,VLCN_EXPT,VLCN_HLRB,VLCN_HLRP,VLCN_HLRR,VLCN_EALB,VLCN_EALP,VLCN_EALPE,VLCN_EALT,VLCN_EALS,VLCN_EALR,VLCN_RISKS,VLCN_RISKR,WFIR_EVNTS,WFIR_AFREQ,WFIR_EXPB,WFIR_EXPP,WFIR_EXPPE,WFIR_EXPA,WFIR_EXPT,WFIR_HLRB,WFIR_HLRP,WFIR_HLRA,WFIR_HLRR,WFIR_EALB,WFIR_EALP,WFIR_EALPE,WFIR_EALA,WFIR_EALT,WFIR_EALS,WFIR_EALR,WFIR_RISKS,WFIR_RISKR,WNTW_EVNTS,WNTW_AFREQ,WNTW_EXPB,WNTW_EXPP,WNTW_EXPPE,WNTW_EXPA,WNTW_EXPT,WNTW_HLRB,WNTW_HLRP,WNTW_HLRA,WNTW_HLRR,WNTW_EALB,WNTW_EALP,WNTW_EALPE,WNTW_EALA,WNTW_EALT,WNTW_EALS,WNTW_EALR,WNTW_RISKS,WNTW_RISKR,NRI_VER -1,T06001020100,Hawaii,HI,15,Kauai,County,7,15007,40300,6001020100,8385,992658000.0000000000,147860.5647200878,3.6108521589,18.0705830803,Relatively Low,63.0775787404,63.4969325153,18.6199401875,Relatively Low,59.6420077263,70.5521472393,324935.2155714268,98076.5248682368,0.0296790442,225560.7358958097,1297.9548073803,31.6808724993,Relatively Moderate,48.7278745931,51.8518518519,-0.1330000000,52.5091980000,Relatively Low,23.5125676106,100.0000000000,2.6254599000,,,,,,,,,Not Applicable,,,,,,Not Applicable,,Not Applicable,,0.0699710120,202742385.5800542533,1862.6855876887,14156410466.4337959290,14359152852.0138511658,0.0000357579,0.0000000020,Very Low,507.2650077305,0.0000002606,1.9802850905,509.2452928210,2.6321796000,Very Low,2.5538810410,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000021774,0.0000022062,0.0080465986,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0030589604,No Rating,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,0.0005345855,912658000.0000000000,8385.0000000000,63726000000.0000000000,64638658000.0000000000,0.0167507621,0.0001397988,Very Low,22512.2000000000,0.0001541200,1171.3120000000,23683.5120000000,11.8920653303,Relatively Low,13.0147002820,Relatively Low,0.0000000000,0.0000000000,912658000.0000000000,8385.0000000000,63726000000.0000000000,147860.5647200878,64638805860.5647201538,0.0000180224,0.0000000760,0.0002275779,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000016,0.0000001005,0.0000761839,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,2.0000000000,0.0343605913,912658000.0000000000,8385.0000000000,63726000000.0000000000,147860.5647200878,64638805860.5647201538,0.0000255348,0.0000003276,0.0002460797,Very Low,788.9305592758,0.0000968737,736.2401254130,1.3226671624,1526.4933518512,4.6757862953,Very Low,6.1662913066,Very Low,0.0000000000,0.0148900000,912658000.0000000000,8385.0000000000,63726000000.0000000000,64638658000.0000000000,0.0000058883,0.0000028944,Relatively Low,80.0189118426,0.0003613770,2746.4650635800,2826.4839754226,19.2773661946,Relatively Low,15.4429446232,Relatively Low,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,142.0000000000,5.9166666660,59632790.0585851222,418.9266599156,3183842615.3584799767,51591.3125103788,3243526996.7295761108,0.0001804370,0.0000114831,0.0042466231,Very Low,63663.1136805333,0.0284625391,216315.2971586954,1296.2757495066,281274.6865887354,29.5879096062,Relatively High,26.9708819409,Relatively High,1.0000000000,0.0312500000,912658000.0000000000,8385.0000000000,63726000000.0000000000,147860.5647200878,64638805860.5647201538,0.0000032387,0.0000018297,0.0000727233,Very Low,92.3692287258,0.0004794348,3643.7043933928,0.3360282071,3736.4096503256,14.9734902768,Relatively Low,16.6070545485,Relatively Low,0.0000000000,0.0000653310,912658000.0000000000,8385.0000000000,63726000000.0000000000,147860.5647200878,64638805860.5647201538,0.0089662390,0.0000059784,0.0021079463,Very Low,534.6107152638,0.0000032750,24.8896914625,0.0203625042,559.5207692305,5.8706925202,Very Low,6.7469108145,Very Low,7.0000000000,0.0319693090,198555247.5326173902,978.4678896234,7436355961.1380958557,7634911208.6707134247,0.0015593140,0.0000038734,Very Low,9898.0167648649,0.0001211641,920.8471781755,10818.8639430404,23.6580872265,Relatively High,20.2115884136,Relatively Moderate,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0005411070,0.0000037371,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,,,,,,,,,,Insufficient Data,,,,,,,Insufficient Data,,Insufficient Data,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000851,0.0000001057,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,November 2021 -2,T06007040300,Hawaii,HI,15,Hawaii,County,1,15001,20100,6007040300,5213,409283000.0000000000,30161527.9142542519,97.0642891247,26.0474557835,Relatively High,89.4815710967,87.4233128834,24.6571275391,Relatively Moderate,83.8106105391,87.4233128834,754552.3595077734,510222.1167381129,0.0320334258,243454.0359926557,876.2067770047,33.3455935266,Relatively Moderate,67.0519519602,65.5270655271,0.9080000000,50.7751980000,Relatively Low,9.3859370029,40.0000000000,2.5387599000,,,,,,,,,Not Applicable,,,,,,Not Applicable,,Not Applicable,,0.0579710120,1082842.5920536572,13.7920666932,104819706.8679994941,105902549.4600531608,0.0000313713,0.0000000025,Very Low,1.9692852387,0.0000000020,0.0151413322,1.9844265710,0.4142077200,Very Low,0.4374499910,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000021774,0.0000022062,0.0080465986,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000541,No Rating,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,0.0099874373,409283000.0000000000,5213.0000000000,39618800000.0000000000,40028083000.0000000000,0.0008505842,0.0000116917,Very Low,509627.8000000000,0.0314233600,238817.5360000000,748445.3360000000,37.5977579168,Very High,44.7882310288,Very High,1.0000000000,0.0312500000,409283000.0000000000,5213.0000000000,39618800000.0000000000,30161527.9142542407,40058244527.9142456055,0.0000180224,0.0000000760,0.0002275779,Very Low,230.5075462219,0.0000123856,94.1304164907,214.5030827638,539.1410454765,5.2311349597,Very Low,5.8932581207,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000016,0.0000001005,0.0000761839,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0100000000,409283000.0000000000,5213.0000000000,39618800000.0000000000,30161527.9142542407,40058244527.9142456055,0.0000255348,0.0000003276,0.0002460797,Very Low,104.5094165573,0.0000170798,129.8064434247,74.2213962963,308.5372562783,2.7440512545,Very Low,3.9390063490,Very Low,0.0000000000,0.0148900000,409283000.0000000000,5213.0000000000,39618800000.0000000000,40028083000.0000000000,0.0000058883,0.0000013610,Very Low,35.8846142757,0.0001056430,802.8864714520,838.7710857277,12.8581949229,Relatively Low,11.2121138672,Relatively Low,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0006245044,0.0000038327,0.0003492485,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,1.0000000000,0.0312500000,409283000.0000000000,5213.0000000000,39618800000.0000000000,30161527.9142542407,40058244527.9142456055,0.0000083601,0.0000003102,0.0006212585,Very Low,106.9261414761,0.0000505411,384.1124266061,585.5657605523,1076.6043286345,9.8898625798,Very Low,11.9394659724,Relatively Low,0.0000000000,0.0006781468,409283000.0000000000,5213.0000000000,39618800000.0000000000,30161527.9142542519,40058244527.9142456055,0.0003985575,0.0000002657,0.0000937001,Very Low,110.6212172132,0.0000009395,7.1398535480,1.9165373923,119.6776081535,3.5109250974,Very Low,4.3917261130,Very Low,4.0000000000,0.0182681760,315888.8587620233,2.2117928286,16809625.4977076985,17125514.3564697206,0.0006654598,0.0000038734,Very Low,3.8401775301,0.0000001565,1.1894532216,5.0296307517,1.8327269938,Very Low,1.7042906890,Very Low,4.0000000000,0.0204021391,407903840.5845158696,5201.9799937840,39535047952.7582778931,39942951793.3427886963,0.0000000070,0.0000040043,Very Low,0.0583395999,0.0004233184,3217.2197865804,3217.2781261802,17.0524727301,Relatively Low,17.9932135371,Relatively Low,,,,,,,,,,,Insufficient Data,,,,,,,Insufficient Data,,Insufficient Data,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000851,0.0000001057,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,November 2021 -3,T06007040500,Hawaii,HI,15,Kauai,County,7,15007,40500,6007040500,5943,1030806000.0000000000,459516.6731830848,6.1500338151,19.0467198618,Relatively Moderate,67.4534981234,69.3251533742,18.7719774304,Relatively Low,60.4118835838,72.0858895706,332959.9571449574,167792.7734322688,0.0217301935,165149.4709508616,17.7127618271,33.1217117362,Relatively Moderate,64.7826443794,63.5327635328,0.7680000000,52.5091980000,Relatively Low,23.5125676106,100.0000000000,2.6254599000,,,,,,,,,Not Applicable,,,,,,Not Applicable,,Not Applicable,,0.0699710120,66594737.2848528028,383.9447225607,2917979891.4611377716,2984574628.7459902763,0.0000063169,0.0000000003,Very Low,29.4350693631,0.0000000083,0.0628428106,29.4979121737,1.0184434918,Very Low,1.0330889632,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000021774,0.0000022062,0.0080465986,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,56.0000000000,3.1111111110,0.0000000000,0.0000000000,0.0030589604,No Rating,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,0.0005860614,1030806000.0000000000,5943.0000000000,45166800000.0000000000,46197606000.0000000000,0.0167507621,0.0001397988,Very Low,120075.0000000000,0.0011438300,8693.1080000000,128768.1080000000,20.9111551033,Relatively Moderate,23.9260247408,Relatively Moderate,0.0000000000,0.0000000000,1030806000.0000000000,5943.0000000000,45166800000.0000000000,459516.6731830846,46198065516.6731948853,0.0000180224,0.0000000760,0.0002275779,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000016,0.0000001005,0.0000761839,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,2.0000000000,0.0289855072,1030806000.0000000000,5943.0000000000,45166800000.0000000000,459516.6731830846,46198065516.6731948853,0.0000255348,0.0000003276,0.0002460797,Very Low,762.9385502884,0.0000564393,428.9386307213,3.2776151707,1195.1547961804,4.3095415029,Very Low,5.9417734791,Very Low,0.0000000000,0.0148900000,1030806000.0000000000,5943.0000000000,45166800000.0000000000,46197606000.0000000000,0.0000058883,0.0000028944,Relatively Low,90.3777476786,0.0002561316,1946.6001040973,2036.9778517759,17.2833380202,Relatively Low,14.4752368977,Relatively Low,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,142.0000000000,5.9166666660,40606220.8832914308,293.0385094863,2227092672.0956783295,530.1707312656,2267699423.1497006416,0.0001804370,0.0000114831,0.0042466231,Very Low,43350.6205845832,0.0199094993,151312.1945288390,13.3209920158,194676.1361054380,26.1722849103,Relatively High,24.9423944801,Relatively High,1.0000000000,0.0312500000,1030806000.0000000000,5943.0000000000,45166800000.0000000000,459516.6731830846,46198065516.6731948853,0.0000032387,0.0000018297,0.0000727233,Very Low,104.3268729204,0.0003398069,2582.5325235382,1.0442984855,2687.9036949441,13.4166096589,Relatively Low,15.5570766452,Relatively Low,0.0000000000,0.0001223370,1030806000.0000000000,5943.0000000000,45166800000.0000000000,459516.6731830848,46198065516.6731948853,0.0052856261,0.0000035243,0.0012426410,Very Low,666.5475081608,0.0000025623,19.4736228040,0.0698561550,686.0909871197,6.2836381633,Very Low,7.5500148235,Very Low,9.0000000000,0.0411033970,42337272.9888006300,137.6534442030,1046166175.9429297447,1088503448.9317302704,0.0015593140,0.0000038734,Very Low,2713.5270992744,0.0000219159,166.5606980512,2880.0877973256,15.2190537663,Relatively Moderate,13.5932751503,Relatively Moderate,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0005411070,0.0000037371,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,,,,,,,,,,Insufficient Data,,,,,,,Insufficient Data,,Insufficient Data,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000851,0.0000001057,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,November 2021 +1,T06069000802,Hawaii,HI,15,Kauai,County,7,15007,40300,6069000802,8385,992658000.0000000000,147860.5647200878,3.6108521589,18.0705830803,Relatively Low,63.0775787404,63.4969325153,18.6199401875,Relatively Low,59.6420077263,70.5521472393,324935.2155714268,98076.5248682368,0.0296790442,225560.7358958097,1297.9548073803,31.6808724993,Relatively Moderate,48.7278745931,51.8518518519,-0.1330000000,52.5091980000,Relatively Low,23.5125676106,100.0000000000,2.6254599000,,,,,,,,,Not Applicable,,,,,,Not Applicable,,Not Applicable,,0.0699710120,202742385.5800542533,1862.6855876887,14156410466.4337959290,14359152852.0138511658,0.0000357579,0.0000000020,Very Low,507.2650077305,0.0000002606,1.9802850905,509.2452928210,2.6321796000,Very Low,2.5538810410,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000021774,0.0000022062,0.0080465986,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0030589604,No Rating,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,0.0005345855,912658000.0000000000,8385.0000000000,63726000000.0000000000,64638658000.0000000000,0.0167507621,0.0001397988,Very Low,22512.2000000000,0.0001541200,1171.3120000000,23683.5120000000,11.8920653303,Relatively Low,13.0147002820,Relatively Low,0.0000000000,0.0000000000,912658000.0000000000,8385.0000000000,63726000000.0000000000,147860.5647200878,64638805860.5647201538,0.0000180224,0.0000000760,0.0002275779,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000016,0.0000001005,0.0000761839,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,2.0000000000,0.0343605913,912658000.0000000000,8385.0000000000,63726000000.0000000000,147860.5647200878,64638805860.5647201538,0.0000255348,0.0000003276,0.0002460797,Very Low,788.9305592758,0.0000968737,736.2401254130,1.3226671624,1526.4933518512,4.6757862953,Very Low,6.1662913066,Very Low,0.0000000000,0.0148900000,912658000.0000000000,8385.0000000000,63726000000.0000000000,64638658000.0000000000,0.0000058883,0.0000028944,Relatively Low,80.0189118426,0.0003613770,2746.4650635800,2826.4839754226,19.2773661946,Relatively Low,15.4429446232,Relatively Low,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,142.0000000000,5.9166666660,59632790.0585851222,418.9266599156,3183842615.3584799767,51591.3125103788,3243526996.7295761108,0.0001804370,0.0000114831,0.0042466231,Very Low,63663.1136805333,0.0284625391,216315.2971586954,1296.2757495066,281274.6865887354,29.5879096062,Relatively High,26.9708819409,Relatively High,1.0000000000,0.0312500000,912658000.0000000000,8385.0000000000,63726000000.0000000000,147860.5647200878,64638805860.5647201538,0.0000032387,0.0000018297,0.0000727233,Very Low,92.3692287258,0.0004794348,3643.7043933928,0.3360282071,3736.4096503256,14.9734902768,Relatively Low,16.6070545485,Relatively Low,0.0000000000,0.0000653310,912658000.0000000000,8385.0000000000,63726000000.0000000000,147860.5647200878,64638805860.5647201538,0.0089662390,0.0000059784,0.0021079463,Very Low,534.6107152638,0.0000032750,24.8896914625,0.0203625042,559.5207692305,5.8706925202,Very Low,6.7469108145,Very Low,7.0000000000,0.0319693090,198555247.5326173902,978.4678896234,7436355961.1380958557,7634911208.6707134247,0.0015593140,0.0000038734,Very Low,9898.0167648649,0.0001211641,920.8471781755,10818.8639430404,23.6580872265,Relatively High,20.2115884136,Relatively Moderate,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0005411070,0.0000037371,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,,,,,,,,,,Insufficient Data,,,,,,,Insufficient Data,,Insufficient Data,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000851,0.0000001057,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,November 2021 +2,T06061021322,Hawaii,HI,15,Hawaii,County,1,15001,20100,6061021322,5213,409283000.0000000000,30161527.9142542519,97.0642891247,26.0474557835,Relatively High,89.4815710967,87.4233128834,24.6571275391,Relatively Moderate,83.8106105391,87.4233128834,754552.3595077734,510222.1167381129,0.0320334258,243454.0359926557,876.2067770047,33.3455935266,Relatively Moderate,67.0519519602,65.5270655271,0.9080000000,50.7751980000,Relatively Low,9.3859370029,40.0000000000,2.5387599000,,,,,,,,,Not Applicable,,,,,,Not Applicable,,Not Applicable,,0.0579710120,1082842.5920536572,13.7920666932,104819706.8679994941,105902549.4600531608,0.0000313713,0.0000000025,Very Low,1.9692852387,0.0000000020,0.0151413322,1.9844265710,0.4142077200,Very Low,0.4374499910,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000021774,0.0000022062,0.0080465986,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000541,No Rating,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,0.0099874373,409283000.0000000000,5213.0000000000,39618800000.0000000000,40028083000.0000000000,0.0008505842,0.0000116917,Very Low,509627.8000000000,0.0314233600,238817.5360000000,748445.3360000000,37.5977579168,Very High,44.7882310288,Very High,1.0000000000,0.0312500000,409283000.0000000000,5213.0000000000,39618800000.0000000000,30161527.9142542407,40058244527.9142456055,0.0000180224,0.0000000760,0.0002275779,Very Low,230.5075462219,0.0000123856,94.1304164907,214.5030827638,539.1410454765,5.2311349597,Very Low,5.8932581207,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000016,0.0000001005,0.0000761839,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0100000000,409283000.0000000000,5213.0000000000,39618800000.0000000000,30161527.9142542407,40058244527.9142456055,0.0000255348,0.0000003276,0.0002460797,Very Low,104.5094165573,0.0000170798,129.8064434247,74.2213962963,308.5372562783,2.7440512545,Very Low,3.9390063490,Very Low,0.0000000000,0.0148900000,409283000.0000000000,5213.0000000000,39618800000.0000000000,40028083000.0000000000,0.0000058883,0.0000013610,Very Low,35.8846142757,0.0001056430,802.8864714520,838.7710857277,12.8581949229,Relatively Low,11.2121138672,Relatively Low,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0006245044,0.0000038327,0.0003492485,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,1.0000000000,0.0312500000,409283000.0000000000,5213.0000000000,39618800000.0000000000,30161527.9142542407,40058244527.9142456055,0.0000083601,0.0000003102,0.0006212585,Very Low,106.9261414761,0.0000505411,384.1124266061,585.5657605523,1076.6043286345,9.8898625798,Very Low,11.9394659724,Relatively Low,0.0000000000,0.0006781468,409283000.0000000000,5213.0000000000,39618800000.0000000000,30161527.9142542519,40058244527.9142456055,0.0003985575,0.0000002657,0.0000937001,Very Low,110.6212172132,0.0000009395,7.1398535480,1.9165373923,119.6776081535,3.5109250974,Very Low,4.3917261130,Very Low,4.0000000000,0.0182681760,315888.8587620233,2.2117928286,16809625.4977076985,17125514.3564697206,0.0006654598,0.0000038734,Very Low,3.8401775301,0.0000001565,1.1894532216,5.0296307517,1.8327269938,Very Low,1.7042906890,Very Low,4.0000000000,0.0204021391,407903840.5845158696,5201.9799937840,39535047952.7582778931,39942951793.3427886963,0.0000000070,0.0000040043,Very Low,0.0583395999,0.0004233184,3217.2197865804,3217.2781261802,17.0524727301,Relatively Low,17.9932135371,Relatively Low,,,,,,,,,,,Insufficient Data,,,,,,,Insufficient Data,,Insufficient Data,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000851,0.0000001057,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,November 2021 +3,T06027000800,Hawaii,HI,15,Kauai,County,7,15007,40500,6027000800,5943,1030806000.0000000000,459516.6731830848,6.1500338151,19.0467198618,Relatively Moderate,67.4534981234,69.3251533742,18.7719774304,Relatively Low,60.4118835838,72.0858895706,332959.9571449574,167792.7734322688,0.0217301935,165149.4709508616,17.7127618271,33.1217117362,Relatively Moderate,64.7826443794,63.5327635328,0.7680000000,52.5091980000,Relatively Low,23.5125676106,100.0000000000,2.6254599000,,,,,,,,,Not Applicable,,,,,,Not Applicable,,Not Applicable,,0.0699710120,66594737.2848528028,383.9447225607,2917979891.4611377716,2984574628.7459902763,0.0000063169,0.0000000003,Very Low,29.4350693631,0.0000000083,0.0628428106,29.4979121737,1.0184434918,Very Low,1.0330889632,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000021774,0.0000022062,0.0080465986,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,56.0000000000,3.1111111110,0.0000000000,0.0000000000,0.0030589604,No Rating,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,0.0005860614,1030806000.0000000000,5943.0000000000,45166800000.0000000000,46197606000.0000000000,0.0167507621,0.0001397988,Very Low,120075.0000000000,0.0011438300,8693.1080000000,128768.1080000000,20.9111551033,Relatively Moderate,23.9260247408,Relatively Moderate,0.0000000000,0.0000000000,1030806000.0000000000,5943.0000000000,45166800000.0000000000,459516.6731830846,46198065516.6731948853,0.0000180224,0.0000000760,0.0002275779,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000016,0.0000001005,0.0000761839,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,2.0000000000,0.0289855072,1030806000.0000000000,5943.0000000000,45166800000.0000000000,459516.6731830846,46198065516.6731948853,0.0000255348,0.0000003276,0.0002460797,Very Low,762.9385502884,0.0000564393,428.9386307213,3.2776151707,1195.1547961804,4.3095415029,Very Low,5.9417734791,Very Low,0.0000000000,0.0148900000,1030806000.0000000000,5943.0000000000,45166800000.0000000000,46197606000.0000000000,0.0000058883,0.0000028944,Relatively Low,90.3777476786,0.0002561316,1946.6001040973,2036.9778517759,17.2833380202,Relatively Low,14.4752368977,Relatively Low,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,142.0000000000,5.9166666660,40606220.8832914308,293.0385094863,2227092672.0956783295,530.1707312656,2267699423.1497006416,0.0001804370,0.0000114831,0.0042466231,Very Low,43350.6205845832,0.0199094993,151312.1945288390,13.3209920158,194676.1361054380,26.1722849103,Relatively High,24.9423944801,Relatively High,1.0000000000,0.0312500000,1030806000.0000000000,5943.0000000000,45166800000.0000000000,459516.6731830846,46198065516.6731948853,0.0000032387,0.0000018297,0.0000727233,Very Low,104.3268729204,0.0003398069,2582.5325235382,1.0442984855,2687.9036949441,13.4166096589,Relatively Low,15.5570766452,Relatively Low,0.0000000000,0.0001223370,1030806000.0000000000,5943.0000000000,45166800000.0000000000,459516.6731830848,46198065516.6731948853,0.0052856261,0.0000035243,0.0012426410,Very Low,666.5475081608,0.0000025623,19.4736228040,0.0698561550,686.0909871197,6.2836381633,Very Low,7.5500148235,Very Low,9.0000000000,0.0411033970,42337272.9888006300,137.6534442030,1046166175.9429297447,1088503448.9317302704,0.0015593140,0.0000038734,Very Low,2713.5270992744,0.0000219159,166.5606980512,2880.0877973256,15.2190537663,Relatively Moderate,13.5932751503,Relatively Moderate,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0005411070,0.0000037371,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,,,,,,,,,,Insufficient Data,,,,,,,Insufficient Data,,Insufficient Data,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000851,0.0000001057,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,November 2021 4,T15001021010,Hawaii,HI,15,Hawaii,County,1,15001,21010,15001021010,7884,737712000.0000000000,8711454.3090733420,58.4401512286,43.1066279987,Very High,99.4459643383,98.1595092025,42.6674572964,Very High,99.2741170486,99.0797546012,3909779.1321200719,2582125.8111252696,0.1746532017,1327364.3330713348,288.9879234675,31.8903618889,Relatively Moderate,51.0956693021,54.4159544160,-0.0020000000,50.7751980000,Relatively Low,9.3859370029,40.0000000000,2.5387599000,,,,,,,,,Not Applicable,,,,,,Not Applicable,,Not Applicable,,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000478451,0.0000000048,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000021774,0.0000022062,0.0080465986,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000541,No Rating,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,0.0099998852,737712000.0000000000,7884.0000000000,59918400000.0000000000,60656112000.0000000000,0.0008505842,0.0000116917,Very Low,2580741.3999999999,0.1736765400,1319941.7039999999,3900683.1039999998,65.1861714882,Very High,74.2640163391,Very High,1.0000000000,0.0312500000,737712000.0000000000,7884.0000000000,59918400000.0000000000,8711454.3090733420,60664823454.3090744019,0.0000180224,0.0000000760,0.0002275779,Very Low,415.4782459486,0.0000187316,142.3602922696,61.9542156517,619.7927538699,5.4799587665,Very Low,5.9041560145,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000016,0.0000001005,0.0000761839,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0269344664,737712000.0000000000,7884.0000000000,59918400000.0000000000,8711454.3090733420,60664823454.3090744019,0.0000255348,0.0000003276,0.0002460797,Very Low,473.5051910310,0.0000651127,494.8567057547,57.2461948490,1025.6080916347,4.0952789981,Very Low,5.6221049906,Very Low,0.0000000000,0.0148900000,737712000.0000000000,7884.0000000000,59918400000.0000000000,60656112000.0000000000,0.0000058883,0.0000013610,Very Low,64.6802104328,0.0001597715,1214.2637523360,1278.9439627688,14.7995789625,Relatively Low,12.3417814165,Relatively Low,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0006245044,0.0000038327,0.0003492485,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,1.0000000000,0.0312500000,737712000.0000000000,7884.0000000000,59918400000.0000000000,8711454.3090733420,60664823454.3090744019,0.0000083601,0.0000003102,0.0006212585,Very Low,192.7289862509,0.0000764370,580.9212298706,169.1270211135,942.7772372349,9.4618177655,Very Low,10.9242145239,Very Low,1.0000000000,0.0004673635,737712000.0000000000,7884.0000000000,59918400000.0000000000,8711454.3090733420,60664823454.3090744019,0.0006900376,0.0000004601,0.0001622266,Very Low,237.9109428670,0.0000016953,12.8843062101,0.6604918534,251.4557409305,4.4968090785,Very Low,5.3796416501,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0006654598,0.0000038734,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,4.0000000000,0.0207448000,737708710.8628113270,7883.9591351862,59918089427.4153671265,60655798138.2781677246,0.0000000070,0.0000040043,Very Low,0.1075487398,0.0006549135,4977.3427848938,4977.4503336337,19.7224171343,Relatively Low,19.9022650650,Relatively Low,,,,,,,,,,,Insufficient Data,,,,,,,Insufficient Data,,Insufficient Data,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000851,0.0000001057,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,November 2021 5,T15001021101,Hawaii,HI,15,Hawaii,County,1,15001,21101,15001021101,3531,365469000.0000000000,1115552.9463470120,41.0551206444,39.6369371498,Very High,99.0514029613,96.6257668712,35.4631324234,Relatively High,97.7453635601,94.4785276074,2244880.4514211570,1569603.2441089998,0.0888473124,675239.5743199890,37.6329921689,35.2805718581,Relatively High,83.0000273575,82.3361823362,2.1180000000,50.7751980000,Relatively Low,9.3859370029,40.0000000000,2.5387599000,,,,,,,,,Not Applicable,,,,,,Not Applicable,,Not Applicable,,0.0679710120,53358423.6905883327,515.5255139327,3917993905.8884677887,3971352329.5790557861,0.0000009778,0.0000000001,Very Low,3.5462107144,0.0000000023,0.0178004814,3.5640111958,0.5034846073,Very Low,0.5625920420,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000021774,0.0000022062,0.0080465986,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000541,No Rating,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,0.0099998512,365469000.0000000000,3531.0000000000,26835600000.0000000000,27201069000.0000000000,0.0008505842,0.0000116917,Very Low,1549795.8000000000,0.0875910700,665692.1319999999,2215487.9320000000,53.9839983966,Very High,68.0399795668,Very High,1.0000000000,0.0312500000,365469000.0000000000,3531.0000000000,26835600000.0000000000,1115552.9463470120,27202184552.9463424683,0.0000180224,0.0000000760,0.0002275779,Very Low,205.8315698678,0.0000083893,63.7587762572,7.9336015953,277.5239477203,4.1923926160,Very Low,4.9971070139,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000016,0.0000001005,0.0000761839,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0289855072,365469000.0000000000,3531.0000000000,26835600000.0000000000,1115552.9463470120,27202184552.9463424683,0.0000255348,0.0000003276,0.0002460797,Very Low,270.4974447523,0.0000335331,254.8514731746,7.9569545004,533.3058724274,3.2931774779,Very Low,5.0015747332,Very Low,0.0000000000,0.0148900000,365469000.0000000000,3531.0000000000,26835600000.0000000000,27201069000.0000000000,0.0000058883,0.0000013610,Very Low,32.0431439731,0.0000715567,543.8312163240,575.8743602971,11.3433526973,Very Low,10.4651653429,Relatively Low,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,142.0000000000,5.9166666660,4828130.5279219840,35.1384012388,267051849.4150594473,0.0000000000,271879979.9429814219,0.0006245044,0.0000038327,0.0003492485,Very Low,17839.8663537918,0.0007968309,6055.9146131274,0.0000000000,23895.7809669192,13.0070200492,Relatively Moderate,13.6546608024,Relatively Moderate,1.0000000000,0.0312500000,365469000.0000000000,3531.0000000000,26835600000.0000000000,1115552.9463470120,27202184552.9463424683,0.0000083601,0.0000003102,0.0006212585,Very Low,95.4796314509,0.0000342338,260.1766695466,21.6577094941,377.3140104915,6.9727783560,Very Low,8.9063071715,Very Low,0.0000000000,0.0003634330,365469000.0000000000,3531.0000000000,26835600000.0000000000,1115552.9463470120,27202184552.9463424683,0.0008889061,0.0000005927,0.0002089802,Very Low,118.0676167774,0.0000007606,5.7804922284,0.0847265791,123.9328355849,3.5520526364,Very Low,4.7010550308,Very Low,13.0000000000,0.0593715740,31437177.7921413518,196.0173546829,1489731895.5901708603,1521169073.3823122978,0.0006654598,0.0000038734,Very Low,1242.0638448472,0.0000450783,342.5948426489,1584.6586874961,12.4708959075,Relatively Moderate,12.2698912376,Relatively Moderate,3.0000000000,0.0188028000,365467633.7354047298,3530.9854379618,26835489328.5099411011,27200956962.2453422546,0.0000000070,0.0000040043,Very Low,0.0482928249,0.0002658574,2020.5164362008,2020.5647290257,14.6032241308,Relatively Low,16.3029908639,Relatively Low,,,,,,,,,,,Insufficient Data,,,,,,,Insufficient Data,,Insufficient Data,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000851,0.0000001057,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,November 2021 6,T15007040603,Hawaii,HI,15,Kauai,County,7,15007,40603,15007040603,2544,509507000.0000000000,3763051.3782403329,15.9289735326,23.8613675670,Relatively Moderate,84.6148558545,84.9693251534,22.2413255033,Relatively Moderate,75.9028856597,83.7423312883,553788.5026946985,159866.0053362669,0.0465200191,353552.1448416797,40370.3525167520,35.0215086434,Relatively Moderate,81.3161710393,79.7720797721,1.9560000000,52.5091980000,Relatively Low,23.5125676106,100.0000000000,2.6254599000,,,,,,,,,Not Applicable,,,,,,Not Applicable,,Not Applicable,,0.0699710120,59268365.9828897715,295.9306212878,2249072721.7871074677,2308341087.7699966431,0.0000020063,0.0000000001,Very Low,8.3203647759,0.0000000014,0.0109218690,8.3312866448,0.6682062552,Very Low,0.7166933897,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000021774,0.0000022062,0.0080465986,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,119.0000000000,6.6111111110,1994468.3763317089,1994468.3763317089,0.0030589604,Relatively Moderate,40334.3876510453,40334.3876510453,9.3173396900,Relatively Moderate,10.0118819196,Relatively Moderate,,0.0006288023,509507000.0000000000,2544.0000000000,19334400000.0000000000,19843907000.0000000000,0.0167507621,0.0001397988,Very Low,29888.8000000000,0.0002046000,1554.9600000000,31443.7600000000,13.0703357152,Relatively Low,15.8125293377,Relatively Low,0.0000000000,0.0000000000,509507000.0000000000,2544.0000000000,19334400000.0000000000,3763051.3782403329,19847670051.3782386780,0.0000180224,0.0000000760,0.0002275779,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000016,0.0000001005,0.0000761839,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,2.0000000000,0.0289855072,509500026.7867159247,2543.9789504995,19334240023.7962799072,3763051.3782403329,19847503101.9612274170,0.0000255348,0.0000003276,0.0002460797,Very Low,377.1002611632,0.0000241596,183.6127961654,26.8408852286,587.5539425572,3.4012529352,Very Low,4.9584510525,Very Low,0.0000000000,0.0148900000,509507000.0000000000,2544.0000000000,19334400000.0000000000,19843907000.0000000000,0.0000058883,0.0000028944,Relatively Low,44.6719315627,0.0001096414,833.2745523849,877.9464839477,13.0553404852,Relatively Low,11.5613443431,Relatively Low,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,142.0000000000,5.9166666660,119566421.2469792366,677.5008183296,5149006219.3049850464,0.0000000000,5268572640.5519647598,0.0001804370,0.0000114831,0.0042466231,Very Low,127647.4010480262,0.0460304759,349831.6169989206,0.0000000000,477479.0180469467,35.2957296359,Relatively High,35.5664685650,Very High,1.0000000000,0.0312500000,509507000.0000000000,2544.0000000000,19334400000.0000000000,3763051.3782403329,19847670051.3782386780,0.0000032387,0.0000018297,0.0000727233,Very Low,51.5667080334,0.0001454600,1105.4960019992,8.5519178837,1165.6146279163,10.1552327033,Very Low,12.4507973241,Relatively Low,0.0000000000,0.0002990171,509507000.0000000000,2544.0000000000,19334400000.0000000000,3763051.3782403329,19847670051.3782386780,0.0021625099,0.0000014419,0.0005084021,Very Low,329.4612383326,0.0000010968,8.3360081463,0.5720625944,338.3693090733,4.9645617720,Very Low,6.3071150891,Very Low,3.0000000000,0.0137011320,71084897.0818793178,86.3741073938,656443216.1930950880,727528113.2749742270,0.0015593140,0.0000038734,Relatively Low,1518.6837843730,0.0000045839,34.8375621943,1553.5213465673,12.3886737842,Relatively Moderate,11.6999323670,Relatively Moderate,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0005411070,0.0000037371,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,,,,,,,,,,Insufficient Data,,,,,,,Insufficient Data,,Insufficient Data,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000851,0.0000001057,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,November 2021 diff --git a/data/data-pipeline/data_pipeline/tests/sources/national_risk_index/data/output.csv b/data/data-pipeline/data_pipeline/tests/sources/national_risk_index/data/output.csv index b01e6d146..160164d86 100644 --- a/data/data-pipeline/data_pipeline/tests/sources/national_risk_index/data/output.csv +++ b/data/data-pipeline/data_pipeline/tests/sources/national_risk_index/data/output.csv @@ -1,7 +1,7 @@ GEOID10_TRACT,FEMA Risk Index Expected Annual Loss Score,Expected population loss rate (Natural Hazards Risk Index),Expected agricultural loss rate (Natural Hazards Risk Index),Expected building loss rate (Natural Hazards Risk Index),Contains agricultural value -06001020100,18.6199401875,0.0000035067,0.0031812618,0.0000661520,True -06007040300,24.6571275391,0.0000000358,0.0000290505,0.0000014426,True -06007040500,18.7719774304,0.0000034603,0.0000385465,0.0000436593,True +06069000802,18.6199401875,0.0000035067,0.0031812618,0.0000661520,True +06061021322,24.6571275391,0.0000000358,0.0000290505,0.0000014426,True +06027000800,18.7719774304,0.0000034603,0.0000385465,0.0000436593,True 15001021010,42.6674572964,0.0000000408,0.0000331733,0.0000018765,True 15001021101,35.4631324234,0.0000002677,0.0000337348,0.0000507987,True 15007040603,22.2413255033,0.0000182039,0.0107280896,0.0002521232,True diff --git a/data/data-pipeline/data_pipeline/tests/sources/national_risk_index/data/transform.csv b/data/data-pipeline/data_pipeline/tests/sources/national_risk_index/data/transform.csv index ce24d0559..809726014 100644 --- a/data/data-pipeline/data_pipeline/tests/sources/national_risk_index/data/transform.csv +++ b/data/data-pipeline/data_pipeline/tests/sources/national_risk_index/data/transform.csv @@ -1,7 +1,7 @@ OID_,NRI_ID,STATE,STATEABBRV,STATEFIPS,COUNTY,COUNTYTYPE,COUNTYFIPS,STCOFIPS,TRACT,GEOID10_TRACT,POPULATION,BUILDVALUE,AGRIVALUE,AREA,RISK_SCORE,RISK_RATNG,RISK_NPCTL,RISK_SPCTL,FEMA Risk Index Expected Annual Loss Score,EAL_RATNG,EAL_NPCTL,EAL_SPCTL,EAL_VALT,EAL_VALB,EAL_VALP,EAL_VALPE,EAL_VALA,SOVI_SCORE,SOVI_RATNG,SOVI_NPCTL,SOVI_SPCTL,SOVI_VALUE,RESL_SCORE,RESL_RATNG,RESL_NPCTL,RESL_SPCTL,RESL_VALUE,AVLN_EVNTS,AVLN_AFREQ,AVLN_EXPB,AVLN_EXPP,AVLN_EXPPE,AVLN_EXPT,AVLN_HLRB,AVLN_HLRP,AVLN_HLRR,AVLN_EALB,AVLN_EALP,AVLN_EALPE,AVLN_EALT,AVLN_EALS,AVLN_EALR,AVLN_RISKS,AVLN_RISKR,CFLD_EVNTS,CFLD_AFREQ,CFLD_EXPB,CFLD_EXPP,CFLD_EXPPE,CFLD_EXPT,CFLD_HLRB,CFLD_HLRP,CFLD_HLRR,CFLD_EALB,CFLD_EALP,CFLD_EALPE,CFLD_EALT,CFLD_EALS,CFLD_EALR,CFLD_RISKS,CFLD_RISKR,CWAV_EVNTS,CWAV_AFREQ,CWAV_EXPB,CWAV_EXPP,CWAV_EXPPE,CWAV_EXPA,CWAV_EXPT,CWAV_HLRB,CWAV_HLRP,CWAV_HLRA,CWAV_HLRR,CWAV_EALB,CWAV_EALP,CWAV_EALPE,CWAV_EALA,CWAV_EALT,CWAV_EALS,CWAV_EALR,CWAV_RISKS,CWAV_RISKR,DRGT_EVNTS,DRGT_AFREQ,DRGT_EXPA,DRGT_EXPT,DRGT_HLRA,DRGT_HLRR,DRGT_EALA,DRGT_EALT,DRGT_EALS,DRGT_EALR,DRGT_RISKS,DRGT_RISKR,ERQK_EVNTS,ERQK_AFREQ,ERQK_EXPB,ERQK_EXPP,ERQK_EXPPE,ERQK_EXPT,ERQK_HLRB,ERQK_HLRP,ERQK_HLRR,ERQK_EALB,ERQK_EALP,ERQK_EALPE,ERQK_EALT,ERQK_EALS,ERQK_EALR,ERQK_RISKS,ERQK_RISKR,HAIL_EVNTS,HAIL_AFREQ,HAIL_EXPB,HAIL_EXPP,HAIL_EXPPE,HAIL_EXPA,HAIL_EXPT,HAIL_HLRB,HAIL_HLRP,HAIL_HLRA,HAIL_HLRR,HAIL_EALB,HAIL_EALP,HAIL_EALPE,HAIL_EALA,HAIL_EALT,HAIL_EALS,HAIL_EALR,HAIL_RISKS,HAIL_RISKR,HWAV_EVNTS,HWAV_AFREQ,HWAV_EXPB,HWAV_EXPP,HWAV_EXPPE,HWAV_EXPA,HWAV_EXPT,HWAV_HLRB,HWAV_HLRP,HWAV_HLRA,HWAV_HLRR,HWAV_EALB,HWAV_EALP,HWAV_EALPE,HWAV_EALA,HWAV_EALT,HWAV_EALS,HWAV_EALR,HWAV_RISKS,HWAV_RISKR,HRCN_EVNTS,HRCN_AFREQ,HRCN_EXPB,HRCN_EXPP,HRCN_EXPPE,HRCN_EXPA,HRCN_EXPT,HRCN_HLRB,HRCN_HLRP,HRCN_HLRA,HRCN_HLRR,HRCN_EALB,HRCN_EALP,HRCN_EALPE,HRCN_EALA,HRCN_EALT,HRCN_EALS,HRCN_EALR,HRCN_RISKS,HRCN_RISKR,ISTM_EVNTS,ISTM_AFREQ,ISTM_EXPB,ISTM_EXPP,ISTM_EXPPE,ISTM_EXPT,ISTM_HLRB,ISTM_HLRP,ISTM_HLRR,ISTM_EALB,ISTM_EALP,ISTM_EALPE,ISTM_EALT,ISTM_EALS,ISTM_EALR,ISTM_RISKS,ISTM_RISKR,LNDS_EVNTS,LNDS_AFREQ,LNDS_EXPB,LNDS_EXPP,LNDS_EXPPE,LNDS_EXPT,LNDS_HLRB,LNDS_HLRP,LNDS_HLRR,LNDS_EALB,LNDS_EALP,LNDS_EALPE,LNDS_EALT,LNDS_EALS,LNDS_EALR,LNDS_RISKS,LNDS_RISKR,LTNG_EVNTS,LTNG_AFREQ,LTNG_EXPB,LTNG_EXPP,LTNG_EXPPE,LTNG_EXPT,LTNG_HLRB,LTNG_HLRP,LTNG_HLRR,LTNG_EALB,LTNG_EALP,LTNG_EALPE,LTNG_EALT,LTNG_EALS,LTNG_EALR,LTNG_RISKS,LTNG_RISKR,RFLD_EVNTS,RFLD_AFREQ,RFLD_EXPB,RFLD_EXPP,RFLD_EXPPE,RFLD_EXPA,RFLD_EXPT,RFLD_HLRB,RFLD_HLRP,RFLD_HLRA,RFLD_HLRR,RFLD_EALB,RFLD_EALP,RFLD_EALPE,RFLD_EALA,RFLD_EALT,RFLD_EALS,RFLD_EALR,RFLD_RISKS,RFLD_RISKR,SWND_EVNTS,SWND_AFREQ,SWND_EXPB,SWND_EXPP,SWND_EXPPE,SWND_EXPA,SWND_EXPT,SWND_HLRB,SWND_HLRP,SWND_HLRA,SWND_HLRR,SWND_EALB,SWND_EALP,SWND_EALPE,SWND_EALA,SWND_EALT,SWND_EALS,SWND_EALR,SWND_RISKS,SWND_RISKR,TRND_EVNTS,TRND_AFREQ,TRND_EXPB,TRND_EXPP,TRND_EXPPE,TRND_EXPA,TRND_EXPT,TRND_HLRB,TRND_HLRP,TRND_HLRA,TRND_HLRR,TRND_EALB,TRND_EALP,TRND_EALPE,TRND_EALA,TRND_EALT,TRND_EALS,TRND_EALR,TRND_RISKS,TRND_RISKR,TSUN_EVNTS,TSUN_AFREQ,TSUN_EXPB,TSUN_EXPP,TSUN_EXPPE,TSUN_EXPT,TSUN_HLRB,TSUN_HLRP,TSUN_HLRR,TSUN_EALB,TSUN_EALP,TSUN_EALPE,TSUN_EALT,TSUN_EALS,TSUN_EALR,TSUN_RISKS,TSUN_RISKR,VLCN_EVNTS,VLCN_AFREQ,VLCN_EXPB,VLCN_EXPP,VLCN_EXPPE,VLCN_EXPT,VLCN_HLRB,VLCN_HLRP,VLCN_HLRR,VLCN_EALB,VLCN_EALP,VLCN_EALPE,VLCN_EALT,VLCN_EALS,VLCN_EALR,VLCN_RISKS,VLCN_RISKR,WFIR_EVNTS,WFIR_AFREQ,WFIR_EXPB,WFIR_EXPP,WFIR_EXPPE,WFIR_EXPA,WFIR_EXPT,WFIR_HLRB,WFIR_HLRP,WFIR_HLRA,WFIR_HLRR,WFIR_EALB,WFIR_EALP,WFIR_EALPE,WFIR_EALA,WFIR_EALT,WFIR_EALS,WFIR_EALR,WFIR_RISKS,WFIR_RISKR,WNTW_EVNTS,WNTW_AFREQ,WNTW_EXPB,WNTW_EXPP,WNTW_EXPPE,WNTW_EXPA,WNTW_EXPT,WNTW_HLRB,WNTW_HLRP,WNTW_HLRA,WNTW_HLRR,WNTW_EALB,WNTW_EALP,WNTW_EALPE,WNTW_EALA,WNTW_EALT,WNTW_EALS,WNTW_EALR,WNTW_RISKS,WNTW_RISKR,NRI_VER,Expected population loss rate (Natural Hazards Risk Index),Expected agricultural loss rate (Natural Hazards Risk Index),Contains agricultural value,Expected building loss rate (Natural Hazards Risk Index) -1,T06001020100,Hawaii,HI,15,Kauai,County,7,15007,40300,06001020100,8385,992658000.0000000000,147860.5647200878,3.6108521589,18.0705830803,Relatively Low,63.0775787404,63.4969325153,18.6199401875,Relatively Low,59.6420077263,70.5521472393,324935.2155714268,98076.5248682368,0.0296790442,225560.7358958097,1297.9548073803,31.6808724993,Relatively Moderate,48.7278745931,51.8518518519,-0.1330000000,52.5091980000,Relatively Low,23.5125676106,100.0000000000,2.6254599000,,,,,,,,,Not Applicable,,,,,,Not Applicable,,Not Applicable,,0.0699710120,202742385.5800542533,1862.6855876887,14156410466.4337959290,14359152852.0138511658,0.0000357579,0.0000000020,Very Low,507.2650077305,0.0000002606,1.9802850905,509.2452928210,2.6321796000,Very Low,2.5538810410,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000021774,0.0000022062,0.0080465986,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0030589604,No Rating,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,0.0005345855,912658000.0000000000,8385.0000000000,63726000000.0000000000,64638658000.0000076294,0.0167507621,0.0001397988,Very Low,22512.2000000000,0.0001541200,1171.3120000000,23683.5120000000,11.8920653303,Relatively Low,13.0147002820,Relatively Low,0.0000000000,0.0000000000,912658000.0000000000,8385.0000000000,63726000000.0000000000,147860.5647200878,64638805860.5647201538,0.0000180224,0.0000000760,0.0002275779,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000016,0.0000001005,0.0000761839,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,2.0000000000,0.0343605913,912658000.0000000000,8385.0000000000,63726000000.0000000000,147860.5647200878,64638805860.5647201538,0.0000255348,0.0000003276,0.0002460797,Very Low,788.9305592758,0.0000968737,736.2401254130,1.3226671624,1526.4933518512,4.6757862953,Very Low,6.1662913066,Very Low,0.0000000000,0.0148900000,912658000.0000000000,8385.0000000000,63726000000.0000000000,64638658000.0000076294,0.0000058883,0.0000028944,Relatively Low,80.0189118426,0.0003613770,2746.4650635800,2826.4839754226,19.2773661946,Relatively Low,15.4429446232,Relatively Low,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,142.0000000000,5.9166666660,59632790.0585851297,418.9266599156,3183842615.3584799767,51591.3125103788,3243526996.7295761108,0.0001804370,0.0000114831,0.0042466231,Very Low,63663.1136805333,0.0284625391,216315.2971586954,1296.2757495066,281274.6865887354,29.5879096062,Relatively High,26.9708819409,Relatively High,1.0000000000,0.0312500000,912658000.0000000000,8385.0000000000,63726000000.0000000000,147860.5647200878,64638805860.5647201538,0.0000032387,0.0000018297,0.0000727233,Very Low,92.3692287258,0.0004794348,3643.7043933928,0.3360282071,3736.4096503256,14.9734902768,Relatively Low,16.6070545485,Relatively Low,0.0000000000,0.0000653310,912658000.0000000000,8385.0000000000,63726000000.0000000000,147860.5647200878,64638805860.5647201538,0.0089662390,0.0000059784,0.0021079463,Very Low,534.6107152638,0.0000032750,24.8896914625,0.0203625042,559.5207692305,5.8706925202,Very Low,6.7469108145,Very Low,7.0000000000,0.0319693090,198555247.5326173902,978.4678896234,7436355961.1380958557,7634911208.6707124710,0.0015593140,0.0000038734,Very Low,9898.0167648649,0.0001211641,920.8471781755,10818.8639430404,23.6580872265,Relatively High,20.2115884136,Relatively Moderate,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0005411070,0.0000037371,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,,,,,,,,,,Insufficient Data,,,,,,,Insufficient Data,,Insufficient Data,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000851,0.0000001057,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,November 2021,0.0000035067,0.0031812618,True,0.0000661520 -2,T06007040300,Hawaii,HI,15,Hawaii,County,1,15001,20100,06007040300,5213,409283000.0000000000,30161527.9142542519,97.0642891247,26.0474557835,Relatively High,89.4815710967,87.4233128834,24.6571275391,Relatively Moderate,83.8106105391,87.4233128834,754552.3595077734,510222.1167381129,0.0320334258,243454.0359926558,876.2067770047,33.3455935266,Relatively Moderate,67.0519519602,65.5270655271,0.9080000000,50.7751980000,Relatively Low,9.3859370029,40.0000000000,2.5387599000,,,,,,,,,Not Applicable,,,,,,Not Applicable,,Not Applicable,,0.0579710120,1082842.5920536572,13.7920666932,104819706.8679994941,105902549.4600531608,0.0000313713,0.0000000025,Very Low,1.9692852387,0.0000000020,0.0151413322,1.9844265710,0.4142077200,Very Low,0.4374499910,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000021774,0.0000022062,0.0080465986,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000541,No Rating,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,0.0099874373,409283000.0000000000,5213.0000000000,39618800000.0000000000,40028083000.0000000000,0.0008505842,0.0000116917,Very Low,509627.8000000000,0.0314233600,238817.5360000000,748445.3360000000,37.5977579168,Very High,44.7882310288,Very High,1.0000000000,0.0312500000,409283000.0000000000,5213.0000000000,39618800000.0000000000,30161527.9142542407,40058244527.9142456055,0.0000180224,0.0000000760,0.0002275779,Very Low,230.5075462219,0.0000123856,94.1304164907,214.5030827638,539.1410454765,5.2311349597,Very Low,5.8932581207,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000016,0.0000001005,0.0000761839,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0100000000,409283000.0000000000,5213.0000000000,39618800000.0000000000,30161527.9142542407,40058244527.9142456055,0.0000255348,0.0000003276,0.0002460797,Very Low,104.5094165573,0.0000170798,129.8064434247,74.2213962963,308.5372562783,2.7440512545,Very Low,3.9390063490,Very Low,0.0000000000,0.0148900000,409283000.0000000000,5213.0000000000,39618800000.0000000000,40028083000.0000000000,0.0000058883,0.0000013610,Very Low,35.8846142757,0.0001056430,802.8864714520,838.7710857277,12.8581949229,Relatively Low,11.2121138672,Relatively Low,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0006245044,0.0000038327,0.0003492485,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,1.0000000000,0.0312500000,409283000.0000000000,5213.0000000000,39618800000.0000000000,30161527.9142542407,40058244527.9142456055,0.0000083601,0.0000003102,0.0006212585,Very Low,106.9261414761,0.0000505411,384.1124266061,585.5657605523,1076.6043286345,9.8898625798,Very Low,11.9394659724,Relatively Low,0.0000000000,0.0006781468,409283000.0000000000,5213.0000000000,39618800000.0000000000,30161527.9142542519,40058244527.9142456055,0.0003985575,0.0000002657,0.0000937001,Very Low,110.6212172132,0.0000009395,7.1398535480,1.9165373923,119.6776081535,3.5109250974,Very Low,4.3917261130,Very Low,4.0000000000,0.0182681760,315888.8587620232,2.2117928286,16809625.4977076985,17125514.3564697206,0.0006654598,0.0000038734,Very Low,3.8401775301,0.0000001565,1.1894532216,5.0296307517,1.8327269938,Very Low,1.7042906890,Very Low,4.0000000000,0.0204021391,407903840.5845158696,5201.9799937840,39535047952.7582778931,39942951793.3427886963,0.0000000070,0.0000040043,Very Low,0.0583395999,0.0004233184,3217.2197865804,3217.2781261802,17.0524727301,Relatively Low,17.9932135371,Relatively Low,,,,,,,,,,,Insufficient Data,,,,,,,Insufficient Data,,Insufficient Data,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000851,0.0000001057,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,November 2021,0.0000000358,0.0000290505,True,0.0000014426 -3,T06007040500,Hawaii,HI,15,Kauai,County,7,15007,40500,06007040500,5943,1030806000.0000000000,459516.6731830848,6.1500338151,19.0467198618,Relatively Moderate,67.4534981234,69.3251533742,18.7719774304,Relatively Low,60.4118835838,72.0858895706,332959.9571449574,167792.7734322688,0.0217301935,165149.4709508616,17.7127618271,33.1217117362,Relatively Moderate,64.7826443794,63.5327635328,0.7680000000,52.5091980000,Relatively Low,23.5125676106,100.0000000000,2.6254599000,,,,,,,,,Not Applicable,,,,,,Not Applicable,,Not Applicable,,0.0699710120,66594737.2848528028,383.9447225607,2917979891.4611377716,2984574628.7459902763,0.0000063169,0.0000000003,Very Low,29.4350693631,0.0000000083,0.0628428106,29.4979121737,1.0184434918,Very Low,1.0330889632,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000021774,0.0000022062,0.0080465986,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,56.0000000000,3.1111111110,0.0000000000,0.0000000000,0.0030589604,No Rating,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,0.0005860614,1030806000.0000000000,5943.0000000000,45166800000.0000000000,46197606000.0000000000,0.0167507621,0.0001397988,Very Low,120075.0000000000,0.0011438300,8693.1080000000,128768.1080000000,20.9111551033,Relatively Moderate,23.9260247408,Relatively Moderate,0.0000000000,0.0000000000,1030806000.0000000000,5943.0000000000,45166800000.0000000000,459516.6731830846,46198065516.6731948853,0.0000180224,0.0000000760,0.0002275779,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000016,0.0000001005,0.0000761839,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,2.0000000000,0.0289855072,1030806000.0000000000,5943.0000000000,45166800000.0000000000,459516.6731830846,46198065516.6731948853,0.0000255348,0.0000003276,0.0002460797,Very Low,762.9385502884,0.0000564393,428.9386307213,3.2776151707,1195.1547961804,4.3095415029,Very Low,5.9417734791,Very Low,0.0000000000,0.0148900000,1030806000.0000000000,5943.0000000000,45166800000.0000000000,46197606000.0000000000,0.0000058883,0.0000028944,Relatively Low,90.3777476786,0.0002561316,1946.6001040973,2036.9778517759,17.2833380202,Relatively Low,14.4752368977,Relatively Low,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,142.0000000000,5.9166666660,40606220.8832914308,293.0385094863,2227092672.0956783295,530.1707312656,2267699423.1497006416,0.0001804370,0.0000114831,0.0042466231,Very Low,43350.6205845832,0.0199094993,151312.1945288390,13.3209920158,194676.1361054380,26.1722849103,Relatively High,24.9423944801,Relatively High,1.0000000000,0.0312500000,1030806000.0000000000,5943.0000000000,45166800000.0000000000,459516.6731830846,46198065516.6731948853,0.0000032387,0.0000018297,0.0000727233,Very Low,104.3268729204,0.0003398069,2582.5325235382,1.0442984855,2687.9036949441,13.4166096589,Relatively Low,15.5570766452,Relatively Low,0.0000000000,0.0001223370,1030806000.0000000000,5943.0000000000,45166800000.0000000000,459516.6731830848,46198065516.6731948853,0.0052856261,0.0000035243,0.0012426410,Very Low,666.5475081608,0.0000025623,19.4736228040,0.0698561550,686.0909871197,6.2836381633,Very Low,7.5500148235,Very Low,9.0000000000,0.0411033970,42337272.9888006300,137.6534442030,1046166175.9429298639,1088503448.9317302704,0.0015593140,0.0000038734,Very Low,2713.5270992744,0.0000219159,166.5606980512,2880.0877973256,15.2190537663,Relatively Moderate,13.5932751503,Relatively Moderate,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0005411070,0.0000037371,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,,,,,,,,,,Insufficient Data,,,,,,,Insufficient Data,,Insufficient Data,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000851,0.0000001057,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,November 2021,0.0000034603,0.0000385465,True,0.0000436593 +1,T06069000802,Hawaii,HI,15,Kauai,County,7,15007,40300,06069000802,8385,992658000.0000000000,147860.5647200878,3.6108521589,18.0705830803,Relatively Low,63.0775787404,63.4969325153,18.6199401875,Relatively Low,59.6420077263,70.5521472393,324935.2155714268,98076.5248682368,0.0296790442,225560.7358958097,1297.9548073803,31.6808724993,Relatively Moderate,48.7278745931,51.8518518519,-0.1330000000,52.5091980000,Relatively Low,23.5125676106,100.0000000000,2.6254599000,,,,,,,,,Not Applicable,,,,,,Not Applicable,,Not Applicable,,0.0699710120,202742385.5800542533,1862.6855876887,14156410466.4337959290,14359152852.0138511658,0.0000357579,0.0000000020,Very Low,507.2650077305,0.0000002606,1.9802850905,509.2452928210,2.6321796000,Very Low,2.5538810410,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000021774,0.0000022062,0.0080465986,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0030589604,No Rating,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,0.0005345855,912658000.0000000000,8385.0000000000,63726000000.0000000000,64638658000.0000076294,0.0167507621,0.0001397988,Very Low,22512.2000000000,0.0001541200,1171.3120000000,23683.5120000000,11.8920653303,Relatively Low,13.0147002820,Relatively Low,0.0000000000,0.0000000000,912658000.0000000000,8385.0000000000,63726000000.0000000000,147860.5647200878,64638805860.5647201538,0.0000180224,0.0000000760,0.0002275779,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000016,0.0000001005,0.0000761839,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,2.0000000000,0.0343605913,912658000.0000000000,8385.0000000000,63726000000.0000000000,147860.5647200878,64638805860.5647201538,0.0000255348,0.0000003276,0.0002460797,Very Low,788.9305592758,0.0000968737,736.2401254130,1.3226671624,1526.4933518512,4.6757862953,Very Low,6.1662913066,Very Low,0.0000000000,0.0148900000,912658000.0000000000,8385.0000000000,63726000000.0000000000,64638658000.0000076294,0.0000058883,0.0000028944,Relatively Low,80.0189118426,0.0003613770,2746.4650635800,2826.4839754226,19.2773661946,Relatively Low,15.4429446232,Relatively Low,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,142.0000000000,5.9166666660,59632790.0585851297,418.9266599156,3183842615.3584799767,51591.3125103788,3243526996.7295761108,0.0001804370,0.0000114831,0.0042466231,Very Low,63663.1136805333,0.0284625391,216315.2971586954,1296.2757495066,281274.6865887354,29.5879096062,Relatively High,26.9708819409,Relatively High,1.0000000000,0.0312500000,912658000.0000000000,8385.0000000000,63726000000.0000000000,147860.5647200878,64638805860.5647201538,0.0000032387,0.0000018297,0.0000727233,Very Low,92.3692287258,0.0004794348,3643.7043933928,0.3360282071,3736.4096503256,14.9734902768,Relatively Low,16.6070545485,Relatively Low,0.0000000000,0.0000653310,912658000.0000000000,8385.0000000000,63726000000.0000000000,147860.5647200878,64638805860.5647201538,0.0089662390,0.0000059784,0.0021079463,Very Low,534.6107152638,0.0000032750,24.8896914625,0.0203625042,559.5207692305,5.8706925202,Very Low,6.7469108145,Very Low,7.0000000000,0.0319693090,198555247.5326173902,978.4678896234,7436355961.1380958557,7634911208.6707124710,0.0015593140,0.0000038734,Very Low,9898.0167648649,0.0001211641,920.8471781755,10818.8639430404,23.6580872265,Relatively High,20.2115884136,Relatively Moderate,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0005411070,0.0000037371,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,,,,,,,,,,Insufficient Data,,,,,,,Insufficient Data,,Insufficient Data,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000851,0.0000001057,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,November 2021,0.0000035067,0.0031812618,True,0.0000661520 +2,T06061021322,Hawaii,HI,15,Hawaii,County,1,15001,20100,06061021322,5213,409283000.0000000000,30161527.9142542519,97.0642891247,26.0474557835,Relatively High,89.4815710967,87.4233128834,24.6571275391,Relatively Moderate,83.8106105391,87.4233128834,754552.3595077734,510222.1167381129,0.0320334258,243454.0359926558,876.2067770047,33.3455935266,Relatively Moderate,67.0519519602,65.5270655271,0.9080000000,50.7751980000,Relatively Low,9.3859370029,40.0000000000,2.5387599000,,,,,,,,,Not Applicable,,,,,,Not Applicable,,Not Applicable,,0.0579710120,1082842.5920536572,13.7920666932,104819706.8679994941,105902549.4600531608,0.0000313713,0.0000000025,Very Low,1.9692852387,0.0000000020,0.0151413322,1.9844265710,0.4142077200,Very Low,0.4374499910,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000021774,0.0000022062,0.0080465986,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000541,No Rating,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,0.0099874373,409283000.0000000000,5213.0000000000,39618800000.0000000000,40028083000.0000000000,0.0008505842,0.0000116917,Very Low,509627.8000000000,0.0314233600,238817.5360000000,748445.3360000000,37.5977579168,Very High,44.7882310288,Very High,1.0000000000,0.0312500000,409283000.0000000000,5213.0000000000,39618800000.0000000000,30161527.9142542407,40058244527.9142456055,0.0000180224,0.0000000760,0.0002275779,Very Low,230.5075462219,0.0000123856,94.1304164907,214.5030827638,539.1410454765,5.2311349597,Very Low,5.8932581207,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000016,0.0000001005,0.0000761839,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0100000000,409283000.0000000000,5213.0000000000,39618800000.0000000000,30161527.9142542407,40058244527.9142456055,0.0000255348,0.0000003276,0.0002460797,Very Low,104.5094165573,0.0000170798,129.8064434247,74.2213962963,308.5372562783,2.7440512545,Very Low,3.9390063490,Very Low,0.0000000000,0.0148900000,409283000.0000000000,5213.0000000000,39618800000.0000000000,40028083000.0000000000,0.0000058883,0.0000013610,Very Low,35.8846142757,0.0001056430,802.8864714520,838.7710857277,12.8581949229,Relatively Low,11.2121138672,Relatively Low,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0006245044,0.0000038327,0.0003492485,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,1.0000000000,0.0312500000,409283000.0000000000,5213.0000000000,39618800000.0000000000,30161527.9142542407,40058244527.9142456055,0.0000083601,0.0000003102,0.0006212585,Very Low,106.9261414761,0.0000505411,384.1124266061,585.5657605523,1076.6043286345,9.8898625798,Very Low,11.9394659724,Relatively Low,0.0000000000,0.0006781468,409283000.0000000000,5213.0000000000,39618800000.0000000000,30161527.9142542519,40058244527.9142456055,0.0003985575,0.0000002657,0.0000937001,Very Low,110.6212172132,0.0000009395,7.1398535480,1.9165373923,119.6776081535,3.5109250974,Very Low,4.3917261130,Very Low,4.0000000000,0.0182681760,315888.8587620232,2.2117928286,16809625.4977076985,17125514.3564697206,0.0006654598,0.0000038734,Very Low,3.8401775301,0.0000001565,1.1894532216,5.0296307517,1.8327269938,Very Low,1.7042906890,Very Low,4.0000000000,0.0204021391,407903840.5845158696,5201.9799937840,39535047952.7582778931,39942951793.3427886963,0.0000000070,0.0000040043,Very Low,0.0583395999,0.0004233184,3217.2197865804,3217.2781261802,17.0524727301,Relatively Low,17.9932135371,Relatively Low,,,,,,,,,,,Insufficient Data,,,,,,,Insufficient Data,,Insufficient Data,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000851,0.0000001057,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,November 2021,0.0000000358,0.0000290505,True,0.0000014426 +3,T06027000800,Hawaii,HI,15,Kauai,County,7,15007,40500,06027000800,5943,1030806000.0000000000,459516.6731830848,6.1500338151,19.0467198618,Relatively Moderate,67.4534981234,69.3251533742,18.7719774304,Relatively Low,60.4118835838,72.0858895706,332959.9571449574,167792.7734322688,0.0217301935,165149.4709508616,17.7127618271,33.1217117362,Relatively Moderate,64.7826443794,63.5327635328,0.7680000000,52.5091980000,Relatively Low,23.5125676106,100.0000000000,2.6254599000,,,,,,,,,Not Applicable,,,,,,Not Applicable,,Not Applicable,,0.0699710120,66594737.2848528028,383.9447225607,2917979891.4611377716,2984574628.7459902763,0.0000063169,0.0000000003,Very Low,29.4350693631,0.0000000083,0.0628428106,29.4979121737,1.0184434918,Very Low,1.0330889632,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000021774,0.0000022062,0.0080465986,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,56.0000000000,3.1111111110,0.0000000000,0.0000000000,0.0030589604,No Rating,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,0.0005860614,1030806000.0000000000,5943.0000000000,45166800000.0000000000,46197606000.0000000000,0.0167507621,0.0001397988,Very Low,120075.0000000000,0.0011438300,8693.1080000000,128768.1080000000,20.9111551033,Relatively Moderate,23.9260247408,Relatively Moderate,0.0000000000,0.0000000000,1030806000.0000000000,5943.0000000000,45166800000.0000000000,459516.6731830846,46198065516.6731948853,0.0000180224,0.0000000760,0.0002275779,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000016,0.0000001005,0.0000761839,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,2.0000000000,0.0289855072,1030806000.0000000000,5943.0000000000,45166800000.0000000000,459516.6731830846,46198065516.6731948853,0.0000255348,0.0000003276,0.0002460797,Very Low,762.9385502884,0.0000564393,428.9386307213,3.2776151707,1195.1547961804,4.3095415029,Very Low,5.9417734791,Very Low,0.0000000000,0.0148900000,1030806000.0000000000,5943.0000000000,45166800000.0000000000,46197606000.0000000000,0.0000058883,0.0000028944,Relatively Low,90.3777476786,0.0002561316,1946.6001040973,2036.9778517759,17.2833380202,Relatively Low,14.4752368977,Relatively Low,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,142.0000000000,5.9166666660,40606220.8832914308,293.0385094863,2227092672.0956783295,530.1707312656,2267699423.1497006416,0.0001804370,0.0000114831,0.0042466231,Very Low,43350.6205845832,0.0199094993,151312.1945288390,13.3209920158,194676.1361054380,26.1722849103,Relatively High,24.9423944801,Relatively High,1.0000000000,0.0312500000,1030806000.0000000000,5943.0000000000,45166800000.0000000000,459516.6731830846,46198065516.6731948853,0.0000032387,0.0000018297,0.0000727233,Very Low,104.3268729204,0.0003398069,2582.5325235382,1.0442984855,2687.9036949441,13.4166096589,Relatively Low,15.5570766452,Relatively Low,0.0000000000,0.0001223370,1030806000.0000000000,5943.0000000000,45166800000.0000000000,459516.6731830848,46198065516.6731948853,0.0052856261,0.0000035243,0.0012426410,Very Low,666.5475081608,0.0000025623,19.4736228040,0.0698561550,686.0909871197,6.2836381633,Very Low,7.5500148235,Very Low,9.0000000000,0.0411033970,42337272.9888006300,137.6534442030,1046166175.9429298639,1088503448.9317302704,0.0015593140,0.0000038734,Very Low,2713.5270992744,0.0000219159,166.5606980512,2880.0877973256,15.2190537663,Relatively Moderate,13.5932751503,Relatively Moderate,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0005411070,0.0000037371,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,,,,,,,,,,Insufficient Data,,,,,,,Insufficient Data,,Insufficient Data,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000851,0.0000001057,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,November 2021,0.0000034603,0.0000385465,True,0.0000436593 4,T15001021010,Hawaii,HI,15,Hawaii,County,1,15001,21010,15001021010,7884,737712000.0000000000,8711454.3090733420,58.4401512286,43.1066279987,Very High,99.4459643383,98.1595092025,42.6674572964,Very High,99.2741170486,99.0797546012,3909779.1321200719,2582125.8111252696,0.1746532017,1327364.3330713348,288.9879234675,31.8903618889,Relatively Moderate,51.0956693021,54.4159544160,-0.0020000000,50.7751980000,Relatively Low,9.3859370029,40.0000000000,2.5387599000,,,,,,,,,Not Applicable,,,,,,Not Applicable,,Not Applicable,,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000478451,0.0000000048,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000021774,0.0000022062,0.0080465986,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000541,No Rating,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,0.0099998852,737712000.0000000000,7884.0000000000,59918400000.0000000000,60656112000.0000000000,0.0008505842,0.0000116917,Very Low,2580741.3999999999,0.1736765400,1319941.7039999999,3900683.1039999998,65.1861714882,Very High,74.2640163391,Very High,1.0000000000,0.0312500000,737712000.0000000000,7884.0000000000,59918400000.0000000000,8711454.3090733420,60664823454.3090744019,0.0000180224,0.0000000760,0.0002275779,Very Low,415.4782459486,0.0000187316,142.3602922696,61.9542156517,619.7927538699,5.4799587665,Very Low,5.9041560145,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000016,0.0000001005,0.0000761839,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0269344664,737712000.0000000000,7884.0000000000,59918400000.0000000000,8711454.3090733420,60664823454.3090744019,0.0000255348,0.0000003276,0.0002460797,Very Low,473.5051910310,0.0000651127,494.8567057547,57.2461948490,1025.6080916347,4.0952789981,Very Low,5.6221049906,Very Low,0.0000000000,0.0148900000,737712000.0000000000,7884.0000000000,59918400000.0000000000,60656112000.0000000000,0.0000058883,0.0000013610,Very Low,64.6802104328,0.0001597715,1214.2637523360,1278.9439627688,14.7995789625,Relatively Low,12.3417814165,Relatively Low,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0006245044,0.0000038327,0.0003492485,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,1.0000000000,0.0312500000,737712000.0000000000,7884.0000000000,59918400000.0000000000,8711454.3090733420,60664823454.3090744019,0.0000083601,0.0000003102,0.0006212585,Very Low,192.7289862509,0.0000764370,580.9212298706,169.1270211135,942.7772372349,9.4618177655,Very Low,10.9242145239,Very Low,1.0000000000,0.0004673635,737712000.0000000000,7884.0000000000,59918400000.0000000000,8711454.3090733420,60664823454.3090744019,0.0006900376,0.0000004601,0.0001622266,Very Low,237.9109428670,0.0000016953,12.8843062101,0.6604918534,251.4557409305,4.4968090785,Very Low,5.3796416501,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0006654598,0.0000038734,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,4.0000000000,0.0207448000,737708710.8628113270,7883.9591351862,59918089427.4153594971,60655798138.2781677246,0.0000000070,0.0000040043,Very Low,0.1075487398,0.0006549135,4977.3427848938,4977.4503336337,19.7224171343,Relatively Low,19.9022650650,Relatively Low,,,,,,,,,,,Insufficient Data,,,,,,,Insufficient Data,,Insufficient Data,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000851,0.0000001057,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,November 2021,0.0000000408,0.0000331733,True,0.0000018765 5,T15001021101,Hawaii,HI,15,Hawaii,County,1,15001,21101,15001021101,3531,365469000.0000000000,1115552.9463470120,41.0551206444,39.6369371498,Very High,99.0514029613,96.6257668712,35.4631324234,Relatively High,97.7453635601,94.4785276074,2244880.4514211570,1569603.2441089998,0.0888473124,675239.5743199890,37.6329921689,35.2805718581,Relatively High,83.0000273575,82.3361823362,2.1180000000,50.7751980000,Relatively Low,9.3859370029,40.0000000000,2.5387599000,,,,,,,,,Not Applicable,,,,,,Not Applicable,,Not Applicable,,0.0679710120,53358423.6905883327,515.5255139327,3917993905.8884682655,3971352329.5790553093,0.0000009778,0.0000000001,Very Low,3.5462107144,0.0000000023,0.0178004814,3.5640111958,0.5034846073,Very Low,0.5625920420,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000021774,0.0000022062,0.0080465986,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000541,No Rating,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,0.0099998512,365469000.0000000000,3531.0000000000,26835600000.0000000000,27201069000.0000000000,0.0008505842,0.0000116917,Very Low,1549795.8000000000,0.0875910700,665692.1319999999,2215487.9320000000,53.9839983966,Very High,68.0399795668,Very High,1.0000000000,0.0312500000,365469000.0000000000,3531.0000000000,26835600000.0000000000,1115552.9463470120,27202184552.9463424683,0.0000180224,0.0000000760,0.0002275779,Very Low,205.8315698678,0.0000083893,63.7587762572,7.9336015953,277.5239477203,4.1923926160,Very Low,4.9971070139,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000016,0.0000001005,0.0000761839,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0289855072,365469000.0000000000,3531.0000000000,26835600000.0000000000,1115552.9463470120,27202184552.9463424683,0.0000255348,0.0000003276,0.0002460797,Very Low,270.4974447523,0.0000335331,254.8514731746,7.9569545004,533.3058724274,3.2931774779,Very Low,5.0015747332,Very Low,0.0000000000,0.0148900000,365469000.0000000000,3531.0000000000,26835600000.0000000000,27201069000.0000000000,0.0000058883,0.0000013610,Very Low,32.0431439731,0.0000715567,543.8312163240,575.8743602971,11.3433526973,Very Low,10.4651653429,Relatively Low,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,142.0000000000,5.9166666660,4828130.5279219840,35.1384012388,267051849.4150594473,0.0000000000,271879979.9429814219,0.0006245044,0.0000038327,0.0003492485,Very Low,17839.8663537918,0.0007968309,6055.9146131274,0.0000000000,23895.7809669192,13.0070200492,Relatively Moderate,13.6546608024,Relatively Moderate,1.0000000000,0.0312500000,365469000.0000000000,3531.0000000000,26835600000.0000000000,1115552.9463470120,27202184552.9463424683,0.0000083601,0.0000003102,0.0006212585,Very Low,95.4796314509,0.0000342338,260.1766695466,21.6577094941,377.3140104915,6.9727783560,Very Low,8.9063071715,Very Low,0.0000000000,0.0003634330,365469000.0000000000,3531.0000000000,26835600000.0000000000,1115552.9463470120,27202184552.9463424683,0.0008889061,0.0000005927,0.0002089802,Very Low,118.0676167774,0.0000007606,5.7804922284,0.0847265791,123.9328355849,3.5520526364,Very Low,4.7010550308,Very Low,13.0000000000,0.0593715740,31437177.7921413518,196.0173546829,1489731895.5901708603,1521169073.3823122978,0.0006654598,0.0000038734,Very Low,1242.0638448472,0.0000450783,342.5948426489,1584.6586874961,12.4708959075,Relatively Moderate,12.2698912376,Relatively Moderate,3.0000000000,0.0188028000,365467633.7354047298,3530.9854379618,26835489328.5099411011,27200956962.2453422546,0.0000000070,0.0000040043,Very Low,0.0482928249,0.0002658574,2020.5164362008,2020.5647290257,14.6032241308,Relatively Low,16.3029908639,Relatively Low,,,,,,,,,,,Insufficient Data,,,,,,,Insufficient Data,,Insufficient Data,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000851,0.0000001057,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,November 2021,0.0000002677,0.0000337348,True,0.0000507987 6,T15007040603,Hawaii,HI,15,Kauai,County,7,15007,40603,15007040603,2544,509507000.0000000000,3763051.3782403329,15.9289735326,23.8613675670,Relatively Moderate,84.6148558545,84.9693251534,22.2413255033,Relatively Moderate,75.9028856597,83.7423312883,553788.5026946985,159866.0053362670,0.0465200191,353552.1448416796,40370.3525167520,35.0215086434,Relatively Moderate,81.3161710393,79.7720797721,1.9560000000,52.5091980000,Relatively Low,23.5125676106,100.0000000000,2.6254599000,,,,,,,,,Not Applicable,,,,,,Not Applicable,,Not Applicable,,0.0699710120,59268365.9828897640,295.9306212878,2249072721.7871074677,2308341087.7699966431,0.0000020063,0.0000000001,Very Low,8.3203647759,0.0000000014,0.0109218690,8.3312866448,0.6682062552,Very Low,0.7166933897,Very Low,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000021774,0.0000022062,0.0080465986,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,119.0000000000,6.6111111110,1994468.3763317089,1994468.3763317089,0.0030589604,Relatively Moderate,40334.3876510453,40334.3876510453,9.3173396900,Relatively Moderate,10.0118819196,Relatively Moderate,,0.0006288023,509507000.0000000000,2544.0000000000,19334400000.0000000000,19843907000.0000000000,0.0167507621,0.0001397988,Very Low,29888.8000000000,0.0002046000,1554.9600000000,31443.7600000000,13.0703357152,Relatively Low,15.8125293377,Relatively Low,0.0000000000,0.0000000000,509507000.0000000000,2544.0000000000,19334400000.0000000000,3763051.3782403329,19847670051.3782386780,0.0000180224,0.0000000760,0.0002275779,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000016,0.0000001005,0.0000761839,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,2.0000000000,0.0289855072,509500026.7867159843,2543.9789504995,19334240023.7962799072,3763051.3782403329,19847503101.9612274170,0.0000255348,0.0000003276,0.0002460797,Very Low,377.1002611632,0.0000241596,183.6127961654,26.8408852286,587.5539425572,3.4012529352,Very Low,4.9584510525,Very Low,0.0000000000,0.0148900000,509507000.0000000000,2544.0000000000,19334400000.0000000000,19843907000.0000000000,0.0000058883,0.0000028944,Relatively Low,44.6719315627,0.0001096414,833.2745523849,877.9464839477,13.0553404852,Relatively Low,11.5613443431,Relatively Low,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,,,,,,,,,Insufficient Data,,,,,,Insufficient Data,,Insufficient Data,142.0000000000,5.9166666660,119566421.2469792217,677.5008183296,5149006219.3049850464,0.0000000000,5268572640.5519647598,0.0001804370,0.0000114831,0.0042466231,Very Low,127647.4010480262,0.0460304759,349831.6169989206,0.0000000000,477479.0180469467,35.2957296359,Relatively High,35.5664685650,Very High,1.0000000000,0.0312500000,509507000.0000000000,2544.0000000000,19334400000.0000000000,3763051.3782403329,19847670051.3782386780,0.0000032387,0.0000018297,0.0000727233,Very Low,51.5667080334,0.0001454600,1105.4960019992,8.5519178837,1165.6146279163,10.1552327033,Very Low,12.4507973241,Relatively Low,0.0000000000,0.0002990171,509507000.0000000000,2544.0000000000,19334400000.0000000000,3763051.3782403329,19847670051.3782386780,0.0021625099,0.0000014419,0.0005084021,Very Low,329.4612383326,0.0000010968,8.3360081463,0.5720625944,338.3693090733,4.9645617720,Very Low,6.3071150891,Very Low,3.0000000000,0.0137011320,71084897.0818793178,86.3741073938,656443216.1930950880,727528113.2749742270,0.0015593140,0.0000038734,Relatively Low,1518.6837843730,0.0000045839,34.8375621943,1553.5213465673,12.3886737842,Relatively Moderate,11.6999323670,Relatively Moderate,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0005411070,0.0000037371,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,,,,,,,,,,,Insufficient Data,,,,,,,Insufficient Data,,Insufficient Data,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000851,0.0000001057,0.0000000000,No Rating,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,No Expected Annual Losses,0.0000000000,No Rating,November 2021,0.0000182039,0.0107280896,True,0.0002521232 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 f428565f3..493c0be2e 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,9 +1,7 @@ # pylint: disable=protected-access -from unittest import mock import pathlib -import requests -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, ) @@ -36,35 +34,6 @@ def setup_method(self, _method, filename=__file__): """ super().setup_method(_method=_method, filename=filename) - def _setup_etl_instance_and_run_extract(self, mock_etl, mock_paths): - with mock.patch("data_pipeline.utils.requests") as requests_mock: - zip_file_fixture_src = ( - self._DATA_DIRECTORY_FOR_TEST / "NRI_Table_CensusTracts.zip" - ) - tmp_path = mock_paths[1] - - # Create mock response. - with open(zip_file_fixture_src, mode="rb") as file: - file_contents = file.read() - response_mock = requests.Response() - response_mock.status_code = 200 - # pylint: disable=protected-access - response_mock._content = file_contents - - # Return text fixture: - requests_mock.get = mock.MagicMock(return_value=response_mock) - - # Instantiate the ETL class. - etl = NationalRiskIndexETL() - - # Monkey-patch the temporary directory to the one used in the test - etl.TMP_PATH = tmp_path - - # Run the extract method. - etl.extract() - - return etl - def test_init(self, mock_etl, mock_paths): """Tests that the mock NationalRiskIndexETL class instance was initiliazed correctly. diff --git a/data/data-pipeline/data_pipeline/tests/sources/nlcd_nature_deprived/__init__.py b/data/data-pipeline/data_pipeline/tests/sources/nlcd_nature_deprived/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/data/data-pipeline/data_pipeline/tests/sources/nlcd_nature_deprived/data/extract.csv b/data/data-pipeline/data_pipeline/tests/sources/nlcd_nature_deprived/data/extract.csv new file mode 100644 index 000000000..9af12e04a --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/nlcd_nature_deprived/data/extract.csv @@ -0,0 +1,16 @@ +GEOID10,SF,CF,P200_PFS,CA_LT20,TractAcres,AcresCrops,PctCrops,PctImperv,PctNatural,PctNat90,ImpOrCrop,LowInAndEd,NatureDep,GEOID10_TRACT +6027000800,California,Inyo County,0.6700000000,1,4374150.0000000000,833.5350000000,0.0190559000,0.2995360000,99.6814000000,0,0,1,0,06027000800 +6069000802,California,San Benito County,0.3700000000,1,738261.0000000000,4498.8200000000,0.6093810000,0.1123740000,99.2782000000,0,0,0,0,06069000802 +6061021322,California,Placer County,0.2500000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,06061021322 +15001021010,Hawaii,Hawaii County,0.3700000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,15001021010 +15001021101,Hawaii,Hawaii County,0.3700000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,15001021101 +15007040603,Hawaii,Hawaii County,0.3700000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,15007040603 +15007040700,Hawaii,Hawaii County,0.3700000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,15007040700 +15009030100,Hawaii,Hawaii County,0.3700000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,15009030100 +15009030201,Hawaii,Hawaii County,0.3700000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,15009030201 +15001021402,Hawaii,Hawaii County,0.3700000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,15001021402 +15001021800,Hawaii,Hawaii County,0.3700000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,15001021800 +15009030402,Hawaii,Hawaii County,0.3700000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,15009030402 +15009030800,Hawaii,Hawaii County,0.3700000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,15009030800 +15003010201,Hawaii,Hawaii County,0.3700000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,15003010201 +15007040604,Hawaii,Hawaii County,0.3700000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,15007040604 diff --git a/data/data-pipeline/data_pipeline/tests/sources/nlcd_nature_deprived/data/output.csv b/data/data-pipeline/data_pipeline/tests/sources/nlcd_nature_deprived/data/output.csv new file mode 100644 index 000000000..2a38807cb --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/nlcd_nature_deprived/data/output.csv @@ -0,0 +1,16 @@ +GEOID10_TRACT,Does the tract have at least 35 acres in it?,Share of the tract's land area that is covered by impervious surface as a percent,Share of the tract's land area that is covered by impervious surface or cropland as a percent,Share of the tract's land area that is covered by cropland as a percent +06027000800,True,0.2995360000,0.3186000000,0.0190559000 +06069000802,True,0.1123740000,0.7218000000,0.6093810000 +06061021322,True,2.9274100000,42.4778000000,39.5504000000 +15001021010,True,2.9274100000,42.4778000000,39.5504000000 +15001021101,True,2.9274100000,42.4778000000,39.5504000000 +15007040603,True,2.9274100000,42.4778000000,39.5504000000 +15007040700,True,2.9274100000,42.4778000000,39.5504000000 +15009030100,True,2.9274100000,42.4778000000,39.5504000000 +15009030201,True,2.9274100000,42.4778000000,39.5504000000 +15001021402,True,2.9274100000,42.4778000000,39.5504000000 +15001021800,True,2.9274100000,42.4778000000,39.5504000000 +15009030402,True,2.9274100000,42.4778000000,39.5504000000 +15009030800,True,2.9274100000,42.4778000000,39.5504000000 +15003010201,True,2.9274100000,42.4778000000,39.5504000000 +15007040604,True,2.9274100000,42.4778000000,39.5504000000 diff --git a/data/data-pipeline/data_pipeline/tests/sources/nlcd_nature_deprived/data/transform.csv b/data/data-pipeline/data_pipeline/tests/sources/nlcd_nature_deprived/data/transform.csv new file mode 100644 index 000000000..9cb2e054e --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/nlcd_nature_deprived/data/transform.csv @@ -0,0 +1,16 @@ +GEOID10,SF,CF,P200_PFS,CA_LT20,TractAcres,AcresCrops,Share of the tract's land area that is covered by cropland as a percent,Share of the tract's land area that is covered by impervious surface as a percent,PctNatural,PctNat90,ImpOrCrop,LowInAndEd,NatureDep,GEOID10_TRACT,Does the tract have at least 35 acres in it?,Share of the tract's land area that is covered by impervious surface or cropland as a percent +6027000800,California,Inyo County,0.6700000000,1,4374150.0000000000,833.5350000000,0.0190559000,0.2995360000,99.6814000000,0,0,1,0,06027000800,True,0.3186000000 +6069000802,California,San Benito County,0.3700000000,1,738261.0000000000,4498.8200000000,0.6093810000,0.1123740000,99.2782000000,0,0,0,0,06069000802,True,0.7218000000 +6061021322,California,Placer County,0.2500000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,06061021322,True,42.4778000000 +15001021010,Hawaii,Hawaii County,0.3700000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,15001021010,True,42.4778000000 +15001021101,Hawaii,Hawaii County,0.3700000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,15001021101,True,42.4778000000 +15007040603,Hawaii,Hawaii County,0.3700000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,15007040603,True,42.4778000000 +15007040700,Hawaii,Hawaii County,0.3700000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,15007040700,True,42.4778000000 +15009030100,Hawaii,Hawaii County,0.3700000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,15009030100,True,42.4778000000 +15009030201,Hawaii,Hawaii County,0.3700000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,15009030201,True,42.4778000000 +15001021402,Hawaii,Hawaii County,0.3700000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,15001021402,True,42.4778000000 +15001021800,Hawaii,Hawaii County,0.3700000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,15001021800,True,42.4778000000 +15009030402,Hawaii,Hawaii County,0.3700000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,15009030402,True,42.4778000000 +15009030800,Hawaii,Hawaii County,0.3700000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,15009030800,True,42.4778000000 +15003010201,Hawaii,Hawaii County,0.3700000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,15003010201,True,42.4778000000 +15007040604,Hawaii,Hawaii County,0.3700000000,1,63993.3000000000,25309.6000000000,39.5504000000,2.9274100000,57.5222000000,0,1,0,0,15007040604,True,42.4778000000 diff --git a/data/data-pipeline/data_pipeline/tests/sources/nlcd_nature_deprived/data/usa_conus_nat_dep__compiled_by_TPL.csv.zip b/data/data-pipeline/data_pipeline/tests/sources/nlcd_nature_deprived/data/usa_conus_nat_dep__compiled_by_TPL.csv.zip new file mode 100644 index 000000000..9c6c4702d Binary files /dev/null and b/data/data-pipeline/data_pipeline/tests/sources/nlcd_nature_deprived/data/usa_conus_nat_dep__compiled_by_TPL.csv.zip differ 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 new file mode 100644 index 000000000..86d51496e --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/nlcd_nature_deprived/test_etl.py @@ -0,0 +1,20 @@ +import pathlib + +from data_pipeline.etl.sources.nlcd_nature_deprived.etl import NatureDeprivedETL +from data_pipeline.tests.sources.example.test_etl import TestETL + + +class TestNatureDeprivedETL(TestETL): + _ETL_CLASS = NatureDeprivedETL + + _SAMPLE_DATA_PATH = pathlib.Path(__file__).parents[0] / "data" + _SAMPLE_DATA_FILE_NAME = "usa_conus_nat_dep__compiled_by_TPL.csv" + _SAMPLE_DATA_ZIP_FILE_NAME = "usa_conus_nat_dep__compiled_by_TPL.csv.zip" + _EXTRACT_TMP_FOLDER_NAME = "NatureDeprivedETL" + + def setup_method(self, _method, filename=__file__): + """Invoke `setup_method` from Parent, but using the current file name. + + This code can be copied identically between all child classes. + """ + super().setup_method(_method=_method, filename=filename) diff --git a/data/data-pipeline/data_pipeline/tests/sources/persistent_poverty/__init__.py b/data/data-pipeline/data_pipeline/tests/sources/persistent_poverty/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/data/data-pipeline/data_pipeline/tests/sources/persistent_poverty/data/LTDB_Std_All_Sample.zip b/data/data-pipeline/data_pipeline/tests/sources/persistent_poverty/data/LTDB_Std_All_Sample.zip new file mode 100644 index 000000000..37a41ec2c Binary files /dev/null and b/data/data-pipeline/data_pipeline/tests/sources/persistent_poverty/data/LTDB_Std_All_Sample.zip differ diff --git a/data/data-pipeline/data_pipeline/tests/sources/persistent_poverty/data/extract.csv b/data/data-pipeline/data_pipeline/tests/sources/persistent_poverty/data/extract.csv new file mode 100644 index 000000000..cdf91eb26 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/persistent_poverty/data/extract.csv @@ -0,0 +1,16 @@ +TRTID10,state,county,tract,placefp10,cbsa10,metdiv10,ccflag10,FAMILY90,FHH90,POP90SF3,POP90SF4,RUANC90,ITANC90,GEANC90,IRANC90,SCANC90,RUFB90,ITFB90,GEFB90,IRFB90,SCFB90,FB90,NAT90,N10IMM90,AG5UP90,OLANG90,LEP90,AG25UP90,HS90,COL90,CLF90,UNEMP90,DFLABF90,FLABF90,EMPCLF90,PROF90,MANUF90,SEMP90,AG16CV90,VET90,CNI16U90,DIS90,DPOV90,NPOV90,N65POV90,DFMPOV90,NFMPOV90,DWPOV90,NWPOV90,DBPOV90,NBPOV90,DNAPOV90,NNAPOV90,DHPOV90,NHPOV90,DAPOV90,NAPOV90,INCPC90,HU90SP,H30OLD90,OHU90SP,H10YRS90,DMULTI90,MULTI90,HINC90,HINCW90,HINCB90,HINCH90,HINCA90,HH90,HHW90,HHB90,HHH90,HHA90 +6027000800,CA,Inyo County,Census Tract 8,42580,13860,99999,0,947.0000232000,74.0000021900,3473.0000650000,3473.0000650000,37.0000004100,55.0000036300,622.0000106000,362.0000078000,85.0000038300,0.0000000000,2.0000001030,6.0000003420,2.0000000000,6.0000000000,114.0000027000,62.0000010600,34.0000009600,3275.0000600000,283.0000059000,58.0000006200,2628.0000430000,1752.0000340000,226.0000070000,1572.0000260000,128.0000016000,1429.0000340000,692.0000155000,1444.0000240000,269.0000081000,28.0000005800,118.0000038000,2840.0000470000,691.0000141000,2804.0000450000,524.0000085000,3419.0000630000,485.0000113000,114.0000012000,947.0000232000,352.0000117000,3019.0000460000,386.0000059000,15.0000000000,8.0000000000,258.0000152000,87.0000044100,376.0000049000,55.0000017100,34.0000018500,0.0000009240,11282.9890600000,2029.0000420000,765.0000165000,1510.0000340000,960.0000195000,2029.0000420000,164.0000004000,18802.8290100000,19238.2409400000, ,15749.9998600000,15000.0018300000,1520.0000330000,1406.0000270000,0.0000000000,135.0000015000,6.0000008560 +6061021322,CA,Placer County,Census Tract 213.22,62938,40900,99999,1,413.8015522000,36.9504473300,1437.7500650000,1437.7500650000,5.7998258990,51.4048475500,323.0300046000,123.0183659000,58.9943210200,0.0000000000,0.0069602750,12.2533182200,0.0000000000,0.0000000000,75.9738778900,37.8148188500,12.5473476100,1364.6021230000,168.7317567000,17.6124934500,929.3841615000,516.7910383000,76.2496196600,700.1886827000,28.5566857300,533.7939340000,287.1322093000,671.6319973000,103.8683825000,80.0058629500,126.2160115000,1089.1046050000,219.7375810000,1081.3416300000,146.6018800000,1429.0499390000,95.1913104400,16.2047431600,413.8015522000,225.9298114000,1319.3738320000,87.5246539400,7.5682855450,0.0000000000,26.4881058700,0.9588502050,148.2951801000,11.1419056600,24.8093601300,6.7078032490,15350.9551100000,532.3409888000,122.7573153000,504.1733706000,330.6022812000,532.3409888000,37.2781012100,37057.6325400000,37560.5137700000,20087.15489,39771.1722300000,42048.1950700000,492.8297963000,457.7224989000,6.7315500680,48.6243697900,0.0646896060 +6069000802,CA,San Benito County,Census Tract 8.02,99999,41940,99999,0,566.0214233000,12.1359653500,1951.9486760000,1951.9486760000,9.2233333590,158.2529907000,270.8747559000,162.6219330000,84.4663162200,0.0000000000,4.8543863300,0.0000000000,0.0000000000,2.9126317500,173.3015900000,55.8254394500,83.4954452500,1864.5697250000,333.9817810000,66.0196533200,1427.6749700000,640.2935181000,294.6612549000,935.9256520000,61.6507034300,741.7501831000,351.4575500000,874.2749478000,259.7096558000,121.3596573000,123.3014069000,1577.1900640000,384.4673767000,1498.5490080000,130.0975494000,1866.5114790000,66.9905319200,6.3107018470,566.0214233000,209.2240448000,1679.1321730000,49.5147399900,24.2719306900,0.0000000000,39.3205261200,0.0000000000,256.7970276000,18.9321060200,35.9224586500,0.0000000000,22612.9993700000,791.7503662000,190.2919312000,710.1967163000,505.8270264000,791.7503662000,5.3398246770,43749.9997700000,46405.6612800000, ,32115.3843600000,87500.0022700000,711.6530151000,653.8858032000,0.0000000000,89.8061447100,12.6214036900 +15001021010,HI,Hawaii County,Census Tract 210.10,12450,25900,99999,0,771.8966675000,86.6812591600,3130.9272040000,3130.9272040000,26.0043792700,45.0742569000,242.2741241000,138.6900177000,51.1419448900,0.0000000000,0.0000000000,4.3340630530,3.4672505860,0.0000000000,211.9356842000,116.5862961000,49.4083213800,2843.1454120000,355.8265686000,75.4126968400,1971.5653170000,1099.1184080000,332.4226379000,1311.4875030000,83.2140121500,1057.0780030000,588.1323853000,1228.2734910000,259.1769714000,74.5458831800,155.5928650000,2196.9366000000,371.4291992000,2196.9366000000,353.6595459000,3093.6542610000,698.2175903000,46.3744735700,771.8966675000,452.9096069000,1413.3379860000,390.9324951000,15.6026268000,2.1670315270,9.9683456420,7.3679075240,357.9936218000,99.6834487900,1573.2648930000,287.3483887000,10019.0003000000,1394.2680660000,256.5765381000,1128.5900880000,832.1401367000,1394.2680660000,12.1353769300,22281.0001400000,22568.4923400000,15000.00026,22678.5718600000,24593.3011400000,1116.8880620000,606.7688599000,4.3340630530,119.6201401000,455.5100403000 +15001021101,HI,Hawaii County,Census Tract 211.01,99999,25900,99999,0,490.9738464000,84.5782699600,2022.9801700000,2022.9801700000,10.4973030100,48.2875900300,143.0632324000,113.6707916000,53.6862030000,0.0000000000,0.0000000000,10.7972259500,2.3993835450,5.3986129760,280.4279480000,180.5536041000,118.4695587000,1845.4257950000,389.8998108000,63.8835830700,1185.8952700000,673.3269653000,161.6584625000,795.6955362000,69.2821960400,712.0170288000,351.8096008000,726.4133391000,128.9668579000,37.7902908300,146.9622345000,1389.5429400000,210.5458984000,1389.5429400000,255.8342590000,2009.1837150000,644.2344360000,38.6900596600,490.9738464000,303.5220032000,909.0664041000,289.4256287000,6.5983042720,0.0000000000,47.9876670800,34.1912155200,234.5397339000,111.5713272000,1009.2406620000,317.3184509000,8204.9999510000,822.6885986000,87.2775726300,681.1250000000,481.6762390000,822.6885986000,24.2937564800,18360.0001000000,18140.0966400000, ,13000.0004000000,19794.8707300000,669.4279785000,370.7047424000,0.0000000000,53.9861259500,273.8296509000 +15001021402,HI,Hawaii County,Census Tract 214.02,3850,25900,99999,0,816.2897568000,46.7089718600,2908.3037620000,2908.3037620000,9.3842508490,34.3563535200,85.1050386400,49.6372810000,42.1222216500,0.4366300400,0.0000000000,0.0507011120,0.0000000000,0.0000000000,154.3531404000,35.6412766000,100.6419504000,2718.7213800000,400.5848715000,42.0668509000,2029.9287820000,1120.4883020000,389.2195942000,1513.2753420000,90.2473753700,1164.6149540000,732.8806071000,1423.0279690000,398.0990586000,38.5432898100,148.3798876000,2264.6563310000,400.7801185000,2260.1444870000,204.3723986000,2896.0170940000,164.3064289000,42.8245659800,816.2897568000,369.2554536000,823.5514248000,42.8368821100,9.1951896550,0.2450553770,0.6089137490,0.0000000000,231.1957982000,25.7701943800,2046.6653000000,121.1737876000,15523.0524500000,1168.2462790000,424.7533337000,1042.7740610000,613.2432083000,1168.2462790000,233.6237568000,36432.4851700000,35023.9123700000,2500.00003,19986.2886800000,38377.4267300000,1038.3984520000,350.9512153000,0.0591512960,100.2060835000,672.1332075000 +15001021800,HI,Hawaii County,Census Tract 218,99999,25900,99999,0,1029.1142040000,113.6784696000,4267.4235680000,4267.4235680000,6.2395850530,53.9177365400,216.6516714000,128.9012836000,50.9871561900,6.0000000000,0.1063158070,0.1550576070,0.0000000000,5.0000000000,447.7201072000,220.2602014000,108.4859570000,3916.0639380000,732.8903613000,141.4261076000,2614.6461610000,1725.1835680000,326.8660370000,2059.8485030000,80.4418689800,1526.3987780000,994.8898024000,1979.4066340000,257.4833096000,26.3705349100,165.9507309000,3139.4967370000,446.5797471000,3112.4800730000,479.9428353000,4196.1618470000,304.9946221000,35.1246452800,1029.1142040000,599.1987248000,1353.4594670000,88.4248028000,12.0483253700,0.0000000000,29.1300475600,0.0200242130,796.1207250000,80.2921846500,2650.0290710000,198.5235648000,11456.1517100000,1564.6212330000,673.4738505000,1367.9637000000,704.9298707000,1564.6212330000,108.9002704000,31093.0763300000,34891.6831500000, ,36029.4523900000,28993.2036700000,1309.0228300000,454.9163605000,0.0000000000,162.9089448000,789.8354598000 +15003010201,HI,Honolulu County,Census Tract 102.01,12400,26180,99999,0,1066.0000000000,123.0000000000,4656.0000160000,4656.0000160000,27.0000000000,106.0000000000,304.0000000000,147.0000000000,83.0000000000,0.0000000000,0.0000000000,20.0000000000,0.0000000000,0.0000000000,309.0000000000,104.0000000000,102.0000000000,4143.0000140000,719.0000000000,44.0000000000,2719.0000090000,1527.0000000000,528.0000000000,2131.0000070000,117.0000000000,1555.0000000000,895.0000000000,2014.0000070000,545.0000000000,67.0000000000,127.0000000000,3303.0000110000,535.0000000000,3267.0000110000,453.0000000000,4587.0000150000,729.0000000000,52.0000000000,1066.0000000000,633.0000000000,1662.0000060000,204.0000000000,42.0000000000,0.0000000000,43.0000000000,28.0000000000,261.0000000000,18.0000000000,2743.0000000000,497.0000000000,14178.0000500000,1876.0000000000,634.0000000000,1494.0000000000,1037.0000000000,1876.0000000000,447.0000000000,35151.0001200000,36678.3218000000,30000.0001,44583.3334800000,36453.4884900000,1462.0000000000,656.0000000000,9.0000000000,23.0000000000,763.0000000000 +15007040603,HI,Kauai County,Census Tract 406.03,39200,28180,99999,0,588.9533691000,14.8749074900,2288.4115600000,2288.4115600000,4.1835675240,41.8356781000,141.7764587000,88.7846069300,45.5544052100,0.0000000000,4.1835675240,5.1132493020,0.0000000000,0.0000000000,315.6269531000,189.6550751000,98.0814209000,2138.7328030000,491.8016357000,87.8549194300,1520.0296170000,716.3197632000,270.5373840000,1197.8949000000,18.1287937200,877.6195679000,518.2975464000,1179.7661060000,306.7949829000,46.4840850800,99.0111007700,1745.9422750000,233.3501129000,1714.7979380000,137.1280518000,2260.0562680000,153.8623199000,23.7068843800,588.9533691000,321.6698608000,921.7794281000,104.1243515000,0.0000000000,0.0000000000,5.1132493020,0.0000000000,238.9282074000,29.2849750500,1265.2968750000,33.0037002600,14882.0000400000,836.7135620000,238.4633636000,753.0421753000,469.9541016000,836.7135620000,116.6750565000,38942.0014900000,37622.3762200000, ,34318.1815500000,38219.1778500000,761.4093018000,345.8416138000,0.0000000000,55.3160629300,393.2553711000 +15007040604,HI,Kauai County,Census Tract 406.04,57800,28180,99999,0,678.0467656000,17.1250984800,2634.5889580000,2634.5889580000,4.8164320010,48.1643366100,163.2235751000,102.2154066000,52.4456040000,0.0000000000,4.8164319990,5.8867523410,0.0000000000,0.0000000000,363.3731129000,218.3449656000,112.9185931000,2462.2676790000,566.1984698000,101.1450919000,1749.9707180000,824.6804260000,311.4626748000,1379.1053670000,20.8712132900,1010.3806350000,596.7025865000,1358.2341530000,353.2050822000,53.5159359900,113.9889124000,2010.0581130000,268.6499275000,1974.2024500000,157.8719865000,2601.9442500000,177.1377060000,27.2931263100,678.0467656000,370.3301829000,1061.2207750000,119.8756585000,0.0000014800,0.0000009040,5.8867517830,0.0000000055,275.0718744000,33.7150284500,1456.7034330000,37.9963147800,14881.9998700000,963.2866173000,274.5367055000,866.9579964000,541.0460023000,963.2866173000,134.3249464000,38942.0019300000,37622.3794400000,2708.021126,34318.1816500000,38219.1788500000,876.5908071000,398.1584626000,0.0000004130,63.6839504200,452.7447185000 +15007040700,HI,Kauai County,Census Tract 407,24950,28180,99999,0,1639.5124120000,84.3661893400,6497.4160920000,6497.4160920000,0.0261385850,179.0821346000,411.3031126000,164.1830575000,112.0709766000,0.0000000000,0.0000000000,19.9999980900,0.0000000000,0.0000000000,803.9005321000,495.4262798000,170.9395295000,6045.6744670000,1284.0984150000,230.2267010000,4202.3582790000,2302.9328280000,716.3603780000,3341.4274500000,85.2877002200,2471.2365200000,1616.8583390000,3256.1397500000,792.3786741000,256.5087146000,160.2696385000,4873.0529120000,677.1858005000,4858.6607240000,465.8659478000,6483.8447060000,315.4761577000,130.1721194000,1639.5124120000,903.8070090000,2542.4494830000,121.2988364000,18.0560093400,10.9999990500,13.2091077300,0.0672135060,809.4964124000,19.4300633300,3747.7267120000,182.9719543000,14847.6424500000,2182.2980030000,656.0313461000,2089.1407680000,1264.6352900000,2182.2980030000,127.4408560000,42756.8743900000,41907.5748200000,2708.021223,33400.6344500000,42210.6869300000,2068.2044520000,930.0281326000,5.0261381080,162.4411862000,1090.9635380000 +15009030100,HI,Maui County,Census Tract 301,11350,27980,99999,0,383.3068000000,27.2305791200,1910.5015780000,1910.5015780000,6.2592231110,27.4607778700,91.6621148600,27.1932371400,35.6747865500,0.0000000000,0.0035966930,0.0898007360,0.0000000000,8.1204749640,37.2918099000,6.5858333300,8.6301826290,1675.7861590000,177.6883274000,0.2490721380,1213.4786900000,793.3024273000,173.2832380000,864.0971374000,12.1702029000,576.9324621000,348.0594975000,851.9269343000,157.0642045000,28.2470664600,176.1750701000,1347.1787240000,314.6769609000,1347.1232320000,153.7392875000,1890.3938120000,392.8893720000,49.0661406900,383.3068000000,238.4715474000,807.4789838000,151.7785114000,0.0395477110,0.0000000000,20.0771960800,19.9998645800,82.6743149300,0.0311889900,1052.6142140000,211.1110742000,10415.9855900000,772.7004868000,261.4311255000,595.1029364000,362.3008839000,772.7004868000,23.2643179700,26030.6739600000,26529.6239500000,62499.99972,10011.7479600000,27536.6825200000,634.0477989000,310.2452140000,0.0041105070,14.1661638200,316.7386816000 +15009030201,HI,Maui County,Census Tract 302.01,99999,27980,99999,0,370.6344604000,44.2015914900,1578.6282440000,1578.6282440000,14.5508346600,25.8071403500,170.2173004000,68.9105529800,56.8306160000,0.0000000000,0.0000000000,1.9218082430,0.0000000000,0.0000000000,74.4014358500,42.8288688700,32.6707420300,1447.3961910000,143.5865326000,10.1581296900,1008.1257240000,471.1175842000,209.7516479000,834.6138888000,21.9635238600,543.5972290000,359.1036072000,812.6503654000,172.4136658000,95.5413284300,161.4319000000,1135.7887030000,143.0374451000,1135.7887030000,111.7394257000,1568.4701140000,158.1373749000,6.8636012080,370.6344604000,243.5205688000,939.4897130000,125.1920853000,3.0199844840,0.0000000000,20.3162593800,8.5108652110,190.2590179000,18.6689949000,572.1497803000,21.1398906700,13734.0000100000,569.6788940000,110.0921631000,526.5755005000,365.9671936000,569.6788940000,19.2180824300,36271.9983800000,36752.7165200000,29999.99935,38274.6483700000,41103.4484300000,537.2827148000,379.9689636000,1.3727202420,52.9869995100,135.0756683000 +15009030402,HI,Maui County,Census Tract 304.02,65900,27980,99999,0,1576.0000000000,169.0000000000,6064.0000020000,6064.0000020000,14.0000000000,21.0000000000,388.0000000000,130.0000000000,116.0000000000,0.0000000000,6.0000000000,12.0000000000,0.0000000000,0.0000000000,384.0000000000,204.0000000000,142.0000000000,5577.0000020000,733.0000000000,120.0000000000,3752.0000010000,1692.0000000000,664.0000000000,3218.0000010000,94.0000000000,2147.0000000000,1431.0000000000,3124.0000010000,752.0000000000,197.0000000000,253.0000000000,4402.0000010000,742.0000000000,4402.0000010000,325.0000000000,6036.0000020000,397.0000000000,22.0000000000,1576.0000000000,970.0000000000,2603.0000010000,182.0000000000,0.0000000000,0.0000000000,65.0000000000,0.0000000000,496.0000000000,63.0000000000,3305.0000000000,215.0000000000,16362.0000100000,1995.0000000000,159.0000000000,1914.0000000000,1194.0000000000,1995.0000000000,22.0000000000,43032.0000100000,41381.5789600000, ,33000.0000100000,43802.6315900000,1919.0000000000,922.0000000000,0.0000000000,152.0000000000,973.0000000000 +15009030800,HI,Maui County,Census Tract 308,75950,27980,99999,0,566.0331867000,29.0024671100,2380.1187810000,2380.1187810000,17.9996613400,10.0023785700,58.0117214400,83.0014279100,6.0035655440,0.0000246000,0.0000492000,0.0000246000,0.0000000000,0.0000871000,275.9955389000,160.9963087000,63.0011419100,2200.1173260000,563.9967822000,125.9982522000,1366.1198620000,676.0562812000,278.0319260000,1075.1001440000,14.0013287000,774.0661832000,485.0454395000,1061.0988150000,250.0390396000,61.0059311800,72.0103169500,1604.1293560000,165.0293852000,1604.1262590000,126.0096916000,2373.1152960000,158.9950915000,16.9988727100,566.0331867000,349.0062412000,543.0424034000,75.9953928000,19.9996131500,0.0000000000,0.0005046810,0.0000416000,204.9941585000,6.0003820650,1744.0754940000,82.9987536900,13742.8599100000,725.0676672000,157.0406731000,678.0611339000,390.0359396000,725.0676672000,15.0405894400,43750.2909800000,37947.0558900000,56651.51814,40624.8900800000,47291.6931700000,623.0686622000,167.0220174000,0.0003813110,27.9999225900,438.0467044000 diff --git a/data/data-pipeline/data_pipeline/tests/sources/persistent_poverty/data/output.csv b/data/data-pipeline/data_pipeline/tests/sources/persistent_poverty/data/output.csv new file mode 100644 index 000000000..ec83b70e0 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/persistent_poverty/data/output.csv @@ -0,0 +1,16 @@ +GEOID10_TRACT,Individuals in Poverty (percent) (1990),Individuals in Poverty (percent) (2000),Individuals in Poverty (percent) (2010),Persistent Poverty Census Tract +06027000800,0.1418543441,0.1857745998,0.1475304682,False +06061021322,0.0666116053,0.0607935935,0.0947959404,False +06069000802,0.0358907688,0.0632887874,0.0613686534,False +15001021010,0.2256934781,0.2156182598,0.3112706837,True +15001021101,0.3206448625,0.2732381146,0.2703479094,True +15001021402,0.0567353105,0.1106101497,0.0918238994,False +15001021800,0.0726841893,0.1204888825,0.1765701710,False +15003010201,0.1589274030,0.1844549763,0.1866137266,False +15007040603,0.0680789775,0.1103461130,0.0346287033,False +15007040604,0.0680789782,0.1103461036,0.1002400960,False +15007040700,0.0486557239,0.0635433492,0.1525797252,False +15009030100,0.2078346689,0.1729195461,0.0979676915,False +15009030201,0.1008226892,0.1610559432,0.1041162228,False +15009030402,0.0657720344,0.0643312931,0.0270912548,False +15009030800,0.0669984690,0.0322814539,0.0189065700,False diff --git a/data/data-pipeline/data_pipeline/tests/sources/persistent_poverty/data/transform.csv b/data/data-pipeline/data_pipeline/tests/sources/persistent_poverty/data/transform.csv new file mode 100644 index 000000000..9fdb12388 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/persistent_poverty/data/transform.csv @@ -0,0 +1,16 @@ +GEOID10_TRACT,state_x,county_x,tract_x,placefp10_x,cbsa10_x,metdiv10_x,ccflag10_x,FAMILY90,FHH90,POP90SF3,POP90SF4,RUANC90,ITANC90,GEANC90,IRANC90,SCANC90,RUFB90,ITFB90,GEFB90,IRFB90,SCFB90,FB90,NAT90,N10IMM90,AG5UP90,OLANG90,LEP90,AG25UP90,HS90,COL90,CLF90,UNEMP90,DFLABF90,FLABF90,EMPCLF90,PROF90,MANUF90,SEMP90,AG16CV90,VET90,CNI16U90,DIS90,DPOV90,NPOV90,N65POV90,DFMPOV90,NFMPOV90,DWPOV90,NWPOV90,DBPOV90,NBPOV90,DNAPOV90,NNAPOV90,DHPOV90,NHPOV90,DAPOV90,NAPOV90,INCPC90,HU90SP,H30OLD90,OHU90SP,H10YRS90,DMULTI90,MULTI90,HINC90,HINCW90,HINCB90,HINCH90,HINCA90,HH90,HHW90,HHB90,HHH90,HHA90,state_y,county_y,tract_y,placefp10_y,cbsa10_y,metdiv10_y,ccflag10_y,POP00SF3,RUANC00,ITANC00,GEANC00,IRANC00,SCANC00,RUFB00,ITFB00,GEFB00,IRFB00,SCFB00,FB00,NAT00,N10IMM00,AG5UP00,OLANG00,LEP00,AG25UP00,HS00,COL00,AG15UP00,Mar-00,WDS00,CLF00,UNEMP00,DFLABF00,FLABF00,EMPCLF00,PROF00,MANUF00,SEMP00,AG18CV00,VET00,CNI16U00,DIS00,DPOV00,NPOV00,N65POV00,DFMPOV00,NFMPOV00,DWPOV00,NWPOV00,DBPOV00,NBPOV00,DNAPOV00,NNAPOV00,DHPOV00,NHPOV00,DAPOV00,NAPOV00,INCPC00,HU00SP,H30OLD00,OHU00SP,H10YRS00,DMULTI00,MULTI00,HINC00,HINCW00,HINCB00,HINCH00,HINCA00,MHMVAL00,MRENT00,HH00,HHW00,HHB00,HHH00,HHA00,statea,countya,tracta,pnhwht12,pnhblk12,phisp12,pntv12,pasian12,phaw12,pindia12,pchina12,pfilip12,pjapan12,pkorea12,pviet12,p15wht12,p65wht12,p15blk12,p65blk12,p15hsp12,p65hsp12,p15ntv12,p65ntv12,p15asn12,p65asn12,pmex12,pcuban12,ppr12,pruanc12,pitanc12,pgeanc12,piranc12,pscanc12,pfb12,pnat12,p10imm12,prufb12,pitfb12,pgefb12,pirfb12,pscfb12,polang12,plep12,phs12,pcol12,punemp12,pflabf12,pprof12,pmanuf12,psemp12,pvet12,p65pov12,ppov12,pwpov12,pnapov12,pfmpov12,pbpov12,phpov12,papov12,pvac12,pown12,pmulti12,p30old12,p18und12,p60up12,p75up12,pmar12,pwds12,pfhh12,p10yrs12,ageblk12,agentv12,agewht12,agehsp12,india12,filip12,japan12,korea12,viet12,pop12,nhwht12,nhblk12,ntv12,hisp12,asian12,haw12,china12,a15wht12,a65wht12,a15blk12,a65blk12,a15hsp12,a65hsp12,a15ntv12,a65ntv12,ageasn12,a15asn12,a65asn12,mex12,pr12,cuban12,geanc12,iranc12,itanc12,ruanc12,fb12,nat12,itfb12,rufb12,ag5up12,irfb12,gefb12,scanc12,n10imm12,olang12,lep12,scfb12,ag25up12,dfmpov12,hh12,hinc12,hincb12,hincw12,hinch12,incpc12,ag18cv12,vet12,empclf12,dpov12,npov12,dbpov12,nbpov12,dnapov12,nnapov12,dwpov12,nwpov12,dhpov12,nhpov12,hhb12,hhw12,hhh12,hs12,col12,clf12,unemp12,dflabf12,flabf12,prof12,manuf12,semp12,hha12,hinca12,n65pov12,nfmpov12,napov12,dapov12,family12,hu12,vac12,ohu12,own12,rent12,dmulti12,mrent12,mhmval12,multi12,h30old12,h10yrs12,a18und12,a60up12,a75up12,ag15up12,12-Mar,wds12,fhh12,Individuals in Poverty (percent) (1990),Individuals in Poverty (percent) (2000),Individuals in Poverty (percent) (2010),Persistent Poverty Census Tract +06027000800,CA,Inyo County,Census Tract 8,42580,13860,99999,0,947.0000232000,74.0000021900,3473.0000650000,3473.0000650000,37.0000004100,55.0000036300,622.0000106000,362.0000078000,85.0000038300,0.0000000000,2.0000001030,6.0000003420,2.0000000000,6.0000000000,114.0000027000,62.0000010600,34.0000009600,3275.0000600000,283.0000059000,58.0000006200,2628.0000430000,1752.0000340000,226.0000070000,1572.0000260000,128.0000016000,1429.0000340000,692.0000155000,1444.0000240000,269.0000081000,28.0000005800,118.0000038000,2840.0000470000,691.0000141000,2804.0000450000,524.0000085000,3419.0000630000,485.0000113000,114.0000012000,947.0000232000,352.0000117000,3019.0000460000,386.0000059000,15.0000000000,8.0000000000,258.0000152000,87.0000044100,376.0000049000,55.0000017100,34.0000018500,0.0000009240,11282.9890600000,2029.0000420000,765.0000165000,1510.0000340000,960.0000195000,2029.0000420000,164.0000004000,18802.8290100000,19238.2409400000, ,15749.9998600000,15000.0018300000,1520.0000330000,1406.0000270000,0.0000000000,135.0000015000,6.0000008560,CA,Inyo County,Census Tract 8,42580,13860,99999,0,3117.0000890000,26.0000002400,47.0000032500,431.0000158000,294.0000076000,74.0000032200,0.0000000000,0.0000000000,8.0000003420,2.0000000000,0.0000002050,334.0000029000,79.0000007500,191.0000008000,2944.0000850000,503.0000064000,133.0000008000,2216.0000650000,1187.0000340000,363.0000082000,2558.0000730000,1369.0000420000,597.0000171000,1408.0000410000,108.0000034000,1275.0000380000,657.0000202000,1300.0000380000,314.0000119000,76.0000009200,129.0000042000,2410.0000690000,460.0000123000,1930.0000520000,382.0000085000,3079.0000870000,572.0000091000,56.0000019200,820.0000247000,94.0000010300,2107.0000620000,313.0000046000,3.0000001370,3.0000001370,242.0000129000,88.0000031100,629.0000075000,168.0000011000,22.0000008600,0.0000000000,16938.9166400000,1931.0000460000,1129.0000250000,1426.0000380000,965.0000213000,1931.0000460000,149.0000013000,28218.7649100000,28242.2954200000, ,31174.2175600000,33787.87882,69875.9413600000,313.8598744000,1411.0000370000,1084.0000290000,0.0000000000,184.0000021000,11.0000002700,6,27,800,66.5400009200,0.8999999760,20.4699993100,7.3000001910,2.0699999330,0.0000000000,0.0000000000,0.3100000020,1.6100000140,0.1500000060,0.0000000000,0.0000000000,13.2399997700,24.0200004600,55.1699981700,0.0000000000,31.4200000800,4.8299999240,20.9899997700,15.6499996200,32.8400001500,14.9300003100,17.9699993100,0.7400000100,0.5899999740,0.0000000000,1.4500000480,14.5600004200,12.0299997300,3.2799999710,7.9200000760,2.4400000570,3.1500000950,0.0000000000,0.0000000000,0.1500000060,0.0000000000,0.0000000000,10.9899997700,2.9100000860,48.5699996900,15.5799999200,9.0500001910,55.3100013700,25.6700000800,8.8999996190,10.3100004200,11.5600004200,3.1800000670,14.7500000000,13.4399995800,29.0100002300,5.7600002290,0.0000000000,16.4899997700,0.0000000000,28.1800003100,55.1599998500,8.0000000000,69.1699981700,22.9400005300,23.5000000000,9.2799997330,45.7099990800,24.7800006900,16.3600006100,64.4599990800,29,262,2152,662,0,52,5,0,0,3234,2152,29,236,662,67,0,10,285,517,16,0,208,32,55,41,67,22,10,581,19,24,471,389,47,0,256,79,0,0,3020,0,5,106,102,332,88,0,2304,764,1463,35995,-999,35750,36250,21842,2492,288,1348,3118,460,29,0,262,76,2053,276,655,108,10,1093,215,1119,359,1459,132,1206,667,346,120,139,35,26458.0000000000,99,44,0,57,764,2037,574,1463,807,656,2037,546,139000,163,1409,943,742,760,300,2623,1199,650,125,0.1418543441,0.1857745998,0.1475304682,False +06061021322,CA,Placer County,Census Tract 213.22,62938,40900,99999,1,413.8015522000,36.9504473300,1437.7500650000,1437.7500650000,5.7998258990,51.4048475500,323.0300046000,123.0183659000,58.9943210200,0.0000000000,0.0069602750,12.2533182200,0.0000000000,0.0000000000,75.9738778900,37.8148188500,12.5473476100,1364.6021230000,168.7317567000,17.6124934500,929.3841615000,516.7910383000,76.2496196600,700.1886827000,28.5566857300,533.7939340000,287.1322093000,671.6319973000,103.8683825000,80.0058629500,126.2160115000,1089.1046050000,219.7375810000,1081.3416300000,146.6018800000,1429.0499390000,95.1913104400,16.2047431600,413.8015522000,225.9298114000,1319.3738320000,87.5246539400,7.5682855450,0.0000000000,26.4881058700,0.9588502050,148.2951801000,11.1419056600,24.8093601300,6.7078032490,15350.9551100000,532.3409888000,122.7573153000,504.1733706000,330.6022812000,532.3409888000,37.2781012100,37057.6325400000,37560.5137700000,20087.15489,39771.1722300000,42048.1950700000,492.8297963000,457.7224989000,6.7315500680,48.6243697900,0.0646896060,CA,Placer County,Census Tract 213.22,62938,40900,99999,1,1540.0000810000,10.6516208600,76.2431793200,249.4721680000,91.3796920800,28.0305805200,0.0000000000,0.0000000000,6.7273392680,0.0000000000,0.0000000000,75.6825637800,14.0152902600,24.1062984500,1426.1959230000,149.6833038000,26.9093570700,1021.4343260000,398.5948486000,110.4404831000,1182.3298340000,848.7659912000,123.8951645000,778.6895142000,31.3942489600,550.5205688000,334.1245117000,747.2952881000,228.7295380000,90.2584686300,126.1376114000,1113.9353030000,209.6687469000,1009.1008910000,222.5628052000,1540.0000810000,93.6221389800,6.7273392680,462.5045776000,9.5303974150,1286.6036380000,65.0309448200,20.7426300000,0.0000000000,9.5303974150,1.1212232110,167.6228638000,22.4244651800,0.0000000000,0.0000000000,23335.9993700000,572.3844604000,165.9410400000,546.5963135000,365.5187683000,572.3844604000,2.2424464230,56432.0022500000,55077.9998500000,76598.99674,59249.9976100000, ,172800.0014000000,763.9999878000,558.9297485000,490.5351563000,11.2122325900,44.2883186300,0.0000000000,6,61,21322,67.5899963400,2.2000000480,8.9300003050,0.5699999930,15.1099996600,0.0599999990,2.9700000290,1.2999999520,9.1999998090,0.1299999950,1.0199999810,0.2800000010,22.3700008400,12.1599998500,25.4899997700,4.4099998470,48.7900009200,8.3299999240,75.4700012200,0.0000000000,19.0100002300,5.1799998280,7.6900000570,0.0000000000,0.1299999950,2.8099999430,5.3800001140,6.2199997900,6.4299998280,3.5699999330,18.3299999200,8.6599998470,11.0299997300,0.1899999980,0.0000000000,0.3499999940,0.0000000000,0.0900000040,24.3600006100,4.2500000000,21.3999996200,40.7400016800,9.2399997710,56.3199996900,49.7299995400,4.9200000760,9.5900001530,11.2899999600,0.0000000000,9.4799995420,9.3500003810,0.0000000000,7.5599999430,40.2000007600,10.6300001100,2.2699999810,6.1399998660,81.3499984700,8.9200000760,11.0299997300,29.7399997700,14.6099996600,3.5000000000,69.6999969500,12.6800003100,9.2799997330,84.7099990800,204,53,6268,828,275,853,12,95,26,9274,6268,204,53,828,1401,6,121,1402,762,52,9,404,69,40,0,1410,268,73,713,12,0,577,596,499,261,1700,803,0,18,8173,0,32,331,1023,1991,347,8,6004,2381,3029,92617,37021,84167,67404,32077,6499,734,3859,9262,878,204,82,53,0,6256,585,828,88,108,2324,173,1285,2446,4187,387,3386,1907,1919,190,370,343,125840.0938000000,0,180,32,1410,2381,3227,198,3029,2464,565,3227,972,357100,288,356,2566,2758,1355,325,6829,4760,866,221,0.0666116053,0.0607935935,0.0947959404,False +06069000802,CA,San Benito County,Census Tract 8.02,99999,41940,99999,0,566.0214233000,12.1359653500,1951.9486760000,1951.9486760000,9.2233333590,158.2529907000,270.8747559000,162.6219330000,84.4663162200,0.0000000000,4.8543863300,0.0000000000,0.0000000000,2.9126317500,173.3015900000,55.8254394500,83.4954452500,1864.5697250000,333.9817810000,66.0196533200,1427.6749700000,640.2935181000,294.6612549000,935.9256520000,61.6507034300,741.7501831000,351.4575500000,874.2749478000,259.7096558000,121.3596573000,123.3014069000,1577.1900640000,384.4673767000,1498.5490080000,130.0975494000,1866.5114790000,66.9905319200,6.3107018470,566.0214233000,209.2240448000,1679.1321730000,49.5147399900,24.2719306900,0.0000000000,39.3205261200,0.0000000000,256.7970276000,18.9321060200,35.9224586500,0.0000000000,22612.9993700000,791.7503662000,190.2919312000,710.1967163000,505.8270264000,791.7503662000,5.3398246770,43749.9997700000,46405.6612800000, ,32115.3843600000,87500.0022700000,711.6530151000,653.8858032000,0.0000000000,89.8061447100,12.6214036900,CA,San Benito County,Census Tract 8.02,99999,41940,99999,0,2657.7764180000,6.3107018470,240.2921143000,224.2726440000,208.2531586000,73.3012313800,2.4271931650,0.0000000000,7.2815790180,4.8543863300,0.0000000000,252.4280853000,110.6800079000,82.0391235400,2500.4943850000,363.5935364000,83.4954452500,1862.6279300000,609.7108765000,485.9240417000,2128.6484380000,1458.2575680000,298.5447388000,1287.3831790000,50.4856147800,1056.7998050000,536.8950806000,1236.8975830000,491.2638855000,173.7870178000,257.7679138000,2013.1138920000,316.0205383000,1667.9670410000,258.7387695000,2615.5432580000,165.5345612000,15.0485973400,757.7696533000,20.3884220100,1988.8420410000,95.1459655800,12.6214036900,0.0000000000,23.3010540000,1.4563158750,508.2542419000,60.1943893400,39.8059654200,5.8252635000,31026.0005900000,1050.4891360000,239.3212433000,971.8480835000,678.1577148000,1050.4891360000,21.3592987100,70101.9979700000,71048.0004500000,150900.9987,56500.0015600000,73750.00078,403799.9956000000,850.0000062000,970.8772583000,796.1193237000,6.7961406710,127.1849136000,14.0777196900,6,69,802,63.1399993900,0.3499999940,29.7999992400,0.2599999900,0.4799999890,0.0000000000,0.0000000000,0.0900000040,0.3100000020,0.1299999950,0.0000000000,0.0000000000,16.4899997700,17.1800003100,0.0000000000,37.5000000000,18.8600006100,8.6300001140,0.0000000000,0.0000000000,0.0000000000,0.0000000000,27.2299995400,0.0000000000,0.0000000000,0.1299999950,6.1900000570,13.6800003100,8.6300001140,3.0099999900,12.8999996200,2.7899999620,2.0899999140,0.0000000000,0.0000000000,0.0000000000,0.0900000040,0.0000000000,22.0400009200,9.3000001910,42.0299987800,20.2500000000,12.1599998500,55.5699996900,24.9500007600,9.7700004580,21.6599998500,8.0000000000,0.8399999740,6.1399998660,5.3299999240,15.3800001100,2.7599999900,25.0000000000,8.6999998090,16.6700000800,16.3400001500,74.9400024400,0.0000000000,47.1699981700,25.3999996200,22.2199993100,5.9699997900,65.1399993900,14.8599996600,5.0399999620,50.3699989300,8,13,1449,684,0,7,3,0,0,2295,1449,8,6,684,11,0,2,239,249,0,3,129,59,0,0,12,0,0,625,0,0,314,198,142,3,296,64,0,0,2151,2,0,69,48,474,200,0,1580,615,814,78333,-999,86553,44009,33400,1712,137,1034,2265,139,8,2,13,2,1425,76,678,59,3,605,195,664,320,1151,140,916,509,258,101,224,0,-999.0000000000,19,17,2,12,615,973,159,814,610,204,973,1135,521600,0,459,410,583,510,137,1830,1192,272,31,0.0358907688,0.0632887874,0.0613686534,False +15001021010,HI,Hawaii County,Census Tract 210.10,12450,25900,99999,0,771.8966675000,86.6812591600,3130.9272040000,3130.9272040000,26.0043792700,45.0742569000,242.2741241000,138.6900177000,51.1419448900,0.0000000000,0.0000000000,4.3340630530,3.4672505860,0.0000000000,211.9356842000,116.5862961000,49.4083213800,2843.1454120000,355.8265686000,75.4126968400,1971.5653170000,1099.1184080000,332.4226379000,1311.4875030000,83.2140121500,1057.0780030000,588.1323853000,1228.2734910000,259.1769714000,74.5458831800,155.5928650000,2196.9366000000,371.4291992000,2196.9366000000,353.6595459000,3093.6542610000,698.2175903000,46.3744735700,771.8966675000,452.9096069000,1413.3379860000,390.9324951000,15.6026268000,2.1670315270,9.9683456420,7.3679075240,357.9936218000,99.6834487900,1573.2648930000,287.3483887000,10019.0003000000,1394.2680660000,256.5765381000,1128.5900880000,832.1401367000,1394.2680660000,12.1353769300,22281.0001400000,22568.4923400000,15000.00026,22678.5718600000,24593.3011400000,1116.8880620000,606.7688599000,4.3340630530,119.6201401000,455.5100403000,HI,Hawaii County,Census Tract 210.10,12450,25900,99999,0,4751.0001150000,12.1353769300,56.3428230300,321.1540833000,149.0917816000,93.1823577900,0.0000000000,0.0000000000,3.4672505860,0.0000000000,0.0000000000,413.9030457000,235.7730408000,144.7577057000,4499.6245120000,796.1674194000,91.8821411100,3127.8935550000,1404.2364500000,636.2404785000,3694.7888180000,1919.1231690000,733.7568970000,2136.6931150000,183.3308716000,1747.0609130000,1036.2745360000,1953.3623050000,659.2109985000,107.9181747000,421.2709351000,3432.1447750000,563.4282227000,3017.3747560000,751.5265503000,4623.1452500000,996.8345337000,29.9050369300,1164.9962160000,161.6605530000,1540.7595210000,302.0841980000,13.4355964700,0.0000000000,16.0360336300,3.9006569390,531.7895508000,219.7369995000,1502.1862790000,195.8996582000,15289.0003700000,2121.5239260000,377.4969177000,1747.4942630000,1156.3281250000,2121.5239260000,34.6725044300,31499.9995000000,31948.9999800000,28750,18512.0010300000,35000.00137,107099.9963000000,511.9999843000,1753.5620120000,783.5986328000,3.4672505860,133.9225464000,530.4893188000,15,1,21010,35.2299995400,2.0199999810,21.8299999200,0.8600000140,21.4599990800,15.4799995400,0.0000000000,0.8000000120,7.3600001340,1.6399999860,0.0799999980,0.4499999880,3.0699999330,15.8599996600,64.1200027500,0.0000000000,38.2599983200,7.2100000380,32.2599983200,16.1299991600,24.3500003800,8.2799997330,1.9299999480,0.0000000000,14.6300001100,0.9399999980,2.8900001050,5.9899997710,4.7699999810,2.6900000570,5.2500000000,3.3800001140,1.3999999760,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,10.2299995400,0.4399999980,39.6599998500,19.5499992400,12.9399995800,61.9799995400,31.4799995400,5.4899997710,18.2099990800,10.5600004200,1.5000000000,31.1299991600,21.7600002300,64.5199966400,17.5499992400,72.5199966400,51.4900016800,33.1699981700,25.0900001500,70.6600036600,1.9800000190,20.9099998500,25.1800003100,19.1599998500,4.5399999620,45.7000007600,22.7600002300,19.0100002300,63.7400016800,131,62,2282,1414,0,477,106,5,29,6478,2282,131,56,1414,1390,1003,52,70,362,84,0,541,102,20,10,1848,450,153,125,948,0,388,309,187,61,340,219,0,0,6178,0,0,174,91,632,27,0,4511,1510,2457,36901,102083,34554,34167,18671,4847,512,2570,6406,1994,131,95,62,40,2270,494,1408,725,15,1237,408,1789,882,2929,379,2470,1531,809,141,468,594,37287.7929700000,96,265,609,1836,1510,3280,823,2457,1736,721,3280,737,195800,65,686,1566,1631,1241,294,5109,2335,1163,287,0.2256934781,0.2156182598,0.3112706837,True +15001021101,HI,Hawaii County,Census Tract 211.01,99999,25900,99999,0,490.9738464000,84.5782699600,2022.9801700000,2022.9801700000,10.4973030100,48.2875900300,143.0632324000,113.6707916000,53.6862030000,0.0000000000,0.0000000000,10.7972259500,2.3993835450,5.3986129760,280.4279480000,180.5536041000,118.4695587000,1845.4257950000,389.8998108000,63.8835830700,1185.8952700000,673.3269653000,161.6584625000,795.6955362000,69.2821960400,712.0170288000,351.8096008000,726.4133391000,128.9668579000,37.7902908300,146.9622345000,1389.5429400000,210.5458984000,1389.5429400000,255.8342590000,2009.1837150000,644.2344360000,38.6900596600,490.9738464000,303.5220032000,909.0664041000,289.4256287000,6.5983042720,0.0000000000,47.9876670800,34.1912155200,234.5397339000,111.5713272000,1009.2406620000,317.3184509000,8204.9999510000,822.6885986000,87.2775726300,681.1250000000,481.6762390000,822.6885986000,24.2937564800,18360.0001000000,18140.0966400000, ,13000.0004000000,19794.8707300000,669.4279785000,370.7047424000,0.0000000000,53.9861259500,273.8296509000,HI,Hawaii County,Census Tract 211.01,99999,25900,99999,0,2578.4375420000,21.8943748500,50.0871315000,155.6600037000,101.0740356000,16.7956848100,0.0000000000,0.0000000000,10.4973030100,0.0000000000,0.0000000000,257.9337158000,148.7617798000,76.4803466800,2405.3820800000,462.1812439000,77.0802002000,1641.7781980000,845.4827881000,278.3284912000,1978.5916750000,962.4526978000,400.6970520000,1090.8197020000,182.3531494000,957.6539307000,537.1619873000,908.4666138000,233.0401306000,20.6946830700,163.1580811000,1836.7281490000,312.2197876000,1648.6763920000,428.8898010000,2561.9417800000,700.0201416000,36.8905220000,622.6400146000,108.5721054000,908.7665405000,230.3408203000,11.0971489000,11.0971489000,11.0971489000,2.3993835450,310.1203308000,142.1634827000,821.7888794000,188.0516815000,12554.0002000000,1113.9138180000,144.8627777000,934.2599487000,647.2337036000,1113.9138180000,35.6908302300,27919.9990900000,24655.0000000000,8333,18233.0009200000,35092.59367,86700.0020800000,501.0000064000,933.3602295000,460.6816406000,5.9984588620,75.2806549100,248.9360352000,15,1,21101,54.7400016800,0.1299999950,13.7899999600,0.2599999900,17.4899997700,4.2800002100,0.0000000000,1.4700000290,7.4400000570,1.3999999760,0.1299999950,0.0000000000,7.7600002290,27.3500003800,80.0000000000,0.0000000000,32.1800003100,14.8100004200,0.0000000000,0.0000000000,9.0900001530,16.7600002300,2.2699999810,0.0000000000,5.3299999240,0.6700000170,2.9700000290,12.7399997700,12.1899995800,2.9400000570,15.1300001100,9.1599998470,1.3099999430,0.0000000000,0.0000000000,2.7100000380,0.0000000000,0.0000000000,9.7299995420,2.0399999620,29.2900009200,32.0200004600,10.3299999200,42.8600006100,34.1899986300,3.1099998950,38.2799987800,15.5900001500,2.1099998950,27.0300006900,24.8999996200,68.0000000000,11.6700000800,0.0000000000,30.5599994700,23.7099990800,27.2399997700,74.3499984700,0.0000000000,28.4899997700,17.0799999200,38.5900001500,6.3800001140,48.5800018300,23.3500003800,9.4499998090,59.8100013700,5,25,1715,432,0,233,44,4,0,3133,1715,4,8,432,548,134,46,133,469,4,0,139,64,0,0,561,51,94,71,167,0,399,382,93,21,474,287,0,0,2940,0,85,92,41,286,60,0,2414,677,1341,35457,-999,43060,33500,21491,2598,405,1126,3133,847,5,0,25,17,1715,427,432,132,0,943,134,707,773,1230,127,1316,564,385,35,431,146,50551.3710900000,66,79,133,561,677,1843,502,1341,997,344,1843,699,222000,0,525,802,535,1209,200,2672,1298,624,64,0.3206448625,0.2732381146,0.2703479094,True +15001021402,HI,Hawaii County,Census Tract 214.02,3850,25900,99999,0,816.2897568000,46.7089718600,2908.3037620000,2908.3037620000,9.3842508490,34.3563535200,85.1050386400,49.6372810000,42.1222216500,0.4366300400,0.0000000000,0.0507011120,0.0000000000,0.0000000000,154.3531404000,35.6412766000,100.6419504000,2718.7213800000,400.5848715000,42.0668509000,2029.9287820000,1120.4883020000,389.2195942000,1513.2753420000,90.2473753700,1164.6149540000,732.8806071000,1423.0279690000,398.0990586000,38.5432898100,148.3798876000,2264.6563310000,400.7801185000,2260.1444870000,204.3723986000,2896.0170940000,164.3064289000,42.8245659800,816.2897568000,369.2554536000,823.5514248000,42.8368821100,9.1951896550,0.2450553770,0.6089137490,0.0000000000,231.1957982000,25.7701943800,2046.6653000000,121.1737876000,15523.0524500000,1168.2462790000,424.7533337000,1042.7740610000,613.2432083000,1168.2462790000,233.6237568000,36432.4851700000,35023.9123700000,2500.00003,19986.2886800000,38377.4267300000,1038.3984520000,350.9512153000,0.0591512960,100.2060835000,672.1332075000,HI,Hawaii County,Census Tract 214.02,3850,25900,99999,0,3381.8505830000,1.9577749070,48.3774284700,115.8866985000,93.2828779200,36.4310612700,0.0000000000,0.3638583720,5.7721619310,0.0000000000,0.0253505560,282.6050465000,125.8827071000,96.1817516100,3159.6427310000,587.9516835000,95.3819903100,2343.0448720000,1163.6868530000,542.8995190000,2748.0508690000,1427.7453750000,544.9161553000,1707.5037210000,80.2293815600,1373.5711330000,811.6988583000,1627.2742840000,501.5004673000,31.7776957200,320.6619287000,2598.9638020000,399.0852509000,2084.6770590000,316.4326797000,3369.1762350000,372.6650877000,36.2398244600,879.1825342000,42.0022880400,834.3656845000,104.8442249000,9.6353598830,4.8270140890,3.2579476980,0.0000000000,257.8107343000,54.3398767400,1558.9517870000,107.9598858000,22057.7679900000,1474.9353560000,461.2082181000,1293.6710150000,711.8759928000,1474.9353560000,358.6005371000,44010.1419300000,43324.4107200000,55794.0467,43510.7687300000,46409.70582,223090.1061000000,447.0194726000,1277.6085930000,391.2560530000,3.4560823290,53.3338078900,627.7848501000,15,1,21402,20.2800006900,0.1700000020,11.1800003100,0.0000000000,42.0200004600,5.7699999810,0.0000000000,0.2000000030,10.0399999600,21.7900009200,0.0000000000,0.0000000000,6.2500000000,20.8299999200,50.0000000000,0.0000000000,30.0000000000,12.8900003400,0.0000000000,0.0000000000,12.9300003100,29.6700000800,2.8299999240,0.0000000000,3.8499999050,0.2199999990,0.3499999940,4.5700001720,3.1300001140,0.8700000050,11.2299995400,3.5799999240,5.7199997900,0.1000000010,0.0000000000,0.0000000000,0.0000000000,0.1199999970,20.3299999200,2.5000000000,37.2500000000,25.1399993900,5.9899997710,66.2900009200,32.6699981700,2.2000000480,17.5799999200,10.1300001100,2.1400001050,9.1800003050,11.5000000000,0.0000000000,1.7500000000,0.0000000000,5.5799999240,11.1099996600,9.6700000760,53.1800003100,17.5799999200,60.9799995400,23.0900001500,25.5499992400,9.0699996950,45.8300018300,20.2500000000,16.2099990800,51.1599998500,14,7,816,450,0,404,877,0,0,4024,816,7,0,450,1691,232,8,51,170,7,0,135,58,0,0,1702,220,505,114,155,0,184,126,14,9,452,144,0,4,3846,0,0,35,230,782,96,5,2765,913,1382,49063,-999,53500,45294,25021,3090,313,2002,3975,365,14,0,7,0,809,93,448,25,0,420,106,1030,695,2055,123,1667,1105,654,44,352,610,52648.5000000000,85,16,187,1683,913,1530,148,1382,735,647,1530,827,460400,269,933,707,929,1028,365,3229,1480,654,148,0.0567353105,0.1106101497,0.0918238994,False +15001021800,HI,Hawaii County,Census Tract 218,99999,25900,99999,0,1029.1142040000,113.6784696000,4267.4235680000,4267.4235680000,6.2395850530,53.9177365400,216.6516714000,128.9012836000,50.9871561900,6.0000000000,0.1063158070,0.1550576070,0.0000000000,5.0000000000,447.7201072000,220.2602014000,108.4859570000,3916.0639380000,732.8903613000,141.4261076000,2614.6461610000,1725.1835680000,326.8660370000,2059.8485030000,80.4418689800,1526.3987780000,994.8898024000,1979.4066340000,257.4833096000,26.3705349100,165.9507309000,3139.4967370000,446.5797471000,3112.4800730000,479.9428353000,4196.1618470000,304.9946221000,35.1246452800,1029.1142040000,599.1987248000,1353.4594670000,88.4248028000,12.0483253700,0.0000000000,29.1300475600,0.0200242130,796.1207250000,80.2921846500,2650.0290710000,198.5235648000,11456.1517100000,1564.6212330000,673.4738505000,1367.9637000000,704.9298707000,1564.6212330000,108.9002704000,31093.0763300000,34891.6831500000, ,36029.4523900000,28993.2036700000,1309.0228300000,454.9163605000,0.0000000000,162.9089448000,789.8354598000,HI,Hawaii County,Census Tract 218,99999,25900,99999,0,6083.7582190000,42.5401219700,100.2628204000,291.9288304000,171.6701803000,157.2704277000,0.0000000000,2.0988955720,28.2434352500,0.0000000000,20.0000000000,700.2193766000,355.5028186000,246.8417125000,5743.3729480000,1009.5126270000,168.4758261000,3991.0794680000,2101.9089420000,797.0409708000,4842.6058430000,2504.2846360000,926.1391325000,2558.9977570000,121.9585263000,2419.9872150000,1230.3273470000,2437.0392300000,619.1433029000,30.3347234700,415.5754552000,4589.7876850000,591.1840434000,3872.4750500000,680.1646583000,5362.4843550000,646.1197476000,69.0912882200,1290.5175300000,78.9204895500,1384.6919960000,170.5595070000,13.1141102800,0.0532514600,22.1521470200,3.0000000000,824.9101787000,120.8063793000,1800.7153220000,184.9550893000,20169.3576300000,1946.0392300000,826.0422071000,1768.0480750000,1032.9408390000,1946.0392300000,64.1862440100,47766.7945700000,52099.9003000000,28574.27751,48066.4015300000,46427.75726,183195.4901000000,640.1530363000,1748.9796090000,584.2699242000,9.0912882160,174.9509189000,606.5754552000,15,1,21800,19.7700004600,0.3899999860,12.9399995800,0.0799999980,28.2299995400,11.1099996600,0.0000000000,1.1299999950,9.3699998860,7.0100002290,0.0000000000,0.0200000000,10.6599998500,13.9799995400,0.0000000000,0.0000000000,27.7299995400,13.0200004600,100.0000000000,0.0000000000,11.6800003100,22.7600002300,3.6700000760,0.0700000000,5.6799998280,0.0000000000,0.5400000210,3.2000000480,2.2400000100,0.7599999900,7.3800001140,4.1599998470,2.1400001050,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,16.2700004600,0.9900000100,48.9399986300,19.7800006900,10.6700000800,55.4000015300,21.2099990800,1.8799999950,11.8999996200,11.8699998900,2.0299999710,17.6599998500,16.9699993100,0.0000000000,9.9399995800,0.0000000000,14.9700002700,10.3000001900,23.0300006900,73.8300018300,9.0799999240,44.4900016800,29.4599990800,20.9300003100,6.6700000760,49.5699996900,21.6599998500,15.1899995800,43.8600006100,23,5,1173,768,0,556,416,0,1,5934,1173,23,5,768,1675,659,67,125,164,0,0,213,100,5,0,1823,213,415,218,337,4,190,133,32,0,438,247,0,0,5647,0,0,45,127,919,56,0,3978,1238,1865,49659,-999,41579,44700,22489,4186,497,2504,5907,1043,23,0,5,0,1167,198,768,115,0,596,204,1947,787,2764,295,2166,1200,531,47,298,728,53624.0312500000,120,123,186,1805,1238,2423,558,1865,1377,488,2423,883,378200,220,1078,818,1748,1242,396,4543,2252,984,188,0.0726841893,0.1204888825,0.1765701710,False +15003010201,HI,Honolulu County,Census Tract 102.01,12400,26180,99999,0,1066.0000000000,123.0000000000,4656.0000160000,4656.0000160000,27.0000000000,106.0000000000,304.0000000000,147.0000000000,83.0000000000,0.0000000000,0.0000000000,20.0000000000,0.0000000000,0.0000000000,309.0000000000,104.0000000000,102.0000000000,4143.0000140000,719.0000000000,44.0000000000,2719.0000090000,1527.0000000000,528.0000000000,2131.0000070000,117.0000000000,1555.0000000000,895.0000000000,2014.0000070000,545.0000000000,67.0000000000,127.0000000000,3303.0000110000,535.0000000000,3267.0000110000,453.0000000000,4587.0000150000,729.0000000000,52.0000000000,1066.0000000000,633.0000000000,1662.0000060000,204.0000000000,42.0000000000,0.0000000000,43.0000000000,28.0000000000,261.0000000000,18.0000000000,2743.0000000000,497.0000000000,14178.0000500000,1876.0000000000,634.0000000000,1494.0000000000,1037.0000000000,1876.0000000000,447.0000000000,35151.0001200000,36678.3218000000,30000.0001,44583.3334800000,36453.4884900000,1462.0000000000,656.0000000000,9.0000000000,23.0000000000,763.0000000000,HI,Honolulu County,Census Tract 102.01,12400,26180,99999,0,5312.0000000000,42.0000000000,65.0000000000,199.0000000000,127.0000000000,75.0000000000,6.0000000000,0.0000000000,2.0000000000,5.0000000000,2.0000000000,464.0000000000,281.0000000000,141.0000000000,4859.0000000000,1025.0000000000,123.0000000000,3126.0000000000,1506.0000000000,689.0000000000,3917.0000000000,2107.0000000000,652.0000000000,2315.0000000000,262.0000000000,1960.0000000000,1101.0000000000,2053.0000000000,673.0000000000,51.0000000000,250.0000000000,3646.0000000000,430.0000000000,3270.0000000000,655.0000000000,5275.0000000000,973.0000000000,39.0000000000,1186.0000000000,142.0000000000,1243.0000000000,105.0000000000,36.0000000000,7.0000000000,9.0000000000,2.0000000000,381.0000000000,74.0000000000,2149.0000000000,564.0000000000,16156.0000000000,1932.0000000000,876.0000000000,1571.0000000000,1032.0000000000,1932.0000000000,500.0000000000,40300.0000000000,48214.0000000000,61667,37250.0000000000,39419.64286,262400.0000000000,709.0000000000,1584.0000000000,540.0000000000,20.0000000000,70.0000000000,609.0000000000,15,3,10201,26.5300006900,1.3700000050,10.6800003100,0.0000000000,26.7399997700,14.1999998100,0.1299999950,1.4099999670,2.9800000190,2.9600000380,0.3600000140,0.1299999950,13.9799995400,15.1800003100,0.0000000000,1.3700000050,43.1599998500,0.0000000000,-999.0000000000,-999.0000000000,14.6000003800,14.2600002300,1.7400000100,0.0900000040,2.7000000480,0.4699999990,1.3500000240,5.4200000760,3.4900000100,1.6100000140,7.4400000570,3.2200000290,2.4700000290,0.0000000000,0.0599999990,0.0900000040,0.0399999990,0.2399999950,16.8500003800,1.2000000480,38.2999992400,24.8299999200,9.0799999240,55.0999984700,38.9099998500,4.1300001140,13.5600004200,12.3500003800,0.6100000140,18.6599998500,6.8400001530,-999.0000000000,7.9800000190,23.2900009200,5.6100001340,27.2099990800,18.8400001500,52.2700004600,23.2199993100,65.0400009200,30.1499996200,14.4700002700,5.1500000950,48.9599990800,16.4599990800,13.2100000400,67.6600036600,73,0,1416,570,7,159,158,19,7,5337,1416,73,0,570,1427,758,75,198,215,0,1,246,0,0,0,1466,214,209,93,144,5,289,186,72,25,397,172,3,0,4915,2,5,86,132,828,59,13,3290,1166,1611,65469,30417,67500,70865,24202,3708,458,2205,5289,987,73,17,0,0,1404,96,570,32,25,630,147,1260,817,2411,219,2138,1178,858,91,299,454,66324.0859400000,32,93,391,1437,1166,1985,374,1611,842,769,1985,1225,611600,461,1291,1090,1609,772,275,3985,1951,656,154,0.1589274030,0.1844549763,0.1866137266,False +15007040603,HI,Kauai County,Census Tract 406.03,39200,28180,99999,0,588.9533691000,14.8749074900,2288.4115600000,2288.4115600000,4.1835675240,41.8356781000,141.7764587000,88.7846069300,45.5544052100,0.0000000000,4.1835675240,5.1132493020,0.0000000000,0.0000000000,315.6269531000,189.6550751000,98.0814209000,2138.7328030000,491.8016357000,87.8549194300,1520.0296170000,716.3197632000,270.5373840000,1197.8949000000,18.1287937200,877.6195679000,518.2975464000,1179.7661060000,306.7949829000,46.4840850800,99.0111007700,1745.9422750000,233.3501129000,1714.7979380000,137.1280518000,2260.0562680000,153.8623199000,23.7068843800,588.9533691000,321.6698608000,921.7794281000,104.1243515000,0.0000000000,0.0000000000,5.1132493020,0.0000000000,238.9282074000,29.2849750500,1265.2968750000,33.0037002600,14882.0000400000,836.7135620000,238.4633636000,753.0421753000,469.9541016000,836.7135620000,116.6750565000,38942.0014900000,37622.3762200000, ,34318.1815500000,38219.1778500000,761.4093018000,345.8416138000,0.0000000000,55.3160629300,393.2553711000,HI,Kauai County,Census Tract 406.03,39200,28180,99999,0,2512.0000030000,12.5507030500,38.1169509900,121.7883072000,77.1635818500,70.1909713700,0.0000000000,0.0000000000,7.9022946360,0.0000000000,0.0000000000,323.5292358000,237.0688324000,74.8393783600,2365.1103520000,422.5403442000,69.7261276200,1722.2353520000,746.0695801000,355.1384277000,2035.0732420000,1124.4500730000,359.7868347000,1264.3671880000,76.2339019800,1000.8023680000,612.1954346000,1188.1331790000,341.1931763000,19.9881572700,207.3190308000,1902.1287840000,257.5218506000,1584.6424560000,271.9319153000,2498.0547770000,275.6506348000,25.1014061000,661.9334106000,43.2302017200,864.6040039000,92.0384903000,3.7187268730,0.0000000000,11.6210212700,0.9296817180,250.5492249000,43.2302017200,1018.0014650000,79.0229492200,22782.0000300000,1669.2435300000,386.2827454000,917.1310425000,572.2191162000,1669.2435300000,817.1902466000,48053.0011600000,49650.0007600000,43125.00166,38438.0005900000,48353.65708,250600.0029000000,624.9999952000,918.9903564000,396.5092468000,2.3242042060,59.9644699100,364.9000854000,15,7,40603,34.2400016800,0.5000000000,7.1500000950,0.1199999970,42.3899993900,2.5000000000,0.1500000060,1.1900000570,29.2500000000,7.1900000570,0.1500000060,0.0000000000,9.6499996190,32.2099990800,0.0000000000,0.0000000000,13.4399995800,9.6800003050,0.0000000000,0.0000000000,11.8599996600,18.8899993900,0.3100000020,0.0000000000,2.0000000000,1.5000000000,2.9600000380,3.4600000380,4.3800001140,2.1099998950,20.1000003800,10.4200000800,5.6900000570,0.0000000000,0.2300000040,0.0000000000,0.1500000060,0.0000000000,30.1200008400,6.3800001140,29.7399997700,32.7299995400,6.6500000950,63.3300018300,31.6000003800,1.6100000140,13.5600004200,8.6300001140,1.0399999620,3.4600000380,2.0199999810,0.0000000000,2.3299999240,0.0000000000,15.0500001900,1.4099999670,53.7000007600,65.8700027500,52.2099990800,55.1899986300,17.4899997700,30.0499992400,10.8000001900,53.8899993900,18.1299991600,8.1499996190,53.0099983200,13,3,891,186,4,761,187,4,0,2602,891,13,3,186,1103,65,31,86,287,0,0,25,18,0,0,1138,135,215,8,52,0,90,114,77,39,523,271,6,0,2460,4,0,55,148,741,157,0,1974,687,964,67500,-999,82308,45833,35475,2143,185,1364,2599,90,13,0,3,0,889,18,186,28,5,442,58,587,646,1444,96,1178,746,431,22,185,369,62339.4296900000,27,16,16,1137,687,2082,1118,964,635,329,2082,950,650400,1087,1149,511,455,782,281,2251,1213,408,56,0.0680789775,0.1103461130,0.0346287033,False +15007040604,HI,Kauai County,Census Tract 406.04,57800,28180,99999,0,678.0467656000,17.1250984800,2634.5889580000,2634.5889580000,4.8164320010,48.1643366100,163.2235751000,102.2154066000,52.4456040000,0.0000000000,4.8164319990,5.8867523410,0.0000000000,0.0000000000,363.3731129000,218.3449656000,112.9185931000,2462.2676790000,566.1984698000,101.1450919000,1749.9707180000,824.6804260000,311.4626748000,1379.1053670000,20.8712132900,1010.3806350000,596.7025865000,1358.2341530000,353.2050822000,53.5159359900,113.9889124000,2010.0581130000,268.6499275000,1974.2024500000,157.8719865000,2601.9442500000,177.1377060000,27.2931263100,678.0467656000,370.3301829000,1061.2207750000,119.8756585000,0.0000014800,0.0000009040,5.8867517830,0.0000000055,275.0718744000,33.7150284500,1456.7034330000,37.9963147800,14881.9998700000,963.2866173000,274.5367055000,866.9579964000,541.0460023000,963.2866173000,134.3249464000,38942.0019300000,37622.3794400000,2708.021126,34318.1816500000,38219.1788500000,876.5908071000,398.1584626000,0.0000004130,63.6839504200,452.7447185000,HI,Kauai County,Census Tract 406.04,57800,28180,99999,0,2892.0007690000,14.4492981500,43.8830701600,140.2117278000,88.8364418900,80.8090412700,0.0000000000,0.0000001640,9.0977060880,0.0000009040,0.0000001640,372.4708665000,272.9312307000,86.1606489900,2722.8904680000,486.4597859000,80.2738927500,1982.7651850000,858.9306725000,408.8616791000,2342.9272420000,1294.5503190000,414.2132735000,1455.6332330000,87.7661221700,1152.1979950000,704.8047703000,1367.8671030000,392.8069129000,23.0118530200,238.6810128000,2189.8717920000,296.4782494000,1824.3580440000,313.0681749000,2875.9459930000,317.3494345000,28.8985995100,762.0668105000,49.7698076000,995.3962359000,105.9615271000,4.2812743510,0.0000001640,13.3789809200,1.0703183410,288.4508700000,49.7698064500,1171.9987960000,90.9770727900,22781.9989000000,1921.7568180000,444.7173368000,1055.8692320000,658.7810654000,1921.7568180000,940.8098295000,48053.0024700000,49650.0006500000,43124.99753,38437.9995900000,48353.65972,250600.0011000000,624.9999948000,1058.0098580000,456.4908656000,2.6757964510,69.0355465200,420.1000380000,15,7,40604,37.3300018300,0.0000000000,14.1000003800,0.0000000000,29.2700004600,5.7800002100,0.0000000000,0.5899999740,9.2399997710,9.7500000000,0.1500000060,0.0000000000,8.9700002670,15.9499998100,-999.0000000000,-999.0000000000,30.2500000000,14.5000000000,0.0000000000,0.0000000000,15.8000001900,21.1000003800,2.2500000000,0.0000000000,7.5900001530,0.1199999970,2.9300000670,5.5999999050,4.8299999240,3.0799999240,7.5599999430,4.7699999810,1.6000000240,0.0000000000,0.2099999930,0.0000000000,0.1199999970,0.0000000000,12.4099998500,0.9800000190,37.6500015300,24.5799999200,8.5500001910,63.1899986300,33.0600013700,3.5699999330,18.5499992400,11.3999996200,1.0800000430,10.0200004600,7.7899999620,0.0000000000,5.4200000760,-999.0000000000,19.9200000800,9.2899999620,27.3099994700,63.2000007600,29.4699993100,45.0200004600,21.6900005300,22.3700008400,7.3800001140,54.2099990800,19.1299991600,8.1300001140,53.5800018300,0,7,1260,476,0,312,329,5,0,3375,1260,0,0,476,988,195,20,113,201,0,0,144,69,0,0,1057,167,223,76,256,0,189,163,99,4,255,161,7,0,3160,4,0,104,54,392,31,0,2388,849,1174,62065,-999,66250,50179,30569,2640,301,1736,3332,334,0,0,7,0,1245,97,472,94,0,570,119,899,587,1848,158,1440,910,574,62,322,396,64327.2617200000,36,46,96,1033,849,1615,441,1174,742,432,1615,1084,627500,476,727,629,732,755,249,2745,1488,525,69,0.0680789782,0.1103461036,0.1002400960,False +15007040700,HI,Kauai County,Census Tract 407,24950,28180,99999,0,1639.5124120000,84.3661893400,6497.4160920000,6497.4160920000,0.0261385850,179.0821346000,411.3031126000,164.1830575000,112.0709766000,0.0000000000,0.0000000000,19.9999980900,0.0000000000,0.0000000000,803.9005321000,495.4262798000,170.9395295000,6045.6744670000,1284.0984150000,230.2267010000,4202.3582790000,2302.9328280000,716.3603780000,3341.4274500000,85.2877002200,2471.2365200000,1616.8583390000,3256.1397500000,792.3786741000,256.5087146000,160.2696385000,4873.0529120000,677.1858005000,4858.6607240000,465.8659478000,6483.8447060000,315.4761577000,130.1721194000,1639.5124120000,903.8070090000,2542.4494830000,121.2988364000,18.0560093400,10.9999990500,13.2091077300,0.0672135060,809.4964124000,19.4300633300,3747.7267120000,182.9719543000,14847.6424500000,2182.2980030000,656.0313461000,2089.1407680000,1264.6352900000,2182.2980030000,127.4408560000,42756.8743900000,41907.5748200000,2708.021223,33400.6344500000,42210.6869300000,2068.2044520000,930.0281326000,5.0261381080,162.4411862000,1090.9635380000,HI,Kauai County,Census Tract 407,24950,28180,99999,0,7440.9995560000,2.9999997620,210.9999847000,332.9999695000,195.9999847000,60.9999961900,0.0000000000,1.9999998810,2.9999997620,10.9999990500,1.9999998810,873.9999390000,581.9999390000,239.9999847000,7007.9995120000,1212.9998780000,247.9999847000,5041.9995120000,2330.9997560000,928.9999390000,5895.9995120000,3286.9997560000,945.9999390000,3634.9997560000,200.9999847000,2936.9997560000,1749.9998780000,3433.9997560000,1084.9998780000,101.9999924000,344.9999695000,5525.9995120000,844.9999390000,4595.9995120000,725.9999390000,7427.9995570000,471.9999695000,44.9999961900,1947.9998780000,66.9999923700,2175.9997560000,118.9999924000,11.9999990500,1.9999998810,14.9999990500,0.0000000000,782.9999390000,52.9999961900,3172.9997560000,174.9999847000,20804.0001300000,2749.9997560000,628.9999390000,2599.9997560000,1467.9998780000,2749.9997560000,182.9999847000,52005.0017700000,60036.0001000000,29167,29896.0005000000,51689.65767,208200.0016000000,615.0000111000,2605.9997560000,996.9999390000,7.9999995230,199.9999847000,1130.9998780000,15,7,40700,22.9200000800,0.0000000000,15.6499996200,0.0000000000,39.6800003100,4.5000000000,0.9399999980,1.2500000000,16.1599998500,12.4200000800,1.5299999710,0.0000000000,11.1700000800,19.4599990800,-999.0000000000,-999.0000000000,43.8499984700,5.2800002100,-999.0000000000,-999.0000000000,11.2299995400,19.5699996900,1.3400000330,1.1499999760,6.7199997900,0.1400000010,0.9700000290,3.5799999240,1.2100000380,1.0199999810,12.4200000800,8.2200002670,3.0999999050,0.0500000010,0.0000000000,0.0599999990,0.0000000000,0.0000000000,17.7999992400,3.0299999710,37.4900016800,25.4799995400,5.1799998280,62.7799987800,30.3799991600,2.6500000950,11.9300003100,9.5600004200,1.5599999430,15.2600002300,12.5500001900,-999.0000000000,7.4800000190,-999.0000000000,16.2700004600,11.0500001900,16.9099998500,66.0999984700,9.9099998470,41.5299987800,25.9899997700,22.1299991600,6.2800002100,49.0000000000,19.9099998500,9.3100004200,47.7200012200,0,0,1773,1211,73,1250,961,118,0,7737,1773,0,0,1211,3070,348,97,198,345,0,0,531,64,0,0,3331,374,652,104,520,89,277,94,75,11,961,636,0,4,7107,0,5,79,240,1265,215,0,5271,1966,2649,64050,-999,61146,34483,25835,5670,542,3654,7714,1177,0,0,0,0,1769,222,1211,197,0,800,336,1976,1343,3806,197,2931,1840,1110,97,436,1212,82946.1484400000,120,147,366,3312,1966,3188,539,2649,1751,898,3188,954,486600,316,1324,1264,2011,1712,486,5943,2912,1183,183,0.0486557239,0.0635433492,0.1525797252,False +15009030100,HI,Maui County,Census Tract 301,11350,27980,99999,0,383.3068000000,27.2305791200,1910.5015780000,1910.5015780000,6.2592231110,27.4607778700,91.6621148600,27.1932371400,35.6747865500,0.0000000000,0.0035966930,0.0898007360,0.0000000000,8.1204749640,37.2918099000,6.5858333300,8.6301826290,1675.7861590000,177.6883274000,0.2490721380,1213.4786900000,793.3024273000,173.2832380000,864.0971374000,12.1702029000,576.9324621000,348.0594975000,851.9269343000,157.0642045000,28.2470664600,176.1750701000,1347.1787240000,314.6769609000,1347.1232320000,153.7392875000,1890.3938120000,392.8893720000,49.0661406900,383.3068000000,238.4715474000,807.4789838000,151.7785114000,0.0395477110,0.0000000000,20.0771960800,19.9998645800,82.6743149300,0.0311889900,1052.6142140000,211.1110742000,10415.9855900000,772.7004868000,261.4311255000,595.1029364000,362.3008839000,772.7004868000,23.2643179700,26030.6739600000,26529.6239500000,62499.99972,10011.7479600000,27536.6825200000,634.0477989000,310.2452140000,0.0041105070,14.1661638200,316.7386816000,HI,Maui County,Census Tract 301,11350,27980,99999,0,1866.9362440000,6.0427683000,47.7465012100,49.6951799400,40.5015555000,14.6726287000,0.0000000000,0.0233281630,11.2371696700,0.0000000000,6.0544323810,45.4074658200,20.7581653000,0.2993780970,1737.6018730000,257.5202186000,18.1205288500,1144.9066930000,659.1384151000,168.3234863000,1416.6104270000,672.4774532000,267.8818052000,916.8195996000,57.2021774200,684.1633000000,426.9665649000,859.6174226000,247.6905148000,8.0583204110,242.1889594000,1309.3110490000,183.3297054000,1187.5264430000,234.0342152000,1860.8740350000,321.7814935000,11.1399689800,404.3709197000,48.0699844900,482.2535048000,57.6687406900,0.0622084360,0.0000000000,5.0816485730,0.0000000000,76.4937794500,8.0000000000,784.1197518000,187.1127528000,16594.5856500000,882.8553724000,300.2488337000,597.4743423000,289.1446371000,882.8553724000,50.5171108200,38601.3524400000,49277.4119600000,27082.99935,33789.8790400000,32796.112,282034.9806000000,597.3191359000,598.5054464000,230.7045131000,0.0388802740,25.1516330700,222.5093316000,15,9,30100,34.4799995400,0.0000000000,3.5399999620,0.0000000000,20.8999996200,17.7800006900,0.0000000000,0.0000000000,0.6200000050,1.9199999570,0.0000000000,0.0000000000,14.1800003100,23.5300006900,-999.0000000000,-999.0000000000,27.9400005300,0.0000000000,-999.0000000000,-999.0000000000,12.9399995800,15.4200000800,3.1700000760,0.0000000000,0.3600000140,0.2599999900,1.8700000050,3.9500000480,5.2500000000,1.9199999570,5.3600001340,4.1100001340,2.0799999240,0.0000000000,0.0000000000,0.6200000050,0.0000000000,0.0000000000,10.5500001900,0.1099999990,45.0800018300,21.3199996900,10.4399995800,56.5299987800,23.3099994700,3.7899999620,42.5900001500,10.6599998500,0.5699999930,9.8000001910,8.8999996190,-999.0000000000,7.2600002290,-999.0000000000,89.7099990800,16.1700000800,33.9399986300,62.1500015300,10.6700000800,53.5600013700,27.8199996900,28.2399997700,2.5499999520,52.4000015300,15.3500003800,10.6899995800,50.0800018300,0,0,663,68,0,12,37,0,0,1923,663,0,0,68,402,342,0,94,156,0,0,19,0,0,0,402,52,62,61,7,0,76,101,36,5,103,79,0,0,1792,0,12,37,40,189,2,0,1271,496,613,58983,-999,66667,-999,21861,1388,148,871,1919,188,0,0,0,0,663,59,68,61,0,332,15,573,271,910,95,697,394,203,33,371,112,53658.6250000000,11,36,65,402,496,928,315,613,381,232,928,1005,609400,99,497,307,535,543,49,1479,775,227,53,0.2078346689,0.1729195461,0.0979676915,False +15009030201,HI,Maui County,Census Tract 302.01,99999,27980,99999,0,370.6344604000,44.2015914900,1578.6282440000,1578.6282440000,14.5508346600,25.8071403500,170.2173004000,68.9105529800,56.8306160000,0.0000000000,0.0000000000,1.9218082430,0.0000000000,0.0000000000,74.4014358500,42.8288688700,32.6707420300,1447.3961910000,143.5865326000,10.1581296900,1008.1257240000,471.1175842000,209.7516479000,834.6138888000,21.9635238600,543.5972290000,359.1036072000,812.6503654000,172.4136658000,95.5413284300,161.4319000000,1135.7887030000,143.0374451000,1135.7887030000,111.7394257000,1568.4701140000,158.1373749000,6.8636012080,370.6344604000,243.5205688000,939.4897130000,125.1920853000,3.0199844840,0.0000000000,20.3162593800,8.5108652110,190.2590179000,18.6689949000,572.1497803000,21.1398906700,13734.0000100000,569.6788940000,110.0921631000,526.5755005000,365.9671936000,569.6788940000,19.2180824300,36271.9983800000,36752.7165200000,29999.99935,38274.6483700000,41103.4484300000,537.2827148000,379.9689636000,1.3727202420,52.9869995100,135.0756683000,HI,Maui County,Census Tract 302.01,99999,27980,99999,0,2299.8553430000,30.4743881200,48.0452041600,193.2789917000,112.2885056000,88.9522628800,3.2945284840,2.7454402450,22.2380657200,0.0000000000,0.0000000000,154.0191956000,79.8923111000,51.8888206500,2135.1289060000,263.0131836000,2.7454402450,1551.9974370000,586.7006226000,406.0506287000,1811.9906010000,897.4844360000,344.8273010000,1165.4394530000,64.2433013900,904.6225586000,484.8447571000,1101.1961670000,393.4216003000,54.6342620800,271.7985840000,1706.0166020000,161.1573486000,1664.2858890000,289.6439514000,2267.1846030000,365.1435547000,8.5108652110,544.4208374000,40.3579711900,1261.2552490000,189.1608429000,7.6872329710,2.4708962440,9.0599527360,0.0000000000,187.2390289000,21.9635219600,364.8690186000,53.5360870400,22104.0011400000,877.1681519000,139.4683685000,816.2194214000,560.6188965000,877.1681519000,23.3362426800,43381.9986900000,41483.9988900000, ,50370.0014900000,61788.46215,329599.9971000000,787.9999644000,818.1412354000,532.0663452000,0.0000000000,48.3197479200,118.3284760000,15,9,30201,65.4199981700,0.0000000000,7.5100002290,0.0000000000,8.0399999620,5.6700000760,0.8199999930,0.0000000000,0.9200000170,0.6299999950,0.0000000000,0.0000000000,8.5900001530,13.9200000800,-999.0000000000,-999.0000000000,22.5799999200,3.2300000190,-999.0000000000,-999.0000000000,13.8599996600,19.2800006900,2.3199999330,2.7100000380,0.2399999950,1.6000000240,1.7400000100,16.1700000800,8.3299999240,5.2300000190,6.0999999050,3.4900000100,1.1599999670,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,6.5599999430,0.9800000190,29.6200008400,34.7999992400,10.4700002700,73.9700012200,46.3400001500,0.0000000000,27.1499996200,8.4899997710,0.0000000000,10.4099998500,7.2500000000,-999.0000000000,7.4600000380,-999.0000000000,63.8699989300,0.0000000000,14.9399995800,67.5100021400,7.0199999810,32.4900016800,16.1299991600,18.5499992400,5.5199999810,46.7000007600,19.6599998500,8.5500001910,63.7000007600,0,0,1351,155,17,19,13,0,0,2065,1351,0,0,155,166,117,0,116,188,0,0,35,5,0,0,166,23,32,48,5,56,334,172,36,33,126,72,0,0,1935,0,0,108,24,127,19,0,1661,456,945,53542,-999,55844,16574,29506,1732,147,1094,2065,215,0,0,0,0,1351,98,155,99,0,725,34,492,578,1222,128,999,739,507,0,297,32,-999.0000000000,0,34,0,166,456,1111,166,945,638,307,1111,1415,651000,78,361,602,333,383,114,1790,836,352,39,0.1008226892,0.1610559432,0.1041162228,False +15009030402,HI,Maui County,Census Tract 304.02,65900,27980,99999,0,1576.0000000000,169.0000000000,6064.0000020000,6064.0000020000,14.0000000000,21.0000000000,388.0000000000,130.0000000000,116.0000000000,0.0000000000,6.0000000000,12.0000000000,0.0000000000,0.0000000000,384.0000000000,204.0000000000,142.0000000000,5577.0000020000,733.0000000000,120.0000000000,3752.0000010000,1692.0000000000,664.0000000000,3218.0000010000,94.0000000000,2147.0000000000,1431.0000000000,3124.0000010000,752.0000000000,197.0000000000,253.0000000000,4402.0000010000,742.0000000000,4402.0000010000,325.0000000000,6036.0000020000,397.0000000000,22.0000000000,1576.0000000000,970.0000000000,2603.0000010000,182.0000000000,0.0000000000,0.0000000000,65.0000000000,0.0000000000,496.0000000000,63.0000000000,3305.0000000000,215.0000000000,16362.0000100000,1995.0000000000,159.0000000000,1914.0000000000,1194.0000000000,1995.0000000000,22.0000000000,43032.0000100000,41381.5789600000, ,33000.0000100000,43802.6315900000,1919.0000000000,922.0000000000,0.0000000000,152.0000000000,973.0000000000,HI,Maui County,Census Tract 304.02,65900,27980,99999,0,7708.0000000000,145.0000000000,154.0000000000,265.0000000000,128.0000000000,80.0000000000,0.0000000000,0.0000000000,19.0000000000,0.0000000000,0.0000000000,401.0000000000,286.0000000000,114.0000000000,7227.0000000000,835.0000000000,59.0000000000,5142.0000000000,1995.0000000000,1386.0000000000,5984.0000000000,3392.0000000000,1147.0000000000,4219.0000000000,167.0000000000,3010.0000000000,2063.0000000000,4052.0000000000,1320.0000000000,157.0000000000,680.0000000000,5595.0000000000,843.0000000000,5027.0000000000,709.0000000000,7679.0000000000,494.0000000000,45.0000000000,2010.0000000000,75.0000000000,2558.0000000000,216.0000000000,0.0000000000,0.0000000000,5.0000000000,0.0000000000,676.0000000000,35.0000000000,2190.0000000000,57.0000000000,24055.0000000000,2655.0000000000,408.0000000000,2558.0000000000,1586.0000000000,2655.0000000000,105.0000000000,62870.0000000000,62614.0000000000, ,61250.0000000000,63383.15217,268200.0000000000,854.0000000000,2564.0000000000,1051.0000000000,0.0000000000,136.0000000000,819.0000000000,15,9,30402,35.0900001500,0.0000000000,11.4700002700,0.1400000010,30.8899993900,6.0799999240,0.0000000000,2.1300001140,5.7300000190,13.0500001900,0.6600000260,0.5299999710,12.7600002300,15.9700002700,-999.0000000000,-999.0000000000,25.8299999200,9.5000000000,0.0000000000,0.0000000000,14.8500003800,14.9200000800,6.1999998090,0.0000000000,3.7799999710,0.0000000000,2.0299999710,5.4000000950,4.1500000950,2.2300000190,8.8900003430,5.7899999620,1.9900000100,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.3000000120,8.7799997330,0.9399999980,36.0299987800,24.1100006100,4.8499999050,69.0699996900,35.3899993900,4.0999999050,22.3500003800,10.3000001900,0.4000000060,2.7100000380,3.2100000380,0.0000000000,1.1000000240,-999.0000000000,1.3799999950,4.5399999620,9.8999996190,62.7700004600,14.5600004200,45.0099983200,22.4300003100,20.5599994700,5.4000000950,52.9599990800,17.2999992400,8.3599996570,57.4300003100,0,12,2962,968,0,484,1101,56,45,8440,2962,0,12,968,2607,513,180,378,473,0,0,250,92,0,0,2687,399,401,523,319,0,456,350,171,0,750,489,0,0,8016,0,0,188,168,704,75,25,6123,2190,2995,76649,-999,74383,108250,34445,6541,674,4855,8416,228,0,0,12,0,2962,95,944,13,0,1452,163,2206,1476,4952,240,3366,2325,1718,199,1085,809,83576.4062500000,34,24,122,2687,2190,3324,329,2995,1880,1115,3324,1183,619000,484,1496,1720,1893,1735,456,6996,3705,1210,183,0.0657720344,0.0643312931,0.0270912548,False +15009030800,HI,Maui County,Census Tract 308,75950,27980,99999,0,566.0331867000,29.0024671100,2380.1187810000,2380.1187810000,17.9996613400,10.0023785700,58.0117214400,83.0014279100,6.0035655440,0.0000246000,0.0000492000,0.0000246000,0.0000000000,0.0000871000,275.9955389000,160.9963087000,63.0011419100,2200.1173260000,563.9967822000,125.9982522000,1366.1198620000,676.0562812000,278.0319260000,1075.1001440000,14.0013287000,774.0661832000,485.0454395000,1061.0988150000,250.0390396000,61.0059311800,72.0103169500,1604.1293560000,165.0293852000,1604.1262590000,126.0096916000,2373.1152960000,158.9950915000,16.9988727100,566.0331867000,349.0062412000,543.0424034000,75.9953928000,19.9996131500,0.0000000000,0.0005046810,0.0000416000,204.9941585000,6.0003820650,1744.0754940000,82.9987536900,13742.8599100000,725.0676672000,157.0406731000,678.0611339000,390.0359396000,725.0676672000,15.0405894400,43750.2909800000,37947.0558900000,56651.51814,40624.8900800000,47291.6931700000,623.0686622000,167.0220174000,0.0003813110,27.9999225900,438.0467044000,HI,Maui County,Census Tract 308,75950,27980,99999,0,3397.0913250000,8.9994529090,56.9987987200,165.9943966000,99.0022858300,31.0002941900,0.0000000000,0.0000133000,9.0018971200,0.0000246000,0.0000303000,462.0068110000,353.9912157000,111.0084552000,3178.0872860000,619.0195254000,146.9982076000,2248.0878360000,843.0470216000,664.0159825000,2657.0886670000,1519.0407880000,433.0200396000,1833.0353860000,64.9998069100,1267.0530430000,840.0210881000,1768.0355330000,632.9967325000,49.0045779800,222.9974409000,2487.0892080000,299.0167761000,2236.0572610000,322.0206296000,3377.0924080000,109.0174528000,6.0012877820,851.0235416000,15.0024562000,788.0072325000,17.0072817600,6.9994908370,0.0000000000,5.0005032570,0.0000056800,196.0044594000,6.9998778270,1762.0504130000,55.0041171200,25062.7285200000,1094.0658180000,224.0465605000,1050.0563640000,677.0332376000,1094.0658180000,37.0446393900,70804.0627000000,76596.8750700000,31250.15373,39822.4707200000,70216.98222,281596.2980000000,733.9758356000,1051.0558450000,322.0095016000,6.9994283650,61.0009470100,532.0313824000,15,9,30800,16.5400009200,0.0500000010,10.2600002300,0.0900000040,38.5299987800,8.8699998860,0.1599999960,0.5500000120,16.7000007600,10.2100000400,0.4699999990,0.0000000000,9.0000000000,22.0599994700,0.0000000000,0.0000000000,41.9799995400,6.1100001340,16.6700000800,0.0000000000,16.3799991600,12.6499996200,2.0199999810,0.0000000000,6.2800002100,0.3100000020,0.6999999880,4.0300002100,1.6599999670,1.8799999950,10.2299995400,7.7500000000,1.6599999670,0.0000000000,0.0000000000,0.3100000020,0.0000000000,0.1099999990,15.0100002300,2.0799999240,45.0099983200,25.8799991600,9.7799997330,75.7799987800,34.2200012200,1.3899999860,11.1400003400,10.8100004200,0.0599999990,1.8899999860,1.9199999570,0.0000000000,0.3799999950,0.0000000000,2.4400000570,0.9499999880,9.8199996950,83.3499984700,4.5199999810,20.2099990800,27.0200004600,17.2500000000,4.1799998280,57.2999992400,14.1700000800,8.9600000380,67.0299987800,3,6,1056,655,10,1066,652,30,0,6384,1056,3,6,655,2460,566,35,95,233,0,0,275,40,1,0,2546,417,322,129,401,0,257,106,45,20,653,495,0,0,5948,0,20,120,106,893,124,7,4166,1584,1856,90403,-999,75368,84904,28758,4617,499,3241,6347,120,3,0,6,0,1039,20,655,16,0,473,85,1875,1078,3549,347,2411,1827,1109,45,361,654,92883.7890600000,4,6,24,2538,1584,2058,202,1856,1547,309,2058,1568,507100,93,416,1244,1725,1101,267,4897,2806,694,142,0.0669984690,0.0322814539,0.0189065700,False 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 new file mode 100644 index 000000000..5d4a98d79 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/persistent_poverty/test_etl.py @@ -0,0 +1,22 @@ +import pathlib + +from data_pipeline.etl.sources.persistent_poverty.etl import ( + PersistentPovertyETL, +) +from data_pipeline.tests.sources.example.test_etl import TestETL + + +class TestPersistentPovertyETL(TestETL): + _ETL_CLASS = PersistentPovertyETL + + _SAMPLE_DATA_PATH = pathlib.Path(__file__).parents[0] / "data" + _SAMPLE_DATA_FILE_NAME = "ltdb_std_all_sample/ltdb_std_1990_sample.csv" + _SAMPLE_DATA_ZIP_FILE_NAME = "LTDB_Std_All_Sample.zip" + _EXTRACT_TMP_FOLDER_NAME = "PersistentPovertyETL" + + def setup_method(self, _method, filename=__file__): + """Invoke `setup_method` from Parent, but using the current file name. + + This code can be copied identically between all child classes. + """ + super().setup_method(_method=_method, filename=filename) 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 new file mode 100644 index 000000000..4f8efa701 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/test_geo_utils.py @@ -0,0 +1,33 @@ +from collections import namedtuple +from pathlib import Path + +import geopandas as gpd +from data_pipeline.etl.sources.geo_utils import add_tracts_for_geometries + + +def test_add_tracts_for_geometries(): + field_names = ["latitude", "longitude", "expected_geoid"] + DataPoint = namedtuple("DataPoint", field_names) + # Pulled the tract IDs from the census geocoder + records = [ + DataPoint(33.75649254612824, -84.39215035031984, "13121011900"), + DataPoint(34.05289139656212, -118.2402117966315, "06037207400"), + DataPoint(42.357500146415475, -71.0563146836545, "25025030300"), + DataPoint(30.368185144529168, -89.0930992763473, "28047003800"), + ] + df = gpd.GeoDataFrame.from_records(records, columns=field_names) + df = gpd.GeoDataFrame( + df, + geometry=gpd.points_from_xy( + x=df["longitude"], + y=df["latitude"], + ), + crs="epsg:4326", + ) + + # Use fixtures for tract data. + tract_data_path = Path(__file__).parent / "data" / "us.geojson" + tract_data = gpd.read_file(tract_data_path) + + enriched_df = add_tracts_for_geometries(df, tract_data=tract_data) + assert (df["expected_geoid"] == enriched_df["GEOID10_TRACT"]).all() diff --git a/data/data-pipeline/data_pipeline/tests/sources/us_army_fuds/__init__.py b/data/data-pipeline/data_pipeline/tests/sources/us_army_fuds/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/data/data-pipeline/data_pipeline/tests/sources/us_army_fuds/data/extract.csv b/data/data-pipeline/data_pipeline/tests/sources/us_army_fuds/data/extract.csv new file mode 100644 index 000000000..e45a10e63 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/us_army_fuds/data/extract.csv @@ -0,0 +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.1"," ""CENTROIDLONG"": null.1"," ""CLOSESTCITY"": ""KUALOA"""," ""CONGRESSIONALDISTRICT"": ""02"""," ""COUNTY"": ""HONOLULU"""," ""CURRENTOWNER"": ""PRIV: PRIVATE KUALOA RANCH IS THE OWNER\n\n """," ""DODFUDSPROPERTYIDPK"": "" "".1"," ""ELIGIBILITY"": ""Eligible"".1"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=62331"""," ""EPAREGION"": ""09"".1"," ""FEATUREDESCRIPTION"": null.1"," ""FEATURENAME"": ""BATTERY AVERY J. COOPER"""," ""FUDSINSTALLATIONID"": ""HI99799F378500"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""H09HI0040"""," ""HASPROJECTS"": ""Yes"""," ""LATITUDE"": 21.535999"," ""LONGITUDE"": -157.843002"," ""MEDIAID"": null.1"," ""METADATAID"": null.1"," ""NOFURTHERACTION"": null.1"," ""PROJECTREQUIRED"": ""Yes"""," ""SDSID"": null.1"," ""SITEELIGIBILITY"": null.1"," ""STATE"": ""HI"""," ""STATUS"": ""Properties with all projects at site closeout"""," ""STATUSCODE"": ""Not on the NPL"".1"," ""USACEDISTRICT"": ""poh"""," ""FISCALYEAR"": ""2019"".1"," ""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"".1"," ""coordinates"": [-157.84301757799997", 21.53619384800004]}}," {""type"": ""Feature"".1"," ""properties"": {""OBJECTID"": 1629"," ""CENTROIDLAT"": null.2"," ""CENTROIDLONG"": null.2"," ""CLOSESTCITY"": ""KAAAWA"""," ""CONGRESSIONALDISTRICT"": ""02"".1"," ""COUNTY"": ""HONOLULU"".1"," ""CURRENTOWNER"": null.1"," ""DODFUDSPROPERTYIDPK"": "" "".2"," ""ELIGIBILITY"": ""Eligible"".2"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=54603"""," ""EPAREGION"": ""09"".2"," ""FEATUREDESCRIPTION"": null.2"," ""FEATURENAME"": ""KAAAWA MILITARY RES"""," ""FUDSINSTALLATIONID"": ""HI99799F387500"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""H09HI0135"""," ""HASPROJECTS"": ""No"".1"," ""LATITUDE"": 21.55333333"," ""LONGITUDE"": -157.85166667"," ""MEDIAID"": null.2"," ""METADATAID"": null.2"," ""NOFURTHERACTION"": null.2"," ""PROJECTREQUIRED"": ""No"".1"," ""SDSID"": null.2"," ""SITEELIGIBILITY"": null.2"," ""STATE"": ""HI"".1"," ""STATUS"": ""Properties without projects"".1"," ""STATUSCODE"": ""Not on the NPL"".2"," ""USACEDISTRICT"": ""poh"".1"," ""FISCALYEAR"": ""2019"".2"," ""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""}.1"," ""geometry"": {""type"": ""Point"".2"," ""coordinates"": [-157.85168456999997", 21.553405762000068]}}," {""type"": ""Feature"".2"," ""properties"": {""OBJECTID"": 1719"," ""CENTROIDLAT"": null.3"," ""CENTROIDLONG"": null.3"," ""CLOSESTCITY"": ""LINCOLN"""," ""CONGRESSIONALDISTRICT"": ""04"".1"," ""COUNTY"": ""PLACER"""," ""CURRENTOWNER"": ""PRIV: PRIVATE A private resident currently owns the land and uses it for agriculture purposes."""," ""DODFUDSPROPERTYIDPK"": "" "".3"," ""ELIGIBILITY"": ""Eligible"".3"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=61278"""," ""EPAREGION"": ""09"".3"," ""FEATUREDESCRIPTION"": null.3"," ""FEATURENAME"": ""Lincoln Radio Beacon Annex"""," ""FUDSINSTALLATIONID"": ""CA99799F578400"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""J09CA0854"""," ""HASPROJECTS"": ""Yes"".1"," ""LATITUDE"": 38.8975"," ""LONGITUDE"": -121.40027778"," ""MEDIAID"": null.3"," ""METADATAID"": null.3"," ""NOFURTHERACTION"": null.3"," ""PROJECTREQUIRED"": ""Yes"".1"," ""SDSID"": null.3"," ""SITEELIGIBILITY"": null.3"," ""STATE"": ""CA"".1"," ""STATUS"": ""Properties with all projects at site closeout"".1"," ""STATUSCODE"": ""Not on the NPL"".3"," ""USACEDISTRICT"": ""spk"".1"," ""FISCALYEAR"": ""2019"".3"," ""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""}.1"," ""geometry"": {""type"": ""Point"".3"," ""coordinates"": [-121.40020751999998", 38.897583008000026]}}," {""type"": ""Feature"".3"," ""properties"": {""OBJECTID"": 2093"," ""CENTROIDLAT"": null.4"," ""CENTROIDLONG"": null.4"," ""CLOSESTCITY"": ""KALAHEO"""," ""CONGRESSIONALDISTRICT"": ""02"".2"," ""COUNTY"": ""KAUAI"""," ""CURRENTOWNER"": ""STATE: STATE STATE OF HAWAII """," ""DODFUDSPROPERTYIDPK"": "" "".4"," ""ELIGIBILITY"": ""Eligible"".4"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=58233"""," ""EPAREGION"": ""09"".4"," ""FEATUREDESCRIPTION"": null.4"," ""FEATURENAME"": ""PAPAPAHOLAHOLA COMM SITE"""," ""FUDSINSTALLATIONID"": ""HI99799F401000"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""H09HI0280"""," ""HASPROJECTS"": ""Yes"".2"," ""LATITUDE"": 21.9764"," ""LONGITUDE"": -159.522003"," ""MEDIAID"": null.4"," ""METADATAID"": null.4"," ""NOFURTHERACTION"": null.4"," ""PROJECTREQUIRED"": ""Yes"".2"," ""SDSID"": null.4"," ""SITEELIGIBILITY"": null.4"," ""STATE"": ""HI"".2"," ""STATUS"": ""Properties with all projects at site closeout"".2"," ""STATUSCODE"": ""Not on the NPL"".4"," ""USACEDISTRICT"": ""poh"".2"," ""FISCALYEAR"": ""2019"".4"," ""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""}.2"," ""geometry"": {""type"": ""Point"".4"," ""coordinates"": [-159.52191162099996", 21.976623535000044]}}," {""type"": ""Feature"".4"," ""properties"": {""OBJECTID"": 2123"," ""CENTROIDLAT"": null.5"," ""CENTROIDLONG"": null.5"," ""CLOSESTCITY"": ""KALAHEO"".1"," ""CONGRESSIONALDISTRICT"": ""02"".3"," ""COUNTY"": ""KAUAI"".1"," ""CURRENTOWNER"": null.2"," ""DODFUDSPROPERTYIDPK"": "" "".5"," ""ELIGIBILITY"": ""Eligible"".5"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=62359"""," ""EPAREGION"": ""09"".5"," ""FEATUREDESCRIPTION"": null.5"," ""FEATURENAME"": ""DIVISION HEADQUARTERS"""," ""FUDSINSTALLATIONID"": ""HI99799F381400"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""H09HI0071"""," ""HASPROJECTS"": ""No"".2"," ""LATITUDE"": 21.9375"," ""LONGITUDE"": -159.53"," ""MEDIAID"": null.5"," ""METADATAID"": null.5"," ""NOFURTHERACTION"": null.5"," ""PROJECTREQUIRED"": ""No"".2"," ""SDSID"": null.5"," ""SITEELIGIBILITY"": null.5"," ""STATE"": ""HI"".3"," ""STATUS"": ""Properties without projects"".2"," ""STATUSCODE"": ""Not on the NPL"".5"," ""USACEDISTRICT"": ""poh"".3"," ""FISCALYEAR"": ""2019"".5"," ""PROPERTY_HISTORY"": ""NO EVIDENCE OF HAZARDOUS/TOXIC WASTE", EXPLOSIVE ORDNANCE WASTE," UNSAFE OR HAZARDOUS DEBRIS WAS FOUND. """," ""USACEDIVISION"": ""pod""}.3"," ""geometry"": {""type"": ""Point"".5"," ""coordinates"": [-159.52996826199998", 21.93762207000003]}}," {""type"": ""Feature"".5"," ""properties"": {""OBJECTID"": 2217"," ""CENTROIDLAT"": null.6"," ""CENTROIDLONG"": null.6"," ""CLOSESTCITY"": ""KEANAE"""," ""CONGRESSIONALDISTRICT"": ""02"".4"," ""COUNTY"": ""MAUI"""," ""CURRENTOWNER"": null.3"," ""DODFUDSPROPERTYIDPK"": "" "".6"," ""ELIGIBILITY"": ""Eligible"".6"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=62430"""," ""EPAREGION"": ""09"".6"," ""FEATUREDESCRIPTION"": null.6"," ""FEATURENAME"": ""MARINE MANEUVER AREA"""," ""FUDSINSTALLATIONID"": ""HI99799F395400"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""H09HI0217"""," ""HASPROJECTS"": ""No"".3"," ""LATITUDE"": 20.84027778"," ""LONGITUDE"": -156.14277778"," ""MEDIAID"": null.6"," ""METADATAID"": null.6"," ""NOFURTHERACTION"": null.6"," ""PROJECTREQUIRED"": ""No"".3"," ""SDSID"": null.6"," ""SITEELIGIBILITY"": null.6"," ""STATE"": ""HI"".4"," ""STATUS"": ""Properties without projects"".3"," ""STATUSCODE"": ""Not on the NPL"".6"," ""USACEDISTRICT"": ""poh"".4"," ""FISCALYEAR"": ""2019"".6"," ""PROPERTY_HISTORY"": ""SITE WAS USED FOR MARINE MANEUVERS. NO REMNANTS OF STRUCTURES OR DEBRIS WERE OBSERVED. """," ""USACEDIVISION"": ""pod""}.4"," ""geometry"": {""type"": ""Point"".6"," ""coordinates"": [-156.14270019499997", 20.840393066000047]}}," {""type"": ""Feature"".6"," ""properties"": {""OBJECTID"": 4551"," ""CENTROIDLAT"": null.7"," ""CENTROIDLONG"": null.7"," ""CLOSESTCITY"": ""UPOLU POINT"""," ""CONGRESSIONALDISTRICT"": ""02"".5"," ""COUNTY"": ""HAWAII"""," ""CURRENTOWNER"": null.4"," ""DODFUDSPROPERTYIDPK"": "" "".7"," ""ELIGIBILITY"": ""Eligible"".7"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=62478"""," ""EPAREGION"": ""09"".7"," ""FEATUREDESCRIPTION"": null.7"," ""FEATURENAME"": ""UPOLU POINT MILITARY RES"""," ""FUDSINSTALLATIONID"": ""HI99799F406300"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""H09HI0342"""," ""HASPROJECTS"": ""No"".4"," ""LATITUDE"": 20.265"," ""LONGITUDE"": -155.85972222"," ""MEDIAID"": null.7"," ""METADATAID"": null.7"," ""NOFURTHERACTION"": null.7"," ""PROJECTREQUIRED"": ""No"".4"," ""SDSID"": null.7"," ""SITEELIGIBILITY"": null.7"," ""STATE"": ""HI"".5"," ""STATUS"": ""Properties without projects"".4"," ""STATUSCODE"": ""Not on the NPL"".7"," ""USACEDISTRICT"": ""poh"".5"," ""FISCALYEAR"": ""2019"".7"," ""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""}.5"," ""geometry"": {""type"": ""Point"".7"," ""coordinates"": [-155.85968017599998", 20.26519775400004]}}," {""type"": ""Feature"".7"," ""properties"": {""OBJECTID"": 4622"," ""CENTROIDLAT"": null.8"," ""CENTROIDLONG"": null.8"," ""CLOSESTCITY"": ""MAKAWAO"""," ""CONGRESSIONALDISTRICT"": ""02"".6"," ""COUNTY"": ""MAUI"".1"," ""CURRENTOWNER"": ""PRIV: PRIVATE """," ""DODFUDSPROPERTYIDPK"": "" "".8"," ""ELIGIBILITY"": ""Eligible"".8"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=62368"""," ""EPAREGION"": ""09"".8"," ""FEATUREDESCRIPTION"": null.8"," ""FEATURENAME"": ""GUNNERY SITE"""," ""FUDSINSTALLATIONID"": ""HI99799F383800"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""H09HI0098"""," ""HASPROJECTS"": ""Yes"".3"," ""LATITUDE"": 20.89916667"," ""LONGITUDE"": -156.26027778"," ""MEDIAID"": null.8"," ""METADATAID"": null.8"," ""NOFURTHERACTION"": null.8"," ""PROJECTREQUIRED"": ""Yes"".3"," ""SDSID"": null.8"," ""SITEELIGIBILITY"": null.8"," ""STATE"": ""HI"".6"," ""STATUS"": ""Properties with projects"""," ""STATUSCODE"": ""Not on the NPL"".8"," ""USACEDISTRICT"": ""poh"".6"," ""FISCALYEAR"": ""2019"".8"," ""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""}.6"," ""geometry"": {""type"": ""Point"".8"," ""coordinates"": [-156.26019287099996", 20.899414062000062]}}," {""type"": ""Feature"".8"," ""properties"": {""OBJECTID"": 4669"," ""CENTROIDLAT"": null.9"," ""CENTROIDLONG"": null.9"," ""CLOSESTCITY"": ""KOLOA"""," ""CONGRESSIONALDISTRICT"": ""02"".7"," ""COUNTY"": ""KAUAI"".2"," ""CURRENTOWNER"": null.5"," ""DODFUDSPROPERTYIDPK"": "" "".9"," ""ELIGIBILITY"": ""Eligible"".9"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=62403"""," ""EPAREGION"": ""09"".9"," ""FEATUREDESCRIPTION"": null.9"," ""FEATURENAME"": ""KOLOA ICE PLANT"""," ""FUDSINSTALLATIONID"": ""HI99799F392900"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""H09HI0191"""," ""HASPROJECTS"": ""No"".5"," ""LATITUDE"": 21.90444444"," ""LONGITUDE"": -159.465"," ""MEDIAID"": null.9"," ""METADATAID"": null.9"," ""NOFURTHERACTION"": null.9"," ""PROJECTREQUIRED"": ""No"".5"," ""SDSID"": null.9"," ""SITEELIGIBILITY"": null.9"," ""STATE"": ""HI"".7"," ""STATUS"": ""Properties without projects"".5"," ""STATUSCODE"": ""Not on the NPL"".9"," ""USACEDISTRICT"": ""poh"".7"," ""FISCALYEAR"": ""2019"".9"," ""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""}.7"," ""geometry"": {""type"": ""Point"".9"," ""coordinates"": [-159.46496581999997", 21.90460205100004]}}," {""type"": ""Feature"".9"," ""properties"": {""OBJECTID"": 4694"," ""CENTROIDLAT"": null.10"," ""CENTROIDLONG"": null.10"," ""CLOSESTCITY"": ""PUNA"""," ""CONGRESSIONALDISTRICT"": ""02"".8"," ""COUNTY"": ""HAWAII"".1"," ""CURRENTOWNER"": null.6"," ""DODFUDSPROPERTYIDPK"": "" "".10"," ""ELIGIBILITY"": ""Eligible"".10"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=62396"""," ""EPAREGION"": ""09"".10"," ""FEATUREDESCRIPTION"": null.10"," ""FEATURENAME"": ""KAPOHO TARGET AREA"""," ""FUDSINSTALLATIONID"": ""HI99799F390300"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""H09HI0165"""," ""HASPROJECTS"": ""No"".6"," ""LATITUDE"": 19.49166667"," ""LONGITUDE"": -154.82527778"," ""MEDIAID"": null.10"," ""METADATAID"": null.10"," ""NOFURTHERACTION"": null.10"," ""PROJECTREQUIRED"": ""No"".6"," ""SDSID"": null.10"," ""SITEELIGIBILITY"": null.10"," ""STATE"": ""HI"".8"," ""STATUS"": ""Properties without projects"".6"," ""STATUSCODE"": ""Not on the NPL"".10"," ""USACEDISTRICT"": ""poh"".8"," ""FISCALYEAR"": ""2019"".10"," ""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""}.8"," ""geometry"": {""type"": ""Point"".10"," ""coordinates"": [-154.82519531299997", 19.49182128900003]}}," {""type"": ""Feature"".10"," ""properties"": {""OBJECTID"": 4735"," ""CENTROIDLAT"": null.11"," ""CENTROIDLONG"": null.11"," ""CLOSESTCITY"": ""POLOLU VALLEY"""," ""CONGRESSIONALDISTRICT"": ""02"".9"," ""COUNTY"": ""HAWAII"".2"," ""CURRENTOWNER"": null.7"," ""DODFUDSPROPERTYIDPK"": "" "".11"," ""ELIGIBILITY"": ""Eligible"".11"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=62459"""," ""EPAREGION"": ""09"".11"," ""FEATUREDESCRIPTION"": null.11"," ""FEATURENAME"": ""POLOLU"""," ""FUDSINSTALLATIONID"": ""HI99799F401600"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""H09HI0286"""," ""HASPROJECTS"": ""No"".7"," ""LATITUDE"": 20.16666667"," ""LONGITUDE"": -155.73333333"," ""MEDIAID"": null.11"," ""METADATAID"": null.11"," ""NOFURTHERACTION"": null.11"," ""PROJECTREQUIRED"": ""No"".7"," ""SDSID"": null.11"," ""SITEELIGIBILITY"": null.11"," ""STATE"": ""HI"".9"," ""STATUS"": ""Properties without projects"".7"," ""STATUSCODE"": ""Not on the NPL"".11"," ""USACEDISTRICT"": ""poh"".9"," ""FISCALYEAR"": ""2019"".11"," ""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""}.9"," ""geometry"": {""type"": ""Point"".11"," ""coordinates"": [-155.73327636699997", 20.166809082000043]}}," {""type"": ""Feature"".11"," ""properties"": {""OBJECTID"": 5292"," ""CENTROIDLAT"": null.12"," ""CENTROIDLONG"": null.12"," ""CLOSESTCITY"": ""WAIPIO"""," ""CONGRESSIONALDISTRICT"": ""02"".10"," ""COUNTY"": ""HAWAII"".3"," ""CURRENTOWNER"": null.8"," ""DODFUDSPROPERTYIDPK"": "" "".12"," ""ELIGIBILITY"": ""Eligible"".12"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=62349"""," ""EPAREGION"": ""09"".12"," ""FEATUREDESCRIPTION"": null.12"," ""FEATURENAME"": ""WAIPIO BOMBING TARGETS"""," ""FUDSINSTALLATIONID"": ""HI99799F379600"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""H09HI0052"""," ""HASPROJECTS"": ""No"".8"," ""LATITUDE"": 20.91222222"," ""LONGITUDE"": -156.22083333"," ""MEDIAID"": null.12"," ""METADATAID"": null.12"," ""NOFURTHERACTION"": null.12"," ""PROJECTREQUIRED"": ""No"".8"," ""SDSID"": null.12"," ""SITEELIGIBILITY"": null.12"," ""STATE"": ""HI"".10"," ""STATUS"": ""Properties without projects"".8"," ""STATUSCODE"": ""Not on the NPL"".12"," ""USACEDISTRICT"": ""poh"".10"," ""FISCALYEAR"": ""2019"".12"," ""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""}.10"," ""geometry"": {""type"": ""Point"".12"," ""coordinates"": [-156.22076415999996", 20.91241455100004]}}," {""type"": ""Feature"".12"," ""properties"": {""OBJECTID"": 5310"," ""CENTROIDLAT"": null.13"," ""CENTROIDLONG"": null.13"," ""CLOSESTCITY"": ""ISLAND OF HAWAII"""," ""CONGRESSIONALDISTRICT"": ""02"".11"," ""COUNTY"": ""HAWAII"".4"," ""CURRENTOWNER"": ""PRIV: Estate of Richard Smart AKA Parker Ranch", Estate of Richard Smart AKA Parker Ranch," WH Shipman"""," ""DODFUDSPROPERTYIDPK"": "" "".13"," ""ELIGIBILITY"": ""Eligible"".13"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=53556"""," ""EPAREGION"": ""09"".13"," ""FEATUREDESCRIPTION"": null.13"," ""FEATURENAME"": ""BIG ISLAND BOMBING TARGETS"""," ""FUDSINSTALLATIONID"": ""HI99799FA10000"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""H09HI0476"""," ""HASPROJECTS"": ""Yes"".4"," ""LATITUDE"": 20.235"," ""LONGITUDE"": -155.89277778"," ""MEDIAID"": null.13"," ""METADATAID"": null.13"," ""NOFURTHERACTION"": null.13"," ""PROJECTREQUIRED"": ""Yes"".4"," ""SDSID"": null.13"," ""SITEELIGIBILITY"": null.13"," ""STATE"": ""HI"".11"," ""STATUS"": ""Properties with projects"".1"," ""STATUSCODE"": ""Not on the NPL"".13"," ""USACEDISTRICT"": ""poh"".11"," ""FISCALYEAR"": ""2019"".13"," ""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""}.11"," ""geometry"": {""type"": ""Point"".13"," ""coordinates"": [-155.89270019499997", 20.23522949200003]}}," {""type"": ""Feature"".13"," ""properties"": {""OBJECTID"": 5832"," ""CENTROIDLAT"": null.14"," ""CENTROIDLONG"": null.14"," ""CLOSESTCITY"": ""NO CITY"".1"," ""CONGRESSIONALDISTRICT"": ""02"".12"," ""COUNTY"": ""MAUI"".2"," ""CURRENTOWNER"": null.9"," ""DODFUDSPROPERTYIDPK"": "" "".14"," ""ELIGIBILITY"": ""Eligible"".14"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=54600"""," ""EPAREGION"": ""09"".14"," ""FEATUREDESCRIPTION"": null.14"," ""FEATURENAME"": ""KAILUA RADAR STATION"""," ""FUDSINSTALLATIONID"": ""HI99799F388700"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""H09HI0147"""," ""HASPROJECTS"": ""No"".9"," ""LATITUDE"": 20.89083333"," ""LONGITUDE"": -156.2075"," ""MEDIAID"": null.14"," ""METADATAID"": null.14"," ""NOFURTHERACTION"": null.14"," ""PROJECTREQUIRED"": ""No"".9"," ""SDSID"": null.14"," ""SITEELIGIBILITY"": null.14"," ""STATE"": ""HI"".12"," ""STATUS"": ""Properties without projects"".9"," ""STATUSCODE"": ""Not on the NPL"".14"," ""USACEDISTRICT"": ""poh"".12"," ""FISCALYEAR"": ""2019"".14"," ""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""}.12"," ""geometry"": {""type"": ""Point"".14"," ""coordinates"": [-156.20739746099997", 20.890991211000028]}}," {""type"": ""Feature"".14"," ""properties"": {""OBJECTID"": 6013"," ""CENTROIDLAT"": null.15"," ""CENTROIDLONG"": null.15"," ""CLOSESTCITY"": ""KOLOA"".1"," ""CONGRESSIONALDISTRICT"": ""02"".13"," ""COUNTY"": ""KAUAI"".3"," ""CURRENTOWNER"": null.10"," ""DODFUDSPROPERTYIDPK"": "" "".15"," ""ELIGIBILITY"": ""Eligible"".15"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=56908"""," ""EPAREGION"": ""09"".15"," ""FEATUREDESCRIPTION"": null.15"," ""FEATURENAME"": ""KOLOA BAKERY"""," ""FUDSINSTALLATIONID"": ""HI99799F392800"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""H09HI0190"""," ""HASPROJECTS"": ""No"".10"," ""LATITUDE"": 21.905"," ""LONGITUDE"": -159.46444444"," ""MEDIAID"": null.15"," ""METADATAID"": null.15"," ""NOFURTHERACTION"": null.15"," ""PROJECTREQUIRED"": ""No"".10"," ""SDSID"": null.15"," ""SITEELIGIBILITY"": null.15"," ""STATE"": ""HI"".13"," ""STATUS"": ""Properties without projects"".10"," ""STATUSCODE"": ""Not on the NPL"".15"," ""USACEDISTRICT"": ""poh"".13"," ""FISCALYEAR"": ""2019"".15"," ""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""}.13"," ""geometry"": {""type"": ""Point"".15"," ""coordinates"": [-159.46441650399998", 21.905212402000075]}}," {""type"": ""Feature"".15"," ""properties"": {""OBJECTID"": 6015"," ""CENTROIDLAT"": null.16"," ""CENTROIDLONG"": null.16"," ""CLOSESTCITY"": ""KALAHEO"".2"," ""CONGRESSIONALDISTRICT"": ""02"".14"," ""COUNTY"": ""KAUAI"".4"," ""CURRENTOWNER"": null.11"," ""DODFUDSPROPERTYIDPK"": "" "".16"," ""ELIGIBILITY"": ""Eligible"".16"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=56898"""," ""EPAREGION"": ""09"".16"," ""FEATUREDESCRIPTION"": null.16"," ""FEATURENAME"": ""1ST STATION HOSPITAL"""," ""FUDSINSTALLATIONID"": ""HI99799F382500"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""H09HI0084"""," ""HASPROJECTS"": ""No"".11"," ""LATITUDE"": 21.9225"," ""LONGITUDE"": -159.52111111"," ""MEDIAID"": null.16"," ""METADATAID"": null.16"," ""NOFURTHERACTION"": null.16"," ""PROJECTREQUIRED"": ""No"".11"," ""SDSID"": null.16"," ""SITEELIGIBILITY"": null.16"," ""STATE"": ""HI"".14"," ""STATUS"": ""Properties without projects"".11"," ""STATUSCODE"": ""Not on the NPL"".16"," ""USACEDISTRICT"": ""poh"".14"," ""FISCALYEAR"": ""2019"".16"," ""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""}.14"," ""geometry"": {""type"": ""Point"".16"," ""coordinates"": [-159.52111816399997", 21.922607422000056]}}," {""type"": ""Feature"".16"," ""properties"": {""OBJECTID"": 6062"," ""CENTROIDLAT"": null.17"," ""CENTROIDLONG"": null.17"," ""CLOSESTCITY"": ""PUNALUU/KAHANA"""," ""CONGRESSIONALDISTRICT"": ""02"".15"," ""COUNTY"": ""HONOLULU"".2"," ""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"": "" "".17"," ""ELIGIBILITY"": ""Eligible"".17"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=56893"""," ""EPAREGION"": ""09"".17"," ""FEATUREDESCRIPTION"": null.17"," ""FEATURENAME"": ""PACIFIC JUNGLE COMBAT"""," ""FUDSINSTALLATIONID"": ""HI99799F400400"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""H09HI0274"""," ""HASPROJECTS"": ""Yes"".5"," ""LATITUDE"": 21.55416667"," ""LONGITUDE"": -157.90694444"," ""MEDIAID"": null.17"," ""METADATAID"": null.17"," ""NOFURTHERACTION"": null.17"," ""PROJECTREQUIRED"": ""Yes"".5"," ""SDSID"": null.17"," ""SITEELIGIBILITY"": null.17"," ""STATE"": ""HI"".15"," ""STATUS"": ""Properties with projects"".2"," ""STATUSCODE"": ""Not on the NPL"".17"," ""USACEDISTRICT"": ""poh"".15"," ""FISCALYEAR"": ""2019"".17"," ""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.1," 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""}.15"," ""geometry"": {""type"": ""Point"".17"," ""coordinates"": [-157.90679931599996", 21.554199219000054]}}," {""type"": ""Feature"".17"," ""properties"": {""OBJECTID"": 6974"," ""CENTROIDLAT"": null.18"," ""CENTROIDLONG"": null.18"," ""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"": "" "".18"," ""ELIGIBILITY"": ""Eligible"".18"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=57284"""," ""EPAREGION"": ""09"".18"," ""FEATUREDESCRIPTION"": null.18"," ""FEATURENAME"": ""Call Mountain Radio Relay Annex"""," ""FUDSINSTALLATIONID"": ""CA99799F570500"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""J09CA0764"""," ""HASPROJECTS"": ""Yes"".6"," ""LATITUDE"": 36.61472222"," ""LONGITUDE"": -121.06777778"," ""MEDIAID"": null.18"," ""METADATAID"": null.18"," ""NOFURTHERACTION"": null.18"," ""PROJECTREQUIRED"": ""Yes"".6"," ""SDSID"": null.18"," ""SITEELIGIBILITY"": null.18"," ""STATE"": ""CA"".2"," ""STATUS"": ""Properties with all projects at site closeout"".3"," ""STATUSCODE"": ""Not on the NPL"".18"," ""USACEDISTRICT"": ""spk"".2"," ""FISCALYEAR"": ""2019"".18"," ""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""}.2"," ""geometry"": {""type"": ""Point"".18"," ""coordinates"": [-121.06768798799999", 36.61480712900004]}}," {""type"": ""Feature"".18"," ""properties"": {""OBJECTID"": 7018"," ""CENTROIDLAT"": null.19"," ""CENTROIDLONG"": null.19"," ""CLOSESTCITY"": ""PANAMINT SPRINGS"""," ""CONGRESSIONALDISTRICT"": ""08"""," ""COUNTY"": ""INYO"""," ""CURRENTOWNER"": null.12"," ""DODFUDSPROPERTYIDPK"": "" "".19"," ""ELIGIBILITY"": ""Eligible"".19"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=60971"""," ""EPAREGION"": ""09"".19"," ""FEATUREDESCRIPTION"": null.19"," ""FEATURENAME"": ""PANAMINT DRY LAKE TEST"""," ""FUDSINSTALLATIONID"": ""CA99799F533000"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""J09CA0127"""," ""HASPROJECTS"": ""No"".12"," ""LATITUDE"": 36.33333333"," ""LONGITUDE"": -117.39166667"," ""MEDIAID"": null.19"," ""METADATAID"": null.19"," ""NOFURTHERACTION"": null.19"," ""PROJECTREQUIRED"": ""No"".12"," ""SDSID"": null.19"," ""SITEELIGIBILITY"": null.19"," ""STATE"": ""CA"".3"," ""STATUS"": ""Properties without projects"".12"," ""STATUSCODE"": ""Not on the NPL"".19"," ""USACEDISTRICT"": ""spl"""," ""FISCALYEAR"": ""2019"".19"," ""PROPERTY_HISTORY"": ""THIS SITE WAS USED AS AN EMERGENCY LANDING AREA """," ""USACEDIVISION"": ""spd""}.3"," ""geometry"": {""type"": ""Point"".19"," ""coordinates"": [-117.391601563", 36.33343505900007]}}," {""type"": ""Feature"".19"," ""properties"": {""OBJECTID"": 7046"," ""CENTROIDLAT"": null.20"," ""CENTROIDLONG"": null.20"," ""CLOSESTCITY"": ""KEELER"""," ""CONGRESSIONALDISTRICT"": ""08"".1"," ""COUNTY"": ""INYO"".1"," ""CURRENTOWNER"": null.13"," ""DODFUDSPROPERTYIDPK"": "" "".20"," ""ELIGIBILITY"": ""Ineligible"""," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=54232"""," ""EPAREGION"": ""09"".20"," ""FEATUREDESCRIPTION"": null.20"," ""FEATURENAME"": ""KEELER SODA PLANT"""," ""FUDSINSTALLATIONID"": ""CA99799FA02200"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""J09CA7199"""," ""HASPROJECTS"": ""No"".13"," ""LATITUDE"": 36.46944444"," ""LONGITUDE"": -117.85555556"," ""MEDIAID"": null.20"," ""METADATAID"": null.20"," ""NOFURTHERACTION"": null.20"," ""PROJECTREQUIRED"": ""No"".13"," ""SDSID"": null.20"," ""SITEELIGIBILITY"": null.20"," ""STATE"": ""CA"".4"," ""STATUS"": ""Properties without projects"".13"," ""STATUSCODE"": ""Not on the NPL"".20"," ""USACEDISTRICT"": ""spl"".1"," ""FISCALYEAR"": ""2019"".20"," ""PROPERTY_HISTORY"": ""N/A\r\n"""," ""USACEDIVISION"": ""spd""}.4"," ""geometry"": {""type"": ""Point"".20"," ""coordinates"": [-117.85546874999994", 36.46960449200003]}}," {""type"": ""Feature"".20"," ""properties"": {""OBJECTID"": 7428"," ""CENTROIDLAT"": null.21"," ""CENTROIDLONG"": null.21"," ""CLOSESTCITY"": ""SACRAMENTO"""," ""CONGRESSIONALDISTRICT"": ""04"".2"," ""COUNTY"": ""SACRAMENTO"".1"," ""CURRENTOWNER"": null.14"," ""DODFUDSPROPERTYIDPK"": "" "".21"," ""ELIGIBILITY"": ""Eligible"".20"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=53883"""," ""EPAREGION"": ""09"".21"," ""FEATUREDESCRIPTION"": null.21"," ""FEATURENAME"": ""McClellan AFB Outer Marker"""," ""FUDSINSTALLATIONID"": ""CA99799F523100"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""J09CA0010"""," ""HASPROJECTS"": ""No"".14"," ""LATITUDE"": 38.75138889"," ""LONGITUDE"": -121.40027778.1"," ""MEDIAID"": null.21"," ""METADATAID"": null.21"," ""NOFURTHERACTION"": null.21"," ""PROJECTREQUIRED"": ""No"".14"," ""SDSID"": null.21"," ""SITEELIGIBILITY"": null.21"," ""STATE"": ""CA"".5"," ""STATUS"": ""Properties without projects"".14"," ""STATUSCODE"": ""Not on the NPL"".21"," ""USACEDISTRICT"": ""spk"".3"," ""FISCALYEAR"": ""2019"".21"," ""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""}.5"," ""geometry"": {""type"": ""Point"".21"," ""coordinates"": [-121.40020751999998.1", 38.75158691400003]}}," {""type"": ""Feature"".21"," ""properties"": {""OBJECTID"": 7565"," ""CENTROIDLAT"": null.22"," ""CENTROIDLONG"": null.22"," ""CLOSESTCITY"": ""PINTO PEAK"""," ""CONGRESSIONALDISTRICT"": ""08"".2"," ""COUNTY"": ""INYO"".2"," ""CURRENTOWNER"": null.15"," ""DODFUDSPROPERTYIDPK"": "" "".22"," ""ELIGIBILITY"": ""Ineligible"".1"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=63165"""," ""EPAREGION"": ""09"".22"," ""FEATUREDESCRIPTION"": null.22"," ""FEATURENAME"": ""PINTO PEAK"""," ""FUDSINSTALLATIONID"": ""CA99799FA45600"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""J09CA7429"""," ""HASPROJECTS"": ""No"".15"," ""LATITUDE"": 36.3875"," ""LONGITUDE"": -117.23527778"," ""MEDIAID"": null.22"," ""METADATAID"": null.22"," ""NOFURTHERACTION"": null.22"," ""PROJECTREQUIRED"": ""No"".15"," ""SDSID"": null.22"," ""SITEELIGIBILITY"": null.22"," ""STATE"": ""CA"".6"," ""STATUS"": ""Properties without projects"".15"," ""STATUSCODE"": ""Not on the NPL"".22"," ""USACEDISTRICT"": ""spl"".2"," ""FISCALYEAR"": ""2019"".22"," ""PROPERTY_HISTORY"": ""N/A\r\n"".1"," ""USACEDIVISION"": ""spd""}.6"," ""geometry"": {""type"": ""Point"".22"," ""coordinates"": [-117.23529052699996", 36.387634277000075]}}," {""type"": ""Feature"".22"," ""properties"": {""OBJECTID"": 7689"," ""CENTROIDLAT"": null.23"," ""CENTROIDLONG"": null.23"," ""CLOSESTCITY"": ""INDEPENDENCE"""," ""CONGRESSIONALDISTRICT"": ""08"".3"," ""COUNTY"": ""INYO"".3"," ""CURRENTOWNER"": ""OTHER: OTHER CITY OF LOS ANGELES AND THE DEPT OF THE INTERIOR (NATIONAL \nPARKS SERVICE).\n """," ""DODFUDSPROPERTYIDPK"": "" "".23"," ""ELIGIBILITY"": ""Eligible"".21"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=62560"""," ""EPAREGION"": ""09"".23"," ""FEATUREDESCRIPTION"": null.23"," ""FEATURENAME"": ""CAMP MANZANAR"""," ""FUDSINSTALLATIONID"": ""CA99799F743900"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""J09CA0137"""," ""HASPROJECTS"": ""Yes"".7"," ""LATITUDE"": 36.725"," ""LONGITUDE"": -118.15277778"," ""MEDIAID"": null.23"," ""METADATAID"": null.23"," ""NOFURTHERACTION"": null.23"," ""PROJECTREQUIRED"": ""Yes"".7"," ""SDSID"": null.23"," ""SITEELIGIBILITY"": null.23"," ""STATE"": ""CA"".7"," ""STATUS"": ""Properties with all projects at site closeout"".4"," ""STATUSCODE"": ""Not on the NPL"".23"," ""USACEDISTRICT"": ""spl"".3"," ""FISCALYEAR"": ""2019"".23"," ""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""}.7"," ""geometry"": {""type"": ""Point"".23"," ""coordinates"": [-118.15270996099997", 36.725219727000024]}}," {""type"": ""Feature"".23"," ""properties"": {""OBJECTID"": 7691"," ""CENTROIDLAT"": null.24"," ""CENTROIDLONG"": null.24"," ""CLOSESTCITY"": ""LONE PINE"""," ""CONGRESSIONALDISTRICT"": ""08"".4"," ""COUNTY"": ""INYO"".4"," ""CURRENTOWNER"": ""LOCAL: CITY RESIDENTIAL PRIV: PRIVATE RESIDENTIAL """," ""DODFUDSPROPERTYIDPK"": "" "".24"," ""ELIGIBILITY"": ""Eligible"".22"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=62589"""," ""EPAREGION"": ""09"".24"," ""FEATUREDESCRIPTION"": null.24"," ""FEATURENAME"": ""MT. WHITNEY MILITARY RESERVATION"""," ""FUDSINSTALLATIONID"": ""CA99799F744000"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""J09CA0138"""," ""HASPROJECTS"": ""Yes"".8"," ""LATITUDE"": 36.56666667"," ""LONGITUDE"": -118.13888889"," ""MEDIAID"": null.24"," ""METADATAID"": null.24"," ""NOFURTHERACTION"": null.24"," ""PROJECTREQUIRED"": ""Yes"".8"," ""SDSID"": null.24"," ""SITEELIGIBILITY"": null.24"," ""STATE"": ""CA"".8"," ""STATUS"": ""Properties with all projects at site closeout"".5"," ""STATUSCODE"": ""Not on the NPL"".24"," ""USACEDISTRICT"": ""spl"".4"," ""FISCALYEAR"": ""2019"".24"," ""PROPERTY_HISTORY"": ""N/A\r\n"".2"," ""USACEDIVISION"": ""spd""}.8"," ""geometry"": {""type"": ""Point"".24"," ""coordinates"": [-118.13891601599994", 36.56683349600007]}}," {""type"": ""Feature"".24"," ""properties"": {""OBJECTID"": 7831"," ""CENTROIDLAT"": null.25"," ""CENTROIDLONG"": null.25"," ""CLOSESTCITY"": ""DEATH VALLEY NATIONAL PARK"""," ""CONGRESSIONALDISTRICT"": ""08"".5"," ""COUNTY"": ""INYO"".5"," ""CURRENTOWNER"": null.16"," ""DODFUDSPROPERTYIDPK"": "" "".25"," ""ELIGIBILITY"": ""Ineligible"".2"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=63099"""," ""EPAREGION"": ""09"".25"," ""FEATUREDESCRIPTION"": null.25"," ""FEATURENAME"": ""DEATH VALLEY NATIONAL PARK"""," ""FUDSINSTALLATIONID"": ""CA99799FA39000"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""J09CA7363"""," ""HASPROJECTS"": ""No"".16"," ""LATITUDE"": 36.78333333"," ""LONGITUDE"": -117.31111111"," ""MEDIAID"": null.25"," ""METADATAID"": null.25"," ""NOFURTHERACTION"": null.25"," ""PROJECTREQUIRED"": ""No"".16"," ""SDSID"": null.25"," ""SITEELIGIBILITY"": null.25"," ""STATE"": ""CA"".9"," ""STATUS"": ""Properties without projects"".16"," ""STATUSCODE"": ""Not on the NPL"".25"," ""USACEDISTRICT"": ""spl"".5"," ""FISCALYEAR"": ""2019"".25"," ""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""}.9"," ""geometry"": {""type"": ""Point"".25"," ""coordinates"": [-117.311096191", 36.783386230000076]}}," {""type"": ""Feature"".25"," ""properties"": {""OBJECTID"": 7866"," ""CENTROIDLAT"": null.26"," ""CENTROIDLONG"": null.26"," ""CLOSESTCITY"": ""OLANCHA"""," ""CONGRESSIONALDISTRICT"": ""08"".6"," ""COUNTY"": ""INYO"".6"," ""CURRENTOWNER"": null.17"," ""DODFUDSPROPERTYIDPK"": "" "".26"," ""ELIGIBILITY"": ""Eligible"".23"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=63160"""," ""EPAREGION"": ""09"".26"," ""FEATUREDESCRIPTION"": null.26"," ""FEATURENAME"": ""OLANCHA AIRFIELD"""," ""FUDSINSTALLATIONID"": ""CA99799FA45100"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""J09CA7424"""," ""HASPROJECTS"": ""No"".17"," ""LATITUDE"": 36.28361111"," ""LONGITUDE"": -118.00027778"," ""MEDIAID"": null.26"," ""METADATAID"": null.26"," ""NOFURTHERACTION"": null.26"," ""PROJECTREQUIRED"": ""No"".17"," ""SDSID"": null.26"," ""SITEELIGIBILITY"": null.26"," ""STATE"": ""CA"".10"," ""STATUS"": ""Properties without projects"".17"," ""STATUSCODE"": ""Not on the NPL"".26"," ""USACEDISTRICT"": ""spl"".6"," ""FISCALYEAR"": ""2019"".26"," ""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""}.10"," ""geometry"": {""type"": ""Point"".26"," ""coordinates"": [-118.00030517599998", 36.283813477000024]}}," {""type"": ""Feature"".26"," ""properties"": {""OBJECTID"": 7977"," ""CENTROIDLAT"": null.27"," ""CENTROIDLONG"": null.27"," ""CLOSESTCITY"": ""DEATH VALLEY"""," ""CONGRESSIONALDISTRICT"": ""08"".7"," ""COUNTY"": ""INYO"".7"," ""CURRENTOWNER"": null.18"," ""DODFUDSPROPERTYIDPK"": "" "".27"," ""ELIGIBILITY"": ""Eligible"".24"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=63103"""," ""EPAREGION"": ""09"".27"," ""FEATUREDESCRIPTION"": null.27"," ""FEATURENAME"": ""FURNANCE CREEK AIRPORT(OLD AIRPORT)"""," ""FUDSINSTALLATIONID"": ""CA99799FA39400"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""J09CA7367"""," ""HASPROJECTS"": ""No"".18"," ""LATITUDE"": 36.46111111"," ""LONGITUDE"": -116.8625"," ""MEDIAID"": null.27"," ""METADATAID"": null.27"," ""NOFURTHERACTION"": null.27"," ""PROJECTREQUIRED"": ""No"".18"," ""SDSID"": null.27"," ""SITEELIGIBILITY"": null.27"," ""STATE"": ""CA"".11"," ""STATUS"": ""Properties without projects"".18"," ""STATUSCODE"": ""Not on the NPL"".27"," ""USACEDISTRICT"": ""spl"".7"," ""FISCALYEAR"": ""2019"".27"," ""PROPERTY_HISTORY"": ""N/A\r\n"".3"," ""USACEDIVISION"": ""spd""}.11"," ""geometry"": {""type"": ""Point"".27"," ""coordinates"": [-116.86248779299996", 36.46124267600004]}}," {""type"": ""Feature"".27"," ""properties"": {""OBJECTID"": 8235"," ""CENTROIDLAT"": null.28"," ""CENTROIDLONG"": null.28"," ""CLOSESTCITY"": ""STOVEPIPE WELLS"""," ""CONGRESSIONALDISTRICT"": ""08"".8"," ""COUNTY"": ""INYO"".8"," ""CURRENTOWNER"": null.19"," ""DODFUDSPROPERTYIDPK"": "" "".28"," ""ELIGIBILITY"": ""Ineligible"".3"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=63184"""," ""EPAREGION"": ""09"".28"," ""FEATUREDESCRIPTION"": null.28"," ""FEATURENAME"": ""STOVEPIPE WELLS AIRPORT"""," ""FUDSINSTALLATIONID"": ""CA99799FA47400"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""J09CA7448"""," ""HASPROJECTS"": ""No"".19"," ""LATITUDE"": 36.60666667"," ""LONGITUDE"": -117.16416667"," ""MEDIAID"": null.28"," ""METADATAID"": null.28"," ""NOFURTHERACTION"": null.28"," ""PROJECTREQUIRED"": ""No"".19"," ""SDSID"": null.28"," ""SITEELIGIBILITY"": null.28"," ""STATE"": ""CA"".12"," ""STATUS"": ""Properties without projects"".19"," ""STATUSCODE"": ""Not on the NPL"".28"," ""USACEDISTRICT"": ""spl"".8"," ""FISCALYEAR"": ""2019"".28"," ""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""}.12"," ""geometry"": {""type"": ""Point"".28"," ""coordinates"": [-117.16418456999997", 36.60681152300003]}}," {""type"": ""Feature"".28"," ""properties"": {""OBJECTID"": 8237"," ""CENTROIDLAT"": null.29"," ""CENTROIDLONG"": null.29"," ""CLOSESTCITY"": ""TELESCOPE PEAK"""," ""CONGRESSIONALDISTRICT"": ""08"".9"," ""COUNTY"": ""INYO"".9"," ""CURRENTOWNER"": null.20"," ""DODFUDSPROPERTYIDPK"": "" "".29"," ""ELIGIBILITY"": ""Ineligible"".4"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=63186"""," ""EPAREGION"": ""09"".29"," ""FEATUREDESCRIPTION"": null.29"," ""FEATURENAME"": ""TELESCOPE PEAK"""," ""FUDSINSTALLATIONID"": ""CA99799FA47600"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""J09CA7450"""," ""HASPROJECTS"": ""No"".20"," ""LATITUDE"": 36.15833333"," ""LONGITUDE"": -117.06944444"," ""MEDIAID"": null.29"," ""METADATAID"": null.29"," ""NOFURTHERACTION"": null.29"," ""PROJECTREQUIRED"": ""No"".20"," ""SDSID"": null.29"," ""SITEELIGIBILITY"": null.29"," ""STATE"": ""CA"".13"," ""STATUS"": ""Properties without projects"".20"," ""STATUSCODE"": ""Not on the NPL"".29"," ""USACEDISTRICT"": ""spl"".9"," ""FISCALYEAR"": ""2019"".29"," ""PROPERTY_HISTORY"": ""N/A\r\n"".4"," ""USACEDIVISION"": ""spd""}.13"," ""geometry"": {""type"": ""Point"".29"," ""coordinates"": [-117.06939697299998", 36.158386230000076]}}," {""type"": ""Feature"".29"," ""properties"": {""OBJECTID"": 8499"," ""CENTROIDLAT"": null.30"," ""CENTROIDLONG"": null.30"," ""CLOSESTCITY"": ""KEELER"".1"," ""CONGRESSIONALDISTRICT"": ""08"".10"," ""COUNTY"": ""INYO"".10"," ""CURRENTOWNER"": null.21"," ""DODFUDSPROPERTYIDPK"": "" "".30"," ""ELIGIBILITY"": ""Ineligible"".5"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=53990"""," ""EPAREGION"": ""09"".30"," ""FEATUREDESCRIPTION"": null.30"," ""FEATURENAME"": ""KEELER TALC PLANT"""," ""FUDSINSTALLATIONID"": ""CA99799FA02100"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""J09CA7198"""," ""HASPROJECTS"": ""No"".21"," ""LATITUDE"": 36.4875"," ""LONGITUDE"": -117.87361111"," ""MEDIAID"": null.30"," ""METADATAID"": null.30"," ""NOFURTHERACTION"": null.30"," ""PROJECTREQUIRED"": ""No"".21"," ""SDSID"": null.30"," ""SITEELIGIBILITY"": null.30"," ""STATE"": ""CA"".14"," ""STATUS"": ""Properties without projects"".21"," ""STATUSCODE"": ""Not on the NPL"".30"," ""USACEDISTRICT"": ""spl"".10"," ""FISCALYEAR"": ""2019"".30"," ""PROPERTY_HISTORY"": ""N/A\r\n"".5"," ""USACEDIVISION"": ""spd""}.14"," ""geometry"": {""type"": ""Point"".30"," ""coordinates"": [-117.873596191", 36.487609863000046]}}," {""type"": ""Feature"".30"," ""properties"": {""OBJECTID"": 8500"," ""CENTROIDLAT"": null.31"," ""CENTROIDLONG"": null.31"," ""CLOSESTCITY"": ""SE OF INDEPENDENCE"""," ""CONGRESSIONALDISTRICT"": ""08"".11"," ""COUNTY"": ""KERN"""," ""CURRENTOWNER"": null.22"," ""DODFUDSPROPERTYIDPK"": "" "".31"," ""ELIGIBILITY"": ""Ineligible"".6"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=53989"""," ""EPAREGION"": ""09"".31"," ""FEATUREDESCRIPTION"": null.31"," ""FEATURENAME"": ""DEATH VALLEY SALT PLANT"""," ""FUDSINSTALLATIONID"": ""CA99799FA02400"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""J09CA7201"""," ""HASPROJECTS"": ""No"".22"," ""LATITUDE"": 36.28333333"," ""LONGITUDE"": -116.82972222"," ""MEDIAID"": null.31"," ""METADATAID"": null.31"," ""NOFURTHERACTION"": null.31"," ""PROJECTREQUIRED"": ""No"".22"," ""SDSID"": null.31"," ""SITEELIGIBILITY"": null.31"," ""STATE"": ""CA"".15"," ""STATUS"": ""Properties without projects"".22"," ""STATUSCODE"": ""Not on the NPL"".31"," ""USACEDISTRICT"": ""spl"".11"," ""FISCALYEAR"": ""2019"".31"," ""PROPERTY_HISTORY"": ""N/A\r\n"".6"," ""USACEDIVISION"": ""spd""}.15"," ""geometry"": {""type"": ""Point"".31"," ""coordinates"": [-116.82971191399997", 36.283386230000076]}}," {""type"": ""Feature"".31"," ""properties"": {""OBJECTID"": 8557"," ""CENTROIDLAT"": null.32"," ""CENTROIDLONG"": null.32"," ""CLOSESTCITY"": ""BALLARAT DRY LAKE"""," ""CONGRESSIONALDISTRICT"": ""08"".12"," ""COUNTY"": ""INYO"".11"," ""CURRENTOWNER"": null.23"," ""DODFUDSPROPERTYIDPK"": "" "".32"," ""ELIGIBILITY"": ""Eligible"".25"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=53852"""," ""EPAREGION"": ""09"".32"," ""FEATUREDESCRIPTION"": null.32"," ""FEATURENAME"": ""PANAMINT FLAT DRY LAKE"""," ""FUDSINSTALLATIONID"": ""CA99799F535900"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""J09CA0231"""," ""HASPROJECTS"": ""No"".23"," ""LATITUDE"": 35.95833333"," ""LONGITUDE"": -117.21666667"," ""MEDIAID"": null.32"," ""METADATAID"": null.32"," ""NOFURTHERACTION"": null.32"," ""PROJECTREQUIRED"": ""No"".23"," ""SDSID"": null.32"," ""SITEELIGIBILITY"": null.32"," ""STATE"": ""CA"".16"," ""STATUS"": ""Properties without projects"".23"," ""STATUSCODE"": ""Not on the NPL"".32"," ""USACEDISTRICT"": ""spl"".12"," ""FISCALYEAR"": ""2019"".32"," ""PROPERTY_HISTORY"": ""THIS SITE WAS AN EMERGENCY LANDING SITE FOR X-15 AIRCRAFT. """," ""USACEDIVISION"": ""spd""}.16"," ""geometry"": {""type"": ""Point"".32"," ""coordinates"": [-117.21667480499997", 35.95843505900007]}}," {""type"": ""Feature"".32"," ""properties"": {""OBJECTID"": 8624"," ""CENTROIDLAT"": null.33"," ""CENTROIDLONG"": null.33"," ""CLOSESTCITY"": ""LONE PINE"".1"," ""CONGRESSIONALDISTRICT"": ""08"".13"," ""COUNTY"": ""INYO"".12"," ""CURRENTOWNER"": null.24"," ""DODFUDSPROPERTYIDPK"": "" "".33"," ""ELIGIBILITY"": ""Ineligible"".7"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=54233"""," ""EPAREGION"": ""09"".33"," ""FEATUREDESCRIPTION"": null.33"," ""FEATURENAME"": ""LONE PINE AIRPORT"""," ""FUDSINSTALLATIONID"": ""CA99799FA02000"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""J09CA7197"""," ""HASPROJECTS"": ""No"".24"," ""LATITUDE"": 36.59472222"," ""LONGITUDE"": -118.05"," ""MEDIAID"": null.33"," ""METADATAID"": null.33"," ""NOFURTHERACTION"": null.33"," ""PROJECTREQUIRED"": ""No"".24"," ""SDSID"": null.33"," ""SITEELIGIBILITY"": null.33"," ""STATE"": ""CA"".17"," ""STATUS"": ""Properties without projects"".24"," ""STATUSCODE"": ""Not on the NPL"".33"," ""USACEDISTRICT"": ""spl"".13"," ""FISCALYEAR"": ""2019"".33"," ""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""}.17"," ""geometry"": {""type"": ""Point"".33"," ""coordinates"": [-118.04998779299996", 36.59478759800004]}}," {""type"": ""Feature"".33"," ""properties"": {""OBJECTID"": 8742"," ""CENTROIDLAT"": null.34"," ""CENTROIDLONG"": null.34"," ""CLOSESTCITY"": ""PANAMINT MOUNTAINS"""," ""CONGRESSIONALDISTRICT"": ""08"".14"," ""COUNTY"": ""INYO"".13"," ""CURRENTOWNER"": null.25"," ""DODFUDSPROPERTYIDPK"": "" "".34"," ""ELIGIBILITY"": ""Ineligible"".8"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=53467"""," ""EPAREGION"": ""09"".34"," ""FEATUREDESCRIPTION"": null.34"," ""FEATURENAME"": ""PANAMINT BOMBING & AERIAL GUNNERY RANGE"""," ""FUDSINSTALLATIONID"": ""CA99799FA33400"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""J09CA7314"""," ""HASPROJECTS"": ""No"".25"," ""LATITUDE"": 36.27777778"," ""LONGITUDE"": -117.03583333"," ""MEDIAID"": null.34"," ""METADATAID"": null.34"," ""NOFURTHERACTION"": null.34"," ""PROJECTREQUIRED"": ""No"".25"," ""SDSID"": null.34"," ""SITEELIGIBILITY"": null.34"," ""STATE"": ""CA"".18"," ""STATUS"": ""Properties without projects"".25"," ""STATUSCODE"": ""Not on the NPL"".34"," ""USACEDISTRICT"": ""spl"".14"," ""FISCALYEAR"": ""2019"".34"," ""PROPERTY_HISTORY"": ""N/A\r\n"".7"," ""USACEDIVISION"": ""spd""}.18"," ""geometry"": {""type"": ""Point"".34"," ""coordinates"": [-117.03576660199997", 36.27801513700007]}}," {""type"": ""Feature"".34"," ""properties"": {""OBJECTID"": 9012"," ""CENTROIDLAT"": null.35"," ""CENTROIDLONG"": null.35"," ""CLOSESTCITY"": ""7 MILES E OF TECOPA"""," ""CONGRESSIONALDISTRICT"": ""08"".15"," ""COUNTY"": ""INYO"".14"," ""CURRENTOWNER"": null.26"," ""DODFUDSPROPERTYIDPK"": "" "".35"," ""ELIGIBILITY"": ""Ineligible"".9"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=53984"""," ""EPAREGION"": ""09"".35"," ""FEATUREDESCRIPTION"": null.35"," ""FEATURENAME"": ""SHOSHONE LEAD MINES"""," ""FUDSINSTALLATIONID"": ""CA99799FA03200"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""J09CA7209"""," ""HASPROJECTS"": ""No"".26"," ""LATITUDE"": 35.83361111"," ""LONGITUDE"": -116.10027778"," ""MEDIAID"": null.35"," ""METADATAID"": null.35"," ""NOFURTHERACTION"": null.35"," ""PROJECTREQUIRED"": ""No"".26"," ""SDSID"": null.35"," ""SITEELIGIBILITY"": null.35"," ""STATE"": ""CA"".19"," ""STATUS"": ""Properties without projects"".26"," ""STATUSCODE"": ""Not on the NPL"".35"," ""USACEDISTRICT"": ""spl"".15"," ""FISCALYEAR"": ""2019"".35"," ""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""}.19"," ""geometry"": {""type"": ""Point"".35"," ""coordinates"": [-116.10028076199995", 35.83380127000004]}}," {""type"": ""Feature"".35"," ""properties"": {""OBJECTID"": 9035"," ""CENTROIDLAT"": null.36"," ""CENTROIDLONG"": null.36"," ""CLOSESTCITY"": ""CHINA LAKE NAVAL WEAPONS CENTER"""," ""CONGRESSIONALDISTRICT"": ""08"".16"," ""COUNTY"": ""INYO"".15"," ""CURRENTOWNER"": null.27"," ""DODFUDSPROPERTYIDPK"": "" "".36"," ""ELIGIBILITY"": ""Eligible"".26"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=53986"""," ""EPAREGION"": ""09"".36"," ""FEATUREDESCRIPTION"": null.36"," ""FEATURENAME"": ""NAVAL ORDNANCE TEST STATION"""," ""FUDSINSTALLATIONID"": ""CA99799FA03300"""," ""FUDSUNIQUEPROPERTYNUMBER"": ""J09CA7210"""," ""HASPROJECTS"": ""Yes"".9"," ""LATITUDE"": 36.1441"," ""LONGITUDE"": -117.864998"," ""MEDIAID"": null.36"," ""METADATAID"": null.36"," ""NOFURTHERACTION"": null.36"," ""PROJECTREQUIRED"": ""Yes"".9"," ""SDSID"": null.36"," ""SITEELIGIBILITY"": null.36"," ""STATE"": ""CA"".20"," ""STATUS"": ""Properties with all projects at site closeout"".6"," ""STATUSCODE"": ""Not on the NPL"".36"," ""USACEDISTRICT"": ""spl"".16"," ""FISCALYEAR"": ""2019"".36"," ""PROPERTY_HISTORY"": ""N/A\r\n\r\n"""," ""USACEDIVISION"": ""spd""}.20"," ""geometry"": {""type"": ""Point"".36"," ""coordinates"": [-117.86499023399995", 36.14422607400007]}}," {""type"": ""Feature"".36"," ""properties"": {""OBJECTID"": 51"," ""CENTROIDLAT"": null.37"," ""CENTROIDLONG"": null.37"," ""CLOSESTCITY"": null"," ""CONGRESSIONALDISTRICT"": ""15"""," ""COUNTY"": null"," ""CURRENTOWNER"": null.28"," ""DODFUDSPROPERTYIDPK"": "" "".37"," ""ELIGIBILITY"": ""Eligible"".27"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=54113"""," ""EPAREGION"": ""06"""," ""FEATUREDESCRIPTION"": null.37"," ""FEATURENAME"": ""NEIL", ET AL," PROPERTIES"""," ""FUDSINSTALLATIONID"": null"," ""FUDSUNIQUEPROPERTYNUMBER"": ""K06TX1120"""," ""HASPROJECTS"": ""Yes"".10"," ""LATITUDE"": 19.497857096442765"," ""LONGITUDE"": -155.10320912843935"," ""MEDIAID"": null.37"," ""METADATAID"": null.37"," ""NOFURTHERACTION"": null.37"," ""PROJECTREQUIRED"": ""No"".27"," ""SDSID"": null.37"," ""SITEELIGIBILITY"": null.37"," ""STATE"": ""CA"".21"," ""STATUS"": ""Properties with projects"".3"," ""STATUSCODE"": ""Not on the NPL"".37"," ""USACEDISTRICT"": ""swf"""," ""FISCALYEAR"": ""2019"".37"," ""PROPERTY_HISTORY"": null"," ""USACEDIVISION"": ""swd""}"," ""geometry"": {""type"": ""Point"".37"," ""coordinates"": [-155.10320912843935", 19.497857096442765]}}," {""type"": ""Feature"".37"," ""properties"": {""OBJECTID"": 52"," ""CENTROIDLAT"": null.38"," ""CENTROIDLONG"": null.38"," ""CLOSESTCITY"": null.1"," ""CONGRESSIONALDISTRICT"": ""15"".1"," ""COUNTY"": null.1"," ""CURRENTOWNER"": null.29"," ""DODFUDSPROPERTYIDPK"": "" "".38"," ""ELIGIBILITY"": ""Ineligible"".10"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=54113"".1"," ""EPAREGION"": ""06"".1"," ""FEATUREDESCRIPTION"": null.38"," ""FEATURENAME"": ""NEIL.1", ET AL.1," PROPERTIES"".1"," ""FUDSINSTALLATIONID"": null.1"," ""FUDSUNIQUEPROPERTYNUMBER"": ""K06TX1120"".1"," ""HASPROJECTS"": ""Yes"".11"," ""LATITUDE"": 19.497857096442765.1"," ""LONGITUDE"": -155.10320912843935.1"," ""MEDIAID"": null.38"," ""METADATAID"": null.38"," ""NOFURTHERACTION"": null.38"," ""PROJECTREQUIRED"": ""No"".28"," ""SDSID"": null.38"," ""SITEELIGIBILITY"": null.38"," ""STATE"": ""CA"".22"," ""STATUS"": ""Properties with projects"".4"," ""STATUSCODE"": ""Not on the NPL"".38"," ""USACEDISTRICT"": ""swf"".1"," ""FISCALYEAR"": ""2019"".38"," ""PROPERTY_HISTORY"": null.1"," ""USACEDIVISION"": ""swd""}.1"," ""geometry"": {""type"": ""Point"".38"," ""coordinates"": [-155.10320912843935.1", 19.497857096442765]}}.1," {""type"": ""Feature"".38"," ""properties"": {""OBJECTID"": 53"," ""CENTROIDLAT"": null.39"," ""CENTROIDLONG"": null.39"," ""CLOSESTCITY"": null.2"," ""CONGRESSIONALDISTRICT"": ""15"".2"," ""COUNTY"": null.2"," ""CURRENTOWNER"": null.30"," ""DODFUDSPROPERTYIDPK"": "" "".39"," ""ELIGIBILITY"": ""Ineligible"".11"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=54113"".2"," ""EPAREGION"": ""06"".2"," ""FEATUREDESCRIPTION"": null.39"," ""FEATURENAME"": ""NEIL.2", ET AL.2," PROPERTIES"".2"," ""FUDSINSTALLATIONID"": null.2"," ""FUDSUNIQUEPROPERTYNUMBER"": ""K06TX1120"".2"," ""HASPROJECTS"": ""No"".27"," ""LATITUDE"": 19.497857096442765.2"," ""LONGITUDE"": -155.10320912843935.2"," ""MEDIAID"": null.39"," ""METADATAID"": null.39"," ""NOFURTHERACTION"": null.39"," ""PROJECTREQUIRED"": ""No"".29"," ""SDSID"": null.39"," ""SITEELIGIBILITY"": null.39"," ""STATE"": ""CA"".23"," ""STATUS"": ""Properties without projects"".27"," ""STATUSCODE"": ""Not on the NPL"".39"," ""USACEDISTRICT"": ""swf"".2"," ""FISCALYEAR"": ""2019"".39"," ""PROPERTY_HISTORY"": null.2"," ""USACEDIVISION"": ""swd""}.2"," ""geometry"": {""type"": ""Point"".39"," ""coordinates"": [-155.10320912843935.2", 19.497857096442765]}}.2," {""type"": ""Feature"".39"," ""properties"": {""OBJECTID"": 54"," ""CENTROIDLAT"": null.40"," ""CENTROIDLONG"": null.40"," ""CLOSESTCITY"": null.3"," ""CONGRESSIONALDISTRICT"": ""15"".3"," ""COUNTY"": null.3"," ""CURRENTOWNER"": null.31"," ""DODFUDSPROPERTYIDPK"": "" "".40"," ""ELIGIBILITY"": ""Eligible"".28"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=54113"".3"," ""EPAREGION"": ""06"".3"," ""FEATUREDESCRIPTION"": null.40"," ""FEATURENAME"": ""NEIL.3", ET AL.3," PROPERTIES"".3"," ""FUDSINSTALLATIONID"": null.3"," ""FUDSUNIQUEPROPERTYNUMBER"": ""K06TX1120"".3"," ""HASPROJECTS"": ""Yes"".12"," ""LATITUDE"": 19.516632121497878"," ""LONGITUDE"": -155.91378674587037"," ""MEDIAID"": null.40"," ""METADATAID"": null.40"," ""NOFURTHERACTION"": null.40"," ""PROJECTREQUIRED"": ""No"".30"," ""SDSID"": null.40"," ""SITEELIGIBILITY"": null.40"," ""STATE"": ""CA"".24"," ""STATUS"": ""Properties with projects"".5"," ""STATUSCODE"": ""Not on the NPL"".40"," ""USACEDISTRICT"": ""swf"".3"," ""FISCALYEAR"": ""2019"".40"," ""PROPERTY_HISTORY"": null.3"," ""USACEDIVISION"": ""swd""}.3"," ""geometry"": {""type"": ""Point"".40"," ""coordinates"": [-155.91378674587037", 19.516632121497878]}}," {""type"": ""Feature"".40"," ""properties"": {""OBJECTID"": 55"," ""CENTROIDLAT"": null.41"," ""CENTROIDLONG"": null.41"," ""CLOSESTCITY"": null.4"," ""CONGRESSIONALDISTRICT"": ""15"".4"," ""COUNTY"": null.4"," ""CURRENTOWNER"": null.32"," ""DODFUDSPROPERTYIDPK"": "" "".41"," ""ELIGIBILITY"": ""Ineligible"".12"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=54113"".4"," ""EPAREGION"": ""06"".4"," ""FEATUREDESCRIPTION"": null.41"," ""FEATURENAME"": ""NEIL.4", ET AL.4," PROPERTIES"".4"," ""FUDSINSTALLATIONID"": null.4"," ""FUDSUNIQUEPROPERTYNUMBER"": ""K06TX1120"".4"," ""HASPROJECTS"": ""Yes"".13"," ""LATITUDE"": 19.516632121497878.1"," ""LONGITUDE"": -155.91378674587037.1"," ""MEDIAID"": null.41"," ""METADATAID"": null.41"," ""NOFURTHERACTION"": null.41"," ""PROJECTREQUIRED"": ""No"".31"," ""SDSID"": null.41"," ""SITEELIGIBILITY"": null.41"," ""STATE"": ""CA"".25"," ""STATUS"": ""Properties with projects"".6"," ""STATUSCODE"": ""Not on the NPL"".41"," ""USACEDISTRICT"": ""swf"".4"," ""FISCALYEAR"": ""2019"".41"," ""PROPERTY_HISTORY"": null.4"," ""USACEDIVISION"": ""swd""}.4"," ""geometry"": {""type"": ""Point"".41"," ""coordinates"": [-155.91378674587037.1", 19.516632121497878]}}.1," {""type"": ""Feature"".41"," ""properties"": {""OBJECTID"": 56"," ""CENTROIDLAT"": null.42"," ""CENTROIDLONG"": null.42"," ""CLOSESTCITY"": null.5"," ""CONGRESSIONALDISTRICT"": ""15"".5"," ""COUNTY"": null.5"," ""CURRENTOWNER"": null.33"," ""DODFUDSPROPERTYIDPK"": "" "".42"," ""ELIGIBILITY"": ""Ineligible"".13"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=54113"".5"," ""EPAREGION"": ""06"".5"," ""FEATUREDESCRIPTION"": null.42"," ""FEATURENAME"": ""NEIL.5", ET AL.5," PROPERTIES"".5"," ""FUDSINSTALLATIONID"": null.5"," ""FUDSUNIQUEPROPERTYNUMBER"": ""K06TX1120"".5"," ""HASPROJECTS"": ""No"".28"," ""LATITUDE"": 19.516632121497878.2"," ""LONGITUDE"": -155.91378674587037.2"," ""MEDIAID"": null.42"," ""METADATAID"": null.42"," ""NOFURTHERACTION"": null.42"," ""PROJECTREQUIRED"": ""No"".32"," ""SDSID"": null.42"," ""SITEELIGIBILITY"": null.42"," ""STATE"": ""CA"".26"," ""STATUS"": ""Properties without projects"".28"," ""STATUSCODE"": ""Not on the NPL"".42"," ""USACEDISTRICT"": ""swf"".5"," ""FISCALYEAR"": ""2019"".42"," ""PROPERTY_HISTORY"": null.5"," ""USACEDIVISION"": ""swd""}.5"," ""geometry"": {""type"": ""Point"".42"," ""coordinates"": [-155.91378674587037.2", 19.516632121497878]}}.2," {""type"": ""Feature"".42"," ""properties"": {""OBJECTID"": 57"," ""CENTROIDLAT"": null.43"," ""CENTROIDLONG"": null.43"," ""CLOSESTCITY"": null.6"," ""CONGRESSIONALDISTRICT"": ""15"".6"," ""COUNTY"": null.6"," ""CURRENTOWNER"": null.34"," ""DODFUDSPROPERTYIDPK"": "" "".43"," ""ELIGIBILITY"": ""Eligible"".29"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=54113"".6"," ""EPAREGION"": ""06"".6"," ""FEATUREDESCRIPTION"": null.43"," ""FEATURENAME"": ""NEIL.6", ET AL.6," PROPERTIES"".6"," ""FUDSINSTALLATIONID"": null.6"," ""FUDSUNIQUEPROPERTYNUMBER"": ""K06TX1120"".6"," ""HASPROJECTS"": ""Yes"".14"," ""LATITUDE"": 20.825377142028497"," ""LONGITUDE"": -156.3306524489697"," ""MEDIAID"": null.43"," ""METADATAID"": null.43"," ""NOFURTHERACTION"": null.43"," ""PROJECTREQUIRED"": ""No"".33"," ""SDSID"": null.43"," ""SITEELIGIBILITY"": null.43"," ""STATE"": ""CA"".27"," ""STATUS"": ""Properties with projects"".7"," ""STATUSCODE"": ""Not on the NPL"".43"," ""USACEDISTRICT"": ""swf"".6"," ""FISCALYEAR"": ""2019"".43"," ""PROPERTY_HISTORY"": null.6"," ""USACEDIVISION"": ""swd""}.6"," ""geometry"": {""type"": ""Point"".43"," ""coordinates"": [-156.3306524489697", 20.825377142028497]}}," {""type"": ""Feature"".43"," ""properties"": {""OBJECTID"": 58"," ""CENTROIDLAT"": null.44"," ""CENTROIDLONG"": null.44"," ""CLOSESTCITY"": null.7"," ""CONGRESSIONALDISTRICT"": ""15"".7"," ""COUNTY"": null.7"," ""CURRENTOWNER"": null.35"," ""DODFUDSPROPERTYIDPK"": "" "".44"," ""ELIGIBILITY"": ""Ineligible"".14"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=54113"".7"," ""EPAREGION"": ""06"".7"," ""FEATUREDESCRIPTION"": null.44"," ""FEATURENAME"": ""NEIL.7", ET AL.7," PROPERTIES"".7"," ""FUDSINSTALLATIONID"": null.7"," ""FUDSUNIQUEPROPERTYNUMBER"": ""K06TX1120"".7"," ""HASPROJECTS"": ""Yes"".15"," ""LATITUDE"": 20.825377142028497.1"," ""LONGITUDE"": -156.3306524489697.1"," ""MEDIAID"": null.44"," ""METADATAID"": null.44"," ""NOFURTHERACTION"": null.44"," ""PROJECTREQUIRED"": ""No"".34"," ""SDSID"": null.44"," ""SITEELIGIBILITY"": null.44"," ""STATE"": ""CA"".28"," ""STATUS"": ""Properties with projects"".8"," ""STATUSCODE"": ""Not on the NPL"".44"," ""USACEDISTRICT"": ""swf"".7"," ""FISCALYEAR"": ""2019"".44"," ""PROPERTY_HISTORY"": null.7"," ""USACEDIVISION"": ""swd""}.7"," ""geometry"": {""type"": ""Point"".44"," ""coordinates"": [-156.3306524489697.1", 20.825377142028497]}}.1," {""type"": ""Feature"".44"," ""properties"": {""OBJECTID"": 59"," ""CENTROIDLAT"": null.45"," ""CENTROIDLONG"": null.45"," ""CLOSESTCITY"": null.8"," ""CONGRESSIONALDISTRICT"": ""15"".8"," ""COUNTY"": null.8"," ""CURRENTOWNER"": null.36"," ""DODFUDSPROPERTYIDPK"": "" "".45"," ""ELIGIBILITY"": ""Ineligible"".15"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=54113"".8"," ""EPAREGION"": ""06"".8"," ""FEATUREDESCRIPTION"": null.45"," ""FEATURENAME"": ""NEIL.8", ET AL.8," PROPERTIES"".8"," ""FUDSINSTALLATIONID"": null.8"," ""FUDSUNIQUEPROPERTYNUMBER"": ""K06TX1120"".8"," ""HASPROJECTS"": ""No"".29"," ""LATITUDE"": 20.825377142028497.2"," ""LONGITUDE"": -156.3306524489697.2"," ""MEDIAID"": null.45"," ""METADATAID"": null.45"," ""NOFURTHERACTION"": null.45"," ""PROJECTREQUIRED"": ""No"".35"," ""SDSID"": null.45"," ""SITEELIGIBILITY"": null.45"," ""STATE"": ""CA"".29"," ""STATUS"": ""Properties without projects"".29"," ""STATUSCODE"": ""Not on the NPL"".45"," ""USACEDISTRICT"": ""swf"".8"," ""FISCALYEAR"": ""2019"".45"," ""PROPERTY_HISTORY"": null.8"," ""USACEDIVISION"": ""swd""}.8"," ""geometry"": {""type"": ""Point"".45"," ""coordinates"": [-156.3306524489697.2", 20.825377142028497]}}.2," {""type"": ""Feature"".45"," ""properties"": {""OBJECTID"": 60"," ""CENTROIDLAT"": null.46"," ""CENTROIDLONG"": null.46"," ""CLOSESTCITY"": null.9"," ""CONGRESSIONALDISTRICT"": ""15"".9"," ""COUNTY"": null.9"," ""CURRENTOWNER"": null.37"," ""DODFUDSPROPERTYIDPK"": "" "".46"," ""ELIGIBILITY"": ""Eligible"".30"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=54113"".9"," ""EPAREGION"": ""06"".9"," ""FEATUREDESCRIPTION"": null.46"," ""FEATURENAME"": ""NEIL.9", ET AL.9," PROPERTIES"".9"," ""FUDSINSTALLATIONID"": null.9"," ""FUDSUNIQUEPROPERTYNUMBER"": ""K06TX1120"".9"," ""HASPROJECTS"": ""Yes"".16"," ""LATITUDE"": 20.917074254751412"," ""LONGITUDE"": -156.5429023670438"," ""MEDIAID"": null.46"," ""METADATAID"": null.46"," ""NOFURTHERACTION"": null.46"," ""PROJECTREQUIRED"": ""No"".36"," ""SDSID"": null.46"," ""SITEELIGIBILITY"": null.46"," ""STATE"": ""CA"".30"," ""STATUS"": ""Properties with projects"".9"," ""STATUSCODE"": ""Not on the NPL"".46"," ""USACEDISTRICT"": ""swf"".9"," ""FISCALYEAR"": ""2019"".46"," ""PROPERTY_HISTORY"": null.9"," ""USACEDIVISION"": ""swd""}.9"," ""geometry"": {""type"": ""Point"".46"," ""coordinates"": [-156.5429023670438", 20.917074254751412]}}," {""type"": ""Feature"".46"," ""properties"": {""OBJECTID"": 61"," ""CENTROIDLAT"": null.47"," ""CENTROIDLONG"": null.47"," ""CLOSESTCITY"": null.10"," ""CONGRESSIONALDISTRICT"": ""15"".10"," ""COUNTY"": null.10"," ""CURRENTOWNER"": null.38"," ""DODFUDSPROPERTYIDPK"": "" "".47"," ""ELIGIBILITY"": ""Ineligible"".16"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=54113"".10"," ""EPAREGION"": ""06"".10"," ""FEATUREDESCRIPTION"": null.47"," ""FEATURENAME"": ""NEIL.10", ET AL.10," PROPERTIES"".10"," ""FUDSINSTALLATIONID"": null.10"," ""FUDSUNIQUEPROPERTYNUMBER"": ""K06TX1120"".10"," ""HASPROJECTS"": ""Yes"".17"," ""LATITUDE"": 20.917074254751412.1"," ""LONGITUDE"": -156.5429023670438.1"," ""MEDIAID"": null.47"," ""METADATAID"": null.47"," ""NOFURTHERACTION"": null.47"," ""PROJECTREQUIRED"": ""No"".37"," ""SDSID"": null.47"," ""SITEELIGIBILITY"": null.47"," ""STATE"": ""CA"".31"," ""STATUS"": ""Properties with projects"".10"," ""STATUSCODE"": ""Not on the NPL"".47"," ""USACEDISTRICT"": ""swf"".10"," ""FISCALYEAR"": ""2019"".47"," ""PROPERTY_HISTORY"": null.10"," ""USACEDIVISION"": ""swd""}.10"," ""geometry"": {""type"": ""Point"".47"," ""coordinates"": [-156.5429023670438.1", 20.917074254751412]}}.1," {""type"": ""Feature"".47"," ""properties"": {""OBJECTID"": 62"," ""CENTROIDLAT"": null.48"," ""CENTROIDLONG"": null.48"," ""CLOSESTCITY"": null.11"," ""CONGRESSIONALDISTRICT"": ""15"".11"," ""COUNTY"": null.11"," ""CURRENTOWNER"": null.39"," ""DODFUDSPROPERTYIDPK"": "" "".48"," ""ELIGIBILITY"": ""Ineligible"".17"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=54113"".11"," ""EPAREGION"": ""06"".11"," ""FEATUREDESCRIPTION"": null.48"," ""FEATURENAME"": ""NEIL.11", ET AL.11," PROPERTIES"".11"," ""FUDSINSTALLATIONID"": null.11"," ""FUDSUNIQUEPROPERTYNUMBER"": ""K06TX1120"".11"," ""HASPROJECTS"": ""No"".30"," ""LATITUDE"": 20.917074254751412.2"," ""LONGITUDE"": -156.5429023670438.2"," ""MEDIAID"": null.48"," ""METADATAID"": null.48"," ""NOFURTHERACTION"": null.48"," ""PROJECTREQUIRED"": ""No"".38"," ""SDSID"": null.48"," ""SITEELIGIBILITY"": null.48"," ""STATE"": ""CA"".32"," ""STATUS"": ""Properties without projects"".30"," ""STATUSCODE"": ""Not on the NPL"".48"," ""USACEDISTRICT"": ""swf"".11"," ""FISCALYEAR"": ""2019"".48"," ""PROPERTY_HISTORY"": null.11"," ""USACEDIVISION"": ""swd""}.11"," ""geometry"": {""type"": ""Point"".48"," ""coordinates"": [-156.5429023670438.2", 20.917074254751412]}}.2," {""type"": ""Feature"".48"," ""properties"": {""OBJECTID"": 63"," ""CENTROIDLAT"": null.49"," ""CENTROIDLONG"": null.49"," ""CLOSESTCITY"": null.12"," ""CONGRESSIONALDISTRICT"": ""15"".12"," ""COUNTY"": null.12"," ""CURRENTOWNER"": null.40"," ""DODFUDSPROPERTYIDPK"": "" "".49"," ""ELIGIBILITY"": ""Eligible"".31"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=54113"".12"," ""EPAREGION"": ""06"".12"," ""FEATUREDESCRIPTION"": null.49"," ""FEATURENAME"": ""NEIL.12", ET AL.12," PROPERTIES"".12"," ""FUDSINSTALLATIONID"": null.12"," ""FUDSUNIQUEPROPERTYNUMBER"": ""K06TX1120"".12"," ""HASPROJECTS"": ""Yes"".18"," ""LATITUDE"": 21.907546119100093"," ""LONGITUDE"": -159.48416820625405"," ""MEDIAID"": null.49"," ""METADATAID"": null.49"," ""NOFURTHERACTION"": null.49"," ""PROJECTREQUIRED"": ""No"".39"," ""SDSID"": null.49"," ""SITEELIGIBILITY"": null.49"," ""STATE"": ""CA"".33"," ""STATUS"": ""Properties with projects"".11"," ""STATUSCODE"": ""Not on the NPL"".49"," ""USACEDISTRICT"": ""swf"".12"," ""FISCALYEAR"": ""2019"".49"," ""PROPERTY_HISTORY"": null.12"," ""USACEDIVISION"": ""swd""}.12"," ""geometry"": {""type"": ""Point"".49"," ""coordinates"": [-159.48416820625405", 21.907546119100093]}}," {""type"": ""Feature"".49"," ""properties"": {""OBJECTID"": 64"," ""CENTROIDLAT"": null.50"," ""CENTROIDLONG"": null.50"," ""CLOSESTCITY"": null.13"," ""CONGRESSIONALDISTRICT"": ""15"".13"," ""COUNTY"": null.13"," ""CURRENTOWNER"": null.41"," ""DODFUDSPROPERTYIDPK"": "" "".50"," ""ELIGIBILITY"": ""Ineligible"".18"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=54113"".13"," ""EPAREGION"": ""06"".13"," ""FEATUREDESCRIPTION"": null.50"," ""FEATURENAME"": ""NEIL.13", ET AL.13," PROPERTIES"".13"," ""FUDSINSTALLATIONID"": null.13"," ""FUDSUNIQUEPROPERTYNUMBER"": ""K06TX1120"".13"," ""HASPROJECTS"": ""Yes"".19"," ""LATITUDE"": 21.907546119100093.1"," ""LONGITUDE"": -159.48416820625405.1"," ""MEDIAID"": null.50"," ""METADATAID"": null.50"," ""NOFURTHERACTION"": null.50"," ""PROJECTREQUIRED"": ""No"".40"," ""SDSID"": null.50"," ""SITEELIGIBILITY"": null.50"," ""STATE"": ""CA"".34"," ""STATUS"": ""Properties with projects"".12"," ""STATUSCODE"": ""Not on the NPL"".50"," ""USACEDISTRICT"": ""swf"".13"," ""FISCALYEAR"": ""2019"".50"," ""PROPERTY_HISTORY"": null.13"," ""USACEDIVISION"": ""swd""}.13"," ""geometry"": {""type"": ""Point"".50"," ""coordinates"": [-159.48416820625405.1", 21.907546119100093]}}.1," {""type"": ""Feature"".50"," ""properties"": {""OBJECTID"": 65"," ""CENTROIDLAT"": null.51"," ""CENTROIDLONG"": null.51"," ""CLOSESTCITY"": null.14"," ""CONGRESSIONALDISTRICT"": ""15"".14"," ""COUNTY"": null.14"," ""CURRENTOWNER"": null.42"," ""DODFUDSPROPERTYIDPK"": "" "".51"," ""ELIGIBILITY"": ""Ineligible"".19"," ""EMSMGMTACTIONPLANLINK"": ""https://fudsportal.usace.army.mil/ems/inventory/map?id=54113"".14"," ""EPAREGION"": ""06"".14"," ""FEATUREDESCRIPTION"": null.51"," ""FEATURENAME"": ""NEIL.14", ET AL.14," PROPERTIES"".14"," ""FUDSINSTALLATIONID"": null.14"," ""FUDSUNIQUEPROPERTYNUMBER"": ""K06TX1120"".14"," ""HASPROJECTS"": ""No"".31"," ""LATITUDE"": 21.907546119100093.2"," ""LONGITUDE"": -159.48416820625405.2"," ""MEDIAID"": null.51"," ""METADATAID"": null.51"," ""NOFURTHERACTION"": null.51"," ""PROJECTREQUIRED"": ""No"".41"," ""SDSID"": null.51"," ""SITEELIGIBILITY"": null.51"," ""STATE"": ""CA"".35"," ""STATUS"": ""Properties without projects"".31"," ""STATUSCODE"": ""Not on the NPL"".51"," ""USACEDISTRICT"": ""swf"".14"," ""FISCALYEAR"": ""2019"".51"," ""PROPERTY_HISTORY"": null.14"," ""USACEDIVISION"": ""swd""}.14"," ""geometry"": {""type"": ""Point"".51"," ""coordinates"": [-159.48416820625405.2", 21.907546119100093]}}]} 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 new file mode 100644 index 000000000..8a7a12251 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/us_army_fuds/data/fuds.geojson @@ -0,0 +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]}}]} diff --git a/data/data-pipeline/data_pipeline/tests/sources/us_army_fuds/data/output.csv b/data/data-pipeline/data_pipeline/tests/sources/us_army_fuds/data/output.csv new file mode 100644 index 000000000..38b5685cc --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/us_army_fuds/data/output.csv @@ -0,0 +1,16 @@ +GEOID10_TRACT,Count of eligible Formerly Used Defense Site (FUDS) properties centroids,Count of ineligible Formerly Used Defense Site (FUDS) properties centroids,Is there at least one Formerly Used Defense Site (FUDS) in the tract? +06027000800,3,14,True +06061021322,1,2,True +06069000802,1,0,True +15001021010,1,2,True +15001021101,0,1,False +15001021402,1,2,True +15001021800,1,2,True +15003010201,2,1,True +15007040603,0,2,False +15007040604,1,2,True +15007040700,1,2,True +15009030100,0,1,False +15009030201,1,2,True +15009030402,1,2,True +15009030800,1,2,True diff --git a/data/data-pipeline/data_pipeline/tests/sources/us_army_fuds/data/transform.csv b/data/data-pipeline/data_pipeline/tests/sources/us_army_fuds/data/transform.csv new file mode 100644 index 000000000..38b5685cc --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/us_army_fuds/data/transform.csv @@ -0,0 +1,16 @@ +GEOID10_TRACT,Count of eligible Formerly Used Defense Site (FUDS) properties centroids,Count of ineligible Formerly Used Defense Site (FUDS) properties centroids,Is there at least one Formerly Used Defense Site (FUDS) in the tract? +06027000800,3,14,True +06061021322,1,2,True +06069000802,1,0,True +15001021010,1,2,True +15001021101,0,1,False +15001021402,1,2,True +15001021800,1,2,True +15003010201,2,1,True +15007040603,0,2,False +15007040604,1,2,True +15007040700,1,2,True +15009030100,0,1,False +15009030201,1,2,True +15009030402,1,2,True +15009030800,1,2,True 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 new file mode 100644 index 000000000..58e755662 --- /dev/null +++ b/data/data-pipeline/data_pipeline/tests/sources/us_army_fuds/test_etl.py @@ -0,0 +1,192 @@ +# pylint: disable=protected-access +import pathlib +from unittest import mock + +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 + +logger = get_module_logger(__name__) + + +def _fake_add_tracts_for_geometries(df): + """The actual geojoin is too slow for tests. Use precomputed results.""" + lookups = { + (-121.39361572299998, 38.87463378900003): "06061021322", + (-121.40020751999998, 38.897583008000026): "06061021322", + (-121.40020751999998, 38.75158691400003): "06061021322", + (-157.84301757799997, 21.53619384800004): "15003010201", + (-157.85168456999997, 21.553405762000068): "15003010201", + (-157.90679931599996, 21.554199219000054): "15003010201", + (-159.52191162099996, 21.976623535000044): "15007040700", + (-159.52996826199998, 21.93762207000003): "15007040700", + (-159.52111816399997, 21.922607422000056): "15007040700", + (-156.14270019499997, 20.840393066000047): "15009030100", + (-155.85968017599998, 20.26519775400004): "15001021800", + (-155.73327636699997, 20.166809082000043): "15001021800", + (-155.89270019499997, 20.23522949200003): "15001021800", + (-156.26019287099996, 20.899414062000062): "15009030201", + (-156.22076415999996, 20.91241455100004): "15009030201", + (-156.20739746099997, 20.890991211000028): "15009030201", + (-159.46496581999997, 21.90460205100004): "15007040603", + (-159.46441650399998, 21.905212402000075): "15007040603", + (-154.82519531299997, 19.49182128900003): "15001021101", + (-121.06768798799999, 36.61480712900004): "06069000802", + (-117.391601563, 36.33343505900007): "06027000800", + (-117.85546874999994, 36.46960449200003): "06027000800", + (-117.23529052699996, 36.387634277000075): "06027000800", + (-118.15270996099997, 36.725219727000024): "06027000800", + (-118.13891601599994, 36.56683349600007): "06027000800", + (-117.311096191, 36.783386230000076): "06027000800", + (-118.00030517599998, 36.283813477000024): "06027000800", + (-116.86248779299996, 36.46124267600004): "06027000800", + (-117.16418456999997, 36.60681152300003): "06027000800", + (-117.06939697299998, 36.158386230000076): "06027000800", + (-117.873596191, 36.487609863000046): "06027000800", + (-116.82971191399997, 36.283386230000076): "06027000800", + (-117.21667480499997, 35.95843505900007): "06027000800", + (-118.04998779299996, 36.59478759800004): "06027000800", + (-117.03576660199997, 36.27801513700007): "06027000800", + (-116.10028076199995, 35.83380127000004): "06027000800", + (-117.86499023399995, 36.14422607400007): "06027000800", + (-155.10320912843935, 19.497857096442765): "15001021010", + (-155.91378674587037, 19.516632121497878): "15001021402", + (-156.3306524489697, 20.825377142028497): "15009030402", + (-156.5429023670438, 20.917074254751412): "15009030800", + (-159.48416820625405, 21.907546119100093): "15007040604", + } + df["GEOID10_TRACT"] = df.geometry.apply( + lambda point: lookups[(point.x, point.y)] + ) + return df + + +class TestUSArmyFUDSETL(TestETL): + """Tests the FUDS ETL. + + This uses pytest-snapshot. + To update individual snapshots: $ poetry run pytest + data_pipeline/tests/sources/us_army_fuds/test_etl.py::TestClassNameETL:: + --snapshot-update + """ + + _ETL_CLASS = USArmyFUDS + + _SAMPLE_DATA_PATH = pathlib.Path(__file__).parents[0] / "data" + _SAMPLE_DATA_FILE_NAME = "fuds.geojson" + _SAMPLE_DATA_ZIP_FILE_NAME = "fuds.geojson" + _EXTRACT_TMP_FOLDER_NAME = "USArmyFUDS" + + def setup_method(self, _method, filename=__file__): + """Invoke `setup_method` from Parent, but using the current file name. + + This code can be copied identically between all child classes. + """ + super().setup_method(_method=_method, filename=filename) + + def test_init(self, mock_etl, mock_paths): + """Tests that the mock NationalRiskIndexETL class instance was + initiliazed correctly. + + Validates the following conditions: + - self.DATA_PATH points to the "data" folder in the temp directory + - self.TMP_PATH points to the "data/tmp" folder in the temp directory + - self.INPUT_PATH points to the correct path in the temp directory + - self.OUTPUT_PATH points to the correct path in the temp directory + """ + # setup + etl = self._get_instance_of_etl_class() + # validation + assert etl.GEOID_FIELD_NAME == "GEOID10" + assert etl.GEOID_TRACT_FIELD_NAME == "GEOID10_TRACT" + assert etl.NAME == "us_army_fuds" + assert etl.GEO_LEVEL == ValidGeoLevel.CENSUS_TRACT + assert etl.COLUMNS_TO_KEEP == [ + etl.GEOID_TRACT_FIELD_NAME, + etl.ELIGIBLE_FUDS_COUNT_FIELD_NAME, + etl.INELIGIBLE_FUDS_COUNT_FIELD_NAME, + etl.ELIGIBLE_FUDS_BINARY_FIELD_NAME, + ] + + def test_get_output_file_path(self, mock_etl, mock_paths): + """Tests the right file name is returned.""" + etl = self._get_instance_of_etl_class() + data_path, tmp_path = mock_paths + + output_file_path = etl._get_output_file_path() + expected_output_file_path = ( + data_path / "dataset" / self._ETL_CLASS.NAME / "usa.csv" + ) + assert output_file_path == expected_output_file_path + + def test_fixtures_contain_shared_tract_ids_base(self, mock_etl, mock_paths): + with mock.patch( + "data_pipeline.etl.sources.us_army_fuds.etl.add_tracts_for_geometries", + new=_fake_add_tracts_for_geometries, + ): + return super().test_fixtures_contain_shared_tract_ids_base( + mock_etl, mock_paths + ) + + def test_transform_base(self, snapshot, mock_etl, mock_paths): + with mock.patch( + "data_pipeline.etl.sources.us_army_fuds.etl.add_tracts_for_geometries", + new=_fake_add_tracts_for_geometries, + ): + super().test_transform_base( + snapshot=snapshot, mock_etl=mock_etl, mock_paths=mock_paths + ) + + def test_transform_sets_output_df_base(self, mock_etl, mock_paths): + with mock.patch( + "data_pipeline.etl.sources.us_army_fuds.etl.add_tracts_for_geometries", + new=_fake_add_tracts_for_geometries, + ): + super().test_transform_sets_output_df_base( + mock_etl=mock_etl, mock_paths=mock_paths + ) + + def test_validate_base(self, mock_etl, mock_paths): + with mock.patch( + "data_pipeline.etl.sources.us_army_fuds.etl.add_tracts_for_geometries", + new=_fake_add_tracts_for_geometries, + ): + super().test_validate_base(mock_etl=mock_etl, mock_paths=mock_paths) + + def test_full_etl_base(self, mock_etl, mock_paths): + with mock.patch( + "data_pipeline.etl.sources.us_army_fuds.etl.add_tracts_for_geometries", + new=_fake_add_tracts_for_geometries, + ): + return super().test_full_etl_base(mock_etl, mock_paths) + + def test_get_data_frame_base(self, mock_etl, mock_paths): + with mock.patch( + "data_pipeline.etl.sources.us_army_fuds.etl.add_tracts_for_geometries", + new=_fake_add_tracts_for_geometries, + ): + return super().test_get_data_frame_base(mock_etl, mock_paths) + + def test_tracts_without_fuds_not_in_results(self, mock_etl, mock_paths): + with mock.patch( + "data_pipeline.etl.sources.us_army_fuds.etl.add_tracts_for_geometries", + new=_fake_add_tracts_for_geometries, + ): + etl = self._setup_etl_instance_and_run_extract( + mock_etl=mock_etl, mock_paths=mock_paths + ) + etl.transform() + etl.validate() + etl.load() + df = etl.get_data_frame() + assert len(df[etl.GEOID_TRACT_FIELD_NAME]) == len( + self._FIXTURES_SHARED_TRACT_IDS + ) + + def test_tract_id_lengths(self, mock_etl, mock_paths): + with mock.patch( + "data_pipeline.etl.sources.us_army_fuds.etl.add_tracts_for_geometries", + new=_fake_add_tracts_for_geometries, + ): + return super().test_tract_id_lengths(mock_etl, mock_paths) diff --git a/data/data-pipeline/data_pipeline/tests/test_etl.py b/data/data-pipeline/data_pipeline/tests/test_etl.py index 8af3e91c4..cbe45cf37 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 82e9404e1..ec03ad3ce 100644 --- a/data/data-pipeline/data_pipeline/tile/generate.py +++ b/data/data-pipeline/data_pipeline/tile/generate.py @@ -2,7 +2,8 @@ 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__) @@ -41,6 +42,7 @@ def _generate_score_tiles() -> None: logger.info("Generating USA High mbtiles file") cmd = "tippecanoe " cmd += f"--minimum-zoom={USA_HIGH_MIN_ZOOM} --maximum-zoom={USA_HIGH_MAX_ZOOM} --layer=blocks " + cmd += "--no-feature-limit --no-tile-size-limit " cmd += f"--output={high_tile_path}/usa_high.mbtiles " cmd += str(score_geojson_dir / "usa-high.json") call(cmd, shell=True) @@ -49,7 +51,7 @@ def _generate_score_tiles() -> None: logger.info("Generating USA High mvt folders and files") cmd = "tippecanoe " cmd += f"--minimum-zoom={USA_HIGH_MIN_ZOOM} --maximum-zoom={USA_HIGH_MAX_ZOOM} --no-tile-compression " - cmd += "--drop-densest-as-needed " + cmd += "--no-feature-limit --no-tile-size-limit " cmd += f"--output-to-directory={high_tile_path} --layer=blocks " cmd += str(score_geojson_dir / "usa-high.json") call(cmd, shell=True) diff --git a/data/data-pipeline/data_pipeline/utils.py b/data/data-pipeline/data_pipeline/utils.py index 0ec626165..55289475b 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: @@ -149,7 +147,9 @@ def download_file_from_url( os.mkdir(download_file_name.parent) logger.info(f"Downloading {file_url}") - response = requests.get(file_url, verify=verify) + response = requests.get( + file_url, verify=verify, timeout=settings.REQUESTS_DEFAULT_TIMOUT + ) if response.status_code == 200: file_contents = response.content else: @@ -1409,6 +1409,8 @@ def get_excel_column_name(index: int) -> str: "ALI", "ALJ", "ALK", + "ALL", + "ALM", ] return excel_column_names[index] diff --git a/data/data-pipeline/poetry.lock b/data/data-pipeline/poetry.lock index a26dac7b4..eaa14e4d2 100644 --- a/data/data-pipeline/poetry.lock +++ b/data/data-pipeline/poetry.lock @@ -22,8 +22,8 @@ idna = ">=2.8" sniffio = ">=1.1" [package.extras] -doc = ["packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["contextlib2", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (<0.15)", "uvloop (>=0.15)"] +doc = ["packaging", "sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"] +test = ["coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "contextlib2", "uvloop (<0.15)", "mock (>=4)", "uvloop (>=0.15)"] trio = ["trio (>=0.16)"] [[package]] @@ -46,8 +46,8 @@ python-versions = ">=3.6" argon2-cffi-bindings = "*" [package.extras] -dev = ["cogapp", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "pre-commit", "pytest", "sphinx", "sphinx-notfound-page", "tomli"] -docs = ["furo", "sphinx", "sphinx-notfound-page"] +dev = ["pre-commit", "cogapp", "tomli", "coverage[toml] (>=5.0.2)", "hypothesis", "pytest", "sphinx", "sphinx-notfound-page", "furo"] +docs = ["sphinx", "sphinx-notfound-page", "furo"] tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pytest"] [[package]] @@ -62,7 +62,7 @@ python-versions = ">=3.6" cffi = ">=1.0.1" [package.extras] -dev = ["cogapp", "pre-commit", "pytest", "wheel"] +dev = ["pytest", "cogapp", "pre-commit", "wheel"] tests = ["pytest"] [[package]] @@ -95,10 +95,10 @@ optional = false python-versions = ">=3.5" [package.extras] -dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] -docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] -tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] -tests_no_zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] +docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "cloudpickle"] [[package]] name = "babel" @@ -174,7 +174,7 @@ webencodings = "*" [package.extras] css = ["tinycss2 (>=1.1.0,<1.2)"] -dev = ["Sphinx (==4.3.2)", "black (==22.3.0)", "build (==0.8.0)", "flake8 (==4.0.1)", "hashin (==0.17.0)", "mypy (==0.961)", "pip-tools (==6.6.2)", "pytest (==7.1.2)", "tox (==3.25.0)", "twine (==4.0.1)", "wheel (==0.37.1)"] +dev = ["build (==0.8.0)", "flake8 (==4.0.1)", "hashin (==0.17.0)", "pip-tools (==6.6.2)", "pytest (==7.1.2)", "Sphinx (==4.3.2)", "tox (==3.25.0)", "twine (==4.0.1)", "wheel (==0.37.1)", "black (==22.3.0)", "mypy (==0.961)"] [[package]] name = "censusdata" @@ -241,7 +241,7 @@ python-versions = "*" click = ">=4.0" [package.extras] -dev = ["coveralls", "pytest (>=3.6)", "pytest-cov", "wheel"] +dev = ["pytest (>=3.6)", "pytest-cov", "wheel", "coveralls"] [[package]] name = "cligj" @@ -274,8 +274,8 @@ optional = false python-versions = ">=3.6" [package.extras] -docs = ["jaraco.packaging (>=8.2)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx"] -testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-flake8", "pytest-mypy", "types-backports"] +docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)", "jaraco.tidelift (>=1.4)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "types-backports", "pytest-black (>=0.3.7)", "pytest-mypy"] [[package]] name = "cycler" @@ -341,23 +341,23 @@ packaging = "*" toml = "*" [package.extras] -conda = ["pyyaml"] pipenv = ["pipenv"] +conda = ["pyyaml"] [[package]] name = "dynaconf" -version = "3.1.9" +version = "3.1.11" description = "The dynamic configurator for your Python Project" category = "main" optional = false python-versions = ">=3.7" [package.extras] -all = ["configobj", "hvac", "redis", "ruamel.yaml"] +all = ["redis", "ruamel.yaml", "configobj", "hvac"] configobj = ["configobj"] ini = ["configobj"] redis = ["redis"] -test = ["codecov", "configobj", "django", "flake8", "flake8-debugger", "flake8-print", "flake8-todo", "flask (>=0.12)", "hvac", "pep8-naming", "pytest", "pytest-cov", "pytest-mock", "pytest-xdist", "python-dotenv", "radon", "redis", "toml"] +test = ["pytest", "pytest-cov", "pytest-xdist", "pytest-mock", "flake8", "pep8-naming", "flake8-debugger", "flake8-print", "flake8-todo", "radon", "flask (>=0.12)", "django", "python-dotenv", "toml", "codecov", "redis", "hvac", "configobj"] toml = ["toml"] vault = ["hvac"] yaml = ["ruamel.yaml"] @@ -387,7 +387,7 @@ optional = false python-versions = "*" [package.extras] -devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"] +devel = ["colorama", "jsonschema", "json-spec", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"] [[package]] name = "filelock" @@ -419,10 +419,10 @@ munch = "*" six = ">=1.7" [package.extras] -all = ["boto3 (>=1.2.4)", "mock", "pytest (>=3)", "pytest-cov", "shapely"] +all = ["boto3 (>=1.2.4)", "pytest-cov", "shapely", "pytest (>=3)", "mock"] calc = ["shapely"] s3 = ["boto3 (>=1.2.4)"] -test = ["boto3 (>=1.2.4)", "mock", "pytest (>=3)", "pytest-cov"] +test = ["pytest (>=3)", "pytest-cov", "boto3 (>=1.2.4)", "mock"] [[package]] name = "flake8" @@ -446,9 +446,9 @@ optional = false python-versions = ">=3.7" [package.extras] -all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=14.0.0)", "xattr", "zopfli (>=0.1.4)"] +all = ["fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "zopfli (>=0.1.4)", "lz4 (>=1.7.4.2)", "matplotlib", "sympy", "skia-pathops (>=0.5.0)", "uharfbuzz (>=0.23.0)", "brotlicffi (>=0.8.0)", "scipy", "brotli (>=1.0.1)", "munkres", "unicodedata2 (>=14.0.0)", "xattr"] graphite = ["lz4 (>=1.7.4.2)"] -interpolatable = ["munkres", "scipy"] +interpolatable = ["scipy", "munkres"] lxml = ["lxml (>=4.0,<5)"] pathops = ["skia-pathops (>=0.5.0)"] plot = ["matplotlib"] @@ -457,7 +457,7 @@ symfont = ["sympy"] type1 = ["xattr"] ufo = ["fs (>=2.2.0,<3)"] unicode = ["unicodedata2 (>=14.0.0)"] -woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] +woff = ["zopfli (>=0.1.4)", "brotlicffi (>=0.8.0)", "brotli (>=1.0.1)"] [[package]] name = "geopandas" @@ -494,9 +494,9 @@ python-versions = ">=3.7" zipp = ">=0.5" [package.extras] -docs = ["jaraco.packaging (>=9)", "rst.linker (>=1.9)", "sphinx"] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] [[package]] name = "importlib-resources" @@ -510,8 +510,8 @@ python-versions = ">=3.7" zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] -docs = ["jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx"] -testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "jaraco.tidelift (>=1.4)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] [[package]] name = "iniconfig" @@ -556,7 +556,7 @@ tornado = ">=6.1" traitlets = ">=5.1.0" [package.extras] -test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=6.0)", "pytest-cov", "pytest-timeout"] +test = ["flaky", "ipyparallel", "pre-commit", "pytest-cov", "pytest-timeout", "pytest (>=6.0)"] [[package]] name = "ipython" @@ -585,10 +585,10 @@ doc = ["Sphinx (>=1.3)"] kernel = ["ipykernel"] nbconvert = ["nbconvert"] nbformat = ["nbformat"] -notebook = ["ipywidgets", "notebook"] +notebook = ["notebook", "ipywidgets"] parallel = ["ipyparallel"] qtconsole = ["qtconsole"] -test = ["ipykernel", "nbformat", "nose (>=0.10.1)", "numpy (>=1.17)", "pygments", "requests", "testpath"] +test = ["nose (>=0.10.1)", "requests", "testpath", "pygments", "nbformat", "ipykernel", "numpy (>=1.17)"] [[package]] name = "ipython-genutils" @@ -625,10 +625,10 @@ optional = false python-versions = ">=3.6.1,<4.0" [package.extras] -colors = ["colorama (>=0.4.3,<0.5.0)"] pipfile_deprecated_finder = ["pipreqs", "requirementslib"] +requirements_deprecated_finder = ["pipreqs", "pip-api"] +colors = ["colorama (>=0.4.3,<0.5.0)"] plugins = ["setuptools"] -requirements_deprecated_finder = ["pip-api", "pipreqs"] [[package]] name = "jedi" @@ -730,7 +730,7 @@ tornado = ">=6.0" traitlets = "*" [package.extras] -doc = ["ipykernel", "myst-parser", "sphinx (>=1.3.6)", "sphinx-rtd-theme", "sphinxcontrib-github-alt"] +doc = ["ipykernel", "myst-parser", "sphinx-rtd-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt"] test = ["codecov", "coverage", "ipykernel (>=6.5)", "ipython", "mypy", "pre-commit", "pytest", "pytest-asyncio (>=0.18)", "pytest-cov", "pytest-timeout"] [[package]] @@ -791,7 +791,7 @@ tornado = "*" traitlets = ">=4.1" [package.extras] -test = ["mock", "nbformat", "nose", "pip", "requests"] +test = ["mock", "requests", "pip", "nose", "nbformat"] [[package]] name = "jupyter-core" @@ -848,7 +848,7 @@ tornado = "*" traitlets = "*" [package.extras] -test = ["jupyter-contrib-core", "mock", "nose", "requests", "selenium"] +test = ["mock", "selenium", "requests", "nose", "jupyter-contrib-core"] [[package]] name = "jupyter-server" @@ -877,11 +877,11 @@ traitlets = ">=5.1" websocket-client = "*" [package.extras] -test = ["coverage", "ipykernel", "pre-commit", "pytest (>=6.0)", "pytest-console-scripts", "pytest-cov", "pytest-mock", "pytest-timeout", "pytest-tornasync", "requests"] +test = ["coverage", "ipykernel", "pre-commit", "pytest-console-scripts", "pytest-cov", "pytest-mock", "pytest-timeout", "pytest-tornasync", "pytest (>=6.0)", "requests"] [[package]] name = "jupyterlab" -version = "3.4.7" +version = "3.4.4" description = "JupyterLab computational environment" category = "dev" optional = false @@ -896,11 +896,10 @@ jupyterlab-server = ">=2.10,<3.0" nbclassic = "*" notebook = "<7" packaging = "*" -tomli = "*" tornado = ">=6.1.0" [package.extras] -test = ["check-manifest", "coverage", "jupyterlab-server", "pre-commit", "pytest (>=6.0)", "pytest-check-links (>=0.5)", "pytest-console-scripts", "pytest-cov", "requests", "requests-cache", "virtualenv"] +test = ["check-manifest", "coverage", "jupyterlab-server", "pre-commit", "pytest (>=6.0)", "pytest-cov", "pytest-console-scripts", "pytest-check-links (>=0.5)", "requests", "requests-cache", "virtualenv"] ui-tests = ["build"] [[package]] @@ -931,7 +930,7 @@ requests = "*" [package.extras] openapi = ["openapi-core (>=0.14.2)", "ruamel-yaml"] -test = ["codecov", "ipykernel", "jupyter-server", "openapi-core (>=0.14.2)", "openapi-spec-validator (<0.5)", "pytest (>=5.3.2)", "pytest-console-scripts", "pytest-cov", "ruamel-yaml", "strict-rfc3339"] +test = ["codecov", "ipykernel", "jupyter-server", "openapi-core (>=0.14.2)", "openapi-spec-validator (<0.5)", "pytest-console-scripts", "pytest-cov", "pytest (>=5.3.2)", "ruamel-yaml", "strict-rfc3339"] [[package]] name = "jupyterlab-widgets" @@ -1004,9 +1003,9 @@ python-versions = ">=3.7" packaging = ">=17.0" [package.extras] -dev = ["flake8 (==4.0.1)", "flake8-bugbear (==22.6.22)", "mypy (==0.961)", "pre-commit (>=2.4,<3.0)", "pytest", "pytz", "simplejson", "tox"] -docs = ["alabaster (==0.7.12)", "autodocsumm (==0.2.8)", "sphinx (==4.5.0)", "sphinx-issues (==3.0.1)", "sphinx-version-warning (==1.1.2)"] -lint = ["flake8 (==4.0.1)", "flake8-bugbear (==22.6.22)", "mypy (==0.961)", "pre-commit (>=2.4,<3.0)"] +dev = ["pytest", "pytz", "simplejson", "mypy (==0.961)", "flake8 (==4.0.1)", "flake8-bugbear (==22.6.22)", "pre-commit (>=2.4,<3.0)", "tox"] +docs = ["sphinx (==4.5.0)", "sphinx-issues (==3.0.1)", "alabaster (==0.7.12)", "sphinx-version-warning (==1.1.2)", "autodocsumm (==0.2.8)"] +lint = ["mypy (==0.961)", "flake8 (==4.0.1)", "flake8-bugbear (==22.6.22)", "pre-commit (>=2.4,<3.0)"] tests = ["pytest", "pytz", "simplejson"] [[package]] @@ -1022,7 +1021,7 @@ marshmallow = ">=3.13.0,<4.0" typing-inspect = ">=0.7.1" [package.extras] -dev = ["marshmallow-enum", "pre-commit (>=2.17,<3.0)", "pytest (>=5.4)", "pytest-mypy-plugins (>=1.2.0)", "sphinx", "typeguard", "typing-extensions (>=3.7.2)"] +dev = ["marshmallow-enum", "typeguard", "pre-commit (>=2.17,<3.0)", "sphinx", "pytest (>=5.4)", "pytest-mypy-plugins (>=1.2.0)", "typing-extensions (>=3.7.2)"] docs = ["sphinx"] enum = ["marshmallow-enum"] lint = ["pre-commit (>=2.17,<3.0)"] @@ -1098,7 +1097,7 @@ python-versions = "*" six = "*" [package.extras] -testing = ["astroid (>=1.5.3,<1.6.0)", "astroid (>=2.0)", "coverage", "pylint (>=1.7.2,<1.8.0)", "pylint (>=2.3.1,<2.4.0)", "pytest"] +testing = ["pytest", "coverage", "astroid (>=1.5.3,<1.6.0)", "pylint (>=1.7.2,<1.8.0)", "astroid (>=2.0)", "pylint (>=2.3.1,<2.4.0)"] yaml = ["PyYAML (>=5.1.0)"] [[package]] @@ -1165,9 +1164,9 @@ tornado = ">=6.1" traitlets = ">=4.2.1" [package.extras] -docs = ["myst-parser", "nbsphinx", "sphinx", "sphinx-rtd-theme", "sphinxcontrib-github-alt"] +docs = ["sphinx", "nbsphinx", "sphinxcontrib-github-alt", "sphinx-rtd-theme", "myst-parser"] json-logging = ["json-logging"] -test = ["coverage", "nbval", "pytest", "pytest-cov", "pytest-tornasync", "requests", "requests-unixsocket", "selenium (==4.1.5)", "testpath"] +test = ["pytest", "coverage", "requests", "testpath", "nbval", "selenium (==4.1.5)", "pytest-cov", "pytest-tornasync", "requests-unixsocket"] [[package]] name = "nbclient" @@ -1184,7 +1183,7 @@ nest-asyncio = "*" traitlets = ">=5.2.2" [package.extras] -sphinx = ["Sphinx (>=1.7)", "autodoc-traits", "mock", "moto", "myst-parser", "sphinx-book-theme"] +sphinx = ["autodoc-traits", "mock", "moto", "myst-parser", "Sphinx (>=1.7)", "sphinx-book-theme"] test = ["black", "check-manifest", "flake8", "ipykernel", "ipython (<8.0.0)", "ipywidgets (<8.0.0)", "mypy", "pip (>=18.1)", "pre-commit", "pytest (>=4.1)", "pytest-asyncio", "pytest-cov (>=2.6.1)", "setuptools (>=60.0)", "testpath", "twine (>=1.11.0)", "xmltodict"] [[package]] @@ -1215,8 +1214,8 @@ tinycss2 = "*" traitlets = ">=5.0" [package.extras] -all = ["ipykernel", "ipython", "ipywidgets (>=7)", "nbsphinx (>=0.2.12)", "pre-commit", "pyppeteer (>=1,<1.1)", "pyqtwebengine (>=5.15)", "pytest", "pytest-cov", "pytest-dependency", "sphinx (==5.0.2)", "sphinx-rtd-theme", "tornado (>=6.1)"] -docs = ["ipython", "nbsphinx (>=0.2.12)", "sphinx (==5.0.2)", "sphinx-rtd-theme"] +all = ["ipykernel", "ipython", "ipywidgets (>=7)", "nbsphinx (>=0.2.12)", "pre-commit", "pyppeteer (>=1,<1.1)", "pyqtwebengine (>=5.15)", "pytest", "pytest-cov", "pytest-dependency", "sphinx-rtd-theme", "sphinx (==5.0.2)", "tornado (>=6.1)"] +docs = ["ipython", "nbsphinx (>=0.2.12)", "sphinx-rtd-theme", "sphinx (==5.0.2)"] qtpdf = ["pyqtwebengine (>=5.15)"] qtpng = ["pyqtwebengine (>=5.15)"] serve = ["tornado (>=6.1)"] @@ -1238,7 +1237,7 @@ jupyter-core = "*" traitlets = ">=5.1" [package.extras] -test = ["check-manifest", "pre-commit", "pytest", "testpath"] +test = ["check-manifest", "testpath", "pytest", "pre-commit"] [[package]] name = "nest-asyncio" @@ -1274,9 +1273,9 @@ tornado = ">=6.1" traitlets = ">=4.2.1" [package.extras] -docs = ["myst-parser", "nbsphinx", "sphinx", "sphinx-rtd-theme", "sphinxcontrib-github-alt"] +docs = ["sphinx", "nbsphinx", "sphinxcontrib-github-alt", "sphinx-rtd-theme", "myst-parser"] json-logging = ["json-logging"] -test = ["coverage", "nbval", "pytest", "pytest-cov", "requests", "requests-unixsocket", "selenium", "testpath"] +test = ["pytest", "coverage", "requests", "testpath", "nbval", "selenium", "pytest-cov", "requests-unixsocket"] [[package]] name = "notebook-shim" @@ -1290,7 +1289,7 @@ python-versions = ">=3.7" jupyter-server = ">=1.8,<2.0" [package.extras] -test = ["pytest", "pytest-console-scripts", "pytest-tornasync"] +test = ["pytest", "pytest-tornasync", "pytest-console-scripts"] [[package]] name = "numpy" @@ -1383,15 +1382,15 @@ tenacity = "*" tqdm = ">=4.32.2" [package.extras] -all = ["azure-datalake-store (>=0.0.30)", "azure-storage-blob (>=12.1.0)", "black (>=19.3b0)", "boto3", "gcsfs (>=0.2.0)", "pyarrow (>=2.0)", "requests (>=2.21.0)"] +all = ["boto3", "azure-datalake-store (>=0.0.30)", "azure-storage-blob (>=12.1.0)", "requests (>=2.21.0)", "gcsfs (>=0.2.0)", "pyarrow (>=2.0)", "black (>=19.3b0)"] azure = ["azure-datalake-store (>=0.0.30)", "azure-storage-blob (>=12.1.0)", "requests (>=2.21.0)"] black = ["black (>=19.3b0)"] -dev = ["attrs (>=17.4.0)", "azure-datalake-store (>=0.0.30)", "azure-storage-blob (>=12.1.0)", "black (>=19.3b0)", "boto3", "botocore", "bumpversion", "check-manifest", "codecov", "coverage", "flake8", "gcsfs (>=0.2.0)", "google-compute-engine", "ipython (>=5.0)", "ipywidgets", "moto", "notebook", "pip (>=18.1)", "pre-commit", "pyarrow (>=2.0)", "pytest (>=4.1)", "pytest-cov (>=2.6.1)", "pytest-env (>=0.6.2)", "pytest-mock (>=1.10)", "recommonmark", "requests (>=2.21.0)", "setuptools (>=38.6.0)", "tox", "twine (>=1.11.0)", "wheel (>=0.31.0)"] +dev = ["boto3", "botocore", "codecov", "coverage", "google-compute-engine", "ipython (>=5.0)", "ipywidgets", "notebook", "moto", "pytest (>=4.1)", "pytest-cov (>=2.6.1)", "pytest-mock (>=1.10)", "pytest-env (>=0.6.2)", "requests (>=2.21.0)", "check-manifest", "attrs (>=17.4.0)", "pre-commit", "flake8", "tox", "bumpversion", "recommonmark", "pip (>=18.1)", "wheel (>=0.31.0)", "setuptools (>=38.6.0)", "twine (>=1.11.0)", "azure-datalake-store (>=0.0.30)", "azure-storage-blob (>=12.1.0)", "gcsfs (>=0.2.0)", "pyarrow (>=2.0)", "black (>=19.3b0)"] gcs = ["gcsfs (>=0.2.0)"] github = ["PyGithub (>=1.55)"] hdfs = ["pyarrow (>=2.0)"] s3 = ["boto3"] -test = ["attrs (>=17.4.0)", "azure-datalake-store (>=0.0.30)", "azure-storage-blob (>=12.1.0)", "black (>=19.3b0)", "boto3", "botocore", "bumpversion", "check-manifest", "codecov", "coverage", "flake8", "gcsfs (>=0.2.0)", "google-compute-engine", "ipython (>=5.0)", "ipywidgets", "moto", "notebook", "pip (>=18.1)", "pre-commit", "pyarrow (>=2.0)", "pytest (>=4.1)", "pytest-cov (>=2.6.1)", "pytest-env (>=0.6.2)", "pytest-mock (>=1.10)", "recommonmark", "requests (>=2.21.0)", "setuptools (>=38.6.0)", "tox", "twine (>=1.11.0)", "wheel (>=0.31.0)"] +test = ["boto3", "botocore", "codecov", "coverage", "google-compute-engine", "ipython (>=5.0)", "ipywidgets", "notebook", "moto", "pytest (>=4.1)", "pytest-cov (>=2.6.1)", "pytest-mock (>=1.10)", "pytest-env (>=0.6.2)", "requests (>=2.21.0)", "check-manifest", "attrs (>=17.4.0)", "pre-commit", "flake8", "tox", "bumpversion", "recommonmark", "pip (>=18.1)", "wheel (>=0.31.0)", "setuptools (>=38.6.0)", "twine (>=1.11.0)", "azure-datalake-store (>=0.0.30)", "azure-storage-blob (>=12.1.0)", "gcsfs (>=0.2.0)", "pyarrow (>=2.0)", "black (>=19.3b0)"] [[package]] name = "parso" @@ -1457,8 +1456,8 @@ optional = false python-versions = ">=3.7" [package.extras] -docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx (>=4)", "sphinx-autodoc-typehints (>=1.12)"] -test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"] +docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)", "sphinx (>=4)"] +test = ["appdirs (==1.4.4)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)", "pytest (>=6)"] [[package]] name = "pluggy" @@ -1469,8 +1468,8 @@ optional = false python-versions = ">=3.6" [package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] +testing = ["pytest-benchmark", "pytest"] +dev = ["tox", "pre-commit"] [[package]] name = "prometheus-client" @@ -1503,7 +1502,7 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [package.extras] -test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] +test = ["ipaddress", "mock", "enum34", "pywin32", "wmi"] [[package]] name = "ptyprocess" @@ -1611,7 +1610,7 @@ optional = false python-versions = ">=3.6.8" [package.extras] -diagrams = ["jinja2", "railroad-diagrams"] +diagrams = ["railroad-diagrams", "jinja2"] [[package]] name = "pyproj" @@ -1665,7 +1664,7 @@ python-versions = ">=3.7" pytest = ">=5.0" [package.extras] -dev = ["pre-commit", "pytest-asyncio", "tox"] +dev = ["pre-commit", "tox", "pytest-asyncio"] [[package]] name = "pytest-snapshot" @@ -1767,7 +1766,7 @@ python-versions = ">=3.7" packaging = "*" [package.extras] -test = ["pytest (>=6,!=7.0.0,!=7.0.1)", "pytest-cov (>=3.0.0)", "pytest-qt"] +test = ["pytest-qt", "pytest-cov (>=3.0.0)", "pytest (>=6,!=7.0.0,!=7.0.1)"] [[package]] name = "requests" @@ -1834,7 +1833,7 @@ requests = "*" "ruamel.yaml" = ">=0.17.21" [package.extras] -github = ["jinja2 (>=3.1.0)", "pygithub (>=1.43.3)"] +github = ["pygithub (>=1.43.3)", "jinja2 (>=3.1.0)"] gitlab = ["python-gitlab (>=1.3.0)"] [[package]] @@ -1871,7 +1870,7 @@ optional = false python-versions = ">=2.7" [package.extras] -dev = ["Django (>=1.11)", "check-manifest", "colorama (<=0.4.1)", "coverage", "flake8", "nose2", "readme-renderer (<25.0)", "tox", "wheel", "zest.releaser"] +dev = ["Django (>=1.11)", "nose2", "tox", "check-manifest", "coverage", "flake8", "wheel", "zest.releaser", "readme-renderer (<25.0)", "colorama (<=0.4.1)"] doc = ["sphinx", "sphinx-rtd-theme"] [[package]] @@ -1912,7 +1911,7 @@ optional = false python-versions = ">=3.6" [package.extras] -all = ["numpy", "pytest", "pytest-cov"] +all = ["pytest", "pytest-cov", "numpy"] test = ["pytest", "pytest-cov"] vectorized = ["numpy"] @@ -1965,7 +1964,7 @@ pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""} tornado = ">=6.1.0" [package.extras] -test = ["pre-commit", "pytest (>=6.0)", "pytest-timeout"] +test = ["pre-commit", "pytest-timeout", "pytest (>=6.0)"] [[package]] name = "textwrap3" @@ -1988,7 +1987,7 @@ webencodings = ">=0.4" [package.extras] doc = ["sphinx", "sphinx-rtd-theme"] -test = ["coverage", "pytest", "pytest-cov", "pytest-flake8", "pytest-isort"] +test = ["pytest", "pytest-cov", "pytest-flake8", "pytest-isort", "coverage"] [[package]] name = "toml" @@ -2042,7 +2041,7 @@ virtualenv = ">=16.0.0,<20.0.0 || >20.0.0,<20.0.1 || >20.0.1,<20.0.2 || >20.0.2, [package.extras] docs = ["pygments-github-lexers (>=0.0.5)", "sphinx (>=2.0.0)", "sphinxcontrib-autoprogram (>=0.1.5)", "towncrier (>=18.5.0)"] -testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pathlib2 (>=2.3.3)", "psutil (>=5.6.1)", "pytest (>=4.0.0)", "pytest-cov (>=2.5.1)", "pytest-mock (>=1.10.0)", "pytest-randomly (>=1.0.0)"] +testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pytest (>=4.0.0)", "pytest-cov (>=2.5.1)", "pytest-mock (>=1.10.0)", "pytest-randomly (>=1.0.0)", "psutil (>=5.6.1)", "pathlib2 (>=2.3.3)"] [[package]] name = "tox-poetry" @@ -2058,7 +2057,7 @@ toml = "*" tox = {version = ">=3.7.0", markers = "python_version >= \"3\""} [package.extras] -test = ["coverage", "pycodestyle", "pylint", "pytest"] +test = ["pylint", "pycodestyle", "pytest", "coverage"] [[package]] name = "tqdm" @@ -2135,8 +2134,8 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4" [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)"] +brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] @@ -2229,13 +2228,13 @@ optional = false python-versions = ">=3.7" [package.extras] -docs = ["jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx"] -testing = ["func-timeout", "jaraco.itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "jaraco.tidelift (>=1.4)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] [metadata] lock-version = "1.1" python-versions = "^3.8" -content-hash = "d5b56483e4f46d1d9dec9fb27989b795adc4ecd73ffb5f5d7d6ed84cc830f578" +content-hash = "cce5b3c288e39755f35abc18f40731dfd61c7507bc1a8177894235cea06bd514" [metadata.files] ansiwrap = [] @@ -2243,7 +2242,10 @@ anyio = [ {file = "anyio-3.6.1-py3-none-any.whl", hash = "sha256:cb29b9c70620506a9a8f87a309591713446953302d7d995344d0d7c6c0c9a7be"}, {file = "anyio-3.6.1.tar.gz", hash = "sha256:413adf95f93886e442aea925f3ee43baa5a765a64a0f52c6081894f9992fdd0b"}, ] -appnope = [] +appnope = [ + {file = "appnope-0.1.3-py2.py3-none-any.whl", hash = "sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e"}, + {file = "appnope-0.1.3.tar.gz", hash = "sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24"}, +] argon2-cffi = [ {file = "argon2-cffi-21.3.0.tar.gz", hash = "sha256:d384164d944190a7dd7ef22c6aa3ff197da12962bd04b17f64d4e93d934dba5b"}, {file = "argon2_cffi-21.3.0-py3-none-any.whl", hash = "sha256:8c976986f2c5c0e5000919e6de187906cfd81fb1c72bf9d88c01177e77da7f80"}, @@ -2282,34 +2284,34 @@ backcall = [ {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"}, {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"}, ] -beautifulsoup4 = [] -black = [ - {file = "black-21.12b0-py3-none-any.whl", hash = "sha256:a615e69ae185e08fdd73e4715e260e2479c861b5740057fde6e8b4e3b7dd589f"}, - {file = "black-21.12b0.tar.gz", hash = "sha256:77b80f693a569e2e527958459634f18df9b0ba2625ba4e0c2d5da5be42e6f2b3"}, +beautifulsoup4 = [ + {file = "beautifulsoup4-4.11.1-py3-none-any.whl", hash = "sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30"}, + {file = "beautifulsoup4-4.11.1.tar.gz", hash = "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693"}, +] +black = [] +bleach = [ + {file = "bleach-5.0.1-py3-none-any.whl", hash = "sha256:085f7f33c15bd408dd9b17a4ad77c577db66d76203e5984b1bd59baeee948b2a"}, + {file = "bleach-5.0.1.tar.gz", hash = "sha256:0d03255c47eb9bd2f26aa9bb7f2107732e7e8fe195ca2f64709fcf3b0a4a085c"}, ] -bleach = [] censusdata = [] -certifi = [] +certifi = [ + {file = "certifi-2022.6.15-py3-none-any.whl", hash = "sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412"}, + {file = "certifi-2022.6.15.tar.gz", hash = "sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d"}, +] cffi = [] charset-normalizer = [] click = [] -click-plugins = [ - {file = "click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b"}, - {file = "click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8"}, -] +click-plugins = [] cligj = [ {file = "cligj-0.7.2-py3-none-any.whl", hash = "sha256:c1ca117dbce1fe20a5809dc96f01e1c2840f6dcc939b3ddbb1111bf330ba82df"}, {file = "cligj-0.7.2.tar.gz", hash = "sha256:a4bc13d623356b373c2c27c53dbd9c68cae5d526270bfa71f6c6fa69669c6b27"}, ] -colorama = [] -configparser = [ - {file = "configparser-5.2.0-py3-none-any.whl", hash = "sha256:e8b39238fb6f0153a069aa253d349467c3c4737934f253ef6abac5fe0eca1e5d"}, - {file = "configparser-5.2.0.tar.gz", hash = "sha256:1b35798fdf1713f1c3139016cfcbc461f09edbf099d1fb658d4b7479fcaa3daa"}, -] -cycler = [ - {file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"}, - {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"}, +colorama = [ + {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, + {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"}, ] +configparser = [] +cycler = [] debugpy = [] decorator = [ {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, @@ -2321,164 +2323,124 @@ defusedxml = [ ] dill = [] distlib = [] -dparse = [ - {file = "dparse-0.6.2-py3-none-any.whl", hash = "sha256:8097076f1dd26c377f30d4745e6ec18fef42f3bf493933b842ac5bafad8c345f"}, - {file = "dparse-0.6.2.tar.gz", hash = "sha256:d45255bda21f998bc7ddf2afd5e62505ba6134756ba2d42a84c56b0826614dfe"}, -] +dparse = [] dynaconf = [] entrypoints = [ {file = "entrypoints-0.4-py3-none-any.whl", hash = "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f"}, {file = "entrypoints-0.4.tar.gz", hash = "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4"}, ] -et-xmlfile = [ - {file = "et_xmlfile-1.1.0-py3-none-any.whl", hash = "sha256:a2ba85d1d6a74ef63837eed693bcb89c3f752169b0e3e7ae5b16ca5e1b3deada"}, - {file = "et_xmlfile-1.1.0.tar.gz", hash = "sha256:8eb9e2bc2f8c97e37a2dc85a09ecdcdec9d8a396530a6d5a33b30b9a92da0c5c"}, -] +et-xmlfile = [] fastjsonschema = [] filelock = [] -fiona = [] -flake8 = [ - {file = "flake8-3.9.2-py2.py3-none-any.whl", hash = "sha256:bf8fd333346d844f616e8d47905ef3a3384edae6b4e9beb0c5101e25e3110907"}, - {file = "flake8-3.9.2.tar.gz", hash = "sha256:07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b"}, -] -fonttools = [ - {file = "fonttools-4.35.0-py3-none-any.whl", hash = "sha256:0292e391c1b46f2308bda20ea2a2dd5253725e7e2d3a1928b631338eb318eb22"}, - {file = "fonttools-4.35.0.zip", hash = "sha256:1cfb335c0abdeb6231191dc4f9d7ce1173e2ac94b335c617e045b96f9c974aea"}, -] -geopandas = [ - {file = "geopandas-0.11.1-py3-none-any.whl", hash = "sha256:f3344937f3866e52996c7e505d56dae78be117dc840cd1c23507da0b33c0af71"}, - {file = "geopandas-0.11.1.tar.gz", hash = "sha256:f0f0c8d0423d30cf81de2056d853145c4362739350a7f8f2d72cc7409ef1eca1"}, -] +fiona = [ + {file = "Fiona-1.8.21-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:39c656421e25b4d0d73d0b6acdcbf9848e71f3d9b74f44c27d2d516d463409ae"}, + {file = "Fiona-1.8.21-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43b1d2e45506e56cf3a9f59ba5d6f7981f3f75f4725d1e6cb9a33ba856371ebd"}, + {file = "Fiona-1.8.21-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:315e186cb880a8128e110312eb92f5956bbc54d7152af999d3483b463758d6f9"}, + {file = "Fiona-1.8.21-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fb2407623c4f44732a33b3f056f8c58c54152b51f0324bf8f10945e711eb549"}, + {file = "Fiona-1.8.21-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:b69054ed810eb7339d7effa88589afca48003206d7627d0b0b149715fc3fde41"}, + {file = "Fiona-1.8.21-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:11532ccfda1073d3f5f558e4bb78d45b268e8680fd6e14993a394c564ddbd069"}, + {file = "Fiona-1.8.21-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:3789523c811809a6e2e170cf9c437631f959f4c7a868f024081612d30afab468"}, + {file = "Fiona-1.8.21-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:085f18d943097ac3396f3f9664ac1ae04ad0ff272f54829f03442187f01b6116"}, + {file = "Fiona-1.8.21-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:388acc9fa07ba7858d508dfe826d4b04d813818bced16c4049de19cc7ca322ef"}, + {file = "Fiona-1.8.21-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40b4eaf5b88407421d6c9e707520abd2ff16d7cd43efb59cd398aa41d2de332c"}, + {file = "Fiona-1.8.21.tar.gz", hash = "sha256:3a0edca2a7a070db405d71187214a43d2333a57b4097544a3fcc282066a58bfc"}, +] +flake8 = [] +fonttools = [] +geopandas = [] idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, ] -importlib-metadata = [ - {file = "importlib_metadata-4.12.0-py3-none-any.whl", hash = "sha256:7401a975809ea1fdc658c3aa4f78cc2195a0e019c5cbc4c06122884e9ae80c23"}, - {file = "importlib_metadata-4.12.0.tar.gz", hash = "sha256:637245b8bab2b6502fcbc752cc4b7a6f6243bb02b31c5c26156ad103d3d45670"}, -] +importlib-metadata = [] importlib-resources = [] -iniconfig = [ - {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, - {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, -] -ipdb = [ - {file = "ipdb-0.13.9.tar.gz", hash = "sha256:951bd9a64731c444fd907a5ce268543020086a697f6be08f7cc2c9a752a278c5"}, -] +iniconfig = [] +ipdb = [] ipykernel = [] ipython = [] ipython-genutils = [ {file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"}, {file = "ipython_genutils-0.2.0.tar.gz", hash = "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"}, ] -ipywidgets = [ - {file = "ipywidgets-8.0.2-py3-none-any.whl", hash = "sha256:1dc3dd4ee19ded045ea7c86eb273033d238d8e43f9e7872c52d092683f263891"}, - {file = "ipywidgets-8.0.2.tar.gz", hash = "sha256:08cb75c6e0a96836147cbfdc55580ae04d13e05d26ffbc377b4e1c68baa28b1f"}, -] -isort = [ - {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, - {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, -] +ipywidgets = [] +isort = [] jedi = [ {file = "jedi-0.18.1-py2.py3-none-any.whl", hash = "sha256:637c9635fcf47945ceb91cd7f320234a7be540ded6f3e99a50cb6febdfd1ba8d"}, {file = "jedi-0.18.1.tar.gz", hash = "sha256:74137626a64a99c8eb6ae5832d99b3bdd7d29a3850fe2aa80a4126b2a7d949ab"}, ] -jellyfish = [ - {file = "jellyfish-0.6.1.tar.gz", hash = "sha256:5104e45a2b804b48a46a92a5e6d6e86830fe60ae83b1da32c867402c8f4c2094"}, -] -jinja2 = [] -json5 = [ - {file = "json5-0.9.9-py2.py3-none-any.whl", hash = "sha256:1ff8351ee2ae80fd89d64210d9522db7e157516a7b12c72089ded6964527283f"}, - {file = "json5-0.9.9.tar.gz", hash = "sha256:2ace77117c068c5f1f23f97e530a0d49bc09a46039521b6daa74aa39524e02a2"}, +jellyfish = [] +jinja2 = [ + {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, + {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, ] -jsonschema = [ - {file = "jsonschema-4.10.0-py3-none-any.whl", hash = "sha256:92128509e5b700bf0f1fd08a7d018252b16a1454465dfa6b899558eeae584241"}, - {file = "jsonschema-4.10.0.tar.gz", hash = "sha256:8ff7b44c6a99c6bfd55ca9ac45261c649cefd40aaba1124c29aaef1bcb378d84"}, +json5 = [] +jsonschema = [] +jupyter = [] +jupyter-client = [ + {file = "jupyter_client-7.3.4-py3-none-any.whl", hash = "sha256:17d74b0d0a7b24f1c8c527b24fcf4607c56bee542ffe8e3418e50b21e514b621"}, + {file = "jupyter_client-7.3.4.tar.gz", hash = "sha256:aa9a6c32054b290374f95f73bb0cae91455c58dfb84f65c8591912b8f65e6d56"}, ] -jupyter = [ - {file = "jupyter-1.0.0-py2.py3-none-any.whl", hash = "sha256:5b290f93b98ffbc21c0c7e749f054b3267782166d72fa5e3ed1ed4eaf34a2b78"}, - {file = "jupyter-1.0.0.tar.gz", hash = "sha256:d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f"}, - {file = "jupyter-1.0.0.zip", hash = "sha256:3e1f86076bbb7c8c207829390305a2b1fe836d471ed54be66a3b8c41e7f46cc7"}, -] -jupyter-client = [] jupyter-console = [] jupyter-contrib-core = [] -jupyter-contrib-nbextensions = [ - {file = "jupyter_contrib_nbextensions-0.5.1-py2.py3-none-any.whl", hash = "sha256:2c071f0aa208c569666f656bdc0f66906ca493cf9f06f46db6350db11030ff40"}, - {file = "jupyter_contrib_nbextensions-0.5.1.tar.gz", hash = "sha256:eecd28ecc2fc410226c0a3d4932ed2fac4860ccf8d9e9b1b29548835a35b22ab"}, -] +jupyter-contrib-nbextensions = [] jupyter-core = [] -jupyter-highlight-selected-word = [ - {file = "jupyter_highlight_selected_word-0.2.0-py2.py3-none-any.whl", hash = "sha256:9545dfa9cb057eebe3a5795604dcd3a5294ea18637e553f61a0b67c1b5903c58"}, - {file = "jupyter_highlight_selected_word-0.2.0.tar.gz", hash = "sha256:9fa740424859a807950ca08d2bfd28a35154cd32dd6d50ac4e0950022adc0e7b"}, -] -jupyter-latex-envs = [ - {file = "jupyter_latex_envs-1.4.6.tar.gz", hash = "sha256:070a31eb2dc488bba983915879a7c2939247bf5c3b669b398bdb36a9b5343872"}, -] +jupyter-highlight-selected-word = [] +jupyter-latex-envs = [] jupyter-nbextensions-configurator = [] -jupyter-server = [ - {file = "jupyter_server-1.18.1-py3-none-any.whl", hash = "sha256:022759b09c96a4e2feb95de59ce4283e04e17782efe197b91d23a47521609b77"}, - {file = "jupyter_server-1.18.1.tar.gz", hash = "sha256:2b72fc595bccae292260aad8157a0ead8da2c703ec6ae1bb7b36dbad0e267ea7"}, -] -jupyterlab = [ - {file = "jupyterlab-3.4.7-py3-none-any.whl", hash = "sha256:30c64bc0aa0ba09959ab6fd5c74f08a6ae64656b46a29e2522142a5fda0dc486"}, - {file = "jupyterlab-3.4.7.tar.gz", hash = "sha256:4dc48ab0980e3af2e921dff26e0013dd03b104b1b67f0d85b67448e16e25311e"}, -] -jupyterlab-pygments = [] -jupyterlab-server = [ - {file = "jupyterlab_server-2.15.0-py3-none-any.whl", hash = "sha256:0e327d7a346874fd8e94c1bcbd69906d18a8558df8f13115c5afd183c3107756"}, - {file = "jupyterlab_server-2.15.0.tar.gz", hash = "sha256:a91c515e0e7971a8f7c3c9834b748857f7dac502f93604bf283987991fd987ef"}, -] -jupyterlab-widgets = [ - {file = "jupyterlab_widgets-3.0.2-py3-none-any.whl", hash = "sha256:98303a281f4004670cdcea2ef4aecba19c580adc297664c593f967025625c8c5"}, - {file = "jupyterlab_widgets-3.0.2.tar.gz", hash = "sha256:47ab54cd165aa0cb3bcef1232d77471580cd2c36bbe2153fc5ba31e26ad87320"}, -] +jupyter-server = [] +jupyterlab = [] +jupyterlab-pygments = [ + {file = "jupyterlab_pygments-0.2.2-py2.py3-none-any.whl", hash = "sha256:2405800db07c9f770863bcf8049a529c3dd4d3e28536638bd7c1c01d2748309f"}, + {file = "jupyterlab_pygments-0.2.2.tar.gz", hash = "sha256:7405d7fde60819d905a9fa8ce89e4cd830e318cdad22a0030f7a901da705585d"}, +] +jupyterlab-server = [] +jupyterlab-widgets = [] kiwisolver = [] -lazy-object-proxy = [ - {file = "lazy-object-proxy-1.7.1.tar.gz", hash = "sha256:d609c75b986def706743cdebe5e47553f4a5a1da9c5ff66d76013ef396b5a8a4"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bb8c5fd1684d60a9902c60ebe276da1f2281a318ca16c1d0a96db28f62e9166b"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a57d51ed2997e97f3b8e3500c984db50a554bb5db56c50b5dab1b41339b37e36"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd45683c3caddf83abbb1249b653a266e7069a09f486daa8863fb0e7496a9fdb"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8561da8b3dd22d696244d6d0d5330618c993a215070f473b699e00cf1f3f6443"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fccdf7c2c5821a8cbd0a9440a456f5050492f2270bd54e94360cac663398739b"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-win32.whl", hash = "sha256:898322f8d078f2654d275124a8dd19b079080ae977033b713f677afcfc88e2b9"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:85b232e791f2229a4f55840ed54706110c80c0a210d076eee093f2b2e33e1bfd"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:46ff647e76f106bb444b4533bb4153c7370cdf52efc62ccfc1a28bdb3cc95442"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12f3bb77efe1367b2515f8cb4790a11cffae889148ad33adad07b9b55e0ab22c"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c19814163728941bb871240d45c4c30d33b8a2e85972c44d4e63dd7107faba44"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e40f2013d96d30217a51eeb1db28c9ac41e9d0ee915ef9d00da639c5b63f01a1"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:2052837718516a94940867e16b1bb10edb069ab475c3ad84fd1e1a6dd2c0fcfc"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win32.whl", hash = "sha256:6a24357267aa976abab660b1d47a34aaf07259a0c3859a34e536f1ee6e76b5bb"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win_amd64.whl", hash = "sha256:6aff3fe5de0831867092e017cf67e2750c6a1c7d88d84d2481bd84a2e019ec35"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6a6e94c7b02641d1311228a102607ecd576f70734dc3d5e22610111aeacba8a0"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ce15276a1a14549d7e81c243b887293904ad2d94ad767f42df91e75fd7b5b6"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e368b7f7eac182a59ff1f81d5f3802161932a41dc1b1cc45c1f757dc876b5d2c"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6ecbb350991d6434e1388bee761ece3260e5228952b1f0c46ffc800eb313ff42"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:553b0f0d8dbf21890dd66edd771f9b1b5f51bd912fa5f26de4449bfc5af5e029"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win32.whl", hash = "sha256:c7a683c37a8a24f6428c28c561c80d5f4fd316ddcf0c7cab999b15ab3f5c5c69"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:df2631f9d67259dc9620d831384ed7732a198eb434eadf69aea95ad18c587a28"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:07fa44286cda977bd4803b656ffc1c9b7e3bc7dff7d34263446aec8f8c96f88a"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4dca6244e4121c74cc20542c2ca39e5c4a5027c81d112bfb893cf0790f96f57e"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91ba172fc5b03978764d1df5144b4ba4ab13290d7bab7a50f12d8117f8630c38"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:043651b6cb706eee4f91854da4a089816a6606c1428fd391573ef8cb642ae4f7"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b9e89b87c707dd769c4ea91f7a31538888aad05c116a59820f28d59b3ebfe25a"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-win32.whl", hash = "sha256:9d166602b525bf54ac994cf833c385bfcc341b364e3ee71e3bf5a1336e677b55"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:8f3953eb575b45480db6568306893f0bd9d8dfeeebd46812aa09ca9579595148"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dd7ed7429dbb6c494aa9bc4e09d94b778a3579be699f9d67da7e6804c422d3de"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70ed0c2b380eb6248abdef3cd425fc52f0abd92d2b07ce26359fcbc399f636ad"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7096a5e0c1115ec82641afbdd70451a144558ea5cf564a896294e346eb611be1"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f769457a639403073968d118bc70110e7dce294688009f5c24ab78800ae56dc8"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:39b0e26725c5023757fc1ab2a89ef9d7ab23b84f9251e28f9cc114d5b59c1b09"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-win32.whl", hash = "sha256:2130db8ed69a48a3440103d4a520b89d8a9405f1b06e2cc81640509e8bf6548f"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:677ea950bef409b47e51e733283544ac3d660b709cfce7b187f5ace137960d61"}, - {file = "lazy_object_proxy-1.7.1-pp37.pp38-none-any.whl", hash = "sha256:d66906d5785da8e0be7360912e99c9188b70f52c422f9fc18223347235691a84"}, -] -liccheck = [ - {file = "liccheck-0.6.5-py2.py3-none-any.whl", hash = "sha256:10846e587127d08609a973570eb3b8ee8cfe32a4689c8fd76d6dc74c29013c7a"}, - {file = "liccheck-0.6.5.tar.gz", hash = "sha256:d4009f1876eb7e4228ecf495e36573ef5b8a226d4cd91235138e417f990a67e8"}, -] +lazy-object-proxy = [] +liccheck = [] lxml = [] -markupsafe = [] +markupsafe = [ + {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, + {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, +] marshmallow = [] marshmallow-dataclass = [] marshmallow-enum = [] @@ -2487,60 +2449,38 @@ matplotlib-inline = [ {file = "matplotlib-inline-0.1.3.tar.gz", hash = "sha256:a04bfba22e0d1395479f866853ec1ee28eea1485c1d69a6faf00dc3e24ff34ee"}, {file = "matplotlib_inline-0.1.3-py3-none-any.whl", hash = "sha256:aed605ba3b72462d64d475a21a9296f400a19c4f74a31b59103d2a99ffd5aa5c"}, ] -mccabe = [ - {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, - {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, -] -mistune = [ - {file = "mistune-2.0.4-py2.py3-none-any.whl", hash = "sha256:182cc5ee6f8ed1b807de6b7bb50155df7b66495412836b9a74c8fbdfc75fe36d"}, - {file = "mistune-2.0.4.tar.gz", hash = "sha256:9ee0a66053e2267aba772c71e06891fa8f1af6d4b01d5e84e267b4570d4d9808"}, -] +mccabe = [] +mistune = [] munch = [ {file = "munch-2.5.0-py2.py3-none-any.whl", hash = "sha256:6f44af89a2ce4ed04ff8de41f70b226b984db10a91dcc7b9ac2efc1c77022fdd"}, {file = "munch-2.5.0.tar.gz", hash = "sha256:2d735f6f24d4dba3417fa448cae40c6e896ec1fdab6cdb5e6510999758a4dbd2"}, ] -mypy = [ - {file = "mypy-0.910-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:a155d80ea6cee511a3694b108c4494a39f42de11ee4e61e72bc424c490e46457"}, - {file = "mypy-0.910-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:b94e4b785e304a04ea0828759172a15add27088520dc7e49ceade7834275bedb"}, - {file = "mypy-0.910-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:088cd9c7904b4ad80bec811053272986611b84221835e079be5bcad029e79dd9"}, - {file = "mypy-0.910-cp35-cp35m-win_amd64.whl", hash = "sha256:adaeee09bfde366d2c13fe6093a7df5df83c9a2ba98638c7d76b010694db760e"}, - {file = "mypy-0.910-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:ecd2c3fe726758037234c93df7e98deb257fd15c24c9180dacf1ef829da5f921"}, - {file = "mypy-0.910-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:d9dd839eb0dc1bbe866a288ba3c1afc33a202015d2ad83b31e875b5905a079b6"}, - {file = "mypy-0.910-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:3e382b29f8e0ccf19a2df2b29a167591245df90c0b5a2542249873b5c1d78212"}, - {file = "mypy-0.910-cp36-cp36m-win_amd64.whl", hash = "sha256:53fd2eb27a8ee2892614370896956af2ff61254c275aaee4c230ae771cadd885"}, - {file = "mypy-0.910-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b6fb13123aeef4a3abbcfd7e71773ff3ff1526a7d3dc538f3929a49b42be03f0"}, - {file = "mypy-0.910-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:e4dab234478e3bd3ce83bac4193b2ecd9cf94e720ddd95ce69840273bf44f6de"}, - {file = "mypy-0.910-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:7df1ead20c81371ccd6091fa3e2878559b5c4d4caadaf1a484cf88d93ca06703"}, - {file = "mypy-0.910-cp37-cp37m-win_amd64.whl", hash = "sha256:0aadfb2d3935988ec3815952e44058a3100499f5be5b28c34ac9d79f002a4a9a"}, - {file = "mypy-0.910-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ec4e0cd079db280b6bdabdc807047ff3e199f334050db5cbb91ba3e959a67504"}, - {file = "mypy-0.910-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:119bed3832d961f3a880787bf621634ba042cb8dc850a7429f643508eeac97b9"}, - {file = "mypy-0.910-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:866c41f28cee548475f146aa4d39a51cf3b6a84246969f3759cb3e9c742fc072"}, - {file = "mypy-0.910-cp38-cp38-win_amd64.whl", hash = "sha256:ceb6e0a6e27fb364fb3853389607cf7eb3a126ad335790fa1e14ed02fba50811"}, - {file = "mypy-0.910-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1a85e280d4d217150ce8cb1a6dddffd14e753a4e0c3cf90baabb32cefa41b59e"}, - {file = "mypy-0.910-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:42c266ced41b65ed40a282c575705325fa7991af370036d3f134518336636f5b"}, - {file = "mypy-0.910-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:3c4b8ca36877fc75339253721f69603a9c7fdb5d4d5a95a1a1b899d8b86a4de2"}, - {file = "mypy-0.910-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:c0df2d30ed496a08de5daed2a9ea807d07c21ae0ab23acf541ab88c24b26ab97"}, - {file = "mypy-0.910-cp39-cp39-win_amd64.whl", hash = "sha256:c6c2602dffb74867498f86e6129fd52a2770c48b7cd3ece77ada4fa38f94eba8"}, - {file = "mypy-0.910-py3-none-any.whl", hash = "sha256:ef565033fa5a958e62796867b1df10c40263ea9ded87164d67572834e57a174d"}, - {file = "mypy-0.910.tar.gz", hash = "sha256:704098302473cb31a218f1775a873b376b30b4c18229421e9e9dc8916fd16150"}, -] +mypy = [] mypy-extensions = [ {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, ] -nb-black = [] -nbclassic = [ - {file = "nbclassic-0.4.3-py3-none-any.whl", hash = "sha256:4b01076effdac53e775cd1b6a4e891663568b32621468e205b502a23b2921899"}, - {file = "nbclassic-0.4.3.tar.gz", hash = "sha256:f03111b2cebaa69b88370a7b23b19b2b37c9bb71767f1828cdfd7a047eae8edd"}, +nb-black = [ + {file = "nb_black-1.0.7.tar.gz", hash = "sha256:1ca52e3a46675f6a0a6d79ac73a1f8f951bef60f919eced56173e76ab1b6d62b"}, +] +nbclassic = [] +nbclient = [ + {file = "nbclient-0.6.6-py3-none-any.whl", hash = "sha256:09bae4ea2df79fa6bc50aeb8278d8b79d2036792824337fa6eee834afae17312"}, + {file = "nbclient-0.6.6.tar.gz", hash = "sha256:0df76a7961d99a681b4796c74a1f2553b9f998851acc01896dce064ad19a9027"}, ] -nbclient = [] -nbconvert = [ - {file = "nbconvert-7.0.0-py3-none-any.whl", hash = "sha256:26843ae233167e8aae31c20e3e1d91f431f04c9f34363bbe2dd0d247f772641c"}, - {file = "nbconvert-7.0.0.tar.gz", hash = "sha256:fd1e361da30e30e4c5a5ae89f7cae95ca2a4d4407389672473312249a7ba0060"}, +nbconvert = [] +nbformat = [ + {file = "nbformat-5.4.0-py3-none-any.whl", hash = "sha256:0d6072aaec95dddc39735c144ee8bbc6589c383fb462e4058abc855348152dad"}, + {file = "nbformat-5.4.0.tar.gz", hash = "sha256:44ba5ca6acb80c5d5a500f1e5b83ede8cbe364d5a495c4c8cf60aaf1ba656501"}, +] +nest-asyncio = [ + {file = "nest_asyncio-1.5.5-py3-none-any.whl", hash = "sha256:b98e3ec1b246135e4642eceffa5a6c23a3ab12c82ff816a92c612d68205813b2"}, + {file = "nest_asyncio-1.5.5.tar.gz", hash = "sha256:e442291cd942698be619823a17a86a5759eabe1f8613084790de189fe9e16d65"}, +] +notebook = [ + {file = "notebook-6.4.12-py3-none-any.whl", hash = "sha256:8c07a3bb7640e371f8a609bdbb2366a1976c6a2589da8ef917f761a61e3ad8b1"}, + {file = "notebook-6.4.12.tar.gz", hash = "sha256:6268c9ec9048cff7a45405c990c29ac9ca40b0bc3ec29263d218c5e01f2b4e86"}, ] -nbformat = [] -nest-asyncio = [] -notebook = [] notebook-shim = [ {file = "notebook_shim-0.1.0-py3-none-any.whl", hash = "sha256:02432d55a01139ac16e2100888aa2b56c614720cec73a27e71f40a5387e45324"}, {file = "notebook_shim-0.1.0.tar.gz", hash = "sha256:7897e47a36d92248925a2143e3596f19c60597708f7bef50d81fcd31d7263e85"}, @@ -2551,7 +2491,29 @@ packaging = [ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, ] -pandas = [] +pandas = [ + {file = "pandas-1.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d51674ed8e2551ef7773820ef5dab9322be0828629f2cbf8d1fc31a0c4fed640"}, + {file = "pandas-1.4.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:16ad23db55efcc93fa878f7837267973b61ea85d244fc5ff0ccbcfa5638706c5"}, + {file = "pandas-1.4.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:958a0588149190c22cdebbc0797e01972950c927a11a900fe6c2296f207b1d6f"}, + {file = "pandas-1.4.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e48fbb64165cda451c06a0f9e4c7a16b534fcabd32546d531b3c240ce2844112"}, + {file = "pandas-1.4.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f803320c9da732cc79210d7e8cc5c8019aad512589c910c66529eb1b1818230"}, + {file = "pandas-1.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:2893e923472a5e090c2d5e8db83e8f907364ec048572084c7d10ef93546be6d1"}, + {file = "pandas-1.4.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:24ea75f47bbd5574675dae21d51779a4948715416413b30614c1e8b480909f81"}, + {file = "pandas-1.4.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d5ebc990bd34f4ac3c73a2724c2dcc9ee7bf1ce6cf08e87bb25c6ad33507e318"}, + {file = "pandas-1.4.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d6c0106415ff1a10c326c49bc5dd9ea8b9897a6ca0c8688eb9c30ddec49535ef"}, + {file = "pandas-1.4.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78b00429161ccb0da252229bcda8010b445c4bf924e721265bec5a6e96a92e92"}, + {file = "pandas-1.4.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dfbf16b1ea4f4d0ee11084d9c026340514d1d30270eaa82a9f1297b6c8ecbf0"}, + {file = "pandas-1.4.3-cp38-cp38-win32.whl", hash = "sha256:48350592665ea3cbcd07efc8c12ff12d89be09cd47231c7925e3b8afada9d50d"}, + {file = "pandas-1.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:605d572126eb4ab2eadf5c59d5d69f0608df2bf7bcad5c5880a47a20a0699e3e"}, + {file = "pandas-1.4.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a3924692160e3d847e18702bb048dc38e0e13411d2b503fecb1adf0fcf950ba4"}, + {file = "pandas-1.4.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:07238a58d7cbc8a004855ade7b75bbd22c0db4b0ffccc721556bab8a095515f6"}, + {file = "pandas-1.4.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:755679c49460bd0d2f837ab99f0a26948e68fa0718b7e42afbabd074d945bf84"}, + {file = "pandas-1.4.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41fc406e374590a3d492325b889a2686b31e7a7780bec83db2512988550dadbf"}, + {file = "pandas-1.4.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d9382f72a4f0e93909feece6fef5500e838ce1c355a581b3d8f259839f2ea76"}, + {file = "pandas-1.4.3-cp39-cp39-win32.whl", hash = "sha256:0daf876dba6c622154b2e6741f29e87161f844e64f84801554f879d27ba63c0d"}, + {file = "pandas-1.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:721a3dd2f06ef942f83a819c0f3f6a648b2830b191a72bbe9451bcd49c3bd42e"}, + {file = "pandas-1.4.3.tar.gz", hash = "sha256:2ff7788468e75917574f080cd4681b27e1a7bf36461fe968b49a87b5a54d007c"}, +] pandas-vet = [] pandocfilters = [ {file = "pandocfilters-1.5.0-py2.py3-none-any.whl", hash = "sha256:33aae3f25fd1a026079f5d27bdd52496f0e0803b3469282162bafdcbdf6ef14f"}, @@ -2562,10 +2524,7 @@ parso = [ {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"}, {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"}, ] -pathspec = [ - {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, - {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, -] +pathspec = [] pexpect = [ {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"}, {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"}, @@ -2577,13 +2536,46 @@ pickleshare = [ pillow = [] pkgutil-resolve-name = [] platformdirs = [] -pluggy = [ - {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, - {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, +pluggy = [] +prometheus-client = [ + {file = "prometheus_client-0.14.1-py3-none-any.whl", hash = "sha256:522fded625282822a89e2773452f42df14b5a8e84a86433e3f8a189c1d54dc01"}, + {file = "prometheus_client-0.14.1.tar.gz", hash = "sha256:5459c427624961076277fdc6dc50540e2bacb98eebde99886e59ec55ed92093a"}, ] -prometheus-client = [] prompt-toolkit = [] -psutil = [] +psutil = [ + {file = "psutil-5.9.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:799759d809c31aab5fe4579e50addf84565e71c1dc9f1c31258f159ff70d3f87"}, + {file = "psutil-5.9.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:9272167b5f5fbfe16945be3db475b3ce8d792386907e673a209da686176552af"}, + {file = "psutil-5.9.1-cp27-cp27m-win32.whl", hash = "sha256:0904727e0b0a038830b019551cf3204dd48ef5c6868adc776e06e93d615fc5fc"}, + {file = "psutil-5.9.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e7e10454cb1ab62cc6ce776e1c135a64045a11ec4c6d254d3f7689c16eb3efd2"}, + {file = "psutil-5.9.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:56960b9e8edcca1456f8c86a196f0c3d8e3e361320071c93378d41445ffd28b0"}, + {file = "psutil-5.9.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:44d1826150d49ffd62035785a9e2c56afcea66e55b43b8b630d7706276e87f22"}, + {file = "psutil-5.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c7be9d7f5b0d206f0bbc3794b8e16fb7dbc53ec9e40bbe8787c6f2d38efcf6c9"}, + {file = "psutil-5.9.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd9246e4cdd5b554a2ddd97c157e292ac11ef3e7af25ac56b08b455c829dca8"}, + {file = "psutil-5.9.1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:29a442e25fab1f4d05e2655bb1b8ab6887981838d22effa2396d584b740194de"}, + {file = "psutil-5.9.1-cp310-cp310-win32.whl", hash = "sha256:20b27771b077dcaa0de1de3ad52d22538fe101f9946d6dc7869e6f694f079329"}, + {file = "psutil-5.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:58678bbadae12e0db55186dc58f2888839228ac9f41cc7848853539b70490021"}, + {file = "psutil-5.9.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:3a76ad658641172d9c6e593de6fe248ddde825b5866464c3b2ee26c35da9d237"}, + {file = "psutil-5.9.1-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a6a11e48cb93a5fa606306493f439b4aa7c56cb03fc9ace7f6bfa21aaf07c453"}, + {file = "psutil-5.9.1-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:068935df39055bf27a29824b95c801c7a5130f118b806eee663cad28dca97685"}, + {file = "psutil-5.9.1-cp36-cp36m-win32.whl", hash = "sha256:0f15a19a05f39a09327345bc279c1ba4a8cfb0172cc0d3c7f7d16c813b2e7d36"}, + {file = "psutil-5.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:db417f0865f90bdc07fa30e1aadc69b6f4cad7f86324b02aa842034efe8d8c4d"}, + {file = "psutil-5.9.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:91c7ff2a40c373d0cc9121d54bc5f31c4fa09c346528e6a08d1845bce5771ffc"}, + {file = "psutil-5.9.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fea896b54f3a4ae6f790ac1d017101252c93f6fe075d0e7571543510f11d2676"}, + {file = "psutil-5.9.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3054e923204b8e9c23a55b23b6df73a8089ae1d075cb0bf711d3e9da1724ded4"}, + {file = "psutil-5.9.1-cp37-cp37m-win32.whl", hash = "sha256:d2d006286fbcb60f0b391741f520862e9b69f4019b4d738a2a45728c7e952f1b"}, + {file = "psutil-5.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:b14ee12da9338f5e5b3a3ef7ca58b3cba30f5b66f7662159762932e6d0b8f680"}, + {file = "psutil-5.9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:19f36c16012ba9cfc742604df189f2f28d2720e23ff7d1e81602dbe066be9fd1"}, + {file = "psutil-5.9.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:944c4b4b82dc4a1b805329c980f270f170fdc9945464223f2ec8e57563139cf4"}, + {file = "psutil-5.9.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b6750a73a9c4a4e689490ccb862d53c7b976a2a35c4e1846d049dcc3f17d83b"}, + {file = "psutil-5.9.1-cp38-cp38-win32.whl", hash = "sha256:a8746bfe4e8f659528c5c7e9af5090c5a7d252f32b2e859c584ef7d8efb1e689"}, + {file = "psutil-5.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:79c9108d9aa7fa6fba6e668b61b82facc067a6b81517cab34d07a84aa89f3df0"}, + {file = "psutil-5.9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:28976df6c64ddd6320d281128817f32c29b539a52bdae5e192537bc338a9ec81"}, + {file = "psutil-5.9.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b88f75005586131276634027f4219d06e0561292be8bd6bc7f2f00bdabd63c4e"}, + {file = "psutil-5.9.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:645bd4f7bb5b8633803e0b6746ff1628724668681a434482546887d22c7a9537"}, + {file = "psutil-5.9.1-cp39-cp39-win32.whl", hash = "sha256:32c52611756096ae91f5d1499fe6c53b86f4a9ada147ee42db4991ba1520e574"}, + {file = "psutil-5.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:f65f9a46d984b8cd9b3750c2bdb419b2996895b005aefa6cbaba9a143b1ce2c5"}, + {file = "psutil-5.9.1.tar.gz", hash = "sha256:57f1819b5d9e95cdfb0c881a8a5b7d542ed0b7c522d575706a80bedc848c8954"}, +] ptyprocess = [ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, @@ -2592,61 +2584,45 @@ py = [ {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, ] -pycodestyle = [ - {file = "pycodestyle-2.7.0-py2.py3-none-any.whl", hash = "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068"}, - {file = "pycodestyle-2.7.0.tar.gz", hash = "sha256:c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef"}, -] +pycodestyle = [] pycparser = [ {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, ] -pydantic = [ - {file = "pydantic-1.10.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bb6ad4489af1bac6955d38ebcb95079a836af31e4c4f74aba1ca05bb9f6027bd"}, - {file = "pydantic-1.10.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a1f5a63a6dfe19d719b1b6e6106561869d2efaca6167f84f5ab9347887d78b98"}, - {file = "pydantic-1.10.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:352aedb1d71b8b0736c6d56ad2bd34c6982720644b0624462059ab29bd6e5912"}, - {file = "pydantic-1.10.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19b3b9ccf97af2b7519c42032441a891a5e05c68368f40865a90eb88833c2559"}, - {file = "pydantic-1.10.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e9069e1b01525a96e6ff49e25876d90d5a563bc31c658289a8772ae186552236"}, - {file = "pydantic-1.10.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:355639d9afc76bcb9b0c3000ddcd08472ae75318a6eb67a15866b87e2efa168c"}, - {file = "pydantic-1.10.2-cp310-cp310-win_amd64.whl", hash = "sha256:ae544c47bec47a86bc7d350f965d8b15540e27e5aa4f55170ac6a75e5f73b644"}, - {file = "pydantic-1.10.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a4c805731c33a8db4b6ace45ce440c4ef5336e712508b4d9e1aafa617dc9907f"}, - {file = "pydantic-1.10.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d49f3db871575e0426b12e2f32fdb25e579dea16486a26e5a0474af87cb1ab0a"}, - {file = "pydantic-1.10.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37c90345ec7dd2f1bcef82ce49b6235b40f282b94d3eec47e801baf864d15525"}, - {file = "pydantic-1.10.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b5ba54d026c2bd2cb769d3468885f23f43710f651688e91f5fb1edcf0ee9283"}, - {file = "pydantic-1.10.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:05e00dbebbe810b33c7a7362f231893183bcc4251f3f2ff991c31d5c08240c42"}, - {file = "pydantic-1.10.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2d0567e60eb01bccda3a4df01df677adf6b437958d35c12a3ac3e0f078b0ee52"}, - {file = "pydantic-1.10.2-cp311-cp311-win_amd64.whl", hash = "sha256:c6f981882aea41e021f72779ce2a4e87267458cc4d39ea990729e21ef18f0f8c"}, - {file = "pydantic-1.10.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c4aac8e7103bf598373208f6299fa9a5cfd1fc571f2d40bf1dd1955a63d6eeb5"}, - {file = "pydantic-1.10.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a7b66c3f499108b448f3f004801fcd7d7165fb4200acb03f1c2402da73ce4c"}, - {file = "pydantic-1.10.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bedf309630209e78582ffacda64a21f96f3ed2e51fbf3962d4d488e503420254"}, - {file = "pydantic-1.10.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:9300fcbebf85f6339a02c6994b2eb3ff1b9c8c14f502058b5bf349d42447dcf5"}, - {file = "pydantic-1.10.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:216f3bcbf19c726b1cc22b099dd409aa371f55c08800bcea4c44c8f74b73478d"}, - {file = "pydantic-1.10.2-cp37-cp37m-win_amd64.whl", hash = "sha256:dd3f9a40c16daf323cf913593083698caee97df2804aa36c4b3175d5ac1b92a2"}, - {file = "pydantic-1.10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b97890e56a694486f772d36efd2ba31612739bc6f3caeee50e9e7e3ebd2fdd13"}, - {file = "pydantic-1.10.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9cabf4a7f05a776e7793e72793cd92cc865ea0e83a819f9ae4ecccb1b8aa6116"}, - {file = "pydantic-1.10.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06094d18dd5e6f2bbf93efa54991c3240964bb663b87729ac340eb5014310624"}, - {file = "pydantic-1.10.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cc78cc83110d2f275ec1970e7a831f4e371ee92405332ebfe9860a715f8336e1"}, - {file = "pydantic-1.10.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ee433e274268a4b0c8fde7ad9d58ecba12b069a033ecc4645bb6303c062d2e9"}, - {file = "pydantic-1.10.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7c2abc4393dea97a4ccbb4ec7d8658d4e22c4765b7b9b9445588f16c71ad9965"}, - {file = "pydantic-1.10.2-cp38-cp38-win_amd64.whl", hash = "sha256:0b959f4d8211fc964772b595ebb25f7652da3f22322c007b6fed26846a40685e"}, - {file = "pydantic-1.10.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c33602f93bfb67779f9c507e4d69451664524389546bacfe1bee13cae6dc7488"}, - {file = "pydantic-1.10.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5760e164b807a48a8f25f8aa1a6d857e6ce62e7ec83ea5d5c5a802eac81bad41"}, - {file = "pydantic-1.10.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6eb843dcc411b6a2237a694f5e1d649fc66c6064d02b204a7e9d194dff81eb4b"}, - {file = "pydantic-1.10.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b8795290deaae348c4eba0cebb196e1c6b98bdbe7f50b2d0d9a4a99716342fe"}, - {file = "pydantic-1.10.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e0bedafe4bc165ad0a56ac0bd7695df25c50f76961da29c050712596cf092d6d"}, - {file = "pydantic-1.10.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2e05aed07fa02231dbf03d0adb1be1d79cabb09025dd45aa094aa8b4e7b9dcda"}, - {file = "pydantic-1.10.2-cp39-cp39-win_amd64.whl", hash = "sha256:c1ba1afb396148bbc70e9eaa8c06c1716fdddabaf86e7027c5988bae2a829ab6"}, - {file = "pydantic-1.10.2-py3-none-any.whl", hash = "sha256:1b6ee725bd6e83ec78b1aa32c5b1fa67a3a65badddde3976bca5fe4568f27709"}, - {file = "pydantic-1.10.2.tar.gz", hash = "sha256:91b8e218852ef6007c2b98cd861601c6a09f1aa32bbbb74fab5b1c33d4a1e410"}, -] -pyflakes = [ - {file = "pyflakes-2.3.1-py2.py3-none-any.whl", hash = "sha256:7893783d01b8a89811dd72d7dfd4d84ff098e5eed95cfa8905b22bbffe52efc3"}, - {file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"}, -] +pydantic = [] +pyflakes = [] pygments = [] pylint = [] pypandoc = [] -pyparsing = [] -pyproj = [] +pyparsing = [ + {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, + {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, +] +pyproj = [ + {file = "pyproj-3.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:473961faef7a9fd723c5d432f65220ea6ab3854e606bf84b4d409a75a4261c78"}, + {file = "pyproj-3.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2fef9c1e339f25c57f6ae0558b5ab1bbdf7994529a30d8d7504fc6302ea51c03"}, + {file = "pyproj-3.3.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:140fa649fedd04f680a39f8ad339799a55cb1c49f6a84e1b32b97e49646647aa"}, + {file = "pyproj-3.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b59c08aea13ee428cf8a919212d55c036cc94784805ed77c8f31a4d1f541058c"}, + {file = "pyproj-3.3.1-cp310-cp310-win32.whl", hash = "sha256:1adc9ccd1bf04998493b6a2e87e60656c75ab790653b36cfe351e9ef214828ed"}, + {file = "pyproj-3.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:42eea10afc750fccd1c5c4ba56de29ab791ab4d83c1f7db72705566282ac5396"}, + {file = "pyproj-3.3.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:531ea36519fa7b581466d4b6ab32f66ae4dadd9499d726352f71ee5e19c3d1c5"}, + {file = "pyproj-3.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67025e37598a6bbed2c9c6c9e4c911f6dd39315d3e1148ead935a5c4d64309d5"}, + {file = "pyproj-3.3.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aed1a3c0cd4182425f91b48d5db39f459bc2fe0d88017ead6425a1bc85faee33"}, + {file = "pyproj-3.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cc4771403db54494e1e55bca8e6d33cde322f8cf0ed39f1557ff109c66d2cd1"}, + {file = "pyproj-3.3.1-cp38-cp38-win32.whl", hash = "sha256:c99f7b5757a28040a2dd4a28c9805fdf13eef79a796f4a566ab5cb362d10630d"}, + {file = "pyproj-3.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:5dac03d4338a4c8bd0f69144c527474f517b4cbd7d2d8c532cd8937799723248"}, + {file = "pyproj-3.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:56b0f9ee2c5b2520b18db30a393a7b86130cf527ddbb8c96e7f3c837474a9d79"}, + {file = "pyproj-3.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f92d8f6514516124abb714dce912b20867831162cfff9fae2678ef07b6fcf0f"}, + {file = "pyproj-3.3.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1ef1bfbe2dcc558c7a98e2f1836abdcd630390f3160724a6f4f5c818b2be0ad5"}, + {file = "pyproj-3.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ca5f32b56210429b367ca4f9a57ffe67975c487af82e179a24370879a3daf68"}, + {file = "pyproj-3.3.1-cp39-cp39-win32.whl", hash = "sha256:aba199704c824fb84ab64927e7bc9ef71e603e483130ec0f7e09e97259b8f61f"}, + {file = "pyproj-3.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:120d45ed73144c65e9677dc73ba8a531c495d179dd9f9f0471ac5acc02d7ac4b"}, + {file = "pyproj-3.3.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:52efb681647dfac185cc655a709bc0caaf910031a0390f816f5fc8ce150cbedc"}, + {file = "pyproj-3.3.1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ab0d6e38fda7c13726afacaf62e9f9dd858089d67910471758afd9cb24e0ecd"}, + {file = "pyproj-3.3.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45487942c19c5a8b09c91964ea3201f4e094518e34743cae373889a36e3d9260"}, + {file = "pyproj-3.3.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:797ad5655d484feac14b0fbb4a4efeaac0cf780a223046e2465494c767fd1c3b"}, + {file = "pyproj-3.3.1.tar.gz", hash = "sha256:b3d8e14d91cc95fb3dbc03a9d0588ac58326803eefa5bbb0978d109de3304fbe"}, +] pyrsistent = [ {file = "pyrsistent-0.18.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:df46c854f490f81210870e509818b729db4488e1f30f2a1ce1698b2295a878d1"}, {file = "pyrsistent-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d45866ececf4a5fff8742c25722da6d4c9e180daa7b405dc0a2a2790d668c26"}, @@ -2670,10 +2646,7 @@ pyrsistent = [ {file = "pyrsistent-0.18.1-cp39-cp39-win_amd64.whl", hash = "sha256:e24a828f57e0c337c8d8bb9f6b12f09dfdf0273da25fda9e314f0b684b415a07"}, {file = "pyrsistent-0.18.1.tar.gz", hash = "sha256:d4d61f8b993a7255ba714df3aca52700f8125289f84f704cf80916517c46eb96"}, ] -pytest = [ - {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, - {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, -] +pytest = [] pytest-mock = [] pytest-snapshot = [] python-dateutil = [ @@ -2681,47 +2654,31 @@ python-dateutil = [ {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, ] pytz = [] -pywin32 = [] -pywinpty = [] -pyyaml = [ - {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, - {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, - {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, - {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, - {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, - {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, - {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, - {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, - {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, - {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, - {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, - {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, - {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, - {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, - {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, - {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, +pywin32 = [ + {file = "pywin32-304-cp310-cp310-win32.whl", hash = "sha256:3c7bacf5e24298c86314f03fa20e16558a4e4138fc34615d7de4070c23e65af3"}, + {file = "pywin32-304-cp310-cp310-win_amd64.whl", hash = "sha256:4f32145913a2447736dad62495199a8e280a77a0ca662daa2332acf849f0be48"}, + {file = "pywin32-304-cp310-cp310-win_arm64.whl", hash = "sha256:d3ee45adff48e0551d1aa60d2ec066fec006083b791f5c3527c40cd8aefac71f"}, + {file = "pywin32-304-cp311-cp311-win32.whl", hash = "sha256:30c53d6ce44c12a316a06c153ea74152d3b1342610f1b99d40ba2795e5af0269"}, + {file = "pywin32-304-cp311-cp311-win_amd64.whl", hash = "sha256:7ffa0c0fa4ae4077e8b8aa73800540ef8c24530057768c3ac57c609f99a14fd4"}, + {file = "pywin32-304-cp311-cp311-win_arm64.whl", hash = "sha256:cbbe34dad39bdbaa2889a424d28752f1b4971939b14b1bb48cbf0182a3bcfc43"}, + {file = "pywin32-304-cp36-cp36m-win32.whl", hash = "sha256:be253e7b14bc601718f014d2832e4c18a5b023cbe72db826da63df76b77507a1"}, + {file = "pywin32-304-cp36-cp36m-win_amd64.whl", hash = "sha256:de9827c23321dcf43d2f288f09f3b6d772fee11e809015bdae9e69fe13213988"}, + {file = "pywin32-304-cp37-cp37m-win32.whl", hash = "sha256:f64c0377cf01b61bd5e76c25e1480ca8ab3b73f0c4add50538d332afdf8f69c5"}, + {file = "pywin32-304-cp37-cp37m-win_amd64.whl", hash = "sha256:bb2ea2aa81e96eee6a6b79d87e1d1648d3f8b87f9a64499e0b92b30d141e76df"}, + {file = "pywin32-304-cp38-cp38-win32.whl", hash = "sha256:94037b5259701988954931333aafd39cf897e990852115656b014ce72e052e96"}, + {file = "pywin32-304-cp38-cp38-win_amd64.whl", hash = "sha256:ead865a2e179b30fb717831f73cf4373401fc62fbc3455a0889a7ddac848f83e"}, + {file = "pywin32-304-cp39-cp39-win32.whl", hash = "sha256:25746d841201fd9f96b648a248f731c1dec851c9a08b8e33da8b56148e4c65cc"}, + {file = "pywin32-304-cp39-cp39-win_amd64.whl", hash = "sha256:d24a3382f013b21aa24a5cfbfad5a2cd9926610c0affde3e8ab5b3d7dbcf4ac9"}, ] +pywinpty = [] +pyyaml = [] pyzmq = [] qtconsole = [] qtpy = [] -requests = [] +requests = [ + {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, + {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, +] rtree = [ {file = "Rtree-1.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:757bbf9ca38c241e34812a646f16ffda2cabd535bcd815041b83fe091df7a85c"}, {file = "Rtree-1.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fe3954a51d691d3938cbac42ac97f4acacbea8ea622a375df901318a5c4ab0e9"}, @@ -2754,49 +2711,9 @@ rtree = [ {file = "Rtree-1.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:bc6e7384684a260eb2f04fcac64ca5ffe28876132a11d1a883db2a5db8becb64"}, {file = "Rtree-1.0.0.tar.gz", hash = "sha256:d0483482121346b093b9a42518d40f921adf445915b7aea307eb26768c839682"}, ] -"ruamel.yaml" = [ - {file = "ruamel.yaml-0.17.21-py3-none-any.whl", hash = "sha256:742b35d3d665023981bd6d16b3d24248ce5df75fdb4e2924e93a05c1f8b61ca7"}, - {file = "ruamel.yaml-0.17.21.tar.gz", hash = "sha256:8b7ce697a2f212752a35c1ac414471dc16c424c9573be4926b56ff3f5d23b7af"}, -] -"ruamel.yaml.clib" = [ - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d5859983f26d8cd7bb5c287ef452e8aacc86501487634573d260968f753e1d71"}, - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:debc87a9516b237d0466a711b18b6ebeb17ba9f391eb7f91c649c5c4ec5006c7"}, - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:df5828871e6648db72d1c19b4bd24819b80a755c4541d3409f0f7acd0f335c80"}, - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:efa08d63ef03d079dcae1dfe334f6c8847ba8b645d08df286358b1f5293d24ab"}, - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win32.whl", hash = "sha256:763d65baa3b952479c4e972669f679fe490eee058d5aa85da483ebae2009d231"}, - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:d000f258cf42fec2b1bbf2863c61d7b8918d31ffee905da62dede869254d3b8a"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:045e0626baf1c52e5527bd5db361bc83180faaba2ff586e763d3d5982a876a9e"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_12_6_arm64.whl", hash = "sha256:721bc4ba4525f53f6a611ec0967bdcee61b31df5a56801281027a3a6d1c2daf5"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4b3a93bb9bc662fc1f99c5c3ea8e623d8b23ad22f861eb6fce9377ac07ad6072"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-macosx_12_0_arm64.whl", hash = "sha256:a234a20ae07e8469da311e182e70ef6b199d0fbeb6c6cc2901204dd87fb867e8"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:15910ef4f3e537eea7fe45f8a5d19997479940d9196f357152a09031c5be59f3"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:370445fd795706fd291ab00c9df38a0caed0f17a6fb46b0f607668ecb16ce763"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-win32.whl", hash = "sha256:ecdf1a604009bd35c674b9225a8fa609e0282d9b896c03dd441a91e5f53b534e"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-win_amd64.whl", hash = "sha256:f34019dced51047d6f70cb9383b2ae2853b7fc4dce65129a5acd49f4f9256646"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2aa261c29a5545adfef9296b7e33941f46aa5bbd21164228e833412af4c9c75f"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-macosx_12_0_arm64.whl", hash = "sha256:f01da5790e95815eb5a8a138508c01c758e5f5bc0ce4286c4f7028b8dd7ac3d0"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:40d030e2329ce5286d6b231b8726959ebbe0404c92f0a578c0e2482182e38282"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:c3ca1fbba4ae962521e5eb66d72998b51f0f4d0f608d3c0347a48e1af262efa7"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-win32.whl", hash = "sha256:7bdb4c06b063f6fd55e472e201317a3bb6cdeeee5d5a38512ea5c01e1acbdd93"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-win_amd64.whl", hash = "sha256:be2a7ad8fd8f7442b24323d24ba0b56c51219513cfa45b9ada3b87b76c374d4b"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:91a789b4aa0097b78c93e3dc4b40040ba55bef518f84a40d4442f713b4094acb"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:99e77daab5d13a48a4054803d052ff40780278240a902b880dd37a51ba01a307"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:3243f48ecd450eddadc2d11b5feb08aca941b5cd98c9b1db14b2fd128be8c697"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:8831a2cedcd0f0927f788c5bdf6567d9dc9cc235646a434986a852af1cb54b4b"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-win32.whl", hash = "sha256:3110a99e0f94a4a3470ff67fc20d3f96c25b13d24c6980ff841e82bafe827cac"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-win_amd64.whl", hash = "sha256:92460ce908546ab69770b2e576e4f99fbb4ce6ab4b245345a3869a0a0410488f"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5bc0667c1eb8f83a3752b71b9c4ba55ef7c7058ae57022dd9b29065186a113d9"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:4a4d8d417868d68b979076a9be6a38c676eca060785abaa6709c7b31593c35d1"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:bf9a6bc4a0221538b1a7de3ed7bca4c93c02346853f44e1cd764be0023cd3640"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:a7b301ff08055d73223058b5c46c55638917f04d21577c95e00e0c4d79201a6b"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-win32.whl", hash = "sha256:d5e51e2901ec2366b79f16c2299a03e74ba4531ddcfacc1416639c557aef0ad8"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-win_amd64.whl", hash = "sha256:184faeaec61dbaa3cace407cffc5819f7b977e75360e8d5ca19461cd851a5fc5"}, - {file = "ruamel.yaml.clib-0.2.7.tar.gz", hash = "sha256:1f08fd5a2bea9c4180db71678e850b995d2a5f4537be0e94557668cf0f5f9497"}, -] -safety = [ - {file = "safety-2.3.1-py3-none-any.whl", hash = "sha256:8f098d12b607db2756886280e85c28ece8db1bba4f45fc5f981f4663217bd619"}, - {file = "safety-2.3.1.tar.gz", hash = "sha256:6e6fcb7d4e8321098cf289f59b65051cafd3467f089c6e57c9f894ae32c23b71"}, -] +"ruamel.yaml" = [] +"ruamel.yaml.clib" = [] +safety = [] scipy = [] seaborn = [] semantic-version = [] @@ -2804,46 +2721,8 @@ send2trash = [ {file = "Send2Trash-1.8.0-py3-none-any.whl", hash = "sha256:f20eaadfdb517eaca5ce077640cb261c7d2698385a6a0f072a4a5447fd49fa08"}, {file = "Send2Trash-1.8.0.tar.gz", hash = "sha256:d2c24762fd3759860a0aff155e45871447ea58d2be6bdd39b5c8f966a0c99c2d"}, ] -setuptools-scm = [ - {file = "setuptools_scm-6.4.2-py3-none-any.whl", hash = "sha256:acea13255093849de7ccb11af9e1fb8bde7067783450cee9ef7a93139bddf6d4"}, - {file = "setuptools_scm-6.4.2.tar.gz", hash = "sha256:6833ac65c6ed9711a4d5d2266f8024cfa07c533a0e55f4c12f6eff280a5a9e30"}, -] -shapely = [ - {file = "Shapely-1.8.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c9e3400b716c51ba43eea1678c28272580114e009b6c78cdd00c44df3e325fa"}, - {file = "Shapely-1.8.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ce0b5c5f7acbccf98b3460eecaa40e9b18272b2a734f74fcddf1d7696e047e95"}, - {file = "Shapely-1.8.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3a40bf497b57a6625b83996aed10ce2233bca0e5471b8af771b186d681433ac5"}, - {file = "Shapely-1.8.2-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6bdc7728f1e5df430d8c588661f79f1eed4a2728c8b689e12707cfec217f68f8"}, - {file = "Shapely-1.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a60861b5ca2c488ebcdc706eca94d325c26d1567921c74acc83df5e6913590c7"}, - {file = "Shapely-1.8.2-cp310-cp310-win32.whl", hash = "sha256:840be3f27a1152851c54b968f2e12d718c9f13b7acd51c482e58a70f60f29e31"}, - {file = "Shapely-1.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:c60f3758212ec480675b820b13035dda8af8f7cc560d2cc67999b2717fb8faef"}, - {file = "Shapely-1.8.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:56413f7d32c70b63f239eb0865b24c0c61029e38757de456cc4ab3c416559a0b"}, - {file = "Shapely-1.8.2-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:256bdf8080bb7bb504d47b2c76919ecebab9708cc1b26266b3ec32b42448f642"}, - {file = "Shapely-1.8.2-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c0a0d7752b145343838bd36ed09382d85f5befe426832d7384c5b051c147acbd"}, - {file = "Shapely-1.8.2-cp36-cp36m-win32.whl", hash = "sha256:62056e64b12b6d483d79f8e34bf058d2fe734d51c9227c1713705399434eff3b"}, - {file = "Shapely-1.8.2-cp36-cp36m-win_amd64.whl", hash = "sha256:8e3ed52a081da58eb4a885c157c594876633dbd4eb283f13ba5bf39c82322d76"}, - {file = "Shapely-1.8.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7c8eda45085ccdd7f9805ea4a93fdd5eb0b6039a61d5f0cefb960487e6dc17a1"}, - {file = "Shapely-1.8.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:beee3949ddf381735049cfa6532fb234d5d20a5be910c4f2fb7c7295fd7960e3"}, - {file = "Shapely-1.8.2-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e07b0bd2a0e61a8afd4d1c1bd23f3550b711f01274ffb53de99358fd781eefd8"}, - {file = "Shapely-1.8.2-cp37-cp37m-win32.whl", hash = "sha256:78966332a89813b237de357a03f612fd451a871fe6e26c12b6b71645fe8eee39"}, - {file = "Shapely-1.8.2-cp37-cp37m-win_amd64.whl", hash = "sha256:8fe641f1f61b3d43dd61b5a85d2ef023e6e19bf8f204a5160a1cb1ec645cbc09"}, - {file = "Shapely-1.8.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:cec89a5617c0137f4678282e983c3d63bf838fb00cdf318cc555b4d8409f7130"}, - {file = "Shapely-1.8.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:68c8e18dc9dc8a198c3addc8c9596f64137101f566f04b96ecfca0b214cb8b12"}, - {file = "Shapely-1.8.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f12695662c3ad1e6031b3de98f191963d0f09de6d1a4988acd907405644032ba"}, - {file = "Shapely-1.8.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:15a856fbb588ad5d042784e00918c662902776452008c771ecba2ff615cd197a"}, - {file = "Shapely-1.8.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d74de394684d66e25e780b0359fda85be7766af85940fa2dfad728b1a815c71f"}, - {file = "Shapely-1.8.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3f3fac625690f01f35af665649e993f15f924e740b5c0ac0376900655815521"}, - {file = "Shapely-1.8.2-cp38-cp38-win32.whl", hash = "sha256:1d95842cc6bbbeab673061b63e70b07be9a375c15a60f4098f8fbd29f43af1b4"}, - {file = "Shapely-1.8.2-cp38-cp38-win_amd64.whl", hash = "sha256:a58e1f362f2091743e5e13212f5d5d16251a4bb63dd0ed587c652d3be9620d3a"}, - {file = "Shapely-1.8.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5254240eefc44139ab0d128faf671635d8bdd9c23955ee063d4d6b8f20073ae0"}, - {file = "Shapely-1.8.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:75042e8039c79dd01f102bb288beace9dc2f49fc44a2dea875f9b697aa8cd30d"}, - {file = "Shapely-1.8.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0c0fd457ce477b1dced507a72f1e2084c9191bfcb8a1e09886990ebd02acf024"}, - {file = "Shapely-1.8.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6fcb28836ae93809de1dde73c03c9c24bab0ba2b2bf419ddb2aeb72c96d110e9"}, - {file = "Shapely-1.8.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:44d2832c1b706bf43101fda92831a083467cc4b4923a7ed17319ab599c1025d8"}, - {file = "Shapely-1.8.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:137f1369630408024a62ff79a437a5657e6c5b76b9cd352dde704b425acdb298"}, - {file = "Shapely-1.8.2-cp39-cp39-win32.whl", hash = "sha256:2e02da2e988e74d61f15c720f9f613fab51942aae2dfeacdcb78eadece00e1f3"}, - {file = "Shapely-1.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:3423299254deec075e79fb7dc7909d702104e4167149de7f45510c3a6342eeea"}, - {file = "Shapely-1.8.2.tar.gz", hash = "sha256:572af9d5006fd5e3213e37ee548912b0341fb26724d6dc8a4e3950c10197ebb6"}, -] +setuptools-scm = [] +shapely = [] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, @@ -2852,43 +2731,37 @@ sniffio = [ {file = "sniffio-1.2.0-py3-none-any.whl", hash = "sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663"}, {file = "sniffio-1.2.0.tar.gz", hash = "sha256:c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de"}, ] -soupsieve = [] +soupsieve = [ + {file = "soupsieve-2.3.2.post1-py3-none-any.whl", hash = "sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759"}, + {file = "soupsieve-2.3.2.post1.tar.gz", hash = "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d"}, +] tenacity = [] -terminado = [] -textwrap3 = [] -tinycss2 = [] -toml = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +terminado = [ + {file = "terminado-0.15.0-py3-none-any.whl", hash = "sha256:0d5f126fbfdb5887b25ae7d9d07b0d716b1cc0ccaacc71c1f3c14d228e065197"}, + {file = "terminado-0.15.0.tar.gz", hash = "sha256:ab4eeedccfcc1e6134bfee86106af90852c69d602884ea3a1e8ca6d4486e9bfe"}, ] -tomli = [ - {file = "tomli-1.2.3-py3-none-any.whl", hash = "sha256:e3069e4be3ead9668e21cb9b074cd948f7b3113fd9c8bba083f48247aab8b11c"}, - {file = "tomli-1.2.3.tar.gz", hash = "sha256:05b6166bff487dc068d322585c7ea4ef78deed501cc124060e0f238e89a9231f"}, +textwrap3 = [] +tinycss2 = [ + {file = "tinycss2-1.1.1-py3-none-any.whl", hash = "sha256:fe794ceaadfe3cf3e686b22155d0da5780dd0e273471a51846d0a02bc204fec8"}, + {file = "tinycss2-1.1.1.tar.gz", hash = "sha256:b2e44dd8883c360c35dd0d1b5aad0b610e5156c2cb3b33434634e539ead9d8bf"}, ] +toml = [] +tomli = [] tomlkit = [] tornado = [] tox = [] -tox-poetry = [ - {file = "tox-poetry-0.4.1.tar.gz", hash = "sha256:2395808e1ce487b5894c10f2202e14702bfa6d6909c0d1e525170d14809ac7ef"}, - {file = "tox_poetry-0.4.1-py2.py3-none-any.whl", hash = "sha256:11d9cd4e51d4cd9484b3ba63f2650ab4cfb4096e5f0682ecf561ddfc3c8e8c92"}, +tox-poetry = [] +tqdm = [] +traitlets = [ + {file = "traitlets-5.3.0-py3-none-any.whl", hash = "sha256:65fa18961659635933100db8ca120ef6220555286949774b9cfc106f941d1c7a"}, + {file = "traitlets-5.3.0.tar.gz", hash = "sha256:0bb9f1f9f017aa8ec187d8b1b2a7a6626a2a1d877116baba52a129bfa124f8e2"}, ] -tqdm = [ - {file = "tqdm-4.62.0-py2.py3-none-any.whl", hash = "sha256:706dea48ee05ba16e936ee91cb3791cd2ea6da348a0e50b46863ff4363ff4340"}, - {file = "tqdm-4.62.0.tar.gz", hash = "sha256:3642d483b558eec80d3c831e23953582c34d7e4540db86d9e5ed9dad238dabc6"}, -] -traitlets = [] types-requests = [] types-urllib3 = [] typing-extensions = [] -typing-inspect = [ - {file = "typing_inspect-0.7.1-py2-none-any.whl", hash = "sha256:b1f56c0783ef0f25fb064a01be6e5407e54cf4a4bf4f3ba3fe51e0bd6dcea9e5"}, - {file = "typing_inspect-0.7.1-py3-none-any.whl", hash = "sha256:3cd7d4563e997719a710a3bfe7ffb544c6b72069b6812a02e9b414a8fa3aaa6b"}, - {file = "typing_inspect-0.7.1.tar.gz", hash = "sha256:047d4097d9b17f46531bf6f014356111a1b6fb821a24fe7ac909853ca2a782aa"}, -] +typing-inspect = [] urllib3 = [] -us = [ - {file = "us-2.0.2.tar.gz", hash = "sha256:cb11ad0d43deff3a1c3690c74f0c731cff5b862c73339df2edd91133e1496fbc"}, -] +us = [] virtualenv = [] wcwidth = [ {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, @@ -2902,13 +2775,7 @@ websocket-client = [ {file = "websocket-client-1.3.3.tar.gz", hash = "sha256:d58c5f284d6a9bf8379dab423259fe8f85b70d5fa5d2916d5791a84594b122b1"}, {file = "websocket_client-1.3.3-py3-none-any.whl", hash = "sha256:5d55652dc1d0b3c734f044337d929aaf83f4f9138816ec680c1aefefb4dc4877"}, ] -widgetsnbextension = [ - {file = "widgetsnbextension-4.0.2-py3-none-any.whl", hash = "sha256:966bd61443926b6adcc0abef9f499c48bdeda181c333b0f49842d7385d440579"}, - {file = "widgetsnbextension-4.0.2.tar.gz", hash = "sha256:07f0e8582f920b24316cef16490f1aeb498f2c875d48980540e5c5dbf0ff5e2d"}, -] +widgetsnbextension = [] wrapt = [] -xlsxwriter = [ - {file = "XlsxWriter-2.0.0-py2.py3-none-any.whl", hash = "sha256:51fbb1d727d8391ddf240ce665710d6b205944dc84842c7b8452ac40226eeb71"}, - {file = "XlsxWriter-2.0.0.tar.gz", hash = "sha256:80ce4aadc638dea452f6e28f70b6223b9b5b5740ff9c57ef6387af115e129bbb"}, -] +xlsxwriter = [] zipp = [] diff --git a/data/data-pipeline/pyproject.toml b/data/data-pipeline/pyproject.toml index 5e2b6d5cb..fa45b4749 100644 --- a/data/data-pipeline/pyproject.toml +++ b/data/data-pipeline/pyproject.toml @@ -59,7 +59,7 @@ pytest-snapshot = "^0.8.1" nb-black = "^1.0.7" seaborn = "^0.11.2" papermill = "^2.3.4" -jupyterlab = "^3.4.4" +jupyterlab = "3.4.4" [build-system] build-backend = "poetry.core.masonry.api" @@ -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] @@ -141,4 +143,4 @@ authorized_licenses = [ "zpl 2.1", "gpl v3", "historical permission notice and disclaimer (hpnd)", -] \ No newline at end of file +] diff --git a/data/data-pipeline/pytest.ini b/data/data-pipeline/pytest.ini index 7022c5f70..17099dfd4 100644 --- a/data/data-pipeline/pytest.ini +++ b/data/data-pipeline/pytest.ini @@ -1,2 +1,4 @@ [pytest] norecursedirs = .git data +markers = + smoketest: marks a test as depending on the full score output diff --git a/data/data-pipeline/settings.toml b/data/data-pipeline/settings.toml index ce67e23e2..d6e88d767 100644 --- a/data/data-pipeline/settings.toml +++ b/data/data-pipeline/settings.toml @@ -1,6 +1,7 @@ [default] AWS_JUSTICE40_DATASOURCES_URL = "https://justice40-data.s3.amazonaws.com/data-sources" AWS_JUSTICE40_DATAPIPELINE_URL = "https://justice40-data.s3.amazonaws.com/data-pipeline" +DATASOURCE_RETRIEVAL_FROM_AWS = true [development] diff --git a/data/data-pipeline/tox.ini b/data/data-pipeline/tox.ini index 422935cbe..558b57690 100644 --- a/data/data-pipeline/tox.ini +++ b/data/data-pipeline/tox.ini @@ -15,7 +15,8 @@ commands = black data_pipeline [testenv:checkdeps] # checks the dependencies for security vulnerabilities and open source licenses allowlist_externals = bash -commands = safety check --ignore 44715 # known issue: https://github.com/pyupio/safety/issues/364 +commands = pip install -U wheel + safety check --ignore 51457 --ignore 44715 # known issue: https://github.com/pyupio/safety/issues/364 bash scripts/run-liccheck.sh [testenv:pytest] diff --git a/docker-compose.yml b/docker-compose.yml index 9e5d6c228..b3f109c7e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -14,8 +14,9 @@ services: environment: ENV_FOR_DYNACONF: development PYTHONUNBUFFERED: 1 + TZ: America/Los_Angeles - # 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 +25,28 @@ services: - ./data/data-pipeline/data_pipeline/data/score:/data/data-pipeline/data_pipeline/data/score ports: - 5000:8080 - + environment: + TZ: America/Los_Angeles + + #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: "" + TZ: America/Los_Angeles 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 52352c634..5fa10e080 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 123fbd60a..2e147bc85 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 ba8435761..ffcd7f620 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 f70364284..5e347b76e 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 b7df10c86..60f4d1023 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 8fd16e44a..419b782a2 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 df1b029a5..6478ff69f 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 94919c88e..d6caf5bfa 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 255b14ad9..c62728d9f 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 1491e851a..c3f63590b 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 577694895..490d72fe6 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 a5a66f45e..0b957603c 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 66d810a88..2288d7fbf 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 37d41d880..176bcf731 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 aa57f31cb..5b229c9e3 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)