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
data/db/migrate/20150729160936_fixingterrapop_reclassify_categorical_raster_to_binary_summariz_v3.rb
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
class FixingterrapopReclassifyCategoricalRasterToBinarySummarizV3 < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
sql =<<-SQL
|
|
4
|
+
CREATE OR REPLACE FUNCTION terrapop_reclassify_categorical_raster_to_binary_summariz_v3(IN sample_geog_lvl_id bigint, IN rasters_id bigint, IN bnd_num integer)
|
|
5
|
+
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
|
|
6
|
+
$BODY$
|
|
7
|
+
|
|
8
|
+
DECLARE
|
|
9
|
+
area_raster_id integer;
|
|
10
|
+
categorical_raster_id integer;
|
|
11
|
+
|
|
12
|
+
BEGIN
|
|
13
|
+
SELECT rv.area_reference_id as area_id into area_raster_id FROM raster_variables rv WHERE rv.id = rasters_id ;
|
|
14
|
+
SELECT rv.second_area_reference_id into categorical_raster_id FROM raster_variables rv WHERE rv.id = rasters_id ;
|
|
15
|
+
|
|
16
|
+
RETURN QUERY
|
|
17
|
+
|
|
18
|
+
WITH lookup AS
|
|
19
|
+
(
|
|
20
|
+
SELECT replace(replace(array_agg(classification::text || ':1')::text, '{', ''), '}', '') as exp
|
|
21
|
+
FROM raster_variables WHERE id IN (
|
|
22
|
+
select raster_variable_classifications.mosaic_raster_variable_id
|
|
23
|
+
from raster_variable_classifications
|
|
24
|
+
where raster_variable_classifications.raster_variable_id = rasters_id)
|
|
25
|
+
), transformation as
|
|
26
|
+
(
|
|
27
|
+
SELECT ST_SRID(r.rast) as prj_value
|
|
28
|
+
FROM rasters r
|
|
29
|
+
WHERE r.raster_variable_id = categorical_raster_id
|
|
30
|
+
LIMIT 1
|
|
31
|
+
), polygon as
|
|
32
|
+
(
|
|
33
|
+
SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label,
|
|
34
|
+
gi.code as geog_instance_code, ST_Transform(bound.geog::geometry, t.prj_value) as geom
|
|
35
|
+
FROM transformation t, sample_geog_levels sgl
|
|
36
|
+
inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
|
|
37
|
+
inner join boundaries bound on bound.geog_instance_id = gi.id
|
|
38
|
+
WHERE sgl.id = sample_geog_lvl_id
|
|
39
|
+
), r_table as
|
|
40
|
+
(
|
|
41
|
+
SELECT p.geog_instance_id, p.geog_instance_label, ST_union(ST_Reclass(ST_Clip(r.rast, bnd_num ,p.geom, TRUE),1,l.exp, '8BUI',0)) as rast
|
|
42
|
+
FROM lookup l, polygon p inner join rasters r on ST_Intersects(r.rast, p.geom)
|
|
43
|
+
WHERE r.raster_variable_id = categorical_raster_id
|
|
44
|
+
GROUP by p.sample_geog_level_id, p.geog_instance_id, p.geog_instance_label, p.geog_instance_code
|
|
45
|
+
), a_table as
|
|
46
|
+
(
|
|
47
|
+
SELECT p.geog_instance_id, p.geog_instance_label, ST_union(ST_Clip(r.rast, p.geom)) as rast
|
|
48
|
+
FROM lookup l, polygon p inner join rasters r on ST_Intersects(r.rast, p.geom)
|
|
49
|
+
WHERE r.raster_variable_id = area_raster_id
|
|
50
|
+
GROUP by p.sample_geog_level_id, p.geog_instance_id, p.geog_instance_label, p.geog_instance_code
|
|
51
|
+
), calc as
|
|
52
|
+
(
|
|
53
|
+
SELECT r.geog_instance_id, r.geog_instance_label, (ST_SummaryStats(r.rast)).*, (ST_SummaryStats(a.rast)).sum as total_area,
|
|
54
|
+
(ST_SummaryStats(ST_MapAlgebra(r.rast, 1, a.rast, 1, '[rast1]*[rast2]', '32BUI'))).sum as binary_area
|
|
55
|
+
FROM r_table r inner join a_table a on (r.geog_instance_id = a.geog_instance_id)
|
|
56
|
+
)
|
|
57
|
+
SELECT c.geog_instance_id, c.geog_instance_label, c.count as pixel_count, c.binary_area,
|
|
58
|
+
c.binary_area / c.total_area as percent_area, c.total_area as total_area
|
|
59
|
+
FROM calc c;
|
|
60
|
+
|
|
61
|
+
END;
|
|
62
|
+
$BODY$
|
|
63
|
+
LANGUAGE plpgsql VOLATILE;
|
|
64
|
+
SQL
|
|
65
|
+
|
|
66
|
+
execute sql
|
|
67
|
+
end
|
|
68
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
class AdjustJpegClipForCategorical < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
|
|
4
|
+
sql = <<-SQL
|
|
5
|
+
CREATE OR REPLACE Function terrapop_jpeg_raster_clip_colormap_v2(sample_geog_lvl_id bigint, rasters_id bigint, raster_bnd integer, colormap text)
|
|
6
|
+
RETURNS TABLE (tiff bytea) AS
|
|
7
|
+
$BODY$
|
|
8
|
+
|
|
9
|
+
BEGIN
|
|
10
|
+
RETURN QUERY
|
|
11
|
+
|
|
12
|
+
WITH poly_table AS
|
|
13
|
+
(
|
|
14
|
+
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
|
|
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
|
+
where gi.sample_geog_level_id = sample_geog_lvl_id
|
|
19
|
+
),
|
|
20
|
+
new_rast AS
|
|
21
|
+
(
|
|
22
|
+
SELECT ST_Union(ST_Clip(r.rast, raster_bnd, p.geom, TRUE)) as rast
|
|
23
|
+
FROM poly_table p inner join rasters r on ST_Intersects(r.rast, p.geom)
|
|
24
|
+
where r.raster_variable_id = rasters_id
|
|
25
|
+
)
|
|
26
|
+
select ST_AsJPEG(ST_ColorMap(ST_Union(r.rast), 1, colormap), 1) as tiff from new_rast r;
|
|
27
|
+
|
|
28
|
+
END;
|
|
29
|
+
$BODY$
|
|
30
|
+
LANGUAGE 'plpgsql';
|
|
31
|
+
SQL
|
|
32
|
+
|
|
33
|
+
sql0 = <<-SQL
|
|
34
|
+
CREATE OR REPLACE Function terrapop_jpeg_raster_clip_colormap_with_buffer_v1(sample_geog_lvl_id bigint, rasters_id bigint, raster_bnd integer, colormap text)
|
|
35
|
+
RETURNS TABLE (tiff bytea) AS
|
|
36
|
+
$BODY$
|
|
37
|
+
|
|
38
|
+
BEGIN
|
|
39
|
+
RETURN QUERY
|
|
40
|
+
|
|
41
|
+
WITH poly_table AS
|
|
42
|
+
(
|
|
43
|
+
SELECT ST_Buffer(ST_Transform(bound.geog::geometry, (SELECT ST_SRID(r.rast) FROM rasters r WHERE r.raster_variable_id = rasters_id LIMIT 1)), 0.0000001) as geom
|
|
44
|
+
FROM sample_geog_levels sgl
|
|
45
|
+
inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
|
|
46
|
+
inner join boundaries bound on bound.geog_instance_id = gi.id
|
|
47
|
+
where gi.sample_geog_level_id = sample_geog_lvl_id
|
|
48
|
+
),
|
|
49
|
+
new_rast AS
|
|
50
|
+
(
|
|
51
|
+
SELECT ST_Union(ST_Clip(r.rast, raster_bnd, p.geom, TRUE)) as rast
|
|
52
|
+
FROM poly_table p inner join rasters r on ST_Intersects(r.rast, p.geom)
|
|
53
|
+
where r.raster_variable_id = rasters_id
|
|
54
|
+
)
|
|
55
|
+
select ST_AsJPEG(ST_ColorMap(ST_Union(r.rast), 1, colormap), 1) as tiff from new_rast r;
|
|
56
|
+
|
|
57
|
+
END;
|
|
58
|
+
$BODY$
|
|
59
|
+
LANGUAGE 'plpgsql';
|
|
60
|
+
SQL
|
|
61
|
+
|
|
62
|
+
execute sql
|
|
63
|
+
|
|
64
|
+
execute sql0
|
|
65
|
+
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
class StstandardizeTerrapopReclassifyCategoricalRasterToBinarySummarizV3 < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
|
|
4
|
+
sql =<<-SQL
|
|
5
|
+
CREATE OR REPLACE FUNCTION terrapop_reclassify_categorical_raster_to_binary_summariz_v4(IN sample_geog_lvl_id bigint, IN rasters_id bigint, IN bnd_num integer)
|
|
6
|
+
RETURNS TABLE(geog_instance_id bigint, geog_instance_label character varying, pixel_count bigint, binary_area double precision, percent_area double precision, total_area double precision) AS
|
|
7
|
+
$BODY$
|
|
8
|
+
|
|
9
|
+
DECLARE
|
|
10
|
+
area_raster_id integer;
|
|
11
|
+
categorical_raster_id integer;
|
|
12
|
+
|
|
13
|
+
BEGIN
|
|
14
|
+
SELECT rv.area_reference_id as area_id into area_raster_id FROM raster_variables rv WHERE rv.id = rasters_id ;
|
|
15
|
+
SELECT rv.second_area_reference_id into categorical_raster_id FROM raster_variables rv WHERE rv.id = rasters_id ;
|
|
16
|
+
|
|
17
|
+
RETURN QUERY
|
|
18
|
+
|
|
19
|
+
WITH lookup AS
|
|
20
|
+
(
|
|
21
|
+
SELECT replace(replace(array_agg(classification::text || ':1')::text, '{', ''), '}', '') as exp
|
|
22
|
+
FROM raster_variables WHERE id IN (
|
|
23
|
+
select raster_variable_classifications.mosaic_raster_variable_id
|
|
24
|
+
from raster_variable_classifications
|
|
25
|
+
where raster_variable_classifications.raster_variable_id = rasters_id)
|
|
26
|
+
), transformation as
|
|
27
|
+
(
|
|
28
|
+
SELECT ST_SRID(r.rast) as prj_value
|
|
29
|
+
FROM rasters r
|
|
30
|
+
WHERE r.raster_variable_id = categorical_raster_id
|
|
31
|
+
LIMIT 1
|
|
32
|
+
), polygon as
|
|
33
|
+
(
|
|
34
|
+
SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label,
|
|
35
|
+
gi.code as geog_instance_code, ST_Transform(bound.geog::geometry, t.prj_value) as geom
|
|
36
|
+
FROM transformation t, sample_geog_levels sgl
|
|
37
|
+
inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
|
|
38
|
+
inner join boundaries bound on bound.geog_instance_id = gi.id
|
|
39
|
+
WHERE sgl.id = sample_geog_lvl_id
|
|
40
|
+
), r_table as
|
|
41
|
+
(
|
|
42
|
+
SELECT p.geog_instance_id, p.geog_instance_label, ST_union(ST_Reclass(ST_Clip(r.rast, bnd_num ,p.geom, TRUE),1,l.exp, '8BUI',0)) as rast
|
|
43
|
+
FROM lookup l, polygon p inner join rasters r on ST_Intersects(r.rast, p.geom)
|
|
44
|
+
WHERE r.raster_variable_id = categorical_raster_id
|
|
45
|
+
GROUP by p.sample_geog_level_id, p.geog_instance_id, p.geog_instance_label, p.geog_instance_code
|
|
46
|
+
), a_table as
|
|
47
|
+
(
|
|
48
|
+
SELECT p.geog_instance_id, p.geog_instance_label, ST_union(ST_Clip(r.rast, p.geom)) as rast
|
|
49
|
+
FROM lookup l, polygon p inner join rasters r on ST_Intersects(r.rast, p.geom)
|
|
50
|
+
WHERE r.raster_variable_id = area_raster_id
|
|
51
|
+
GROUP by p.sample_geog_level_id, p.geog_instance_id, p.geog_instance_label, p.geog_instance_code
|
|
52
|
+
), calc as
|
|
53
|
+
(
|
|
54
|
+
SELECT r.geog_instance_id, r.geog_instance_label, (ST_SummaryStats(r.rast)).*, (ST_SummaryStats(a.rast)).sum as total_area,
|
|
55
|
+
(ST_SummaryStats(ST_MapAlgebra(r.rast, 1, a.rast, 1, '[rast1]*[rast2]', '32BUI'))).sum as binary_area
|
|
56
|
+
FROM r_table r inner join a_table a on (r.geog_instance_id = a.geog_instance_id)
|
|
57
|
+
)
|
|
58
|
+
SELECT c.geog_instance_id, c.geog_instance_label, c.count as pixel_count, c.binary_area,
|
|
59
|
+
c.binary_area / c.total_area as percent_area, c.total_area as total_area
|
|
60
|
+
FROM calc c;
|
|
61
|
+
|
|
62
|
+
END;
|
|
63
|
+
$BODY$
|
|
64
|
+
LANGUAGE plpgsql VOLATILE;
|
|
65
|
+
SQL
|
|
66
|
+
|
|
67
|
+
execute sql
|
|
68
|
+
end
|
|
69
|
+
end
|
data/db/migrate/20150731151304_consistent_return_fieldsterrapop_gli_yield_areal_summarization.rb
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
class ConsistentReturnFieldsterrapopGliYieldArealSummarization < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
|
|
4
|
+
sql1 =<<-SQL
|
|
5
|
+
CREATE OR REPLACE Function terrapop_gli_yield_areal_summarization_v2(sample_geog_lvl_id bigint, rasters_id bigint)
|
|
6
|
+
RETURNS TABLE (geog_instance_id 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_v2(sample_geog_lvl_id bigint, rasters_id bigint)
|
|
45
|
+
RETURNS TABLE (geog_instance_id bigint, geog_instance_label character varying, percent 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,50 @@
|
|
|
1
|
+
class AddFunctionToDetectBoundariesThatWrapGlobe < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
|
|
4
|
+
sql=<<-SQL
|
|
5
|
+
CREATE OR REPLACE FUNCTION terrapop_boundary_wrap(sample_geog_lvl_id bigint) RETURNS Boolean AS
|
|
6
|
+
$BODY$
|
|
7
|
+
DECLARE
|
|
8
|
+
|
|
9
|
+
far_west double precision;
|
|
10
|
+
far_east double precision;
|
|
11
|
+
|
|
12
|
+
BEGIN
|
|
13
|
+
|
|
14
|
+
with boundbox as
|
|
15
|
+
(
|
|
16
|
+
select ST_X((ST_Dumppoints(ST_convexhull(geom))).geom) as coordinates
|
|
17
|
+
from sample_geog_levels sgl inner join geog_instances gi on sgl.id = gi.sample_geog_level_id inner join boundaries bound on bound.geog_instance_id = gi.id WHERE sgl.id = sample_geog_lvl_id
|
|
18
|
+
)
|
|
19
|
+
select min(coordinates)
|
|
20
|
+
into far_west
|
|
21
|
+
from boundbox;
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
with boundbox as
|
|
25
|
+
(
|
|
26
|
+
select ST_X((ST_Dumppoints(ST_convexhull(geom))).geom) as coordinates
|
|
27
|
+
from sample_geog_levels sgl inner join geog_instances gi on sgl.id = gi.sample_geog_level_id inner join boundaries bound on bound.geog_instance_id = gi.id WHERE sgl.id = sample_geog_lvl_id
|
|
28
|
+
)
|
|
29
|
+
select max(coordinates)
|
|
30
|
+
into far_east
|
|
31
|
+
from boundbox;
|
|
32
|
+
|
|
33
|
+
RAISE NOTICE ' % ', far_west;
|
|
34
|
+
RAISE NOTICE ' % ', far_east;
|
|
35
|
+
|
|
36
|
+
IF far_west < -178 AND far_east > 178 THEN
|
|
37
|
+
RETURN True;
|
|
38
|
+
ELSE
|
|
39
|
+
RETURN False;
|
|
40
|
+
END IF;
|
|
41
|
+
|
|
42
|
+
END;
|
|
43
|
+
$BODY$
|
|
44
|
+
LANGUAGE plpgsql VOLATILE
|
|
45
|
+
COST 100;
|
|
46
|
+
SQL
|
|
47
|
+
|
|
48
|
+
execute sql
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
class AddColormappedCategoricalToBinaryJpegCookieCutteringizingFunction < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
sql1 =<<-SQL
|
|
4
|
+
CREATE OR REPLACE FUNCTION terrapop_categorical_to_binary_as_jpeg_colormap_v1(IN sample_geog_lvl_id bigint, IN rasters_id bigint, IN bnd_num integer DEFAULT 1, colormap TEXT DEFAULT 'greyscale')
|
|
5
|
+
RETURNS bytea AS
|
|
6
|
+
$BODY$
|
|
7
|
+
DECLARE ret_tiff bytea;
|
|
8
|
+
BEGIN
|
|
9
|
+
|
|
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 = rasters_id)
|
|
17
|
+
), cat_rast as
|
|
18
|
+
(
|
|
19
|
+
SELECT rv.second_area_reference_id as cat_id
|
|
20
|
+
FROM raster_variables rv
|
|
21
|
+
WHERE rv.id = rasters_id
|
|
22
|
+
),transformation as
|
|
23
|
+
(
|
|
24
|
+
SELECT ST_SRID(r.rast) as prj_value
|
|
25
|
+
FROM cat_rast c, rasters r
|
|
26
|
+
WHERE r.raster_variable_id = c.cat_id
|
|
27
|
+
LIMIT 1
|
|
28
|
+
), polygon as
|
|
29
|
+
(
|
|
30
|
+
SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label,
|
|
31
|
+
gi.code as geog_instance_code, ST_Transform(bound.geog::geometry, t.prj_value) as geom
|
|
32
|
+
FROM transformation t, sample_geog_levels sgl
|
|
33
|
+
inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
|
|
34
|
+
inner join boundaries bound on bound.geog_instance_id = gi.id
|
|
35
|
+
WHERE sgl.id = sample_geog_lvl_id
|
|
36
|
+
)
|
|
37
|
+
SELECT ST_AsJPEG(ST_ColorMap(ST_union(ST_Reclass(ST_Clip(r.rast, bnd_num,p.geom, TRUE),1,l.exp, '8BUI',0))), 1) into ret_tiff
|
|
38
|
+
FROM lookup l, cat_rast c, polygon p inner join rasters r on ST_Intersects(r.rast,p.geom)
|
|
39
|
+
WHERE r.raster_variable_id = (c.cat_id);
|
|
40
|
+
RETURN ret_tiff;
|
|
41
|
+
END;
|
|
42
|
+
|
|
43
|
+
$BODY$
|
|
44
|
+
LANGUAGE 'plpgsql';
|
|
45
|
+
SQL
|
|
46
|
+
|
|
47
|
+
execute(sql1)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
class AroundTheWorldWrapARasterFunction < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
sql =<<-SQL
|
|
4
|
+
CREATE OR REPLACE FUNCTION terrapop_wrap_global_raster_v1(IN sample_geog_lvl_id bigint, IN rast_id bigint, IN rast_band_num integer)
|
|
5
|
+
RETURNS SETOF raster AS
|
|
6
|
+
$BODY$
|
|
7
|
+
DECLARE
|
|
8
|
+
|
|
9
|
+
one_raster text := 'hello';
|
|
10
|
+
query text := '';
|
|
11
|
+
|
|
12
|
+
BEGIN
|
|
13
|
+
|
|
14
|
+
WITH lookup AS
|
|
15
|
+
(
|
|
16
|
+
SELECT replace(replace(array_agg(classification::text || ':1')::text, '{', ''), '}', '') as exp
|
|
17
|
+
FROM raster_variables WHERE id IN (
|
|
18
|
+
select raster_variable_classifications.mosaic_raster_variable_id
|
|
19
|
+
from raster_variable_classifications
|
|
20
|
+
where raster_variable_classifications.raster_variable_id = rast_id )
|
|
21
|
+
),
|
|
22
|
+
cat_rast as
|
|
23
|
+
(
|
|
24
|
+
SELECT rv.second_area_reference_id as cat_id
|
|
25
|
+
FROM raster_variables rv
|
|
26
|
+
WHERE rv.id = rast_id
|
|
27
|
+
)
|
|
28
|
+
SELECT r_table_schema || '.' || table_name as tablename
|
|
29
|
+
INTO one_raster
|
|
30
|
+
FROM cat_rast inner join new_rasters on cat_rast.cat_id = new_rasters.raster_variable_id ;
|
|
31
|
+
|
|
32
|
+
RAISE NOTICE ' % ', one_raster;
|
|
33
|
+
|
|
34
|
+
query := $$ WITH lookup AS
|
|
35
|
+
(
|
|
36
|
+
SELECT replace(replace(array_agg(classification::text || ':1')::text, '{', ''), '}', '') as exp
|
|
37
|
+
FROM raster_variables WHERE id IN (
|
|
38
|
+
select raster_variable_classifications.mosaic_raster_variable_id
|
|
39
|
+
from raster_variable_classifications
|
|
40
|
+
where raster_variable_classifications.raster_variable_id = $$ || rast_id || $$)
|
|
41
|
+
)
|
|
42
|
+
, transformation as
|
|
43
|
+
(
|
|
44
|
+
SELECT ST_SRID(r.rast) as prj_value
|
|
45
|
+
FROM $$ || one_raster || $$ r
|
|
46
|
+
LIMIT 1
|
|
47
|
+
), polygon as
|
|
48
|
+
(
|
|
49
|
+
SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label,
|
|
50
|
+
gi.code as geog_instance_code, ST_Buffer(ST_Transform(bound.geog::geometry, t.prj_value), 0.0001) as geom
|
|
51
|
+
FROM transformation t, sample_geog_levels sgl
|
|
52
|
+
inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
|
|
53
|
+
inner join boundaries bound on bound.geog_instance_id = gi.id
|
|
54
|
+
WHERE sgl.id = $$ || sample_geog_lvl_id || $$
|
|
55
|
+
), polydump as
|
|
56
|
+
(
|
|
57
|
+
SELECT (ST_dump(geom)).path[1] as id, (ST_dump(geom)).geom
|
|
58
|
+
FROM polygon
|
|
59
|
+
), polygon_x as
|
|
60
|
+
(
|
|
61
|
+
Select p.id, ST_X(ST_Centroid(p.geom)) as x, p.geom
|
|
62
|
+
FROM polydump p
|
|
63
|
+
), polygon_west as
|
|
64
|
+
(
|
|
65
|
+
select id, x, geom
|
|
66
|
+
from polygon_x
|
|
67
|
+
where x > 0
|
|
68
|
+
),
|
|
69
|
+
polygon_east as
|
|
70
|
+
(
|
|
71
|
+
select id, x, geom
|
|
72
|
+
from polygon_x
|
|
73
|
+
where x < 0
|
|
74
|
+
), raster_west as
|
|
75
|
+
(
|
|
76
|
+
SELECT ST_union(ST_Reclass(ST_Clip(r.rast, 1,p.geom, TRUE),1,l.exp, '8BUI',0)) as rast
|
|
77
|
+
FROM lookup l, polygon_west p inner join $$ || one_raster || $$ r on ST_Intersects(r.rast,p.geom)
|
|
78
|
+
), raster_east as
|
|
79
|
+
(
|
|
80
|
+
SELECT ST_union(ST_Reclass(ST_Clip(r.rast, 1,p.geom, TRUE),1,l.exp, '8BUI',0)) as rast
|
|
81
|
+
FROM lookup l, polygon_east p inner join $$ || one_raster || $$ r on ST_Intersects(r.rast,p.geom)
|
|
82
|
+
)
|
|
83
|
+
select ST_MapAlgebra(e.rast, 1, w.rast,1, '[rast1.val] + [rast2.val]' ,'32BUI', 'UNION') as rast
|
|
84
|
+
from raster_east e, raster_west w $$ ;
|
|
85
|
+
|
|
86
|
+
RAISE NOTICE ' % ', query;
|
|
87
|
+
|
|
88
|
+
RETURN QUERY execute query;
|
|
89
|
+
|
|
90
|
+
END;
|
|
91
|
+
$BODY$
|
|
92
|
+
LANGUAGE plpgsql VOLATILE
|
|
93
|
+
COST 100
|
|
94
|
+
ROWS 1000;
|
|
95
|
+
SQL
|
|
96
|
+
|
|
97
|
+
execute(sql)
|
|
98
|
+
|
|
99
|
+
sql1 =<<-SQL
|
|
100
|
+
CREATE OR REPLACE FUNCTION terrapop_categorical_to_binary_as_jpeg_colormap_v2(IN sample_geog_lvl_id bigint, IN rasters_id bigint, IN bnd_num integer DEFAULT 1, colormap TEXT DEFAULT 'greyscale')
|
|
101
|
+
RETURNS bytea AS
|
|
102
|
+
$BODY$
|
|
103
|
+
DECLARE ret_tiff bytea;
|
|
104
|
+
BEGIN
|
|
105
|
+
|
|
106
|
+
WITH lookup AS
|
|
107
|
+
(
|
|
108
|
+
SELECT replace(replace(array_agg(classification::text || ':1')::text, '{', ''), '}', '') as exp
|
|
109
|
+
FROM raster_variables WHERE id IN (
|
|
110
|
+
select raster_variable_classifications.mosaic_raster_variable_id
|
|
111
|
+
from raster_variable_classifications
|
|
112
|
+
where raster_variable_classifications.raster_variable_id = rasters_id)
|
|
113
|
+
), cat_rast as
|
|
114
|
+
(
|
|
115
|
+
SELECT rv.second_area_reference_id as cat_id
|
|
116
|
+
FROM raster_variables rv
|
|
117
|
+
WHERE rv.id = rasters_id
|
|
118
|
+
),transformation as
|
|
119
|
+
(
|
|
120
|
+
SELECT ST_SRID(r.rast) as prj_value
|
|
121
|
+
FROM cat_rast c, rasters r
|
|
122
|
+
WHERE r.raster_variable_id = c.cat_id
|
|
123
|
+
LIMIT 1
|
|
124
|
+
), polygon as
|
|
125
|
+
(
|
|
126
|
+
SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label,
|
|
127
|
+
gi.code as geog_instance_code, ST_Transform(bound.geog::geometry, t.prj_value) as geom
|
|
128
|
+
FROM transformation t, sample_geog_levels sgl
|
|
129
|
+
inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
|
|
130
|
+
inner join boundaries bound on bound.geog_instance_id = gi.id
|
|
131
|
+
WHERE sgl.id = sample_geog_lvl_id
|
|
132
|
+
),
|
|
133
|
+
rast_rast as
|
|
134
|
+
(
|
|
135
|
+
SELECT ST_union(ST_Reclass(ST_Clip(r.rast, bnd_num,p.geom, TRUE),1,l.exp, '8BUI',0)) AS rast
|
|
136
|
+
FROM lookup l, cat_rast c, polygon p inner join rasters r on ST_Intersects(r.rast,p.geom)
|
|
137
|
+
WHERE r.raster_variable_id = (c.cat_id)
|
|
138
|
+
),
|
|
139
|
+
rast_x as
|
|
140
|
+
(
|
|
141
|
+
SELECT ST_Width(rast) AS x FROM rast_rast
|
|
142
|
+
),
|
|
143
|
+
rast_y as
|
|
144
|
+
(
|
|
145
|
+
SELECT ST_Height(rast) AS y FROM rast_rast
|
|
146
|
+
)
|
|
147
|
+
SELECT ST_AsJPEG(ST_ColorMap(ST_Resample(rr.rast, x.x, y.y), 1, 'fire'), 1, 100) into ret_tiff FROM rast_rast rr, rast_x x, rast_y y;
|
|
148
|
+
RETURN ret_tiff;
|
|
149
|
+
END;
|
|
150
|
+
|
|
151
|
+
$BODY$
|
|
152
|
+
LANGUAGE 'plpgsql';
|
|
153
|
+
SQL
|
|
154
|
+
|
|
155
|
+
execute(sql1)
|
|
156
|
+
end
|
|
157
|
+
end
|