terrapop_models 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +3 -0
- data/Rakefile +34 -0
- data/app/assets/javascripts/terrapop_models/application.js +13 -0
- data/app/assets/stylesheets/terrapop_models/application.css +15 -0
- data/app/controllers/terrapop_models/application_controller.rb +4 -0
- data/app/helpers/terrapop_models/application_helper.rb +4 -0
- data/app/models/api_log.rb +2 -0
- data/app/models/area_data_raster.rb +126 -0
- data/app/models/area_data_raster_variable_mnemonic_lookup.rb +4 -0
- data/app/models/area_data_statistic.rb +6 -0
- data/app/models/area_data_table.rb +25 -0
- data/app/models/area_data_table_group.rb +8 -0
- data/app/models/area_data_table_group_membership.rb +7 -0
- data/app/models/area_data_value.rb +37 -0
- data/app/models/area_data_variable.rb +140 -0
- data/app/models/area_data_variable_construction.rb +6 -0
- data/app/models/attached_variable_pointer.rb +5 -0
- data/app/models/bare_user.rb +7 -0
- data/app/models/boundary.rb +6 -0
- data/app/models/build_status.rb +2 -0
- data/app/models/category.rb +17 -0
- data/app/models/codebook.rb +242 -0
- data/app/models/common_variable.rb +2 -0
- data/app/models/country.rb +45 -0
- data/app/models/country_comparability.rb +6 -0
- data/app/models/country_level.rb +8 -0
- data/app/models/ddi2_codebook.rb +541 -0
- data/app/models/error_event.rb +2 -0
- data/app/models/extract_data_artifact.rb +4 -0
- data/app/models/extract_request.rb +817 -0
- data/app/models/extract_request_area_data_raster_variable_mnemonic_lookup.rb +4 -0
- data/app/models/extract_request_error_event.rb +4 -0
- data/app/models/extract_request_submission.rb +19 -0
- data/app/models/extract_status.rb +55 -0
- data/app/models/extract_type.rb +2 -0
- data/app/models/extract_variable_stub.rb +17 -0
- data/app/models/frequency.rb +7 -0
- data/app/models/geog_instance.rb +18 -0
- data/app/models/geog_unit.rb +5 -0
- data/app/models/global_region.rb +6 -0
- data/app/models/global_region_type.rb +5 -0
- data/app/models/heartbeat.rb +8 -0
- data/app/models/heartbeat_pulse.rb +3 -0
- data/app/models/insert_html_fragment.rb +3 -0
- data/app/models/ipums_academic_status.rb +9 -0
- data/app/models/ipums_anticipated_result.rb +9 -0
- data/app/models/ipums_department.rb +9 -0
- data/app/models/ipums_registration.rb +72 -0
- data/app/models/ipums_user.rb +15 -0
- data/app/models/label.rb +7 -0
- data/app/models/link.rb +21 -0
- data/app/models/map.rb +255 -0
- data/app/models/map_unit.rb +4 -0
- data/app/models/map_unit_raster_dataset.rb +4 -0
- data/app/models/markup_transform.rb +240 -0
- data/app/models/measurement_type.rb +5 -0
- data/app/models/nhgis/agg_data_var.rb +120 -0
- data/app/models/nhgis/breakdown_combo.rb +84 -0
- data/app/models/nhgis/breakdown_var.rb +8 -0
- data/app/models/nhgis/data_file.rb +43 -0
- data/app/models/nhgis/data_file_type.rb +17 -0
- data/app/models/nhgis/data_group.rb +125 -0
- data/app/models/nhgis/data_record_range.rb +22 -0
- data/app/models/nhgis/data_table.rb +8 -0
- data/app/models/nhgis/dataset.rb +76 -0
- data/app/models/nhgis/dataset_group.rb +6 -0
- data/app/models/nhgis/geog_level.rb +14 -0
- data/app/models/nhgis/geog_level_collection.rb +15 -0
- data/app/models/nhgis/geog_level_geog_level_group.rb +10 -0
- data/app/models/nhgis/geog_level_group.rb +87 -0
- data/app/models/nhgis/geog_name.rb +12 -0
- data/app/models/nhgis/geog_unit.rb +11 -0
- data/app/models/nhgis/geog_var 2.rb +10 -0
- data/app/models/nhgis/geog_var.rb +6 -0
- data/app/models/nhgis/geog_var_geog_level.rb +8 -0
- data/app/models/nhgis/geotime.rb +21 -0
- data/app/models/nhgis/integ_geog_instance.rb +6 -0
- data/app/models/nhgis/integ_geog_instance_source_geog_instance.rb +9 -0
- data/app/models/nhgis/integ_geog_level.rb +9 -0
- data/app/models/nhgis/integ_geog_name.rb +12 -0
- data/app/models/nhgis/shape_file.rb +203 -0
- data/app/models/nhgis/shape_file_x_dataset.rb +8 -0
- data/app/models/nhgis/tabulation_type.rb +8 -0
- data/app/models/nhgis/time_instance.rb +6 -0
- data/app/models/nhgis/time_instance_integ_geog_level.rb +9 -0
- data/app/models/nhgis/time_series.rb +12 -0
- data/app/models/nhgis/time_series_component.rb +9 -0
- data/app/models/nhgis/time_series_release.rb +6 -0
- data/app/models/nhgis/time_series_table.rb +13 -0
- data/app/models/nhgis/time_series_table_dataset.rb +9 -0
- data/app/models/nhgis/time_series_table_geog_level.rb +9 -0
- data/app/models/nhgis/time_series_table_time_instance.rb +9 -0
- data/app/models/nhgis/time_series_table_time_series_release.rb +7 -0
- data/app/models/nhgis/time_series_table_topic.rb +9 -0
- data/app/models/nhgis/time_series_table_x_time_series.rb +9 -0
- data/app/models/nhgis_metadata_store.rb +2 -0
- data/app/models/raster.rb +5 -0
- data/app/models/raster_category.rb +6 -0
- data/app/models/raster_category_statistic.rb +7 -0
- data/app/models/raster_data_type.rb +6 -0
- data/app/models/raster_dataset.rb +130 -0
- data/app/models/raster_dataset_group.rb +3 -0
- data/app/models/raster_dataset_raster_data_type.rb +4 -0
- data/app/models/raster_dataset_raster_dataset_unit.rb +4 -0
- data/app/models/raster_dataset_raster_variable.rb +4 -0
- data/app/models/raster_dataset_unit.rb +4 -0
- data/app/models/raster_group.rb +87 -0
- data/app/models/raster_metadata.rb +6 -0
- data/app/models/raster_operation.rb +10 -0
- data/app/models/raster_raster_variable.rb +2 -0
- data/app/models/raster_statistic.rb +6 -0
- data/app/models/raster_value.rb +83 -0
- data/app/models/raster_variable.rb +440 -0
- data/app/models/raster_variable_classification.rb +4 -0
- data/app/models/raster_variable_group_membership.rb +4 -0
- data/app/models/request_area_data_variable.rb +57 -0
- data/app/models/request_geog_unit.rb +6 -0
- data/app/models/request_raster_dataset.rb +4 -0
- data/app/models/request_raster_variable.rb +147 -0
- data/app/models/request_sample.rb +34 -0
- data/app/models/request_sample_geog_level.rb +4 -0
- data/app/models/request_terrapop_sample.rb +6 -0
- data/app/models/request_variable.rb +104 -0
- data/app/models/resolution.rb +5 -0
- data/app/models/sample.rb +81 -0
- data/app/models/sample_design.rb +300 -0
- data/app/models/sample_detail_field.rb +7 -0
- data/app/models/sample_detail_group.rb +3 -0
- data/app/models/sample_detail_value.rb +11 -0
- data/app/models/sample_details.rb +90 -0
- data/app/models/sample_geog_level.rb +150 -0
- data/app/models/sample_level_area_data_variable.rb +13 -0
- data/app/models/sample_variable.rb +11 -0
- data/app/models/status_definition.rb +2 -0
- data/app/models/system_statistic.rb +5 -0
- data/app/models/tag.rb +7 -0
- data/app/models/terrapop_configuration.rb +75 -0
- data/app/models/terrapop_extract_information.rb +64 -0
- data/app/models/terrapop_raster_summary_cache.rb +6 -0
- data/app/models/terrapop_sample.rb +313 -0
- data/app/models/terrapop_setting.rb +11 -0
- data/app/models/topic.rb +7 -0
- data/app/models/ui_text_snippet.rb +2 -0
- data/app/models/universe.rb +5 -0
- data/app/models/user.rb +262 -0
- data/app/models/user_role.rb +5 -0
- data/app/models/variable.rb +127 -0
- data/app/models/variable_availability_cach.rb +3 -0
- data/app/models/variable_group.rb +14 -0
- data/app/models/variable_source.rb +8 -0
- data/app/views/layouts/terrapop_models/application.html.erb +14 -0
- data/config/routes.rb +2 -0
- data/db/migrate/00000000000100_create_countries.rb +15 -0
- data/db/migrate/00000000000200_create_universes.rb +11 -0
- data/db/migrate/00000000000300_create_geog_units.rb +9 -0
- data/db/migrate/00000000000400_create_measurement_types.rb +9 -0
- data/db/migrate/00000000000500_create_area_data_table_groups.rb +13 -0
- data/db/migrate/00000000000600_create_area_data_tables.rb +14 -0
- data/db/migrate/00000000000700_create_area_data_table_group_memberships.rb +12 -0
- data/db/migrate/00000000000800_create_tags.rb +9 -0
- data/db/migrate/00000000000900_create_topics.rb +9 -0
- data/db/migrate/00000000001000_create_variable_groups.rb +18 -0
- data/db/migrate/00000000001100_create_samples.rb +32 -0
- data/db/migrate/00000000001200_create_terrapop_samples.rb +12 -0
- data/db/migrate/00000000001300_create_variables.rb +52 -0
- data/db/migrate/00000000001400_create_country_levels.rb +17 -0
- data/db/migrate/00000000001450_variable_topics.rb +19 -0
- data/db/migrate/00000000001500_create_sample_geog_levels.rb +20 -0
- data/db/migrate/00000000002000_create_area_data_variables.rb +19 -0
- data/db/migrate/00000000002050_area_data_variable_topics.rb +22 -0
- data/db/migrate/00000000002100_create_sample_level_area_data_variables.rb +16 -0
- data/db/migrate/00000000002200_create_sample_level_area_variable_constructions.rb +12 -0
- data/db/migrate/00000000003000_create_maps.rb +22 -0
- data/db/migrate/00000000003100_create_boundaries.rb +14 -0
- data/db/migrate/00000000004000_create_geog_instances.rb +20 -0
- data/db/migrate/00000000004100_create_area_data_values.rb +18 -0
- data/db/migrate/00000000005000_create_sample_variables.rb +21 -0
- data/db/migrate/00000000005100_create_categories.rb +20 -0
- data/db/migrate/00000000005200_create_frequencies.rb +16 -0
- data/db/migrate/00000000005300_create_variable_sources.rb +16 -0
- data/db/migrate/00000000006000_create_user_roles.rb +8 -0
- data/db/migrate/00000000006100_create_users.rb +43 -0
- data/db/migrate/00000000006300_create_samples_tags.rb +15 -0
- data/db/migrate/00000000006400_create_terrapop_samples_tags.rb +15 -0
- data/db/migrate/00000000007000_create_raster_data_types.rb +9 -0
- data/db/migrate/00000000007050_create_resolutions.rb +8 -0
- data/db/migrate/00000000007100_create_raster_datasets.rb +26 -0
- data/db/migrate/00000000007200_create_raster_groups.rb +20 -0
- data/db/migrate/00000000007250_create_raster_groups_tags.rb +19 -0
- data/db/migrate/00000000007300_create_raster_variables.rb +28 -0
- data/db/migrate/00000000007325_create_raster_variable_group_memberships.rb +12 -0
- data/db/migrate/00000000007350_raster_variable_topics.rb +22 -0
- data/db/migrate/00000000007400_create_rasters.rb +22 -0
- data/db/migrate/00000000007500_create_raster_operations.rb +11 -0
- data/db/migrate/00000000010000_create_status_definitions.rb +8 -0
- data/db/migrate/00000000010050_create_extract_types.rb +10 -0
- data/db/migrate/00000000010100_create_build_statuses.rb +10 -0
- data/db/migrate/00000000010200_create_extract_requests.rb +14 -0
- data/db/migrate/00000000010300_create_extract_requests_labels_join_table.rb +20 -0
- data/db/migrate/00000000010400_create_extract_statuses.rb +13 -0
- data/db/migrate/00000000010500_create_request_geog_units.rb +13 -0
- data/db/migrate/00000000010600_create_request_terrapop_samples.rb +15 -0
- data/db/migrate/00000000011000_create_request_variable.rb +16 -0
- data/db/migrate/00000000011100_create_request_area_data_variables.rb +18 -0
- data/db/migrate/00000000011200_create_request_raster_variables.rb +20 -0
- data/db/migrate/00000000012000_create_raster_summary_functions.rb +130 -0
- data/db/migrate/00000000013000_create_terrapop_settings.rb +24 -0
- data/db/migrate/20121218190647_create_attached_variable_pointer.rb +18 -0
- data/db/migrate/20121218191609_add_attached_variable_pointer_id.rb +9 -0
- data/db/migrate/20121218205322_add_wants_attached.rb +9 -0
- data/db/migrate/20121219145142_add_attributes_to_terrapop_sample.rb +68 -0
- data/db/migrate/20130125155216_add_default_order_index_to_variables.rb +5 -0
- data/db/migrate/20130129204515_create_request_samples.rb +14 -0
- data/db/migrate/20130129204718_create_request_raster_datasets.rb +13 -0
- data/db/migrate/20130205195304_create_error_events.rb +10 -0
- data/db/migrate/20130206202006_add_country_index_for_continent.rb +8 -0
- data/db/migrate/20130207202628_create_raster_metadata.rb +13 -0
- data/db/migrate/20130208192415_add_extents_to_raster_dataset.rb +6 -0
- data/db/migrate/20130209182800_create_global_regions.rb +11 -0
- data/db/migrate/20130209182858_add_global_region_id_country.rb +13 -0
- data/db/migrate/20130211183221_add_type_to_global_regions.rb +5 -0
- data/db/migrate/20130212190940_create_global_region_types.rb +8 -0
- data/db/migrate/20130212192357_remove_classification_add_global_region_type_id_to_global_region.rb +13 -0
- data/db/migrate/20130304181054_add_code_to_boundaries.rb +5 -0
- data/db/migrate/20130305223407_add_ipumsi_user_flagto_users.rb +15 -0
- data/db/migrate/20130305224906_add_ipumsi_user_date_flagto_users.rb +11 -0
- data/db/migrate/20130308214537_create_request_sample_geog_levels.rb +14 -0
- data/db/migrate/20130312191726_create_raster_statistics.rb +23 -0
- data/db/migrate/20130312192100_create_raster_categories.rb +14 -0
- data/db/migrate/20130312192158_create_raster_category_statistics.rb +22 -0
- data/db/migrate/20130312203045_create_area_data_statistics.rb +15 -0
- data/db/migrate/20130401161222_add_summary_to_raster_variable.rb +11 -0
- data/db/migrate/20130402203508_add_global_region_sort_order_column.rb +8 -0
- data/db/migrate/20130402211553_add_weighted_to_terrapop_samples.rb +5 -0
- data/db/migrate/20130408022218_add_period_to_raster_datasets.rb +5 -0
- data/db/migrate/20130409161950_create_area_data_variable_constructions.rb +17 -0
- data/db/migrate/20130409162731_add_opcode_to_raster_operations.rb +5 -0
- data/db/migrate/20130412141109_update_raster_summary_functions.rb +39 -0
- data/db/migrate/20130415174823_create_insert_html_fragments.rb +13 -0
- data/db/migrate/20130415185523_create_common_variables.rb +13 -0
- data/db/migrate/20130416144840_add_columns_to_request_samples.rb +6 -0
- data/db/migrate/20130416150151_add_revision_of_column_to_extract_request.rb +8 -0
- data/db/migrate/20130416151200_add_file_type_to_extract_request.rb +5 -0
- data/db/migrate/20130416161440_add_column_general_detailed_selection_to_request_variables.rb +5 -0
- data/db/migrate/20130416170551_add_wants_case_selection_to_request_variable.rb +5 -0
- data/db/migrate/20130613185642_add_indexes_to_tables.rb +7 -0
- data/db/migrate/20130614193857_add_more_column_indexes.rb +11 -0
- data/db/migrate/20130618141508_create_raster_dataset_raster_data_types.rb +17 -0
- data/db/migrate/20130618185528_add_circa_to_raster_dataset.rb +5 -0
- data/db/migrate/20130619160555_create_raster_dataset_units.rb +9 -0
- data/db/migrate/20130619161934_create_raster_dataset_raster_dataset_units.rb +17 -0
- data/db/migrate/20130621184015_add_raster_dataset_process_summary.rb +8 -0
- data/db/migrate/20130621203809_add_source_information_column_to_raster_dataset.rb +5 -0
- data/db/migrate/20130624144333_add_temporal_extent_description_to_raster_dataset.rb +5 -0
- data/db/migrate/20130624154952_add_provider_to_raster_dataset.rb +5 -0
- data/db/migrate/20130624175342_add_use_constraints_column_to_raster_dataset.rb +5 -0
- data/db/migrate/20130624175632_drop_use_constraints_column_from_raster_dataset.rb +8 -0
- data/db/migrate/20130624192654_add_north_south_east_west_columns_to_raster_dataset.rb +8 -0
- data/db/migrate/20130625193303_add_sort_operation_identifier_to_raster_group.rb +5 -0
- data/db/migrate/20130702190659_add_raster_group_id_to_raster_variable.rb +9 -0
- data/db/migrate/20130708184410_create_country_comparabilities.rb +14 -0
- data/db/migrate/20130711191704_add_ipumsi_user_id_to_user.rb +8 -0
- data/db/migrate/20130712150252_add_data_settings_column_to_user.rb +8 -0
- data/db/migrate/20130719183620_add_visible_and_map_to_columns_to_raster_operations.rb +13 -0
- data/db/migrate/20130812194537_create_extract_request_submissions.rb +12 -0
- data/db/migrate/20130813165221_remove_ipums_user_id_from_user.rb +8 -0
- data/db/migrate/20130814161802_add_uuid_field_to_extract_request.rb +6 -0
- data/db/migrate/20130816204002_add_country_id_to_terrapop_sample.rb +8 -0
- data/db/migrate/20130816204214_add_year_to_terrapop_sample.rb +8 -0
- data/db/migrate/20130816205324_add_indexes_to_country.rb +9 -0
- data/db/migrate/20130819145802_add_foreign_key_to_terrapop_sample.rb +5 -0
- data/db/migrate/20130819155712_add_indexes_to_sample_level_area_data_variable.rb +5 -0
- data/db/migrate/20130819163013_add_short_country_name_to_terrapop_sample.rb +8 -0
- data/db/migrate/20130820195420_add_is_erf_to_country.rb +7 -0
- data/db/migrate/20130821221743_fix_raster_summary_function_num_classes.rb +39 -0
- data/db/migrate/20130830192340_add_more_user_registration_columns.rb +51 -0
- data/db/migrate/20130904205306_add_raster_variable_sort_order_weight.rb +8 -0
- data/db/migrate/20130912145522_add_localized_label_to_country_levels.rb +5 -0
- data/db/migrate/20130913194351_create_terrapop_raster_summary_caches.rb +27 -0
- data/db/migrate/20130916212710_add_year_range_to_map.rb +11 -0
- data/db/migrate/20130917154553_create_sample_designs.rb +14 -0
- data/db/migrate/20130924210303_add_raster_only_to_extract_request.rb +5 -0
- data/db/migrate/20131001220437_add_mnemonic_and_codebook_description_to_area_data_value.rb +11 -0
- data/db/migrate/20131002213443_add_ipums_email_sent_at_column.rb +8 -0
- data/db/migrate/20131020154130_remove_index_if_exists.rb +9 -0
- data/db/migrate/20131020170642_remove_ui_snippet_table_if_exists.rb +8 -0
- data/db/migrate/20131021204227_create_ui_text_snippet.rb +11 -0
- data/db/migrate/20131022190227_rename_table_fix_ui_text_snippets.rb +9 -0
- data/db/migrate/20131119154817_add_unique_index_on_uuid_on.rb +9 -0
- data/db/migrate/20131202161911_add_send_toi_rods_flag_to_extract_request.rb +13 -0
- data/db/migrate/20140122150020_add_geographic_levelto_geog_instance.rb +11 -0
- data/db/migrate/20140124184809_add_zip_file_location.rb +8 -0
- data/db/migrate/20140205205539_add_api_related_fields_to_user.rb +5 -0
- data/db/migrate/20140206213258_create_extract_request_error_events.rb +14 -0
- data/db/migrate/20140206222630_add_requesting_url_to_extract_request.rb +5 -0
- data/db/migrate/20140207153005_create_api_logs.rb +14 -0
- data/db/migrate/20140228182300_change_user_institutional_affiliation_to_bool.rb +50 -0
- data/db/migrate/20140312143201_add_start_and_end_time_and_total_time_to_extract_request.rb +7 -0
- data/db/migrate/20140318212913_remove_add_index_to_area_data_value.rb +12 -0
- data/db/migrate/20140319155819_add_long_mnemonic_to_area_data_value.rb +7 -0
- data/db/migrate/20140319200718_drop_mnemonic_column_area_data_value.rb +10 -0
- data/db/migrate/20140320184210_add_show_in_ui_column_in_raster_variable.rb +8 -0
- data/db/migrate/20140328150435_rename_revision_of_column_to_rabl_usable_column_name.rb +8 -0
- data/db/migrate/20140331142153_add_revision_of_column.rb +8 -0
- data/db/migrate/20140402181324_add_new_raster_summary_functions.rb +191 -0
- data/db/migrate/20140403185242_add_raster_variable_area_reference_id.rb +12 -0
- data/db/migrate/20140410145305_add_raster_area_column_to_terrapop_raster_summary_cache.rb +6 -0
- data/db/migrate/20140414170802_add_new_raster_summarization.rb +85 -0
- data/db/migrate/20140421150330_add_second_reference_column_to_raster_variable.rb +9 -0
- data/db/migrate/20140506165634_add_deactivated_at_and_deleted_at_to_user.rb +6 -0
- data/db/migrate/20140507142843_add_column_to_frequencies.rb +5 -0
- data/db/migrate/20140513143055_add_sample_geog_level_id_to_request_models.rb +11 -0
- data/db/migrate/20140521160554_create_links.rb +9 -0
- data/db/migrate/20140522214508_add_ipumsi_salt_and_ipumsi_crypted_password_to_user.rb +13 -0
- data/db/migrate/20140604192953_add_name_to_terrapop_setting.rb +47 -0
- data/db/migrate/20140609163907_create_variable_availability_caches.rb +9 -0
- data/db/migrate/20140609210447_add_foreign_index_to_variable_availability_cache.rb +8 -0
- data/db/migrate/20140609213300_create_area_data_variable_availability_caches.rb +13 -0
- data/db/migrate/20140610135849_create_nhgis_metadata_stores.rb +30 -0
- data/db/migrate/20140610211138_add_dataset_id_to_nhgis_metadata.rb +5 -0
- data/db/migrate/20140611181543_add_replicate_weight_variable_id_to_variables.rb +5 -0
- data/db/migrate/20140618200741_add_key_column_toraster_variable_group_memberships.rb +7 -0
- data/db/migrate/20140618202053_add_key_column_toraster_variable_group_memberships2.rb +8 -0
- data/db/migrate/20140701134952_create_system_statistics.rb +12 -0
- data/db/migrate/20140804161242_add_fields_to_terrapop_sample.rb +7 -0
- data/db/migrate/20140806173750_add_geometry_column_to_boundaries.rb +5 -0
- data/db/migrate/20140821205836_add_git_hash_field_to_extract_request.rb +5 -0
- data/db/migrate/20140822140106_create_map_units.rb +9 -0
- data/db/migrate/20140822140358_create_map_unit_raster_datasets.rb +17 -0
- data/db/migrate/20140822143517_redefine_short_unit_on_map_unit_to_longer_string.rb +5 -0
- data/db/migrate/20140825135403_add_finger_print_hash_to_maps.rb +5 -0
- data/db/migrate/20140826163359_add_source_field_to_terrapop_sample.rb +8 -0
- data/db/migrate/20140827153014_add_microdata_file_size_to_sample.rb +5 -0
- data/db/migrate/20140828161647_add_raster_band_index_to_raster_categories.rb +5 -0
- data/db/migrate/20140828162650_add_post_gis_raster_output_indicator_to_raster_variable.rb +5 -0
- data/db/migrate/20140829150251_create_raster_dataset_raster_variables.rb +17 -0
- data/db/migrate/20140902194529_add_raster_band_to_raster_dataset_model.rb +7 -0
- data/db/migrate/20140903202609_create_heartbeats.rb +9 -0
- data/db/migrate/20140903204113_create_heartbeat_pulse.rb +10 -0
- data/db/migrate/20140904164247_create_raster_raster_variables.rb +16 -0
- data/db/migrate/20140908193007_add_area_level_rasterization_functions.rb +103 -0
- data/db/migrate/20140908194021_create_area_data_rasters.rb +39 -0
- data/db/migrate/20140909143933_rename_valid_column_on_area_data_raster.rb +5 -0
- data/db/migrate/20140911201639_add_columns_to_area_data_raster.rb +11 -0
- data/db/migrate/20140911211923_alter_area_data_raster_indexes.rb +12 -0
- data/db/migrate/20140919144305_create_raster_variable_classifications.rb +29 -0
- data/db/migrate/20140925140810_add_other_raster_variables_to_raster_variable_classification.rb +9 -0
- data/db/migrate/20140925172245_add_grouping_indicator_to_raster_classifications.rb +5 -0
- data/db/migrate/20140925175157_add_classification_indicator_to_raster_variable.rb +5 -0
- data/db/migrate/20140930142006_remove_boundary_id_from_geog_instance.rb +6 -0
- data/db/migrate/20141003164150_add_terrapop_sample_id_to_map_and_geog_instance.rb +11 -0
- data/db/migrate/20141029202813_add_nhgis_dat_file_to_sample_geog_level.rb +5 -0
- data/db/migrate/20141029204521_add_columns_to_sample_level_area_data_variable.rb +6 -0
- data/db/migrate/20141104212652_create_categorical_raster_summarization.rb +39 -0
- data/db/migrate/20141105202744_add_margin_file_to_sample_geog_level.rb +5 -0
- data/db/migrate/20141105205347_add_margin_field_to_area_data_value.rb +5 -0
- data/db/migrate/20141105205607_add_join_fields_to_sample_geog_level.rb +8 -0
- data/db/migrate/20141202180411_add_new_categorical_summarization_function.rb +62 -0
- data/db/migrate/20141212172044_add_continuous_raster_summarization0.rb +51 -0
- data/db/migrate/20141212195611_add_indexes_to_boundaries.rb +10 -0
- data/db/migrate/20141212202521_add_indexes_to_frequencies.rb +7 -0
- data/db/migrate/20141229150743_add_special_value_to_area_data_value.rb +5 -0
- data/db/migrate/20141230153550_add_field_to_global_regions.rb +8 -0
- data/db/migrate/20150107142518_add_restriction_indicated_to_sample.rb +5 -0
- data/db/migrate/20150114161817_add_raster_to_tiff_function.rb +35 -0
- data/db/migrate/20150115204303_add_hide_nhgis_datasets_to_users.rb +11 -0
- data/db/migrate/20150126192918_add_new_gli_post_gis_functions.rb +99 -0
- data/db/migrate/20150126223419_add_short_label_to_terrapop_samples.rb +11 -0
- data/db/migrate/20150127172953_add_another_raster_summarization_function.rb +44 -0
- data/db/migrate/20150130163215_new_glc_summarization_function.rb +40 -0
- data/db/migrate/20150211221354_create_cache_items.rb +23 -0
- data/db/migrate/20150212223011_add_microdata_access_expired_date_to_users.rb +11 -0
- data/db/migrate/20150217221940_add_new_band_aware_categorical_to_binary_summarization.rb +177 -0
- data/db/migrate/20150302145459_removeuse_postgis_procedure_for_geotiff.rb +5 -0
- data/db/migrate/20150313194752_add_color_map_to_tiff_output.rb +34 -0
- data/db/migrate/20150313202158_add_color_map_to_jpeg_output.rb +34 -0
- data/db/migrate/20150318183314_add_non_color_map_cookie_cutter_functions.rb +65 -0
- data/db/migrate/20150324160629_add_categorical_multi_band_summarization.rb +62 -0
- data/db/migrate/20150324161827_add_index_to_rasters_raster_variable_id.rb +5 -0
- data/db/migrate/20150327203257_add_band_to_terrapop_raster_summary_cache.rb +5 -0
- data/db/migrate/20150331142232_add_xml_field_to_map.rb +5 -0
- data/db/migrate/20150331153703_add_new_continous_summarization.rb +38 -0
- data/db/migrate/20150409153145_categorical_to_binary_as_raster.rb +49 -0
- data/db/migrate/20150413204130_generic_categorical_to_binary_raster_output_function.rb +92 -0
- data/db/migrate/20150416133743_ratio_area_level_data_to_raster_function.rb +55 -0
- data/db/migrate/20150416143838_projection_function_for_single_band_rasters.rb +27 -0
- data/db/migrate/20150419203614_add_raster_dataset_to_terrapop_raster_summary_cache.rb +12 -0
- data/db/migrate/20150419232521_add_raster_dataset_to_request_raster_variable.rb +9 -0
- data/db/migrate/20150427163939_create_single_binary_from_categorical_to_tiff_function.rb +51 -0
- data/db/migrate/20150518200435_add_new_binary_cookie_cutter_functions.rb +95 -0
- data/db/migrate/20150520195145_revised_glc_binary_summarization_function.rb +64 -0
- data/db/migrate/20150526205918_new_categorical_to_binary_summarization.rb +72 -0
- data/db/migrate/20150527144243_even_newer_glc_binary_function.rb +79 -0
- data/db/migrate/20150527191853_add_even_newer_glc_category_to_binary_function.rb +74 -0
- data/db/migrate/20150528141915_yancat_to_bin_summarization_function.rb +66 -0
- data/db/migrate/20150529182542_add_indexes_to_geog_instances.rb +9 -0
- data/db/migrate/20150601160855_drop_area_data_variable_availability_caches.rb +5 -0
- data/db/migrate/20150625150152_add_geog_instance_f_key_on_boundaries.rb +5 -0
- data/db/migrate/20150626144305_geog_instance_geog_code_wider.rb +6 -0
- data/db/migrate/20150709161201_glc_summarization_version5.rb +79 -0
- data/db/migrate/20150713165442_glc_summarization_version6.rb +82 -0
- data/db/migrate/20150713185652_tp_jpeg_raster_clip_color_map_v2.rb +34 -0
- data/db/migrate/20150716182438_new_rasters_table.rb +18 -0
- data/db/migrate/20150716184828_new_stored_procedures_for_new_rasters.rb +70 -0
- data/db/migrate/20150721161943_remove_ownership_statement_from_function.rb +69 -0
- data/db/migrate/20150727134942_rename_rasters_new_to_new_rasters.rb +19 -0
- data/db/migrate/20150727135614_update_table_name_in_make_jpeg2.rb +70 -0
- data/db/migrate/20150727143159_jpeg_clip_experiment.rb +36 -0
- data/db/migrate/20150727145556_create_new_tiff_raster_clip_with_buffer.rb +34 -0
- data/db/migrate/20150727161508_update_table_name_in_make_jpeg2_part_deux.rb +77 -0
- data/db/migrate/20150727193403_drop_rasters_new.rb +5 -0
- data/db/migrate/20150728184718_make_jpeg2_part_deux.rb +70 -0
- data/db/migrate/20150728214344_correct_new_rasters_table_in_new_make_jpeg2_function.rb +79 -0
- data/db/migrate/20150729144526_even_more_correct_new_rasters_table_in_new_make_jpeg2_function.rb +78 -0
- data/db/migrate/20150729160936_fixingterrapop_reclassify_categorical_raster_to_binary_summariz_v3.rb +68 -0
- data/db/migrate/20150730141036_adjust_jpeg_clip_for_categorical.rb +67 -0
- data/db/migrate/20150730153216_ststandardize_terrapop_reclassify_categorical_raster_to_binary_summariz_v3.rb +69 -0
- data/db/migrate/20150730163446_add_origin_to_extract_requests.rb +5 -0
- data/db/migrate/20150731151304_consistent_return_fieldsterrapop_gli_yield_areal_summarization.rb +99 -0
- data/db/migrate/20150731192327_add_boundary_only_field_to_terrapop_sample.rb +5 -0
- data/db/migrate/20150803213048_add_function_to_detect_boundaries_that_wrap_globe.rb +50 -0
- data/db/migrate/20150814154127_add_processing_flag_to_extract_request.rb +5 -0
- data/db/migrate/20150814165605_add_colormapped_categorical_to_binary_jpeg_cookie_cutteringizing_function.rb +49 -0
- data/db/migrate/20150814183708_around_the_world_wrap_a_raster_function.rb +157 -0
- data/db/migrate/20150910194333_add_extract_grouping_field_to_extract_request.rb +5 -0
- data/db/migrate/20150915194808_drop_sessions_table.rb +5 -0
- data/db/migrate/20150915215426_add_sessions_table.rb +12 -0
- data/db/migrate/20151009203606_create_sample_detail_groups.rb +8 -0
- data/db/migrate/20151009203855_create_sample_detail_fields.rb +13 -0
- data/db/migrate/20151009204052_create_sample_detail_values.rb +12 -0
- data/db/migrate/20151016152953_add_indexes_to_area_data_values.rb +7 -0
- data/db/migrate/20151023160555_add_data_to_extract_requests.rb +8 -0
- data/db/migrate/20151026155953_rename_description_add_title_to_extract_requests.rb +8 -0
- data/db/migrate/20151029144017_create_raster_dataset_groups.rb +9 -0
- data/db/migrate/20151029144147_add_raster_dataset_group_to_raster_dataset.rb +9 -0
- data/db/migrate/20151029182802_add_mnemonic_to_raster_dataset_group.rb +5 -0
- data/db/migrate/20151029184642_change_field_type_on_raster_dataset_group.rb +5 -0
- data/db/migrate/20151029210539_remove_unnecessary_fields_from_terrapop_sample.rb +60 -0
- data/db/migrate/20151102205254_create_data_artifacts.rb +17 -0
- data/db/migrate/20151102211601_add_json_field_to_extract_data_artifacts.rb +8 -0
- data/db/migrate/20151103152754_add_file_name_field_to_extract_request.rb +5 -0
- data/db/migrate/20151106155249_add_submitted_at_to_extract_request.rb +5 -0
- data/db/migrate/20151110204826_add_terra_pop_build_number_to_extract_request.rb +12 -0
- data/db/migrate/20151119213428_create_area_data_raster_variable_mnemonic_lookups.rb +18 -0
- data/db/migrate/20151120140757_create_extract_request_area_data_raster_variable_mnemonic_lookups.rb +16 -0
- data/db/migrate/20151130212011_add_new_raster_summarization_v7.rb +90 -0
- data/lib/tasks/terrapop_models_tasks.rake +4 -0
- data/lib/terrapop_models.rb +4 -0
- data/lib/terrapop_models/engine.rb +13 -0
- data/lib/terrapop_models/version.rb +3 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +23 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +68 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +78 -0
- data/test/dummy/config/environments/test.rb +39 -0
- data/test/dummy/config/initializers/assets.rb +8 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +4 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/log/development.log +62 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/terrapop_models_test.rb +7 -0
- data/test/test_helper.rb +19 -0
- metadata +597 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
class AddContinuousRasterSummarization0 < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
|
|
4
|
+
sql = <<-SQL
|
|
5
|
+
CREATE OR REPLACE Function terrapop_continuous_summarization0(sample_geog_lvl_id bigint, rasters_id bigint)
|
|
6
|
+
RETURNS TABLE (geog_instance_id bigint, geog_instance_label character varying, min double precision,
|
|
7
|
+
max double precision, mean double precision, count bigint,stddev double precision, total_area double precision)
|
|
8
|
+
AS
|
|
9
|
+
$BODY$
|
|
10
|
+
BEGIN
|
|
11
|
+
RETURN QUERY
|
|
12
|
+
WITH
|
|
13
|
+
contin_rast as
|
|
14
|
+
(
|
|
15
|
+
SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label,
|
|
16
|
+
gi.code as geog_instance_code, ST_Union(ST_Clip(r.rast, ST_Transform(bound.geog::geometry, (SELECT ST_SRID(r.rast) FROM rasters r WHERE r.raster_variable_id = rasters_id LIMIT 1)))) as rast
|
|
17
|
+
FROM sample_geog_levels sgl
|
|
18
|
+
inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
|
|
19
|
+
inner join boundaries bound on bound.geog_instance_id = gi.id
|
|
20
|
+
inner join rasters r on ST_Intersects(r.rast, ST_Transform(bound.geog::geometry, (SELECT ST_SRID(r.rast) FROM rasters r WHERE r.raster_variable_id = rasters_id LIMIT 1)))
|
|
21
|
+
where sgl.id = sample_geog_lvl_id and r.raster_variable_id = rasters_id
|
|
22
|
+
group by sgl.id, gi.id, gi.label, gi.code
|
|
23
|
+
), area_ref_rast as
|
|
24
|
+
(
|
|
25
|
+
SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label,
|
|
26
|
+
gi.code as geog_instance_code, ST_Union(ST_Clip(r.rast, ST_Transform(bound.geog::geometry, (SELECT ST_SRID(r.rast) FROM rasters r WHERE r.raster_variable_id = rasters_id LIMIT 1)) )) as rast
|
|
27
|
+
FROM sample_geog_levels sgl inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
|
|
28
|
+
inner join boundaries bound on bound.geog_instance_id = gi.id
|
|
29
|
+
inner join rasters r on ST_Intersects(r.rast, ST_Transform(bound.geog::geometry, (SELECT ST_SRID(r.rast) FROM rasters r WHERE r.raster_variable_id = rasters_id LIMIT 1)) )
|
|
30
|
+
where sgl.id = sample_geog_lvl_id and r.raster_variable_id = ( select rv.area_reference_id from raster_variables rv where rv.id = rasters_id limit 1 )
|
|
31
|
+
group by sgl.id, gi.id, gi.label, gi.code
|
|
32
|
+
)
|
|
33
|
+
SELECT cont_stat.geog_instance_id, cont_stat.geog_instance_label, (cont_stat.stat).min as min, (cont_stat.stat).max as max,
|
|
34
|
+
(cont_stat.stat).mean as mean, (cont_stat.stat).count as count, (cont_stat.stat).stddev as stddev, area_val.area as raster_area
|
|
35
|
+
FROM (
|
|
36
|
+
select contin_rast.geog_instance_id, contin_rast.geog_instance_label, ST_SummaryStats(contin_rast.rast) as stat
|
|
37
|
+
from contin_rast
|
|
38
|
+
) cont_stat inner join
|
|
39
|
+
(
|
|
40
|
+
select area_ref_rast.geog_instance_id, area_ref_rast.geog_instance_label, (ST_Summarystats(area_ref_rast.rast,1)).sum as area
|
|
41
|
+
from area_ref_rast
|
|
42
|
+
) area_val on (cont_stat.geog_instance_id = area_val.geog_instance_id);
|
|
43
|
+
END;
|
|
44
|
+
$BODY$
|
|
45
|
+
LANGUAGE 'plpgsql';
|
|
46
|
+
SQL
|
|
47
|
+
|
|
48
|
+
execute sql
|
|
49
|
+
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
class AddIndexesToBoundaries < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
|
|
4
|
+
execute("DROP INDEX IF EXISTS boundaries_geog_gist_idx")
|
|
5
|
+
execute("DROP INDEX IF EXISTS boundaries_geom_gist_idx")
|
|
6
|
+
execute("CREATE INDEX boundaries_geog_gist_idx ON boundaries USING gist(geog)")
|
|
7
|
+
execute("CREATE INDEX boundaries_geom_gist_idx ON boundaries USING gist(geom)")
|
|
8
|
+
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
class AddRasterToTiffFunction < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
sql = <<-SQL
|
|
4
|
+
CREATE OR REPLACE Function terrapop_raster_clip(sample_geog_lvl_id bigint, rasters_id bigint, raster_bnd integer)
|
|
5
|
+
RETURNS TABLE (tiff bytea) AS
|
|
6
|
+
$BODY$
|
|
7
|
+
|
|
8
|
+
BEGIN
|
|
9
|
+
RETURN QUERY
|
|
10
|
+
|
|
11
|
+
WITH poly_table AS
|
|
12
|
+
(
|
|
13
|
+
SELECT ST_Transform(bound.geog::geometry, (SELECT ST_SRID(r.rast) FROM rasters r WHERE r.raster_variable_id = rasters_id LIMIT 1)) as geom
|
|
14
|
+
FROM sample_geog_levels sgl
|
|
15
|
+
inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
|
|
16
|
+
inner join boundaries bound on bound.geog_instance_id = gi.id
|
|
17
|
+
where gi.sample_geog_level_id = sample_geog_lvl_id
|
|
18
|
+
),
|
|
19
|
+
new_rast AS
|
|
20
|
+
(
|
|
21
|
+
SELECT ST_Union(ST_Clip(r.rast, raster_bnd, p.geom, TRUE)) as rast
|
|
22
|
+
FROM poly_table p inner join rasters r on ST_Intersects(r.rast,p.geom)
|
|
23
|
+
where r.raster_variable_id = rasters_id
|
|
24
|
+
)
|
|
25
|
+
select ST_AsTiff(ST_Union(r.rast),'LZW', (SELECT ST_SRID(r.rast) FROM rasters r WHERE r.raster_variable_id = rasters_id LIMIT 1)) as tiff from new_rast r;
|
|
26
|
+
|
|
27
|
+
END;
|
|
28
|
+
$BODY$
|
|
29
|
+
LANGUAGE 'plpgsql';
|
|
30
|
+
SQL
|
|
31
|
+
|
|
32
|
+
execute sql
|
|
33
|
+
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
class AddNewGliPostGisFunctions < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
|
|
4
|
+
sql1 =<<-SQL
|
|
5
|
+
CREATE OR REPLACE Function Terrapop_GLI_Yield_Areal_Summarization(sample_geog_lvl_id bigint, rasters_id bigint)
|
|
6
|
+
RETURNS TABLE (geog_instance bigint, geog_instance_label character varying, min double precision, max double precision, mean double precision, count bigint)
|
|
7
|
+
AS
|
|
8
|
+
$BODY$
|
|
9
|
+
BEGIN
|
|
10
|
+
RETURN QUERY
|
|
11
|
+
WITH bin_rast as
|
|
12
|
+
(
|
|
13
|
+
SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label,
|
|
14
|
+
gi.code as geog_instance_code, ST_Union(ST_Clip(r.rast, bound.geog::geometry)) as rast
|
|
15
|
+
FROM sample_geog_levels sgl
|
|
16
|
+
inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
|
|
17
|
+
inner join boundaries bound on bound.geog_instance_id = gi.id
|
|
18
|
+
inner join rasters r on ST_Intersects(r.rast,bound.geog::geometry)
|
|
19
|
+
where sgl.id = sample_geog_lvl_id and r.raster_variable_id = rasters_id
|
|
20
|
+
group by sgl.id, gi.id, gi.label, gi.code
|
|
21
|
+
), area_ref_rast as
|
|
22
|
+
(
|
|
23
|
+
SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label,
|
|
24
|
+
gi.code as geog_instance_code,ST_Union(ST_Clip(r.rast, bound.geog::geometry)) as rast
|
|
25
|
+
FROM sample_geog_levels sgl inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
|
|
26
|
+
inner join boundaries bound on bound.geog_instance_id = gi.id
|
|
27
|
+
inner join rasters r on ST_Intersects(r.rast,bound.geog::geometry)
|
|
28
|
+
where sgl.id = sample_geog_lvl_id and r.raster_variable_id = ( select rv.area_reference_id from raster_variables rv where rv.id = rasters_id limit 1 )
|
|
29
|
+
group by sgl.id, gi.id, gi.label, gi.code
|
|
30
|
+
)
|
|
31
|
+
SELECT bin_rast.geog_instance_id, bin_rast.geog_instance_label,
|
|
32
|
+
sum((ST_SummaryStats(bin_rast.rast,1)).min) as min,
|
|
33
|
+
sum((ST_SummaryStats(bin_rast.rast,1)).max) as max,
|
|
34
|
+
sum((ST_SummaryStats(bin_rast.rast,1)).mean) as mean,
|
|
35
|
+
sum((ST_SummaryStats(bin_rast.rast,1)).count)::bigint as yield_cell_count
|
|
36
|
+
FROM bin_rast inner join area_ref_rast on ST_intersects(bin_rast.rast, area_ref_rast.rast)
|
|
37
|
+
GROUP BY bin_rast.geog_instance_id, bin_rast.geog_instance_label;
|
|
38
|
+
END;
|
|
39
|
+
$BODY$
|
|
40
|
+
LANGUAGE 'plpgsql';
|
|
41
|
+
SQL
|
|
42
|
+
|
|
43
|
+
sql2 = <<-SQL
|
|
44
|
+
CREATE OR REPLACE Function Terrapop_GLI_Harvest_Areal_Summarization(sample_geog_lvl_id bigint, rasters_id bigint)
|
|
45
|
+
RETURNS TABLE (geog_instance bigint, geog_instance_label character varying, percent_area double precision, harvest_area double precision)
|
|
46
|
+
AS
|
|
47
|
+
$BODY$
|
|
48
|
+
BEGIN
|
|
49
|
+
RETURN QUERY
|
|
50
|
+
WITH bin_rast as
|
|
51
|
+
(
|
|
52
|
+
SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label,
|
|
53
|
+
gi.code as geog_instance_code, ST_Union(ST_Clip(r.rast, bound.geog::geometry)) as rast
|
|
54
|
+
FROM sample_geog_levels sgl
|
|
55
|
+
inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
|
|
56
|
+
inner join boundaries bound on bound.geog_instance_id = gi.id
|
|
57
|
+
inner join rasters r on ST_Intersects(r.rast,bound.geog::geometry)
|
|
58
|
+
where sgl.id = sample_geog_lvl_id and r.raster_variable_id = rasters_id
|
|
59
|
+
group by sgl.id, gi.id, gi.label, gi.code
|
|
60
|
+
), zero_rast as
|
|
61
|
+
(
|
|
62
|
+
SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label,
|
|
63
|
+
gi.code as geog_instance_code,
|
|
64
|
+
ST_Union(ST_Clip(ST_SetBandNoDataValue(r.rast,0), bound.geog::geometry)) as rast
|
|
65
|
+
FROM sample_geog_levels sgl
|
|
66
|
+
inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
|
|
67
|
+
inner join boundaries bound on bound.geog_instance_id = gi.id
|
|
68
|
+
inner join rasters r on ST_Intersects(r.rast,bound.geog::geometry)
|
|
69
|
+
where sgl.id = sample_geog_lvl_id and r.raster_variable_id = rasters_id
|
|
70
|
+
group by sgl.id, gi.id, gi.label, gi.code
|
|
71
|
+
), area_ref_rast as
|
|
72
|
+
(
|
|
73
|
+
SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label,
|
|
74
|
+
gi.code as geog_instance_code,ST_Union(ST_Clip(r.rast, bound.geog::geometry)) as rast , sum((ST_SummaryStats(r.rast)).sum) as total_area
|
|
75
|
+
FROM sample_geog_levels sgl inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
|
|
76
|
+
inner join boundaries bound on bound.geog_instance_id = gi.id
|
|
77
|
+
inner join rasters r on ST_Intersects(r.rast,bound.geog::geometry)
|
|
78
|
+
where sgl.id = sample_geog_lvl_id and r.raster_variable_id = ( select rv.area_reference_id from raster_variables rv where rv.id = rasters_id limit 1 )
|
|
79
|
+
group by sgl.id, gi.id, gi.label, gi.code
|
|
80
|
+
), final_rast as
|
|
81
|
+
(
|
|
82
|
+
SELECT bin_rast.geog_instance_id, bin_rast.geog_instance_label,
|
|
83
|
+
sum((ST_SummaryStats(ST_Intersection(ST_Intersection(bin_rast.rast,zero_rast.rast),area_ref_rast.rast,'band2'),1)).sum) as harvest_area
|
|
84
|
+
FROM zero_rast inner join bin_rast on bin_rast.geog_instance_id = zero_rast.geog_instance_id
|
|
85
|
+
inner join area_ref_rast on bin_rast.geog_instance_id = area_ref_rast.geog_instance_id
|
|
86
|
+
GROUP BY bin_rast.geog_instance_id, bin_rast.geog_instance_label
|
|
87
|
+
)
|
|
88
|
+
select f.geog_instance_id, f.geog_instance_label, (f.harvest_area/a.total_area) as percent_area, f.harvest_area
|
|
89
|
+
from final_rast f inner join area_ref_rast a on f.geog_instance_id = a.geog_instance_id;
|
|
90
|
+
END;
|
|
91
|
+
$BODY$
|
|
92
|
+
LANGUAGE 'plpgsql';
|
|
93
|
+
SQL
|
|
94
|
+
|
|
95
|
+
execute(sql1)
|
|
96
|
+
execute(sql2)
|
|
97
|
+
|
|
98
|
+
end
|
|
99
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
class AddAnotherRasterSummarizationFunction < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
sql =<<-SQL
|
|
4
|
+
CREATE OR REPLACE Function Terrapop_GLC_Binary_Summarization(sample_geog_lvl_id bigint, rasters_id bigint)
|
|
5
|
+
RETURNS TABLE (geog_instance_id bigint, geog_instance_label character varying, binary_area double precision, total_area double precision, percent_area double precision)
|
|
6
|
+
AS
|
|
7
|
+
$BODY$
|
|
8
|
+
BEGIN
|
|
9
|
+
RETURN QUERY
|
|
10
|
+
WITH bin_rast as
|
|
11
|
+
(
|
|
12
|
+
SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label,
|
|
13
|
+
gi.code as geog_instance_code, ST_Union(ST_Clip(r.rast, bound.geog::geometry)) as rast
|
|
14
|
+
FROM sample_geog_levels sgl
|
|
15
|
+
inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
|
|
16
|
+
inner join boundaries bound on bound.geog_instance_id = gi.id
|
|
17
|
+
inner join rasters r on ST_Intersects(r.rast,bound.geog::geometry)
|
|
18
|
+
where sgl.id = sample_geog_lvl_id and r.raster_variable_id = rasters_id
|
|
19
|
+
group by sgl.id, gi.id, gi.label, gi.code
|
|
20
|
+
), area_ref_rast as
|
|
21
|
+
(
|
|
22
|
+
SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label,
|
|
23
|
+
gi.code as geog_instance_code, ST_Union(ST_Clip(r.rast, bound.geog::geometry)) as rast
|
|
24
|
+
FROM sample_geog_levels sgl inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
|
|
25
|
+
inner join boundaries bound on bound.geog_instance_id = gi.id
|
|
26
|
+
inner join rasters r on ST_Intersects(r.rast,bound.geog::geometry)
|
|
27
|
+
where sgl.id = sample_geog_lvl_id and r.raster_variable_id = ( select rv.area_reference_id from raster_variables rv where rv.id = rasters_id limit 1)
|
|
28
|
+
group by sgl.id, gi.id, gi.label, gi.code
|
|
29
|
+
)
|
|
30
|
+
SELECT bin_rast.geog_instance_id, bin_rast.geog_instance_label, sum((ST_SummaryStats(ST_Intersection(bin_rast.rast,area_ref_rast.rast,'band2'),1)).sum) as binary_area,
|
|
31
|
+
sum((ST_SummaryStats(area_ref_rast.rast)).sum) as total_area,
|
|
32
|
+
sum((ST_SummaryStats(ST_Intersection(bin_rast.rast,area_ref_rast.rast,'band2'),1)).sum) / sum((ST_SummaryStats(area_ref_rast.rast)).sum) as percent_area
|
|
33
|
+
FROM bin_rast inner join area_ref_rast on ST_intersects(bin_rast.rast, area_ref_rast.rast)
|
|
34
|
+
GROUP BY bin_rast.geog_instance_id, bin_rast.geog_instance_label;
|
|
35
|
+
|
|
36
|
+
END;
|
|
37
|
+
$BODY$
|
|
38
|
+
LANGUAGE 'plpgsql';
|
|
39
|
+
SQL
|
|
40
|
+
|
|
41
|
+
execute(sql)
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
class NewGlcSummarizationFunction < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
sql =<<-SQL
|
|
4
|
+
CREATE OR REPLACE FUNCTION terrapop_glc_binary_summarization_v2(IN sample_geog_lvl_id bigint, IN rasters_id bigint)
|
|
5
|
+
RETURNS TABLE(geog_instance_id bigint, geog_instance_label character varying, binary_area double precision, total_area double precision, percent_area double precision) AS
|
|
6
|
+
$BODY$
|
|
7
|
+
BEGIN
|
|
8
|
+
RETURN QUERY
|
|
9
|
+
WITH bin_rast as
|
|
10
|
+
(
|
|
11
|
+
SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label,
|
|
12
|
+
gi.code as geog_instance_code, ST_Union(ST_Clip(r.rast, bound.geog::geometry)) as rast
|
|
13
|
+
FROM sample_geog_levels sgl
|
|
14
|
+
inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
|
|
15
|
+
inner join boundaries bound on bound.geog_instance_id = gi.id
|
|
16
|
+
inner join rasters r on ST_Intersects(r.rast,bound.geog::geometry)
|
|
17
|
+
where sgl.id = sample_geog_lvl_id and r.raster_variable_id = rasters_id
|
|
18
|
+
group by sgl.id, gi.id, gi.label, gi.code
|
|
19
|
+
), area_ref_rast as
|
|
20
|
+
(
|
|
21
|
+
SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label,
|
|
22
|
+
gi.code as geog_instance_code, ST_Union(ST_Clip(r.rast, bound.geog::geometry)) as rast
|
|
23
|
+
FROM sample_geog_levels sgl inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
|
|
24
|
+
inner join boundaries bound on bound.geog_instance_id = gi.id
|
|
25
|
+
inner join rasters r on ST_Intersects(r.rast,bound.geog::geometry)
|
|
26
|
+
where sgl.id = sample_geog_lvl_id and r.raster_variable_id = ( select rv.area_reference_id from raster_variables rv where rv.id = rasters_id limit 1)
|
|
27
|
+
group by sgl.id, gi.id, gi.label, gi.code
|
|
28
|
+
)
|
|
29
|
+
SELECT b.geog_instance_id, b.geog_instance_label, (ST_SummaryStats(ST_MapAlgebra(b.rast, 1, a.rast, 1, '[rast1]*[rast2]'))).sum as binary_area,
|
|
30
|
+
(ST_SummaryStats(a.rast)).sum as total_area, ( (ST_SummaryStats(ST_MapAlgebra(b.rast, 1, a.rast, 1, '[rast1]*[rast2]'))).sum / (ST_SummaryStats(a.rast)).sum ) as percent_area
|
|
31
|
+
FROM bin_rast b inner join area_ref_rast a on b.geog_instance_id = a.geog_instance_id;
|
|
32
|
+
|
|
33
|
+
END;
|
|
34
|
+
$BODY$
|
|
35
|
+
LANGUAGE plpgsql VOLATILE
|
|
36
|
+
SQL
|
|
37
|
+
|
|
38
|
+
execute(sql)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
class CreateCacheItems < ActiveRecord::Migration
|
|
2
|
+
|
|
3
|
+
def up
|
|
4
|
+
connection = ActiveSupport::Cache::ActiveRecordStore::CacheItem.connection
|
|
5
|
+
connection.create_table :cache_items do |t|
|
|
6
|
+
t.string :key
|
|
7
|
+
t.text :value
|
|
8
|
+
t.text :meta_info
|
|
9
|
+
t.datetime :expires_at
|
|
10
|
+
t.datetime :created_at
|
|
11
|
+
t.datetime :updated_at
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
connection.add_index :cache_items, :key, :unique => true
|
|
15
|
+
connection.add_index :cache_items, :expires_at
|
|
16
|
+
connection.add_index :cache_items, :updated_at
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def down
|
|
20
|
+
ActiveSupport::Cache::ActiveRecordStore::CacheItem.connection.drop_table :cache_items
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
class AddNewBandAwareCategoricalToBinarySummarization < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
|
|
4
|
+
sql0 =<<-SQL
|
|
5
|
+
CREATE OR REPLACE FUNCTION terrapop_reclassify_categorical_raster_to_binary_summarization(IN smpl_geog_lvl_id integer, rast_var_id integer, band_num integer DEFAULT 1)
|
|
6
|
+
RETURNS TABLE("sample_geog_level_id" bigint, "geog_instance_label" character varying, "geog_instance_id" bigint, "reclass_pix" bigint, "area_pix" bigint, "percent_area" float, "reclass_area" float) AS
|
|
7
|
+
$BODY$
|
|
8
|
+
BEGIN
|
|
9
|
+
RETURN QUERY
|
|
10
|
+
WITH lookup AS
|
|
11
|
+
(
|
|
12
|
+
SELECT replace(replace(array_agg(classification::text || ':1')::text, '{', ''), '}', '') as exp
|
|
13
|
+
FROM raster_variables WHERE id IN (
|
|
14
|
+
select raster_variable_classifications.mosaic_raster_variable_id
|
|
15
|
+
from raster_variable_classifications
|
|
16
|
+
where raster_variable_classifications.raster_variable_id = rast_var_id)
|
|
17
|
+
), categorical_rast AS
|
|
18
|
+
(
|
|
19
|
+
SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label, ST_union(ST_Clip(r.rast, band_num, ST_Transform(bound.geog::geometry, (SELECT ST_SRID(r.rast) FROM rasters r WHERE r.raster_variable_id = (select rv.second_area_reference_id from raster_variables rv where rv.id = rast_var_id limit 1) LIMIT 1)), TRUE)) as rast
|
|
20
|
+
FROM sample_geog_levels sgl inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
|
|
21
|
+
inner join boundaries bound on bound.geog_instance_id = gi.id
|
|
22
|
+
inner join rasters r on ST_Intersects(r.rast, ST_Transform(bound.geog::geometry, (SELECT ST_SRID(r.rast) FROM rasters r WHERE r.raster_variable_id = (select rv.second_area_reference_id from raster_variables rv where rv.id = rast_var_id limit 1) LIMIT 1)))
|
|
23
|
+
WHERE sgl.id = smpl_geog_lvl_id and r.raster_variable_id = (select rv.second_area_reference_id from raster_variables rv where rv.id = rast_var_id limit 1)
|
|
24
|
+
GROUP by sgl.id, gi.id, gi.label, gi.code
|
|
25
|
+
), area_rast AS
|
|
26
|
+
(
|
|
27
|
+
SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label, ST_union(ST_Clip(r.rast, ST_Transform(bound.geog::geometry, (SELECT ST_SRID(r.rast) FROM rasters r WHERE r.raster_variable_id = (select rv.area_reference_id from raster_variables rv where rv.id = rast_var_id limit 1) LIMIT 1)))) as rast
|
|
28
|
+
FROM sample_geog_levels sgl inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
|
|
29
|
+
inner join boundaries bound on bound.geog_instance_id = gi.id
|
|
30
|
+
inner join rasters r on ST_Intersects(r.rast, ST_Transform(bound.geog::geometry, (SELECT ST_SRID(r.rast) FROM rasters r WHERE r.raster_variable_id = (select rv.area_reference_id from raster_variables rv where rv.id = rast_var_id limit 1) LIMIT 1)))
|
|
31
|
+
WHERE sgl.id = smpl_geog_lvl_id and r.raster_variable_id = (select rv.area_reference_id from raster_variables rv where rv.id = rast_var_id limit 1)
|
|
32
|
+
GROUP by sgl.id, gi.id, gi.label, gi.code
|
|
33
|
+
), rast_data AS
|
|
34
|
+
(
|
|
35
|
+
SELECT a.sample_geog_level_id, reclass.geog_instance_label, reclass.geog_instance_id,
|
|
36
|
+
(ST_SummaryStats(ST_Intersection(reclass.rast, a.rast, 'band2', 0))).sum as reclass_area, (ST_SummaryStats(a.rast)).sum as unit_area
|
|
37
|
+
, ST_Count(reclass.rast) as reclass_pix, ST_Count(a.rast) as area_pix
|
|
38
|
+
FROM (
|
|
39
|
+
select r.geog_instance_label, r.geog_instance_id, ST_Reclass(r.rast, 1, l.exp, '8BUI', 0) as rast
|
|
40
|
+
from categorical_rast r, lookup l
|
|
41
|
+
)reclass inner join area_rast a on (reclass.geog_instance_id = a.geog_instance_id)
|
|
42
|
+
)
|
|
43
|
+
SELECT r.sample_geog_level_id, r.geog_instance_label, r.geog_instance_id, r.reclass_pix, r.area_pix, (r.reclass_area/r.unit_area)*100 as percent_area, r.reclass_area as reclass_area
|
|
44
|
+
FROM rast_data r;
|
|
45
|
+
|
|
46
|
+
END;
|
|
47
|
+
$BODY$
|
|
48
|
+
LANGUAGE plpgsql VOLATILE
|
|
49
|
+
COST 100
|
|
50
|
+
ROWS 1000;
|
|
51
|
+
SQL
|
|
52
|
+
|
|
53
|
+
sql1 =<<-SQL
|
|
54
|
+
CREATE OR REPLACE FUNCTION terrapop_reclassify_categorical_raster_to_binary_summarization(IN smpl_geog_lvl_id integer, rast_var_id integer, band_num integer DEFAULT 1)
|
|
55
|
+
RETURNS TABLE("sample_geog_level_id" bigint, "geog_instance_label" character varying, "geog_instance_id" bigint, "reclass_pix" bigint, "area_pix" bigint, "percent_area" float, "reclass_area" float) AS
|
|
56
|
+
$BODY$
|
|
57
|
+
BEGIN
|
|
58
|
+
RETURN QUERY
|
|
59
|
+
|
|
60
|
+
WITH lookup AS
|
|
61
|
+
(
|
|
62
|
+
SELECT replace(replace(array_agg(classification::text || ':1')::text, '{', ''), '}', '') as exp
|
|
63
|
+
FROM raster_variables WHERE id IN (
|
|
64
|
+
select raster_variable_classifications.mosaic_raster_variable_id
|
|
65
|
+
from raster_variable_classifications
|
|
66
|
+
where raster_variable_classifications.raster_variable_id = rast_var_id)
|
|
67
|
+
), transformation AS
|
|
68
|
+
(
|
|
69
|
+
SELECT ST_SRID(r.rast) as prj_val
|
|
70
|
+
FROM rasters r
|
|
71
|
+
WHERE r.raster_variable_id = (select rv.second_area_reference_id from raster_variables rv where rv.id = rast_var_id limit 1) LIMIT 1
|
|
72
|
+
), polygon AS
|
|
73
|
+
(
|
|
74
|
+
SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label, ST_Transform(bound.geog::geometry, t.prj_val) as geom
|
|
75
|
+
FROM transformation t, sample_geog_levels sgl inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
|
|
76
|
+
inner join boundaries bound on bound.geog_instance_id = gi.id
|
|
77
|
+
WHERE sgl.id = smpl_geog_lvl_id
|
|
78
|
+
), categorical_rast AS
|
|
79
|
+
(
|
|
80
|
+
SELECT p.sample_geog_level_id, p.geog_instance_id, p.geog_instance_label, ST_union(ST_Clip(r.rast, band_num, p.geom, 0, True)) as rast
|
|
81
|
+
FROM polygon p inner join rasters r on ST_Intersects(r.rast, band_num, p.geom)
|
|
82
|
+
WHERE r.raster_variable_id = (select rv.second_area_reference_id from raster_variables rv where rv.id = rast_var_id limit 1)
|
|
83
|
+
GROUP BY p.sample_geog_level_id, p.geog_instance_id, p.geog_instance_label
|
|
84
|
+
),reclass_rast AS
|
|
85
|
+
(
|
|
86
|
+
select r.sample_geog_level_id, r.geog_instance_id, r.geog_instance_label, ST_Reclass(r.rast, 1, l.exp, '8BUI', 0) as rast
|
|
87
|
+
from categorical_rast r, lookup l
|
|
88
|
+
), area_rast AS
|
|
89
|
+
(
|
|
90
|
+
SELECT p.sample_geog_level_id, p.geog_instance_id, p.geog_instance_label, ST_union(ST_Clip(r.rast, 1, p.geom, 0, True)) as rast
|
|
91
|
+
FROM polygon p inner join rasters r on ST_Intersects(r.rast, 1, p.geom)
|
|
92
|
+
WHERE r.raster_variable_id = (select rv.area_reference_id from raster_variables rv where rv.id = rast_var_id limit 1)
|
|
93
|
+
GROUP BY p.sample_geog_level_id, p.geog_instance_id, p.geog_instance_label
|
|
94
|
+
), calc AS
|
|
95
|
+
(
|
|
96
|
+
SELECT r.sample_geog_level_id, r.geog_instance_label, r.geog_instance_id, (ST_SummaryStats(ST_MapAlgebra(r.rast, 1, a.rast, 1, '[rast1]*[rast2]' ,'32BUI'))).sum as binary_area,
|
|
97
|
+
(ST_SummaryStats(a.rast)).sum as unit_area, ST_Count(r.rast) as reclass_pix, ST_Count(a.rast) as area_pix
|
|
98
|
+
FROM area_rast a inner join reclass_rast r on a.geog_instance_id = r.geog_instance_id
|
|
99
|
+
)
|
|
100
|
+
SELECT c.sample_geog_level_id, c.geog_instance_label, c.geog_instance_id, c.reclass_pix, c.area_pix, c.binary_area/c.unit_area as percent_area, c.binary_area as reclass_area
|
|
101
|
+
FROM calc c;
|
|
102
|
+
END;
|
|
103
|
+
$BODY$
|
|
104
|
+
LANGUAGE plpgsql VOLATILE
|
|
105
|
+
COST 100
|
|
106
|
+
ROWS 1000;
|
|
107
|
+
SQL
|
|
108
|
+
|
|
109
|
+
sql =<<-SQL
|
|
110
|
+
CREATE OR REPLACE FUNCTION terrapop_reclassify_categorical_raster_to_binary_summarization(IN sample_geog_lvl_id bigint, IN rasters_id bigint, IN bnd_num integer)
|
|
111
|
+
RETURNS TABLE(geog_instance bigint, geog_instance_label character varying, pixel_count bigint, binary_area double precision, percent_area double precision, total_area double precision) AS
|
|
112
|
+
$BODY$
|
|
113
|
+
|
|
114
|
+
BEGIN
|
|
115
|
+
RETURN QUERY
|
|
116
|
+
|
|
117
|
+
WITH lookup AS
|
|
118
|
+
(
|
|
119
|
+
SELECT replace(replace(array_agg(classification::text || ':1')::text, '{', ''), '}', '') as exp
|
|
120
|
+
FROM raster_variables WHERE id IN (
|
|
121
|
+
select raster_variable_classifications.mosaic_raster_variable_id
|
|
122
|
+
from raster_variable_classifications
|
|
123
|
+
where raster_variable_classifications.raster_variable_id = rasters_id)
|
|
124
|
+
), cat_rast as
|
|
125
|
+
(
|
|
126
|
+
SELECT rv.area_reference_id as area_id, rv.second_area_reference_id as cat_id
|
|
127
|
+
FROM raster_variables rv
|
|
128
|
+
WHERE rv.id = rasters_id
|
|
129
|
+
),transformation as
|
|
130
|
+
(
|
|
131
|
+
SELECT ST_SRID(r.rast) as prj_value
|
|
132
|
+
FROM cat_rast c, rasters r
|
|
133
|
+
WHERE r.raster_variable_id = c.cat_id
|
|
134
|
+
LIMIT 1
|
|
135
|
+
), polygon as
|
|
136
|
+
(
|
|
137
|
+
SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label,
|
|
138
|
+
gi.code as geog_instance_code, ST_Transform(bound.geog::geometry, t.prj_value) as geom, t.prj_value
|
|
139
|
+
FROM transformation t, sample_geog_levels sgl
|
|
140
|
+
inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
|
|
141
|
+
inner join boundaries bound on bound.geog_instance_id = gi.id
|
|
142
|
+
WHERE sgl.id = sample_geog_lvl_id
|
|
143
|
+
), r_table as
|
|
144
|
+
(
|
|
145
|
+
SELECT p.geog_instance_id, p.geog_instance_label, ST_Union(ST_Reclass(ST_Clip(r.rast, bnd_num, ST_Transform(p.geom, p.prj_value), TRUE),1,l.exp, '8BUI',0)) as rast
|
|
146
|
+
FROM lookup l, cat_rast c, polygon p inner join rasters r on ST_Intersects(r.rast, ST_Transform(p.geom, p.prj_value))
|
|
147
|
+
WHERE r.raster_variable_id = (c.cat_id)
|
|
148
|
+
GROUP by p.sample_geog_level_id, p.geog_instance_id, p.geog_instance_label, p.geog_instance_code
|
|
149
|
+
), a_table as
|
|
150
|
+
(
|
|
151
|
+
SELECT p.geog_instance_id, p.geog_instance_label, ST_union(ST_Clip(r.rast, ST_Transform(p.geom, p.prj_value))) as rast
|
|
152
|
+
FROM lookup l, cat_rast c, polygon p inner join rasters r on ST_Intersects(r.rast, ST_Transform(p.geom, p.prj_value))
|
|
153
|
+
WHERE r.raster_variable_id = (c.area_id)
|
|
154
|
+
GROUP by p.sample_geog_level_id, p.geog_instance_id, p.geog_instance_label, p.geog_instance_code
|
|
155
|
+
), calc as
|
|
156
|
+
(
|
|
157
|
+
SELECT r.geog_instance_id, r.geog_instance_label, (ST_SummaryStats(r.rast)).*, (ST_SummaryStats(a.rast)).sum as total_area,
|
|
158
|
+
(ST_SummaryStats(ST_MapAlgebra(r.rast, 1, a.rast, 1, '[rast1]*[rast2]', '32BUI'))).sum as binary_area
|
|
159
|
+
FROM r_table r inner join a_table a on (r.geog_instance_id = a.geog_instance_id)
|
|
160
|
+
)
|
|
161
|
+
SELECT c.geog_instance_id, c.geog_instance_label, c.count as pixel_count, c.binary_area,
|
|
162
|
+
c.binary_area / c.total_area as percent_area, c.total_area as total_area
|
|
163
|
+
FROM calc c;
|
|
164
|
+
|
|
165
|
+
END;
|
|
166
|
+
|
|
167
|
+
$BODY$
|
|
168
|
+
LANGUAGE 'plpgsql';
|
|
169
|
+
SQL
|
|
170
|
+
|
|
171
|
+
execute(sql)
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
|