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,8 @@
1
+ class AddIpumsEmailSentAtColumn < ActiveRecord::Migration
2
+ def up
3
+ add_column :users, :ipumsi_request_email_sent_at, :datetime
4
+ end
5
+
6
+ def down
7
+ end
8
+ end
@@ -0,0 +1,9 @@
1
+ class RemoveIndexIfExists < ActiveRecord::Migration
2
+ def up
3
+ execute "DROP INDEX IF EXISTS index_ui_text_snippet_on_key_text"
4
+ execute "DROP TABLE IF EXISTS text_snippet"
5
+ end
6
+
7
+ def down
8
+ end
9
+ end
@@ -0,0 +1,8 @@
1
+ class RemoveUiSnippetTableIfExists < ActiveRecord::Migration
2
+ def up
3
+ execute "DROP TABLE IF EXISTS text_snippets"
4
+ end
5
+
6
+ def down
7
+ end
8
+ end
@@ -0,0 +1,11 @@
1
+ class CreateUiTextSnippet < ActiveRecord::Migration
2
+ def change
3
+ create_table :ui_text_snippet do |t|
4
+ t.column :key_text, :text
5
+ t.column :text_snippet, :text
6
+ t.timestamps
7
+ end
8
+
9
+ add_index :ui_text_snippet, :key_text
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ class RenameTableFixUiTextSnippets < ActiveRecord::Migration
2
+ def up
3
+ execute "DROP TABLE IF EXISTS ui_text_snippets"
4
+ rename_table :ui_text_snippet, :ui_text_snippets
5
+ end
6
+
7
+ def down
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class AddUniqueIndexOnUuidOn < ActiveRecord::Migration
2
+ def up
3
+ remove_index :extract_requests, :uuid
4
+ add_index :extract_requests, :uuid, :unique => true #, :name => :unique_extract_requests_uuid_index
5
+ end
6
+
7
+ def down
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ class AddSendToiRodsFlagToExtractRequest < ActiveRecord::Migration
2
+ def change
3
+
4
+ add_column :extract_requests, :send_to_irods, :boolean, :default => false
5
+ add_index :extract_requests, :send_to_irods
6
+
7
+ ExtractRequest.all.each{|extract|
8
+ extract.send_to_irods = false
9
+ extract.save
10
+ }
11
+
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ class AddGeographicLeveltoGeogInstance < ActiveRecord::Migration
2
+ def up
3
+ add_column :geog_instances, :geog_code, :string, :limit => 10
4
+ add_column :geog_instances, :str_code, :string, :limit => 16
5
+ add_index :geog_instances, :geog_code
6
+ add_index :geog_instances, :str_code
7
+ end
8
+
9
+ def down
10
+ end
11
+ end
@@ -0,0 +1,8 @@
1
+ class AddZipFileLocation < ActiveRecord::Migration
2
+ def up
3
+ add_column :extract_requests, :extract_url, :text
4
+ end
5
+
6
+ def down
7
+ end
8
+ end
@@ -0,0 +1,5 @@
1
+ class AddApiRelatedFieldsToUser < ActiveRecord::Migration
2
+ def change
3
+ add_column :users, :api_key, :string, :limit => 256
4
+ end
5
+ end
@@ -0,0 +1,14 @@
1
+ class CreateExtractRequestErrorEvents < ActiveRecord::Migration
2
+ def change
3
+
4
+ create_table :extract_request_error_events do |t|
5
+ t.column :extract_request_id, :bigint
6
+ t.column :error_event_id, :bigint
7
+ t.timestamps
8
+ end
9
+
10
+ foreign_key :extract_request_error_events, :extract_request_id
11
+ foreign_key :extract_request_error_events, :error_event_id
12
+
13
+ end
14
+ end
@@ -0,0 +1,5 @@
1
+ class AddRequestingUrlToExtractRequest < ActiveRecord::Migration
2
+ def change
3
+ add_column :extract_requests, :request_url, :string, :limit => 256
4
+ end
5
+ end
@@ -0,0 +1,14 @@
1
+ class CreateApiLogs < ActiveRecord::Migration
2
+ def change
3
+
4
+ create_table :api_logs do |t|
5
+ t.column :api_key, :text
6
+ t.column :action, :text
7
+ t.column :extra, :text
8
+ t.timestamps
9
+ end
10
+
11
+ add_index :api_logs, :api_key
12
+
13
+ end
14
+ end
@@ -0,0 +1,50 @@
1
+ class ChangeUserInstitutionalAffiliationToBool < ActiveRecord::Migration
2
+ class User < ActiveRecord::Base
3
+ end
4
+
5
+ def up
6
+ # add a temp column for the data transfer
7
+ add_column :users, :institutional_affiliation_temp, :boolean
8
+
9
+ # transfer the data
10
+ User.reset_column_information
11
+ User.all.each do |user|
12
+ if user.institutional_affiliation == 'yes'
13
+ user.institutional_affiliation_temp = true
14
+ elsif user.institutional_affiliation == 'no'
15
+ user.institutional_affiliation_temp = false
16
+ end
17
+ user.save
18
+ end
19
+
20
+ # drop the original column
21
+ remove_column :users, :institutional_affiliation
22
+
23
+ # rename the temp column to the original one
24
+ rename_column :users, :institutional_affiliation_temp, :institutional_affiliation
25
+
26
+ end
27
+
28
+ def down
29
+ # add a temp column for the data transfer
30
+ add_column :users, :institutional_affiliation_temp, :string, :limit => 128
31
+
32
+ # transfer the data
33
+ User.reset_column_information
34
+ User.all.each do |user|
35
+ if user.institutional_affiliation == true
36
+ user.institutional_affiliation_temp = 'yes'
37
+ elsif user.institutional_affiliation == false
38
+ user.institutional_affiliation_temp = 'no'
39
+ end
40
+ user.save
41
+ end
42
+
43
+ # drop the original column
44
+ remove_column :users, :institutional_affiliation
45
+
46
+ # rename the temp column to the original one
47
+ rename_column :users, :institutional_affiliation_temp, :institutional_affiliation
48
+
49
+ end
50
+ end
@@ -0,0 +1,7 @@
1
+ class AddStartAndEndTimeAndTotalTimeToExtractRequest < ActiveRecord::Migration
2
+ def change
3
+ add_column :extract_requests, :begin_extract_time, :bigint
4
+ add_column :extract_requests, :finish_extract_time, :bigint
5
+ add_column :extract_requests, :total_time, :bigint
6
+ end
7
+ end
@@ -0,0 +1,12 @@
1
+ class RemoveAddIndexToAreaDataValue < ActiveRecord::Migration
2
+ def up
3
+
4
+ remove_column :area_data_values, :mnemonic
5
+ add_column :area_data_values, :mnemonic, :string, :limit => 16
6
+ add_index :area_data_values, :mnemonic
7
+
8
+ end
9
+
10
+ def down
11
+ end
12
+ end
@@ -0,0 +1,7 @@
1
+ class AddLongMnemonicToAreaDataValue < ActiveRecord::Migration
2
+ def change
3
+ remove_column :area_data_values, :mnemonic
4
+ add_column :area_data_values, :mnemonic, :string, :limit => 32
5
+ add_index :area_data_values, :mnemonic
6
+ end
7
+ end
@@ -0,0 +1,10 @@
1
+ class DropMnemonicColumnAreaDataValue < ActiveRecord::Migration
2
+ def up
3
+ remove_column :area_data_values, :mnemonic
4
+ add_column :area_data_values, :synthetic_mnemonic, :string, :limit => 32
5
+ add_index :area_data_values, :synthetic_mnemonic
6
+ end
7
+
8
+ def down
9
+ end
10
+ end
@@ -0,0 +1,8 @@
1
+ class AddShowInUiColumnInRasterVariable < ActiveRecord::Migration
2
+ def up
3
+ add_column :raster_variables, :show_in_ui, :boolean, :default => true
4
+ end
5
+
6
+ def down
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ class RenameRevisionOfColumnToRablUsableColumnName < ActiveRecord::Migration
2
+ def up
3
+ rename_column :extract_requests, :revision_of, :revision_of_id
4
+ end
5
+
6
+ def down
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ class AddRevisionOfColumn < ActiveRecord::Migration
2
+ def up
3
+ add_column :extract_requests, :revision_of, :bigint
4
+ end
5
+
6
+ def down
7
+ end
8
+ end
@@ -0,0 +1,191 @@
1
+ class AddNewRasterSummaryFunctions < ActiveRecord::Migration
2
+ # Note that the PostgreSQL JDBC driver has problems creating stored proces that involve the DECLARE keyword.
3
+ def self.up
4
+ # this version of the stored proc isn't usable because it creates a local variable via the DECLARE keyword, which breaks the PostgreSQL 9.1.4 JDBC driver.
5
+ summary_calc_sql =<<-END_OF_PROC
6
+ CREATE OR REPLACE FUNCTION terrapop_raster_summary_calc_v2(raster_op_name varchar(32), rast raster)
7
+ RETURNS numeric(20,4) as $$
8
+ DECLARE
9
+ summary_val numeric(20,4);
10
+ BEGIN
11
+ CASE raster_op_name
12
+ WHEN 'max' THEN summary_val := CAST((ST_SummaryStats(rast)).max as numeric(20,4));
13
+ WHEN 'min' THEN summary_val := CAST((ST_SummaryStats(rast)).min as numeric(20,4));
14
+ WHEN 'mean' THEN summary_val := CAST((ST_SummaryStats(rast)).mean as numeric(20,4));
15
+ WHEN 'count' THEN summary_val := CAST((ST_SummaryStats(rast)).count as numeric(20,4));
16
+ WHEN 'sum' THEN summary_val := CAST((ST_SummaryStats(rast)).sum as numeric(20,4));
17
+ WHEN 'mode' THEN SELECT histogram.value into summary_val
18
+ FROM (SELECT (ST_ValueCount(rast,1)).*) As histogram
19
+ ORDER BY histogram.count desc limit 1;
20
+ ELSE summary_val := null;
21
+ END CASE;
22
+
23
+ RETURN summary_val;
24
+ END;
25
+ $$ LANGUAGE plpgsql
26
+ END_OF_PROC
27
+
28
+ # so, since declare is off-limits, we can use a different structure which requires having a utility function.
29
+ # This function is also somewhat awkward, the RETURN at the end returns the value in the single OUT parameter
30
+ # as declared in the RETURNS part of the signature.
31
+
32
+ # Note that we can't use SELECT INTO STRICT here because the return value might be NULL, if the whole raster tile is nodata.
33
+
34
+ summary_calc_modal_sql = <<-END_OF_PROC
35
+ CREATE OR REPLACE FUNCTION terrapop_modal_value_v2(rast raster, OUT modal numeric) RETURNS numeric
36
+ LANGUAGE plpgsql
37
+ AS $$
38
+ BEGIN
39
+ SELECT histogram.value into modal
40
+ FROM (SELECT (ST_ValueCount(rast,1)).*) As histogram
41
+ ORDER BY histogram.count desc limit 1;
42
+ return;
43
+ END;
44
+ $$;
45
+ END_OF_PROC
46
+
47
+ summary_calc_num_classes_sql = <<-END_OF_PROC
48
+ CREATE OR REPLACE FUNCTION terrapop_num_classes_v2(rast raster, OUT num_classes numeric) RETURNS numeric
49
+ LANGUAGE plpgsql
50
+ AS $$
51
+ BEGIN
52
+ SELECT count(histogram.*) into num_classes
53
+ FROM (SELECT (ST_ValueCount(rast,1)).*) As histogram;
54
+ return;
55
+ END;
56
+ $$;
57
+ END_OF_PROC
58
+
59
+
60
+ summary_calc_nodeclare_sql =<<-END_OF_PROC
61
+ CREATE OR REPLACE FUNCTION terrapop_raster_summary_calc_v2(raster_op_name varchar(32), rast raster, area double precision) RETURNS numeric
62
+ LANGUAGE plpgsql
63
+ AS $$
64
+ BEGIN
65
+ RETURN CASE raster_op_name
66
+ WHEN 'max' THEN CAST((ST_SummaryStats(rast)).max as double precision)
67
+ WHEN 'min' THEN CAST((ST_SummaryStats(rast)).min as double precision)
68
+ WHEN 'mean' THEN CAST((ST_SummaryStats(rast)).mean as double precision)
69
+ WHEN 'count' THEN CAST((ST_SummaryStats(rast)).count as double precision)
70
+ WHEN 'sum' THEN CAST((ST_SummaryStats(rast)).sum as double precision)
71
+ WHEN 'mode' THEN terrapop_modal_value_v2(rast)
72
+ WHEN 'num_classes' THEN terrapop_num_classes_v2(rast)
73
+ WHEN 'total_area_bin' THEN CAST((ST_SummaryStats(rast)).sum as double precision)
74
+ WHEN 'percent_area_bin' THEN CAST(((ST_SummaryStats(rast)).sum / area ) as double precision)
75
+ WHEN 'total_area_areal' THEN CAST((ST_SummaryStats(rast)).sum as double precision)
76
+ WHEN 'percent_area_areal' THEN CAST(((ST_SummaryStats(rast)).sum / area ) as double precision)
77
+ ELSE null
78
+ END;
79
+ END;
80
+ $$;
81
+ END_OF_PROC
82
+
83
+ summary_sql = <<-END_OF_PROC
84
+ CREATE OR REPLACE FUNCTION terrapop_raster_summary_v3(sample_geog_lvl_id bigint, raster_var_id bigint, raster_var_ref_id bigint, raster_op_name varchar(32))
85
+ RETURNS TABLE(sample_geog_level_id bigint, raster_variable_id bigint, raster_operation_name varchar(32), geog_instance_id bigint,
86
+ geog_instance_label varchar(255), geog_instance_code numeric(20,0), raster_mnemonic varchar(255),
87
+ boundary_area double precision, raster_area double precision, summary_value double precision) AS $$
88
+ BEGIN
89
+ RETURN QUERY
90
+
91
+ SELECT final.sample_geog_level_id, final.raster_variable_id, final.raster_op_name, final.geog_instance_id,
92
+ final.geog_instance_label, final.geog_instance_code, final.mnemonic, final.boundary_area, final.raster_area, final.value FROM (
93
+ select unioned_rast.sample_geog_level_id, unioned_rast.raster_variable_id, raster_op_name,
94
+ unioned_rast.geog_instance_id, unioned_rast.geog_instance_label, unioned_rast.geog_instance_code,
95
+ CAST(unioned_rast.raster_variable_name || '_' || raster_op_name as varchar(255)) as mnemonic,
96
+ unioned_rast.boundary_area,
97
+ unioned_rast.raster_area,
98
+ terrapop_raster_summary_calc_v2(raster_op_name, St_Union(unioned_rast.rast), unioned_rast.raster_area)::double precision as value
99
+ from (
100
+ select base.sample_geog_level_id, base.raster_variable_id, base.geog_instance_id, base.geog_instance_label,
101
+ base.geog_instance_code, base.raster_variable_name,
102
+ base.boundary_area::double precision AS boundary_area,
103
+ /*ST_Union(ST_MapAlgebra(base.rast, ref_base.rast, '([rast1] * [rast2])::float')) as rast,*/
104
+ /*ST_GeoReference(ST_Union(base.rast), 'GDAL') AS base_esri_ref,*/
105
+ ST_Union(ST_MapAlgebra(base.rast, ST_SetGeoReference(ref_base.rast, ST_GeoReference(base.rast, 'GDAL') , 'GDAL'), '([rast1] * [rast2])::float')) as rast ,
106
+ terrapop_raster_area_v1(base.geog_instance_id, raster_var_ref_id)::double precision AS raster_area
107
+ from (
108
+ SELECT sgl.id as "sample_geog_level_id", my_raster.raster_variable_id as "raster_variable_id",
109
+ gi.id as "geog_instance_id", gi.label as "geog_instance_label", gi.code as "geog_instance_code",
110
+ my_raster.name as "raster_variable_name", ST_AREA(bound.geog) as boundary_area,
111
+ ST_Union(ST_Clip(my_raster.rast, bound.geog::geometry)) as rast
112
+ FROM sample_geog_levels sgl
113
+ inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
114
+ inner join boundaries bound on bound.geog_instance_id = gi.id
115
+ inner join rasters my_raster on ST_Intersects(my_raster.rast, bound.geog::geometry)
116
+ where sgl.id = sample_geog_lvl_id and my_raster.raster_variable_id = raster_var_id
117
+ group by sgl.id, my_raster.raster_variable_id, gi.id, gi.label, gi.code, my_raster.name, boundary_area
118
+ ) base,
119
+ ( SELECT ST_Union(ST_Clip(my_raster.rast, bound.geog::geometry)) as rast
120
+ FROM sample_geog_levels sgl
121
+ inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
122
+ inner join boundaries bound on bound.geog_instance_id = gi.id
123
+ inner join rasters my_raster on ST_Intersects(my_raster.rast, bound.geog::geometry)
124
+ where sgl.id = sample_geog_lvl_id and my_raster.raster_variable_id = raster_var_ref_id
125
+ ) ref_base
126
+ group by base.sample_geog_level_id, base.raster_variable_id, base.geog_instance_label,
127
+ base.geog_instance_id, base.geog_instance_code, base.raster_variable_name,
128
+ base.boundary_area
129
+ ) unioned_rast
130
+ group by
131
+ unioned_rast.sample_geog_level_id, unioned_rast.raster_variable_id,
132
+ raster_op_name, unioned_rast.geog_instance_id, unioned_rast.geog_instance_label,
133
+ unioned_rast.geog_instance_code, mnemonic, unioned_rast.boundary_area, unioned_rast.raster_area
134
+ order by unioned_rast.geog_instance_code
135
+ ) final
136
+ group by final.sample_geog_level_id,
137
+ final.raster_variable_id,
138
+ final.raster_op_name,
139
+ final.geog_instance_id,
140
+ final.geog_instance_label,
141
+ final.geog_instance_code,
142
+ final.mnemonic,
143
+ final.boundary_area,
144
+ final.raster_area,
145
+ final.value
146
+ order by final.geog_instance_code;
147
+
148
+ END;
149
+ $$ LANGUAGE plpgsql
150
+ END_OF_PROC
151
+
152
+
153
+ area_sql = <<-END_OF_PROC
154
+ CREATE OR REPLACE FUNCTION terrapop_raster_area_v1(_geog_instance_id bigint, raster_var_ref_id bigint)
155
+ RETURNS TABLE(raster_area double precision) AS $$
156
+ BEGIN
157
+ RETURN QUERY
158
+ SELECT final.raster_area FROM (
159
+ select unioned_rast.raster_area AS raster_area
160
+ from (
161
+ select SUM((ST_SummaryStats((base.rast))).sum::double precision) AS raster_area
162
+ from (
163
+ SELECT ST_Union(ST_Clip(my_raster.rast, bound.geog::geometry)) as rast
164
+ FROM geog_instances gi, boundaries bound
165
+ inner join rasters my_raster on ST_Intersects(my_raster.rast, bound.geog::geometry)
166
+ where gi.id = _geog_instance_id and my_raster.raster_variable_id = raster_var_ref_id AND bound.geog_instance_id = gi.id
167
+ group by my_raster.raster_variable_id, gi.id, gi.label, gi.code, my_raster.name
168
+ ) base
169
+ ) unioned_rast
170
+ ) final
171
+ group by final.raster_area;
172
+ END;
173
+ $$ LANGUAGE plpgsql
174
+ END_OF_PROC
175
+
176
+ execute summary_calc_modal_sql
177
+ execute summary_calc_num_classes_sql
178
+ execute summary_calc_nodeclare_sql
179
+ execute area_sql
180
+ execute summary_sql
181
+ end
182
+
183
+ def self.down
184
+ execute 'drop function if exists terrapop_modal_value_v2(rast raster, OUT modal numeric)'
185
+ execute 'drop function if exists terrapop_num_classes_v2(rast raster, OUT num_classes numeric)'
186
+ execute 'drop function if exists terrapop_raster_summary_calc_v2(raster_op_name varchar(32), rast raster, area float)'
187
+ execure 'drop function if exists terrapop_raster_area_v1(sample_geog_lvl_id bigint, raster_var_ref_id bigint)'
188
+ execute 'drop function if exists terrapop_raster_summary_v3(sample_geog_lvl_id bigint, raster_var_id bigint, raster_var_ref_id bigint, raster_op_name varchar(32))'
189
+
190
+ end
191
+ end