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.
Files changed (490) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +34 -0
  5. data/app/assets/javascripts/terrapop_models/application.js +13 -0
  6. data/app/assets/stylesheets/terrapop_models/application.css +15 -0
  7. data/app/controllers/terrapop_models/application_controller.rb +4 -0
  8. data/app/helpers/terrapop_models/application_helper.rb +4 -0
  9. data/app/models/api_log.rb +2 -0
  10. data/app/models/area_data_raster.rb +126 -0
  11. data/app/models/area_data_raster_variable_mnemonic_lookup.rb +4 -0
  12. data/app/models/area_data_statistic.rb +6 -0
  13. data/app/models/area_data_table.rb +25 -0
  14. data/app/models/area_data_table_group.rb +8 -0
  15. data/app/models/area_data_table_group_membership.rb +7 -0
  16. data/app/models/area_data_value.rb +37 -0
  17. data/app/models/area_data_variable.rb +140 -0
  18. data/app/models/area_data_variable_construction.rb +6 -0
  19. data/app/models/attached_variable_pointer.rb +5 -0
  20. data/app/models/bare_user.rb +7 -0
  21. data/app/models/boundary.rb +6 -0
  22. data/app/models/build_status.rb +2 -0
  23. data/app/models/category.rb +17 -0
  24. data/app/models/codebook.rb +242 -0
  25. data/app/models/common_variable.rb +2 -0
  26. data/app/models/country.rb +45 -0
  27. data/app/models/country_comparability.rb +6 -0
  28. data/app/models/country_level.rb +8 -0
  29. data/app/models/ddi2_codebook.rb +541 -0
  30. data/app/models/error_event.rb +2 -0
  31. data/app/models/extract_data_artifact.rb +4 -0
  32. data/app/models/extract_request.rb +817 -0
  33. data/app/models/extract_request_area_data_raster_variable_mnemonic_lookup.rb +4 -0
  34. data/app/models/extract_request_error_event.rb +4 -0
  35. data/app/models/extract_request_submission.rb +19 -0
  36. data/app/models/extract_status.rb +55 -0
  37. data/app/models/extract_type.rb +2 -0
  38. data/app/models/extract_variable_stub.rb +17 -0
  39. data/app/models/frequency.rb +7 -0
  40. data/app/models/geog_instance.rb +18 -0
  41. data/app/models/geog_unit.rb +5 -0
  42. data/app/models/global_region.rb +6 -0
  43. data/app/models/global_region_type.rb +5 -0
  44. data/app/models/heartbeat.rb +8 -0
  45. data/app/models/heartbeat_pulse.rb +3 -0
  46. data/app/models/insert_html_fragment.rb +3 -0
  47. data/app/models/ipums_academic_status.rb +9 -0
  48. data/app/models/ipums_anticipated_result.rb +9 -0
  49. data/app/models/ipums_department.rb +9 -0
  50. data/app/models/ipums_registration.rb +72 -0
  51. data/app/models/ipums_user.rb +15 -0
  52. data/app/models/label.rb +7 -0
  53. data/app/models/link.rb +21 -0
  54. data/app/models/map.rb +255 -0
  55. data/app/models/map_unit.rb +4 -0
  56. data/app/models/map_unit_raster_dataset.rb +4 -0
  57. data/app/models/markup_transform.rb +240 -0
  58. data/app/models/measurement_type.rb +5 -0
  59. data/app/models/nhgis/agg_data_var.rb +120 -0
  60. data/app/models/nhgis/breakdown_combo.rb +84 -0
  61. data/app/models/nhgis/breakdown_var.rb +8 -0
  62. data/app/models/nhgis/data_file.rb +43 -0
  63. data/app/models/nhgis/data_file_type.rb +17 -0
  64. data/app/models/nhgis/data_group.rb +125 -0
  65. data/app/models/nhgis/data_record_range.rb +22 -0
  66. data/app/models/nhgis/data_table.rb +8 -0
  67. data/app/models/nhgis/dataset.rb +76 -0
  68. data/app/models/nhgis/dataset_group.rb +6 -0
  69. data/app/models/nhgis/geog_level.rb +14 -0
  70. data/app/models/nhgis/geog_level_collection.rb +15 -0
  71. data/app/models/nhgis/geog_level_geog_level_group.rb +10 -0
  72. data/app/models/nhgis/geog_level_group.rb +87 -0
  73. data/app/models/nhgis/geog_name.rb +12 -0
  74. data/app/models/nhgis/geog_unit.rb +11 -0
  75. data/app/models/nhgis/geog_var 2.rb +10 -0
  76. data/app/models/nhgis/geog_var.rb +6 -0
  77. data/app/models/nhgis/geog_var_geog_level.rb +8 -0
  78. data/app/models/nhgis/geotime.rb +21 -0
  79. data/app/models/nhgis/integ_geog_instance.rb +6 -0
  80. data/app/models/nhgis/integ_geog_instance_source_geog_instance.rb +9 -0
  81. data/app/models/nhgis/integ_geog_level.rb +9 -0
  82. data/app/models/nhgis/integ_geog_name.rb +12 -0
  83. data/app/models/nhgis/shape_file.rb +203 -0
  84. data/app/models/nhgis/shape_file_x_dataset.rb +8 -0
  85. data/app/models/nhgis/tabulation_type.rb +8 -0
  86. data/app/models/nhgis/time_instance.rb +6 -0
  87. data/app/models/nhgis/time_instance_integ_geog_level.rb +9 -0
  88. data/app/models/nhgis/time_series.rb +12 -0
  89. data/app/models/nhgis/time_series_component.rb +9 -0
  90. data/app/models/nhgis/time_series_release.rb +6 -0
  91. data/app/models/nhgis/time_series_table.rb +13 -0
  92. data/app/models/nhgis/time_series_table_dataset.rb +9 -0
  93. data/app/models/nhgis/time_series_table_geog_level.rb +9 -0
  94. data/app/models/nhgis/time_series_table_time_instance.rb +9 -0
  95. data/app/models/nhgis/time_series_table_time_series_release.rb +7 -0
  96. data/app/models/nhgis/time_series_table_topic.rb +9 -0
  97. data/app/models/nhgis/time_series_table_x_time_series.rb +9 -0
  98. data/app/models/nhgis_metadata_store.rb +2 -0
  99. data/app/models/raster.rb +5 -0
  100. data/app/models/raster_category.rb +6 -0
  101. data/app/models/raster_category_statistic.rb +7 -0
  102. data/app/models/raster_data_type.rb +6 -0
  103. data/app/models/raster_dataset.rb +130 -0
  104. data/app/models/raster_dataset_group.rb +3 -0
  105. data/app/models/raster_dataset_raster_data_type.rb +4 -0
  106. data/app/models/raster_dataset_raster_dataset_unit.rb +4 -0
  107. data/app/models/raster_dataset_raster_variable.rb +4 -0
  108. data/app/models/raster_dataset_unit.rb +4 -0
  109. data/app/models/raster_group.rb +87 -0
  110. data/app/models/raster_metadata.rb +6 -0
  111. data/app/models/raster_operation.rb +10 -0
  112. data/app/models/raster_raster_variable.rb +2 -0
  113. data/app/models/raster_statistic.rb +6 -0
  114. data/app/models/raster_value.rb +83 -0
  115. data/app/models/raster_variable.rb +440 -0
  116. data/app/models/raster_variable_classification.rb +4 -0
  117. data/app/models/raster_variable_group_membership.rb +4 -0
  118. data/app/models/request_area_data_variable.rb +57 -0
  119. data/app/models/request_geog_unit.rb +6 -0
  120. data/app/models/request_raster_dataset.rb +4 -0
  121. data/app/models/request_raster_variable.rb +147 -0
  122. data/app/models/request_sample.rb +34 -0
  123. data/app/models/request_sample_geog_level.rb +4 -0
  124. data/app/models/request_terrapop_sample.rb +6 -0
  125. data/app/models/request_variable.rb +104 -0
  126. data/app/models/resolution.rb +5 -0
  127. data/app/models/sample.rb +81 -0
  128. data/app/models/sample_design.rb +300 -0
  129. data/app/models/sample_detail_field.rb +7 -0
  130. data/app/models/sample_detail_group.rb +3 -0
  131. data/app/models/sample_detail_value.rb +11 -0
  132. data/app/models/sample_details.rb +90 -0
  133. data/app/models/sample_geog_level.rb +150 -0
  134. data/app/models/sample_level_area_data_variable.rb +13 -0
  135. data/app/models/sample_variable.rb +11 -0
  136. data/app/models/status_definition.rb +2 -0
  137. data/app/models/system_statistic.rb +5 -0
  138. data/app/models/tag.rb +7 -0
  139. data/app/models/terrapop_configuration.rb +75 -0
  140. data/app/models/terrapop_extract_information.rb +64 -0
  141. data/app/models/terrapop_raster_summary_cache.rb +6 -0
  142. data/app/models/terrapop_sample.rb +313 -0
  143. data/app/models/terrapop_setting.rb +11 -0
  144. data/app/models/topic.rb +7 -0
  145. data/app/models/ui_text_snippet.rb +2 -0
  146. data/app/models/universe.rb +5 -0
  147. data/app/models/user.rb +262 -0
  148. data/app/models/user_role.rb +5 -0
  149. data/app/models/variable.rb +127 -0
  150. data/app/models/variable_availability_cach.rb +3 -0
  151. data/app/models/variable_group.rb +14 -0
  152. data/app/models/variable_source.rb +8 -0
  153. data/app/views/layouts/terrapop_models/application.html.erb +14 -0
  154. data/config/routes.rb +2 -0
  155. data/db/migrate/00000000000100_create_countries.rb +15 -0
  156. data/db/migrate/00000000000200_create_universes.rb +11 -0
  157. data/db/migrate/00000000000300_create_geog_units.rb +9 -0
  158. data/db/migrate/00000000000400_create_measurement_types.rb +9 -0
  159. data/db/migrate/00000000000500_create_area_data_table_groups.rb +13 -0
  160. data/db/migrate/00000000000600_create_area_data_tables.rb +14 -0
  161. data/db/migrate/00000000000700_create_area_data_table_group_memberships.rb +12 -0
  162. data/db/migrate/00000000000800_create_tags.rb +9 -0
  163. data/db/migrate/00000000000900_create_topics.rb +9 -0
  164. data/db/migrate/00000000001000_create_variable_groups.rb +18 -0
  165. data/db/migrate/00000000001100_create_samples.rb +32 -0
  166. data/db/migrate/00000000001200_create_terrapop_samples.rb +12 -0
  167. data/db/migrate/00000000001300_create_variables.rb +52 -0
  168. data/db/migrate/00000000001400_create_country_levels.rb +17 -0
  169. data/db/migrate/00000000001450_variable_topics.rb +19 -0
  170. data/db/migrate/00000000001500_create_sample_geog_levels.rb +20 -0
  171. data/db/migrate/00000000002000_create_area_data_variables.rb +19 -0
  172. data/db/migrate/00000000002050_area_data_variable_topics.rb +22 -0
  173. data/db/migrate/00000000002100_create_sample_level_area_data_variables.rb +16 -0
  174. data/db/migrate/00000000002200_create_sample_level_area_variable_constructions.rb +12 -0
  175. data/db/migrate/00000000003000_create_maps.rb +22 -0
  176. data/db/migrate/00000000003100_create_boundaries.rb +14 -0
  177. data/db/migrate/00000000004000_create_geog_instances.rb +20 -0
  178. data/db/migrate/00000000004100_create_area_data_values.rb +18 -0
  179. data/db/migrate/00000000005000_create_sample_variables.rb +21 -0
  180. data/db/migrate/00000000005100_create_categories.rb +20 -0
  181. data/db/migrate/00000000005200_create_frequencies.rb +16 -0
  182. data/db/migrate/00000000005300_create_variable_sources.rb +16 -0
  183. data/db/migrate/00000000006000_create_user_roles.rb +8 -0
  184. data/db/migrate/00000000006100_create_users.rb +43 -0
  185. data/db/migrate/00000000006300_create_samples_tags.rb +15 -0
  186. data/db/migrate/00000000006400_create_terrapop_samples_tags.rb +15 -0
  187. data/db/migrate/00000000007000_create_raster_data_types.rb +9 -0
  188. data/db/migrate/00000000007050_create_resolutions.rb +8 -0
  189. data/db/migrate/00000000007100_create_raster_datasets.rb +26 -0
  190. data/db/migrate/00000000007200_create_raster_groups.rb +20 -0
  191. data/db/migrate/00000000007250_create_raster_groups_tags.rb +19 -0
  192. data/db/migrate/00000000007300_create_raster_variables.rb +28 -0
  193. data/db/migrate/00000000007325_create_raster_variable_group_memberships.rb +12 -0
  194. data/db/migrate/00000000007350_raster_variable_topics.rb +22 -0
  195. data/db/migrate/00000000007400_create_rasters.rb +22 -0
  196. data/db/migrate/00000000007500_create_raster_operations.rb +11 -0
  197. data/db/migrate/00000000010000_create_status_definitions.rb +8 -0
  198. data/db/migrate/00000000010050_create_extract_types.rb +10 -0
  199. data/db/migrate/00000000010100_create_build_statuses.rb +10 -0
  200. data/db/migrate/00000000010200_create_extract_requests.rb +14 -0
  201. data/db/migrate/00000000010300_create_extract_requests_labels_join_table.rb +20 -0
  202. data/db/migrate/00000000010400_create_extract_statuses.rb +13 -0
  203. data/db/migrate/00000000010500_create_request_geog_units.rb +13 -0
  204. data/db/migrate/00000000010600_create_request_terrapop_samples.rb +15 -0
  205. data/db/migrate/00000000011000_create_request_variable.rb +16 -0
  206. data/db/migrate/00000000011100_create_request_area_data_variables.rb +18 -0
  207. data/db/migrate/00000000011200_create_request_raster_variables.rb +20 -0
  208. data/db/migrate/00000000012000_create_raster_summary_functions.rb +130 -0
  209. data/db/migrate/00000000013000_create_terrapop_settings.rb +24 -0
  210. data/db/migrate/20121218190647_create_attached_variable_pointer.rb +18 -0
  211. data/db/migrate/20121218191609_add_attached_variable_pointer_id.rb +9 -0
  212. data/db/migrate/20121218205322_add_wants_attached.rb +9 -0
  213. data/db/migrate/20121219145142_add_attributes_to_terrapop_sample.rb +68 -0
  214. data/db/migrate/20130125155216_add_default_order_index_to_variables.rb +5 -0
  215. data/db/migrate/20130129204515_create_request_samples.rb +14 -0
  216. data/db/migrate/20130129204718_create_request_raster_datasets.rb +13 -0
  217. data/db/migrate/20130205195304_create_error_events.rb +10 -0
  218. data/db/migrate/20130206202006_add_country_index_for_continent.rb +8 -0
  219. data/db/migrate/20130207202628_create_raster_metadata.rb +13 -0
  220. data/db/migrate/20130208192415_add_extents_to_raster_dataset.rb +6 -0
  221. data/db/migrate/20130209182800_create_global_regions.rb +11 -0
  222. data/db/migrate/20130209182858_add_global_region_id_country.rb +13 -0
  223. data/db/migrate/20130211183221_add_type_to_global_regions.rb +5 -0
  224. data/db/migrate/20130212190940_create_global_region_types.rb +8 -0
  225. data/db/migrate/20130212192357_remove_classification_add_global_region_type_id_to_global_region.rb +13 -0
  226. data/db/migrate/20130304181054_add_code_to_boundaries.rb +5 -0
  227. data/db/migrate/20130305223407_add_ipumsi_user_flagto_users.rb +15 -0
  228. data/db/migrate/20130305224906_add_ipumsi_user_date_flagto_users.rb +11 -0
  229. data/db/migrate/20130308214537_create_request_sample_geog_levels.rb +14 -0
  230. data/db/migrate/20130312191726_create_raster_statistics.rb +23 -0
  231. data/db/migrate/20130312192100_create_raster_categories.rb +14 -0
  232. data/db/migrate/20130312192158_create_raster_category_statistics.rb +22 -0
  233. data/db/migrate/20130312203045_create_area_data_statistics.rb +15 -0
  234. data/db/migrate/20130401161222_add_summary_to_raster_variable.rb +11 -0
  235. data/db/migrate/20130402203508_add_global_region_sort_order_column.rb +8 -0
  236. data/db/migrate/20130402211553_add_weighted_to_terrapop_samples.rb +5 -0
  237. data/db/migrate/20130408022218_add_period_to_raster_datasets.rb +5 -0
  238. data/db/migrate/20130409161950_create_area_data_variable_constructions.rb +17 -0
  239. data/db/migrate/20130409162731_add_opcode_to_raster_operations.rb +5 -0
  240. data/db/migrate/20130412141109_update_raster_summary_functions.rb +39 -0
  241. data/db/migrate/20130415174823_create_insert_html_fragments.rb +13 -0
  242. data/db/migrate/20130415185523_create_common_variables.rb +13 -0
  243. data/db/migrate/20130416144840_add_columns_to_request_samples.rb +6 -0
  244. data/db/migrate/20130416150151_add_revision_of_column_to_extract_request.rb +8 -0
  245. data/db/migrate/20130416151200_add_file_type_to_extract_request.rb +5 -0
  246. data/db/migrate/20130416161440_add_column_general_detailed_selection_to_request_variables.rb +5 -0
  247. data/db/migrate/20130416170551_add_wants_case_selection_to_request_variable.rb +5 -0
  248. data/db/migrate/20130613185642_add_indexes_to_tables.rb +7 -0
  249. data/db/migrate/20130614193857_add_more_column_indexes.rb +11 -0
  250. data/db/migrate/20130618141508_create_raster_dataset_raster_data_types.rb +17 -0
  251. data/db/migrate/20130618185528_add_circa_to_raster_dataset.rb +5 -0
  252. data/db/migrate/20130619160555_create_raster_dataset_units.rb +9 -0
  253. data/db/migrate/20130619161934_create_raster_dataset_raster_dataset_units.rb +17 -0
  254. data/db/migrate/20130621184015_add_raster_dataset_process_summary.rb +8 -0
  255. data/db/migrate/20130621203809_add_source_information_column_to_raster_dataset.rb +5 -0
  256. data/db/migrate/20130624144333_add_temporal_extent_description_to_raster_dataset.rb +5 -0
  257. data/db/migrate/20130624154952_add_provider_to_raster_dataset.rb +5 -0
  258. data/db/migrate/20130624175342_add_use_constraints_column_to_raster_dataset.rb +5 -0
  259. data/db/migrate/20130624175632_drop_use_constraints_column_from_raster_dataset.rb +8 -0
  260. data/db/migrate/20130624192654_add_north_south_east_west_columns_to_raster_dataset.rb +8 -0
  261. data/db/migrate/20130625193303_add_sort_operation_identifier_to_raster_group.rb +5 -0
  262. data/db/migrate/20130702190659_add_raster_group_id_to_raster_variable.rb +9 -0
  263. data/db/migrate/20130708184410_create_country_comparabilities.rb +14 -0
  264. data/db/migrate/20130711191704_add_ipumsi_user_id_to_user.rb +8 -0
  265. data/db/migrate/20130712150252_add_data_settings_column_to_user.rb +8 -0
  266. data/db/migrate/20130719183620_add_visible_and_map_to_columns_to_raster_operations.rb +13 -0
  267. data/db/migrate/20130812194537_create_extract_request_submissions.rb +12 -0
  268. data/db/migrate/20130813165221_remove_ipums_user_id_from_user.rb +8 -0
  269. data/db/migrate/20130814161802_add_uuid_field_to_extract_request.rb +6 -0
  270. data/db/migrate/20130816204002_add_country_id_to_terrapop_sample.rb +8 -0
  271. data/db/migrate/20130816204214_add_year_to_terrapop_sample.rb +8 -0
  272. data/db/migrate/20130816205324_add_indexes_to_country.rb +9 -0
  273. data/db/migrate/20130819145802_add_foreign_key_to_terrapop_sample.rb +5 -0
  274. data/db/migrate/20130819155712_add_indexes_to_sample_level_area_data_variable.rb +5 -0
  275. data/db/migrate/20130819163013_add_short_country_name_to_terrapop_sample.rb +8 -0
  276. data/db/migrate/20130820195420_add_is_erf_to_country.rb +7 -0
  277. data/db/migrate/20130821221743_fix_raster_summary_function_num_classes.rb +39 -0
  278. data/db/migrate/20130830192340_add_more_user_registration_columns.rb +51 -0
  279. data/db/migrate/20130904205306_add_raster_variable_sort_order_weight.rb +8 -0
  280. data/db/migrate/20130912145522_add_localized_label_to_country_levels.rb +5 -0
  281. data/db/migrate/20130913194351_create_terrapop_raster_summary_caches.rb +27 -0
  282. data/db/migrate/20130916212710_add_year_range_to_map.rb +11 -0
  283. data/db/migrate/20130917154553_create_sample_designs.rb +14 -0
  284. data/db/migrate/20130924210303_add_raster_only_to_extract_request.rb +5 -0
  285. data/db/migrate/20131001220437_add_mnemonic_and_codebook_description_to_area_data_value.rb +11 -0
  286. data/db/migrate/20131002213443_add_ipums_email_sent_at_column.rb +8 -0
  287. data/db/migrate/20131020154130_remove_index_if_exists.rb +9 -0
  288. data/db/migrate/20131020170642_remove_ui_snippet_table_if_exists.rb +8 -0
  289. data/db/migrate/20131021204227_create_ui_text_snippet.rb +11 -0
  290. data/db/migrate/20131022190227_rename_table_fix_ui_text_snippets.rb +9 -0
  291. data/db/migrate/20131119154817_add_unique_index_on_uuid_on.rb +9 -0
  292. data/db/migrate/20131202161911_add_send_toi_rods_flag_to_extract_request.rb +13 -0
  293. data/db/migrate/20140122150020_add_geographic_levelto_geog_instance.rb +11 -0
  294. data/db/migrate/20140124184809_add_zip_file_location.rb +8 -0
  295. data/db/migrate/20140205205539_add_api_related_fields_to_user.rb +5 -0
  296. data/db/migrate/20140206213258_create_extract_request_error_events.rb +14 -0
  297. data/db/migrate/20140206222630_add_requesting_url_to_extract_request.rb +5 -0
  298. data/db/migrate/20140207153005_create_api_logs.rb +14 -0
  299. data/db/migrate/20140228182300_change_user_institutional_affiliation_to_bool.rb +50 -0
  300. data/db/migrate/20140312143201_add_start_and_end_time_and_total_time_to_extract_request.rb +7 -0
  301. data/db/migrate/20140318212913_remove_add_index_to_area_data_value.rb +12 -0
  302. data/db/migrate/20140319155819_add_long_mnemonic_to_area_data_value.rb +7 -0
  303. data/db/migrate/20140319200718_drop_mnemonic_column_area_data_value.rb +10 -0
  304. data/db/migrate/20140320184210_add_show_in_ui_column_in_raster_variable.rb +8 -0
  305. data/db/migrate/20140328150435_rename_revision_of_column_to_rabl_usable_column_name.rb +8 -0
  306. data/db/migrate/20140331142153_add_revision_of_column.rb +8 -0
  307. data/db/migrate/20140402181324_add_new_raster_summary_functions.rb +191 -0
  308. data/db/migrate/20140403185242_add_raster_variable_area_reference_id.rb +12 -0
  309. data/db/migrate/20140410145305_add_raster_area_column_to_terrapop_raster_summary_cache.rb +6 -0
  310. data/db/migrate/20140414170802_add_new_raster_summarization.rb +85 -0
  311. data/db/migrate/20140421150330_add_second_reference_column_to_raster_variable.rb +9 -0
  312. data/db/migrate/20140506165634_add_deactivated_at_and_deleted_at_to_user.rb +6 -0
  313. data/db/migrate/20140507142843_add_column_to_frequencies.rb +5 -0
  314. data/db/migrate/20140513143055_add_sample_geog_level_id_to_request_models.rb +11 -0
  315. data/db/migrate/20140521160554_create_links.rb +9 -0
  316. data/db/migrate/20140522214508_add_ipumsi_salt_and_ipumsi_crypted_password_to_user.rb +13 -0
  317. data/db/migrate/20140604192953_add_name_to_terrapop_setting.rb +47 -0
  318. data/db/migrate/20140609163907_create_variable_availability_caches.rb +9 -0
  319. data/db/migrate/20140609210447_add_foreign_index_to_variable_availability_cache.rb +8 -0
  320. data/db/migrate/20140609213300_create_area_data_variable_availability_caches.rb +13 -0
  321. data/db/migrate/20140610135849_create_nhgis_metadata_stores.rb +30 -0
  322. data/db/migrate/20140610211138_add_dataset_id_to_nhgis_metadata.rb +5 -0
  323. data/db/migrate/20140611181543_add_replicate_weight_variable_id_to_variables.rb +5 -0
  324. data/db/migrate/20140618200741_add_key_column_toraster_variable_group_memberships.rb +7 -0
  325. data/db/migrate/20140618202053_add_key_column_toraster_variable_group_memberships2.rb +8 -0
  326. data/db/migrate/20140701134952_create_system_statistics.rb +12 -0
  327. data/db/migrate/20140804161242_add_fields_to_terrapop_sample.rb +7 -0
  328. data/db/migrate/20140806173750_add_geometry_column_to_boundaries.rb +5 -0
  329. data/db/migrate/20140821205836_add_git_hash_field_to_extract_request.rb +5 -0
  330. data/db/migrate/20140822140106_create_map_units.rb +9 -0
  331. data/db/migrate/20140822140358_create_map_unit_raster_datasets.rb +17 -0
  332. data/db/migrate/20140822143517_redefine_short_unit_on_map_unit_to_longer_string.rb +5 -0
  333. data/db/migrate/20140825135403_add_finger_print_hash_to_maps.rb +5 -0
  334. data/db/migrate/20140826163359_add_source_field_to_terrapop_sample.rb +8 -0
  335. data/db/migrate/20140827153014_add_microdata_file_size_to_sample.rb +5 -0
  336. data/db/migrate/20140828161647_add_raster_band_index_to_raster_categories.rb +5 -0
  337. data/db/migrate/20140828162650_add_post_gis_raster_output_indicator_to_raster_variable.rb +5 -0
  338. data/db/migrate/20140829150251_create_raster_dataset_raster_variables.rb +17 -0
  339. data/db/migrate/20140902194529_add_raster_band_to_raster_dataset_model.rb +7 -0
  340. data/db/migrate/20140903202609_create_heartbeats.rb +9 -0
  341. data/db/migrate/20140903204113_create_heartbeat_pulse.rb +10 -0
  342. data/db/migrate/20140904164247_create_raster_raster_variables.rb +16 -0
  343. data/db/migrate/20140908193007_add_area_level_rasterization_functions.rb +103 -0
  344. data/db/migrate/20140908194021_create_area_data_rasters.rb +39 -0
  345. data/db/migrate/20140909143933_rename_valid_column_on_area_data_raster.rb +5 -0
  346. data/db/migrate/20140911201639_add_columns_to_area_data_raster.rb +11 -0
  347. data/db/migrate/20140911211923_alter_area_data_raster_indexes.rb +12 -0
  348. data/db/migrate/20140919144305_create_raster_variable_classifications.rb +29 -0
  349. data/db/migrate/20140925140810_add_other_raster_variables_to_raster_variable_classification.rb +9 -0
  350. data/db/migrate/20140925172245_add_grouping_indicator_to_raster_classifications.rb +5 -0
  351. data/db/migrate/20140925175157_add_classification_indicator_to_raster_variable.rb +5 -0
  352. data/db/migrate/20140930142006_remove_boundary_id_from_geog_instance.rb +6 -0
  353. data/db/migrate/20141003164150_add_terrapop_sample_id_to_map_and_geog_instance.rb +11 -0
  354. data/db/migrate/20141029202813_add_nhgis_dat_file_to_sample_geog_level.rb +5 -0
  355. data/db/migrate/20141029204521_add_columns_to_sample_level_area_data_variable.rb +6 -0
  356. data/db/migrate/20141104212652_create_categorical_raster_summarization.rb +39 -0
  357. data/db/migrate/20141105202744_add_margin_file_to_sample_geog_level.rb +5 -0
  358. data/db/migrate/20141105205347_add_margin_field_to_area_data_value.rb +5 -0
  359. data/db/migrate/20141105205607_add_join_fields_to_sample_geog_level.rb +8 -0
  360. data/db/migrate/20141202180411_add_new_categorical_summarization_function.rb +62 -0
  361. data/db/migrate/20141212172044_add_continuous_raster_summarization0.rb +51 -0
  362. data/db/migrate/20141212195611_add_indexes_to_boundaries.rb +10 -0
  363. data/db/migrate/20141212202521_add_indexes_to_frequencies.rb +7 -0
  364. data/db/migrate/20141229150743_add_special_value_to_area_data_value.rb +5 -0
  365. data/db/migrate/20141230153550_add_field_to_global_regions.rb +8 -0
  366. data/db/migrate/20150107142518_add_restriction_indicated_to_sample.rb +5 -0
  367. data/db/migrate/20150114161817_add_raster_to_tiff_function.rb +35 -0
  368. data/db/migrate/20150115204303_add_hide_nhgis_datasets_to_users.rb +11 -0
  369. data/db/migrate/20150126192918_add_new_gli_post_gis_functions.rb +99 -0
  370. data/db/migrate/20150126223419_add_short_label_to_terrapop_samples.rb +11 -0
  371. data/db/migrate/20150127172953_add_another_raster_summarization_function.rb +44 -0
  372. data/db/migrate/20150130163215_new_glc_summarization_function.rb +40 -0
  373. data/db/migrate/20150211221354_create_cache_items.rb +23 -0
  374. data/db/migrate/20150212223011_add_microdata_access_expired_date_to_users.rb +11 -0
  375. data/db/migrate/20150217221940_add_new_band_aware_categorical_to_binary_summarization.rb +177 -0
  376. data/db/migrate/20150302145459_removeuse_postgis_procedure_for_geotiff.rb +5 -0
  377. data/db/migrate/20150313194752_add_color_map_to_tiff_output.rb +34 -0
  378. data/db/migrate/20150313202158_add_color_map_to_jpeg_output.rb +34 -0
  379. data/db/migrate/20150318183314_add_non_color_map_cookie_cutter_functions.rb +65 -0
  380. data/db/migrate/20150324160629_add_categorical_multi_band_summarization.rb +62 -0
  381. data/db/migrate/20150324161827_add_index_to_rasters_raster_variable_id.rb +5 -0
  382. data/db/migrate/20150327203257_add_band_to_terrapop_raster_summary_cache.rb +5 -0
  383. data/db/migrate/20150331142232_add_xml_field_to_map.rb +5 -0
  384. data/db/migrate/20150331153703_add_new_continous_summarization.rb +38 -0
  385. data/db/migrate/20150409153145_categorical_to_binary_as_raster.rb +49 -0
  386. data/db/migrate/20150413204130_generic_categorical_to_binary_raster_output_function.rb +92 -0
  387. data/db/migrate/20150416133743_ratio_area_level_data_to_raster_function.rb +55 -0
  388. data/db/migrate/20150416143838_projection_function_for_single_band_rasters.rb +27 -0
  389. data/db/migrate/20150419203614_add_raster_dataset_to_terrapop_raster_summary_cache.rb +12 -0
  390. data/db/migrate/20150419232521_add_raster_dataset_to_request_raster_variable.rb +9 -0
  391. data/db/migrate/20150427163939_create_single_binary_from_categorical_to_tiff_function.rb +51 -0
  392. data/db/migrate/20150518200435_add_new_binary_cookie_cutter_functions.rb +95 -0
  393. data/db/migrate/20150520195145_revised_glc_binary_summarization_function.rb +64 -0
  394. data/db/migrate/20150526205918_new_categorical_to_binary_summarization.rb +72 -0
  395. data/db/migrate/20150527144243_even_newer_glc_binary_function.rb +79 -0
  396. data/db/migrate/20150527191853_add_even_newer_glc_category_to_binary_function.rb +74 -0
  397. data/db/migrate/20150528141915_yancat_to_bin_summarization_function.rb +66 -0
  398. data/db/migrate/20150529182542_add_indexes_to_geog_instances.rb +9 -0
  399. data/db/migrate/20150601160855_drop_area_data_variable_availability_caches.rb +5 -0
  400. data/db/migrate/20150625150152_add_geog_instance_f_key_on_boundaries.rb +5 -0
  401. data/db/migrate/20150626144305_geog_instance_geog_code_wider.rb +6 -0
  402. data/db/migrate/20150709161201_glc_summarization_version5.rb +79 -0
  403. data/db/migrate/20150713165442_glc_summarization_version6.rb +82 -0
  404. data/db/migrate/20150713185652_tp_jpeg_raster_clip_color_map_v2.rb +34 -0
  405. data/db/migrate/20150716182438_new_rasters_table.rb +18 -0
  406. data/db/migrate/20150716184828_new_stored_procedures_for_new_rasters.rb +70 -0
  407. data/db/migrate/20150721161943_remove_ownership_statement_from_function.rb +69 -0
  408. data/db/migrate/20150727134942_rename_rasters_new_to_new_rasters.rb +19 -0
  409. data/db/migrate/20150727135614_update_table_name_in_make_jpeg2.rb +70 -0
  410. data/db/migrate/20150727143159_jpeg_clip_experiment.rb +36 -0
  411. data/db/migrate/20150727145556_create_new_tiff_raster_clip_with_buffer.rb +34 -0
  412. data/db/migrate/20150727161508_update_table_name_in_make_jpeg2_part_deux.rb +77 -0
  413. data/db/migrate/20150727193403_drop_rasters_new.rb +5 -0
  414. data/db/migrate/20150728184718_make_jpeg2_part_deux.rb +70 -0
  415. data/db/migrate/20150728214344_correct_new_rasters_table_in_new_make_jpeg2_function.rb +79 -0
  416. data/db/migrate/20150729144526_even_more_correct_new_rasters_table_in_new_make_jpeg2_function.rb +78 -0
  417. data/db/migrate/20150729160936_fixingterrapop_reclassify_categorical_raster_to_binary_summariz_v3.rb +68 -0
  418. data/db/migrate/20150730141036_adjust_jpeg_clip_for_categorical.rb +67 -0
  419. data/db/migrate/20150730153216_ststandardize_terrapop_reclassify_categorical_raster_to_binary_summariz_v3.rb +69 -0
  420. data/db/migrate/20150730163446_add_origin_to_extract_requests.rb +5 -0
  421. data/db/migrate/20150731151304_consistent_return_fieldsterrapop_gli_yield_areal_summarization.rb +99 -0
  422. data/db/migrate/20150731192327_add_boundary_only_field_to_terrapop_sample.rb +5 -0
  423. data/db/migrate/20150803213048_add_function_to_detect_boundaries_that_wrap_globe.rb +50 -0
  424. data/db/migrate/20150814154127_add_processing_flag_to_extract_request.rb +5 -0
  425. data/db/migrate/20150814165605_add_colormapped_categorical_to_binary_jpeg_cookie_cutteringizing_function.rb +49 -0
  426. data/db/migrate/20150814183708_around_the_world_wrap_a_raster_function.rb +157 -0
  427. data/db/migrate/20150910194333_add_extract_grouping_field_to_extract_request.rb +5 -0
  428. data/db/migrate/20150915194808_drop_sessions_table.rb +5 -0
  429. data/db/migrate/20150915215426_add_sessions_table.rb +12 -0
  430. data/db/migrate/20151009203606_create_sample_detail_groups.rb +8 -0
  431. data/db/migrate/20151009203855_create_sample_detail_fields.rb +13 -0
  432. data/db/migrate/20151009204052_create_sample_detail_values.rb +12 -0
  433. data/db/migrate/20151016152953_add_indexes_to_area_data_values.rb +7 -0
  434. data/db/migrate/20151023160555_add_data_to_extract_requests.rb +8 -0
  435. data/db/migrate/20151026155953_rename_description_add_title_to_extract_requests.rb +8 -0
  436. data/db/migrate/20151029144017_create_raster_dataset_groups.rb +9 -0
  437. data/db/migrate/20151029144147_add_raster_dataset_group_to_raster_dataset.rb +9 -0
  438. data/db/migrate/20151029182802_add_mnemonic_to_raster_dataset_group.rb +5 -0
  439. data/db/migrate/20151029184642_change_field_type_on_raster_dataset_group.rb +5 -0
  440. data/db/migrate/20151029210539_remove_unnecessary_fields_from_terrapop_sample.rb +60 -0
  441. data/db/migrate/20151102205254_create_data_artifacts.rb +17 -0
  442. data/db/migrate/20151102211601_add_json_field_to_extract_data_artifacts.rb +8 -0
  443. data/db/migrate/20151103152754_add_file_name_field_to_extract_request.rb +5 -0
  444. data/db/migrate/20151106155249_add_submitted_at_to_extract_request.rb +5 -0
  445. data/db/migrate/20151110204826_add_terra_pop_build_number_to_extract_request.rb +12 -0
  446. data/db/migrate/20151119213428_create_area_data_raster_variable_mnemonic_lookups.rb +18 -0
  447. data/db/migrate/20151120140757_create_extract_request_area_data_raster_variable_mnemonic_lookups.rb +16 -0
  448. data/db/migrate/20151130212011_add_new_raster_summarization_v7.rb +90 -0
  449. data/lib/tasks/terrapop_models_tasks.rake +4 -0
  450. data/lib/terrapop_models.rb +4 -0
  451. data/lib/terrapop_models/engine.rb +13 -0
  452. data/lib/terrapop_models/version.rb +3 -0
  453. data/test/dummy/README.rdoc +28 -0
  454. data/test/dummy/Rakefile +6 -0
  455. data/test/dummy/app/assets/javascripts/application.js +13 -0
  456. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  457. data/test/dummy/app/controllers/application_controller.rb +5 -0
  458. data/test/dummy/app/helpers/application_helper.rb +2 -0
  459. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  460. data/test/dummy/bin/bundle +3 -0
  461. data/test/dummy/bin/rails +4 -0
  462. data/test/dummy/bin/rake +4 -0
  463. data/test/dummy/config.ru +4 -0
  464. data/test/dummy/config/application.rb +23 -0
  465. data/test/dummy/config/boot.rb +5 -0
  466. data/test/dummy/config/database.yml +68 -0
  467. data/test/dummy/config/environment.rb +5 -0
  468. data/test/dummy/config/environments/development.rb +37 -0
  469. data/test/dummy/config/environments/production.rb +78 -0
  470. data/test/dummy/config/environments/test.rb +39 -0
  471. data/test/dummy/config/initializers/assets.rb +8 -0
  472. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  473. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  474. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  475. data/test/dummy/config/initializers/inflections.rb +16 -0
  476. data/test/dummy/config/initializers/mime_types.rb +4 -0
  477. data/test/dummy/config/initializers/session_store.rb +3 -0
  478. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  479. data/test/dummy/config/locales/en.yml +23 -0
  480. data/test/dummy/config/routes.rb +4 -0
  481. data/test/dummy/config/secrets.yml +22 -0
  482. data/test/dummy/log/development.log +62 -0
  483. data/test/dummy/public/404.html +67 -0
  484. data/test/dummy/public/422.html +67 -0
  485. data/test/dummy/public/500.html +66 -0
  486. data/test/dummy/public/favicon.ico +0 -0
  487. data/test/integration/navigation_test.rb +10 -0
  488. data/test/terrapop_models_test.rb +7 -0
  489. data/test/test_helper.rb +19 -0
  490. metadata +597 -0
@@ -0,0 +1,27 @@
1
+ class ProjectionFunctionForSingleBandRasters < ActiveRecord::Migration
2
+ def change
3
+ sql1 =<<-SQL
4
+ CREATE OR REPLACE FUNCTION terrapop_projection_number_from_single_band_raster(raster_id bigint)
5
+ RETURNS integer AS
6
+ $BODY$
7
+ DECLARE prj_value integer;
8
+ BEGIN
9
+ WITH transformation as
10
+ (
11
+ SELECT ST_SRID(r.rast) AS prj_value
12
+ FROM rasters r
13
+ WHERE r.raster_variable_id = raster_id
14
+ LIMIT 1
15
+ )
16
+ SELECT t.prj_value INTO prj_value FROM transformation t;
17
+
18
+ RETURN prj_value;
19
+ END;
20
+ $BODY$
21
+ LANGUAGE 'plpgsql';
22
+ SQL
23
+
24
+ execute(sql1)
25
+
26
+ end
27
+ end
@@ -0,0 +1,12 @@
1
+ class AddRasterDatasetToTerrapopRasterSummaryCache < ActiveRecord::Migration
2
+ def change
3
+
4
+ add_column :terrapop_raster_summary_caches, :raster_dataset_id, :bigint
5
+
6
+ add_index :terrapop_raster_summary_caches, :raster_dataset_id
7
+
8
+ foreign_key :terrapop_raster_summary_caches, :raster_dataset_id
9
+
10
+
11
+ end
12
+ end
@@ -0,0 +1,9 @@
1
+ class AddRasterDatasetToRequestRasterVariable < ActiveRecord::Migration
2
+ def change
3
+
4
+ add_column :request_raster_variables, :raster_dataset_id, :bigint
5
+ add_index :request_raster_variables, :raster_dataset_id
6
+ foreign_key :request_raster_variables, :raster_dataset_id
7
+
8
+ end
9
+ end
@@ -0,0 +1,51 @@
1
+ class CreateSingleBinaryFromCategoricalToTiffFunction < ActiveRecord::Migration
2
+ def change
3
+
4
+ sql0 =<<-SQL
5
+ CREATE OR REPLACE FUNCTION terrapop_categorical_to_binary_as_tiff(IN sample_geog_lvl_id bigint, IN rasters_id bigint, IN bnd_num integer DEFAULT 1)
6
+ RETURNS bytea AS
7
+ $BODY$
8
+ DECLARE ret_tiff bytea;
9
+ BEGIN
10
+
11
+ WITH lookup AS
12
+ (
13
+ SELECT replace(replace(array_agg(classification::text || ':1')::text, '{', ''), '}', '') as exp
14
+ FROM raster_variables WHERE id IN (
15
+ select raster_variable_classifications.mosaic_raster_variable_id
16
+ from raster_variable_classifications
17
+ where raster_variable_classifications.raster_variable_id = rasters_id)
18
+ ), cat_rast as
19
+ (
20
+ SELECT rv.second_area_reference_id as cat_id
21
+ FROM raster_variables rv
22
+ WHERE rv.id = rasters_id
23
+ ),transformation as
24
+ (
25
+ SELECT ST_SRID(r.rast) as prj_value
26
+ FROM cat_rast c, rasters r
27
+ WHERE r.raster_variable_id = c.cat_id
28
+ LIMIT 1
29
+ ), polygon as
30
+ (
31
+ SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label,
32
+ gi.code as geog_instance_code, ST_Transform(bound.geog::geometry, t.prj_value) as geom
33
+ FROM transformation t, sample_geog_levels sgl
34
+ inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
35
+ inner join boundaries bound on bound.geog_instance_id = gi.id
36
+ WHERE sgl.id = sample_geog_lvl_id
37
+ )
38
+ SELECT ST_AsTiff(ST_union(ST_Reclass(ST_Clip(r.rast, bnd_num,p.geom, TRUE),1,l.exp, '8BUI',0)), 'LZW', terrapop_projection_number_from_stacked_raster(rasters_id)) into ret_tiff
39
+ FROM lookup l, cat_rast c, polygon p inner join rasters r on ST_Intersects(r.rast,p.geom)
40
+ WHERE r.raster_variable_id = (c.cat_id);
41
+ RETURN ret_tiff;
42
+ END;
43
+
44
+ $BODY$
45
+ LANGUAGE 'plpgsql';
46
+ SQL
47
+
48
+ execute(sql0)
49
+
50
+ end
51
+ end
@@ -0,0 +1,95 @@
1
+ class AddNewBinaryCookieCutterFunctions < ActiveRecord::Migration
2
+ def change
3
+ sql0 =<<-SQL
4
+ CREATE OR REPLACE FUNCTION terrapop_categorical_to_binary_as_tiff_colormap(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_AsTiff(ST_ColorMap(ST_union(ST_Reclass(ST_Clip(r.rast, bnd_num,p.geom, TRUE),1,l.exp, '8BUI',0)), 1, colormap), 'LZW', terrapop_projection_number_from_stacked_raster(rasters_id)) 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(sql0)
48
+
49
+ sql1 =<<-SQL
50
+ CREATE OR REPLACE FUNCTION terrapop_categorical_to_binary_as_jpeg_colormap(IN sample_geog_lvl_id bigint, IN rasters_id bigint, IN bnd_num integer DEFAULT 1, colormap TEXT DEFAULT 'greyscale')
51
+ RETURNS bytea AS
52
+ $BODY$
53
+ DECLARE ret_tiff bytea;
54
+ BEGIN
55
+
56
+ WITH lookup AS
57
+ (
58
+ SELECT replace(replace(array_agg(classification::text || ':1')::text, '{', ''), '}', '') as exp
59
+ FROM raster_variables WHERE id IN (
60
+ select raster_variable_classifications.mosaic_raster_variable_id
61
+ from raster_variable_classifications
62
+ where raster_variable_classifications.raster_variable_id = rasters_id)
63
+ ), cat_rast as
64
+ (
65
+ SELECT rv.second_area_reference_id as cat_id
66
+ FROM raster_variables rv
67
+ WHERE rv.id = rasters_id
68
+ ),transformation as
69
+ (
70
+ SELECT ST_SRID(r.rast) as prj_value
71
+ FROM cat_rast c, rasters r
72
+ WHERE r.raster_variable_id = c.cat_id
73
+ LIMIT 1
74
+ ), polygon as
75
+ (
76
+ SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label,
77
+ gi.code as geog_instance_code, ST_Transform(bound.geog::geometry, t.prj_value) as geom
78
+ FROM transformation t, sample_geog_levels sgl
79
+ inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
80
+ inner join boundaries bound on bound.geog_instance_id = gi.id
81
+ WHERE sgl.id = sample_geog_lvl_id
82
+ )
83
+ SELECT ST_AsJPEG(ST_union(ST_Reclass(ST_Clip(r.rast, bnd_num,p.geom, TRUE),1,l.exp, '8BUI',0)), 1) into ret_tiff
84
+ FROM lookup l, cat_rast c, polygon p inner join rasters r on ST_Intersects(r.rast,p.geom)
85
+ WHERE r.raster_variable_id = (c.cat_id);
86
+ RETURN ret_tiff;
87
+ END;
88
+
89
+ $BODY$
90
+ LANGUAGE 'plpgsql';
91
+ SQL
92
+
93
+ execute(sql1)
94
+ end
95
+ end
@@ -0,0 +1,64 @@
1
+ class RevisedGlcBinarySummarizationFunction < ActiveRecord::Migration
2
+ def change
3
+ sql =<<-SQL
4
+ CREATE OR REPLACE FUNCTION terrapop_glc_binary_summarization_v3(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 bounds as
10
+ (
11
+ SELECT sgl.id as sample_geog_level_id, gi.id as gid, gi.label as label, gi.code as geog_instance_code, bound.geog::geometry as geom
12
+ 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
13
+ where sgl.id = sample_geog_lvl_id group by sgl.id, gi.id, gi.label, gi.code, bound.geog
14
+ ),
15
+
16
+ bin_rast as
17
+ (
18
+ SELECT b.gid as gid, b.label as label, ST_Union(ST_Clip(r.rast, b.geom)) as rast
19
+ FROM bounds b inner join rasters r on ST_Intersects(r.rast, b.geom)
20
+ where r.raster_variable_id = rasters_id group by b.gid, b.label
21
+ ),
22
+
23
+ area_reference_id as (select rv.area_reference_id as id from raster_variables rv where rv.id = rasters_id limit 1),
24
+
25
+ area_ref_rast as
26
+ (
27
+ SELECT b.gid as gid, b.label as label, ST_Union(ST_Clip(r.rast, b.geom)) as rast
28
+ FROM area_reference_id a, bounds b inner join rasters r on ST_Intersects(r.rast, b.geom)
29
+ where r.raster_variable_id = a.id group by b.gid, b.label
30
+ ),
31
+
32
+
33
+ binary_area as
34
+ (
35
+ select b.gid, b.label, (ST_SummaryStats(ST_MapAlgebra(b.rast, 1, a.rast, 1, '[rast1]*[rast2]'))).sum as binary_area
36
+ FROM bin_rast b inner join area_ref_rast a on b.gid = a.gid
37
+ group by b.gid, b.label, a.rast, b.rast
38
+ ),
39
+
40
+ total_area as
41
+ (
42
+ SELECT a.gid as gid, a.label as label, (ST_SummaryStats(a.rast, true)).sum as total_area
43
+ FROM area_ref_rast a group by a.gid, a.label, a.rast order by a.label
44
+ ),
45
+
46
+ percent_area as
47
+ (
48
+ select a.gid as gid, a.label as label, a.binary_area/b.total_area as percent_area
49
+ from binary_area a, total_area b where a.gid = b.gid order by a.label
50
+ )
51
+
52
+ SELECT b.gid, b.label, b.binary_area, t.total_area, p.percent_area
53
+ FROM binary_area b inner join total_area t on b.gid = t.gid inner join percent_area p on t.gid = p.gid;
54
+
55
+ END;
56
+ $BODY$
57
+ LANGUAGE plpgsql VOLATILE
58
+ COST 100
59
+ ROWS 1000;
60
+ SQL
61
+
62
+ execute(sql)
63
+ end
64
+ end
@@ -0,0 +1,72 @@
1
+ class NewCategoricalToBinarySummarization < ActiveRecord::Migration
2
+ def change
3
+
4
+ sql =<<-SQL
5
+ CREATE OR REPLACE FUNCTION terrapop_reclassify_categorical_raster_to_binary_summariz_v2(IN sample_geog_lvl_id bigint, IN rasters_id bigint, IN bnd_num integer)
6
+ 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
7
+ $BODY$
8
+
9
+ BEGIN
10
+ RETURN QUERY
11
+
12
+ WITH lookup AS
13
+ (
14
+ SELECT replace(replace(array_agg(classification::text || ':1')::text, '{', ''), '}', '') as exp
15
+ FROM raster_variables WHERE id IN (
16
+ select raster_variable_classifications.mosaic_raster_variable_id
17
+ from raster_variable_classifications
18
+ where raster_variable_classifications.raster_variable_id = rasters_id)
19
+ ), cat_rast as
20
+ (
21
+ SELECT rv.area_reference_id as area_id, rv.second_area_reference_id as cat_id
22
+ FROM raster_variables rv
23
+ WHERE rv.id = rasters_id
24
+ ),transformation as
25
+ (
26
+ SELECT ST_SRID(r.rast) as prj_value
27
+ FROM cat_rast c, rasters r
28
+ WHERE r.raster_variable_id = c.cat_id
29
+ LIMIT 1
30
+ ), polygon as
31
+ (
32
+ SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label,
33
+ gi.code as geog_instance_code, ST_Transform(bound.geog::geometry, t.prj_value) as geom, t.prj_value
34
+ FROM transformation t, sample_geog_levels sgl
35
+ inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
36
+ inner join boundaries bound on bound.geog_instance_id = gi.id
37
+ WHERE sgl.id = sample_geog_lvl_id
38
+ ), raster_tiles as
39
+ (
40
+ SELECT rast, raster_variable_id FROM rasters r, cat_rast c WHERE r.raster_variable_id = c.cat_id
41
+ ), r_table as
42
+ (
43
+ 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
44
+ FROM lookup l, cat_rast c, polygon p inner join raster_tiles r on ST_Intersects(r.rast, ST_Transform(p.geom, p.prj_value))
45
+ WHERE r.raster_variable_id = (c.cat_id)
46
+ GROUP by p.sample_geog_level_id, p.geog_instance_id, p.geog_instance_label, p.geog_instance_code
47
+ ), a_table as
48
+ (
49
+ SELECT p.geog_instance_id, p.geog_instance_label, ST_union(ST_Clip(r.rast, ST_Transform(p.geom, p.prj_value))) as rast
50
+ FROM lookup l, cat_rast c, polygon p inner join raster_tiles r on ST_Intersects(r.rast, ST_Transform(p.geom, p.prj_value))
51
+ WHERE r.raster_variable_id = (c.area_id)
52
+ GROUP by p.sample_geog_level_id, p.geog_instance_id, p.geog_instance_label, p.geog_instance_code
53
+ ), calc as
54
+ (
55
+ SELECT r.geog_instance_id, r.geog_instance_label, (ST_SummaryStats(r.rast)).*, (ST_SummaryStats(a.rast)).sum as total_area,
56
+ (ST_SummaryStats(ST_MapAlgebra(r.rast, 1, a.rast, 1, '[rast1]*[rast2]', '32BUI'))).sum as binary_area
57
+ FROM r_table r inner join a_table a on (r.geog_instance_id = a.geog_instance_id)
58
+ )
59
+ SELECT c.geog_instance_id, c.geog_instance_label, c.count as pixel_count, c.binary_area,
60
+ c.binary_area / c.total_area as percent_area, c.total_area as total_area
61
+ FROM calc c;
62
+
63
+ END;
64
+
65
+ $BODY$
66
+ LANGUAGE 'plpgsql';
67
+ SQL
68
+
69
+ execute(sql)
70
+
71
+ end
72
+ end
@@ -0,0 +1,79 @@
1
+ class EvenNewerGlcBinaryFunction < ActiveRecord::Migration
2
+ def change
3
+ sql =<<-SQL
4
+ CREATE OR REPLACE FUNCTION terrapop_glc_binary_summarization_v4(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 srid as
10
+
11
+ (
12
+
13
+ SELECT st_srid(r.rast) as srid FROM rasters r
14
+
15
+ where r.raster_variable_id = rasters_id
16
+
17
+ limit 1
18
+
19
+ ),
20
+
21
+ bounds as
22
+ (
23
+
24
+ SELECT sgl.id as sample_geog_level_id, gi.id as gid, gi.label as label, gi.code as geog_instance_code, st_transform(bound.geog::geometry, srid.srid) as geom
25
+
26
+ FROM srid, 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
27
+
28
+ where sgl.id = sample_geog_lvl_id group by sgl.id, gi.id, gi.label, gi.code, bound.geog
29
+
30
+ ),
31
+
32
+ bin_rast as
33
+ (
34
+ SELECT b.gid as gid, b.label as label, ST_Union(ST_Clip(r.rast, b.geom)) as rast
35
+ FROM bounds b inner join rasters r on ST_Intersects(r.rast, b.geom)
36
+ where r.raster_variable_id = rasters_id group by b.gid, b.label
37
+ ),
38
+
39
+ area_reference_id as (select rv.area_reference_id as id from raster_variables rv where rv.id = rasters_id limit 1),
40
+
41
+ area_ref_rast as
42
+ (
43
+ SELECT b.gid as gid, b.label as label, ST_Union(ST_Clip(r.rast, b.geom)) as rast
44
+ FROM area_reference_id a, bounds b inner join rasters r on ST_Intersects(r.rast, b.geom)
45
+ where r.raster_variable_id = a.id group by b.gid, b.label
46
+ ),
47
+
48
+ binary_area as
49
+ (
50
+ select b.gid, b.label, (ST_SummaryStats(ST_MapAlgebra(b.rast, 1, a.rast, 1, '[rast1]*[rast2]'))).sum as binary_area
51
+ FROM bin_rast b inner join area_ref_rast a on b.gid = a.gid
52
+ group by b.gid, b.label, a.rast, b.rast
53
+ ),
54
+
55
+ total_area as
56
+ (
57
+ SELECT a.gid as gid, a.label as label, (ST_SummaryStats(a.rast, true)).sum as total_area
58
+ FROM area_ref_rast a group by a.gid, a.label, a.rast order by a.label
59
+ ),
60
+
61
+ percent_area as
62
+ (
63
+ select a.gid as gid, a.label as label, a.binary_area/b.total_area as percent_area
64
+ from binary_area a, total_area b where a.gid = b.gid order by a.label
65
+ )
66
+
67
+ SELECT b.gid, b.label, b.binary_area, t.total_area, p.percent_area
68
+ FROM binary_area b inner join total_area t on b.gid = t.gid inner join percent_area p on t.gid = p.gid;
69
+
70
+ END;
71
+ $BODY$
72
+ LANGUAGE plpgsql VOLATILE
73
+ COST 100
74
+ ROWS 1000;
75
+ SQL
76
+
77
+ execute(sql)
78
+ end
79
+ end
@@ -0,0 +1,74 @@
1
+ class AddEvenNewerGlcCategoryToBinaryFunction < 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
+ 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
14
+ WHERE id IN (
15
+ select raster_variable_classifications.mosaic_raster_variable_id
16
+ from raster_variable_classifications
17
+ where raster_variable_classifications.raster_variable_id = rasters_id)
18
+ ),
19
+
20
+ cat_rast as
21
+ (
22
+ SELECT rv.area_reference_id as area_id, rv.second_area_reference_id as cat_id FROM raster_variables rv WHERE rv.id = rasters_id),
23
+ transformation as (SELECT ST_SRID(r.rast) as prj_value FROM cat_rast c, rasters r WHERE r.raster_variable_id = c.cat_id LIMIT 1),
24
+
25
+ polygon as
26
+ (
27
+ SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label, gi.code as geog_instance_code, ST_Transform(bound.geog::geometry, t.prj_value) as geom
28
+ FROM transformation t, 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
29
+ WHERE sgl.id = sample_geog_lvl_id
30
+ ),
31
+
32
+ all_r_table as
33
+ (
34
+ SELECT r.rast as rast
35
+ FROM rasters r, cat_rast c
36
+ WHERE r.raster_variable_id = (c.cat_id)
37
+ ),
38
+
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 all_r_table r on ST_Intersects(r.rast, p.geom)
43
+ GROUP by p.sample_geog_level_id, p.geog_instance_id, p.geog_instance_label, p.geog_instance_code
44
+ ),
45
+
46
+ all_a_table as
47
+ (
48
+ SELECT r.rast as rast
49
+ FROM rasters r, cat_rast c
50
+ WHERE r.raster_variable_id = (c.area_id)
51
+ ),
52
+
53
+ a_table as
54
+ (
55
+ SELECT p.geog_instance_id, p.geog_instance_label, ST_union(ST_Clip(r.rast, p.geom)) as rast
56
+ FROM lookup l, cat_rast c, polygon p inner join all_a_table r on ST_Intersects(r.rast, p.geom)
57
+ GROUP by p.sample_geog_level_id, p.geog_instance_id, p.geog_instance_label, p.geog_instance_code
58
+ ),
59
+
60
+ calc as
61
+ (
62
+ SELECT r.geog_instance_id, r.geog_instance_label, (ST_SummaryStats(r.rast)).*, (ST_SummaryStats(a.rast)).sum as total_area,
63
+ (ST_SummaryStats(ST_MapAlgebra(r.rast, 1, a.rast, 1, '[rast1]*[rast2]', '32BUI'))).sum as binary_area
64
+ FROM r_table r inner join a_table a on (r.geog_instance_id = a.geog_instance_id)
65
+ )
66
+
67
+ SELECT c.geog_instance_id, c.geog_instance_label, c.count as pixel_count, c.binary_area, c.binary_area / c.total_area as percent_area, c.total_area as total_area FROM calc c;
68
+ END;
69
+
70
+ $BODY$
71
+ LANGUAGE 'plpgsql';
72
+ SQL
73
+ end
74
+ end