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,5 @@
1
+ class RemoveusePostgisProcedureForGeotiff < ActiveRecord::Migration
2
+ def change
3
+ remove_column :raster_variables, :use_postgis_procedure_for_geotiff
4
+ end
5
+ end
@@ -0,0 +1,34 @@
1
+ class AddColorMapToTiffOutput < ActiveRecord::Migration
2
+ def change
3
+ sql = <<-SQL
4
+ CREATE OR REPLACE Function terrapop_raster_clip_colormap(sample_geog_lvl_id bigint, rasters_id bigint, raster_bnd integer, colormap text)
5
+ RETURNS TABLE (tiff bytea) AS
6
+ $BODY$
7
+
8
+ BEGIN
9
+ RETURN QUERY
10
+
11
+ WITH poly_table AS
12
+ (
13
+ SELECT ST_Transform(bound.geog::geometry, (SELECT ST_SRID(r.rast) FROM rasters r WHERE r.raster_variable_id = rasters_id LIMIT 1)) as geom
14
+ FROM sample_geog_levels sgl
15
+ inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
16
+ inner join boundaries bound on bound.geog_instance_id = gi.id
17
+ where gi.sample_geog_level_id = sample_geog_lvl_id
18
+ ),
19
+ new_rast AS
20
+ (
21
+ SELECT ST_Union(ST_Clip(r.rast, raster_bnd, p.geom, TRUE)) as rast
22
+ FROM poly_table p inner join rasters r on ST_Intersects(r.rast,p.geom)
23
+ where r.raster_variable_id = rasters_id
24
+ )
25
+ select ST_AsTiff(ST_ColorMap(ST_Union(r.rast), 1, colormap),'LZW', (SELECT ST_SRID(r.rast) FROM rasters r WHERE r.raster_variable_id = rasters_id LIMIT 1)) as tiff from new_rast r;
26
+
27
+ END;
28
+ $BODY$
29
+ LANGUAGE 'plpgsql';
30
+ SQL
31
+
32
+ execute sql
33
+ end
34
+ end
@@ -0,0 +1,34 @@
1
+ class AddColorMapToJpegOutput < ActiveRecord::Migration
2
+ def change
3
+ sql = <<-SQL
4
+ CREATE OR REPLACE Function terrapop_jpeg_raster_clip_colormap(sample_geog_lvl_id bigint, rasters_id bigint, raster_bnd integer, colormap text)
5
+ RETURNS TABLE (tiff bytea) AS
6
+ $BODY$
7
+
8
+ BEGIN
9
+ RETURN QUERY
10
+
11
+ WITH poly_table AS
12
+ (
13
+ SELECT ST_Transform(bound.geog::geometry, (SELECT ST_SRID(r.rast) FROM rasters r WHERE r.raster_variable_id = rasters_id LIMIT 1)) as geom
14
+ FROM sample_geog_levels sgl
15
+ inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
16
+ inner join boundaries bound on bound.geog_instance_id = gi.id
17
+ where gi.sample_geog_level_id = sample_geog_lvl_id
18
+ ),
19
+ new_rast AS
20
+ (
21
+ SELECT ST_Union(ST_Clip(r.rast, raster_bnd, p.geom, TRUE)) as rast
22
+ FROM poly_table p inner join rasters r on ST_Intersects(r.rast,p.geom)
23
+ where r.raster_variable_id = rasters_id
24
+ )
25
+ select ST_AsJPEG(ST_ColorMap(ST_Union(r.rast), 1, colormap), 1) as tiff from new_rast r;
26
+
27
+ END;
28
+ $BODY$
29
+ LANGUAGE 'plpgsql';
30
+ SQL
31
+
32
+ execute sql
33
+ end
34
+ end
@@ -0,0 +1,65 @@
1
+ class AddNonColorMapCookieCutterFunctions < ActiveRecord::Migration
2
+ def change
3
+ sql0 = <<-SQL
4
+ CREATE OR REPLACE Function terrapop_jpeg_raster_clip(sample_geog_lvl_id bigint, rasters_id bigint, raster_bnd integer)
5
+ RETURNS TABLE (tiff bytea) AS
6
+ $BODY$
7
+
8
+ BEGIN
9
+ RETURN QUERY
10
+
11
+ WITH poly_table AS
12
+ (
13
+ SELECT ST_Transform(bound.geog::geometry, (SELECT ST_SRID(r.rast) FROM rasters r WHERE r.raster_variable_id = rasters_id LIMIT 1)) as geom
14
+ FROM sample_geog_levels sgl
15
+ inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
16
+ inner join boundaries bound on bound.geog_instance_id = gi.id
17
+ where gi.sample_geog_level_id = sample_geog_lvl_id
18
+ ),
19
+ new_rast AS
20
+ (
21
+ SELECT ST_Union(ST_Clip(r.rast, raster_bnd, p.geom, TRUE)) as rast
22
+ FROM poly_table p inner join rasters r on ST_Intersects(r.rast,p.geom)
23
+ where r.raster_variable_id = rasters_id
24
+ )
25
+ select ST_AsJPEG(ST_Union(r.rast)) as tiff from new_rast r;
26
+
27
+ END;
28
+ $BODY$
29
+ LANGUAGE 'plpgsql';
30
+ SQL
31
+
32
+ sql1 = <<-SQL
33
+ CREATE OR REPLACE Function terrapop_tiff_raster_clip(sample_geog_lvl_id bigint, rasters_id bigint, raster_bnd integer)
34
+ RETURNS TABLE (tiff bytea) AS
35
+ $BODY$
36
+
37
+ BEGIN
38
+ RETURN QUERY
39
+
40
+ WITH poly_table AS
41
+ (
42
+ SELECT ST_Transform(bound.geog::geometry, (SELECT ST_SRID(r.rast) FROM rasters r WHERE r.raster_variable_id = rasters_id LIMIT 1)) as geom
43
+ FROM sample_geog_levels sgl
44
+ inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
45
+ inner join boundaries bound on bound.geog_instance_id = gi.id
46
+ where gi.sample_geog_level_id = sample_geog_lvl_id
47
+ ),
48
+ new_rast AS
49
+ (
50
+ SELECT ST_Union(ST_Clip(r.rast, raster_bnd, p.geom, TRUE)) as rast
51
+ FROM poly_table p inner join rasters r on ST_Intersects(r.rast,p.geom)
52
+ where r.raster_variable_id = rasters_id
53
+ )
54
+ select ST_AsTiff(ST_Union(r.rast),'LZW', (SELECT ST_SRID(r.rast) FROM rasters r WHERE r.raster_variable_id = rasters_id LIMIT 1)) as tiff from new_rast r;
55
+
56
+ END;
57
+ $BODY$
58
+ LANGUAGE 'plpgsql';
59
+ SQL
60
+
61
+ execute sql0
62
+ execute sql1
63
+
64
+ end
65
+ end
@@ -0,0 +1,62 @@
1
+ class AddCategoricalMultiBandSummarization < ActiveRecord::Migration
2
+ def change
3
+
4
+ sql =<<-SQL
5
+ CREATE OR REPLACE FUNCTION terrapop_categorical_raster_v1(IN sample_geog_lvl_id bigint, IN rasters_id bigint, IN raster_bnd integer)
6
+ RETURNS TABLE(geog_instance_id bigint, geog_instance_label character varying, num_class bigint, mod_class double precision, total_area double precision) AS
7
+ $BODY$
8
+ DECLARE
9
+
10
+ BEGIN
11
+
12
+ RETURN QUERY
13
+ WITH poly_table AS (
14
+ SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label,
15
+ gi.code as geog_instance_code, ST_Transform(bound.geog::geometry, (SELECT ST_SRID(r.rast) FROM rasters r WHERE r.raster_variable_id = rasters_id LIMIT 1)) as geom
16
+ FROM sample_geog_levels sgl
17
+ inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
18
+ inner join boundaries bound on bound.geog_instance_id = gi.id
19
+ WHERE sgl.id = sample_geog_lvl_id
20
+ ),
21
+ cat_rast AS
22
+ (
23
+ select p.sample_geog_level_id, p.geog_instance_id, p.geog_instance_label, p.geog_instance_code, ST_Union(ST_Clip(r.rast,raster_bnd, p.geom, 0)) as rast
24
+ from poly_table p inner join rasters r on ST_Intersects(r.rast, raster_bnd, p.geom)
25
+ where r.raster_variable_id = rasters_id
26
+ group by p.sample_geog_level_id, p.geog_instance_id, p.geog_instance_label, p.geog_instance_code
27
+ ),
28
+ area_rast AS
29
+ (
30
+ select p.sample_geog_level_id, p.geog_instance_id, p.geog_instance_label, p.geog_instance_code, (ST_SummaryStats(ST_Union(ST_Clip(r.rast, p.geom)))).sum as categorical_area
31
+ from poly_table p inner join rasters r on ST_Intersects(r.rast, p.geom)
32
+ where r.raster_variable_id = ( select rv.area_reference_id from raster_variables rv where rv.id = rasters_id limit 1 )
33
+ group by p.sample_geog_level_id, p.geog_instance_id, p.geog_instance_label, p.geog_instance_code
34
+ )
35
+ SELECT area_rast.geog_instance_id, area_rast.geog_instance_label, cat_num_classes.number_of_classes, cat_mode_class.value as modal_class, area_rast.categorical_area
36
+ FROM area_rast inner join
37
+ (
38
+ SELECT cat_count.geog_instance_id, cat_count.geog_instance_label, count(cat_count.value) as number_of_classes
39
+ FROM (
40
+ select cat_rast.geog_instance_id, cat_rast.geog_instance_label, (ST_valuecount(cat_rast.rast)).value
41
+ from cat_rast
42
+ ) cat_count
43
+ GROUP BY cat_count.geog_instance_id, cat_count.geog_instance_label
44
+ ) cat_num_classes on (area_rast.geog_instance_id = cat_num_classes.geog_instance_id) inner join
45
+ (
46
+ SELECT DISTINCT ON (cat_rast.geog_instance_id, cat_rast.geog_instance_label)
47
+ cat_rast.geog_instance_id, cat_rast.geog_instance_label, (ST_valuecount(cat_rast.rast)).*
48
+ FROM cat_rast
49
+ ORDER BY cat_rast.geog_instance_id, cat_rast.geog_instance_label, (ST_valuecount(cat_rast.rast)).count DESC
50
+ ) cat_mode_class ON (area_rast.geog_instance_id = cat_mode_class.geog_instance_id);
51
+
52
+ END;
53
+
54
+ $BODY$
55
+ LANGUAGE plpgsql VOLATILE;
56
+ SQL
57
+
58
+
59
+ execute(sql)
60
+
61
+ end
62
+ end
@@ -0,0 +1,5 @@
1
+ class AddIndexToRastersRasterVariableId < ActiveRecord::Migration
2
+ def change
3
+ add_index :rasters, :raster_variable_id
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddBandToTerrapopRasterSummaryCache < ActiveRecord::Migration
2
+ def change
3
+ add_column :terrapop_raster_summary_caches, :band_index, :bigint, default: 1
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddXmlFieldToMap < ActiveRecord::Migration
2
+ def change
3
+ add_column :maps, :iso19115_xml, :text
4
+ end
5
+ end
@@ -0,0 +1,38 @@
1
+ class AddNewContinousSummarization < ActiveRecord::Migration
2
+ def change
3
+ sql =<<-SQL
4
+ CREATE OR REPLACE Function terrapop_continuous_summarization_without_arearef(sample_geog_lvl_id bigint, rasters_id bigint, band_idx bigint)
5
+ RETURNS TABLE (geog_instance_id bigint, geog_instance_label character varying, count bigint, total_area double precision, mean double precision, stddev double precision, min double precision, max double precision)
6
+ AS
7
+ $BODY$
8
+ BEGIN
9
+ RETURN QUERY
10
+ WITH transformation AS
11
+ (
12
+ SELECT ST_SRID(r.rast) as prj_val
13
+ FROM rasters r
14
+ WHERE r.raster_variable_id = rasters_id LIMIT 1
15
+ ),
16
+ polygon AS
17
+ (
18
+ SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label, ST_Transform(bound.geog::geometry, t.prj_val) as geom
19
+ FROM transformation t, sample_geog_levels sgl inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
20
+ inner join boundaries bound on bound.geog_instance_id = gi.id
21
+ WHERE sgl.id = sample_geog_lvl_id
22
+ ),area_ref_rast as
23
+ (
24
+ SELECT p.sample_geog_level_id, p.geog_instance_id, p.geog_instance_label, ST_union(ST_Clip(r.rast, p.geom)) as rast
25
+ FROM polygon p inner join rasters r on ST_Intersects(r.rast, p.geom)
26
+ WHERE p.sample_geog_level_id = sample_geog_lvl_id and r.raster_variable_id = rasters_id
27
+ GROUP BY p.sample_geog_level_id, p.geog_instance_id, p.geog_instance_label
28
+ )
29
+ select a.geog_instance_id, a.geog_instance_label, (ST_Summarystats(a.rast, band_idx::integer)).*
30
+ from area_ref_rast a;
31
+ END;
32
+ $BODY$
33
+ LANGUAGE 'plpgsql';
34
+ SQL
35
+
36
+ execute(sql)
37
+ end
38
+ end
@@ -0,0 +1,49 @@
1
+ class CategoricalToBinaryAsRaster < ActiveRecord::Migration
2
+ def change
3
+ sql =<<-SQL
4
+ CREATE OR REPLACE FUNCTION terrapop_categorical_raster_to_binary_tiff(IN smpl_geog_lvl_id integer, IN rast_var_id integer, IN band_num integer DEFAULT 1)
5
+ RETURNS TABLE (tiff bytea) 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 WHERE id IN (
14
+ select raster_variable_classifications.mosaic_raster_variable_id
15
+ from raster_variable_classifications
16
+ where raster_variable_classifications.raster_variable_id = rast_var_id)
17
+ ),transformation as
18
+ (
19
+ SELECT ST_SRID(r.rast) as prj_value
20
+ FROM rasters r
21
+ WHERE r.raster_variable_id = (select rv.second_area_reference_id from raster_variables rv where rv.id = rast_var_id limit 1) LIMIT 1
22
+ ),polygon as
23
+ (
24
+ SELECT sgl.id as sample_geog_level_id, gi.id as geog_instance_id, gi.label as geog_instance_label,
25
+ gi.code as geog_instance_code, ST_Transform(bound.geog::geometry, t.prj_value) as geom
26
+ FROM transformation t, sample_geog_levels sgl
27
+ inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
28
+ inner join boundaries bound on bound.geog_instance_id = gi.id
29
+ WHERE sgl.id = smpl_geog_lvl_id
30
+ ), binary_rast AS
31
+ (
32
+ SELECT p.sample_geog_level_id, p.geog_instance_id, p.geog_instance_label, p.geog_instance_code, ST_union(ST_Clip(r.rast, band_num,p.geom, TRUE)) as rast
33
+ FROM polygon p inner join rasters r on ST_Intersects(r.rast, p.geom)
34
+ WHERE r.raster_variable_id = (select rv.second_area_reference_id from raster_variables rv where rv.id = rast_var_id limit 1)
35
+ GROUP by p.sample_geog_level_id, p.geog_instance_id, p.geog_instance_label, p.geog_instance_code
36
+ )
37
+ select ST_AsTiff(ST_Union(r.rast),'LZW', max(t.prj_value)) as tiff from binary_rast r, transformation t;
38
+
39
+ END;
40
+ $BODY$
41
+ LANGUAGE 'plpgsql';
42
+ SQL
43
+
44
+ execute(sql)
45
+ end
46
+ end
47
+
48
+
49
+
@@ -0,0 +1,92 @@
1
+ class GenericCategoricalToBinaryRasterOutputFunction < ActiveRecord::Migration
2
+ def change
3
+
4
+ sql0 =<<-SQL
5
+ CREATE OR REPLACE FUNCTION terrapop_categorical_to_binary_as_raster(IN sample_geog_lvl_id bigint, IN rasters_id bigint, IN bnd_num integer DEFAULT 1)
6
+ RETURNS TABLE(raster_table raster) AS
7
+ $BODY$
8
+ BEGIN
9
+ RETURN QUERY
10
+ WITH lookup AS
11
+ (
12
+ SELECT replace(replace(array_agg(classification::text || ':1')::text, '{', ''), '}', '') as exp
13
+ FROM raster_variables WHERE id IN (
14
+ select raster_variable_classifications.mosaic_raster_variable_id
15
+ from raster_variable_classifications
16
+ where raster_variable_classifications.raster_variable_id = 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_union(ST_Reclass(ST_Clip(r.rast, bnd_num,p.geom, TRUE),1,l.exp, '8BUI',0)) as rast
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
+ END;
41
+
42
+ $BODY$
43
+ LANGUAGE 'plpgsql';
44
+ SQL
45
+
46
+ execute(sql0)
47
+
48
+ sql1 =<<-SQL
49
+ CREATE OR REPLACE FUNCTION terrapop_projection_number_from_stacked_raster(raster_id bigint)
50
+ RETURNS integer AS
51
+ $BODY$
52
+ DECLARE prj_value integer;
53
+ BEGIN
54
+ WITH cat_rast as
55
+ (
56
+ SELECT rv.second_area_reference_id as cat_id
57
+ FROM raster_variables rv
58
+ WHERE rv.id = raster_id
59
+ ),transformation as
60
+ (
61
+ SELECT ST_SRID(r.rast) AS prj_value
62
+ FROM cat_rast c, rasters r
63
+ WHERE r.raster_variable_id = c.cat_id
64
+ LIMIT 1
65
+ )
66
+ SELECT t.prj_value INTO prj_value FROM transformation t;
67
+
68
+ RETURN prj_value;
69
+ END;
70
+ $BODY$
71
+ LANGUAGE 'plpgsql';
72
+ SQL
73
+
74
+ execute(sql1)
75
+
76
+ sql2 =<<-SQL
77
+ CREATE OR REPLACE FUNCTION terrapop_raster_as_tiff(projection integer, rast raster)
78
+ RETURNS bytea AS
79
+ $BODY$
80
+ DECLARE ret_raster raster;
81
+ BEGIN
82
+ SELECT ST_AsTiff(rast,'LZW', projection) into ret_raster;
83
+ RETURN ret_raster;
84
+ END;
85
+ $BODY$
86
+ LANGUAGE 'plpgsql';
87
+ SQL
88
+
89
+ execute(sql2)
90
+
91
+ end
92
+ end
@@ -0,0 +1,55 @@
1
+ class RatioAreaLevelDataToRasterFunction < ActiveRecord::Migration
2
+ def change
3
+ sql =<<-SQL
4
+ CREATE OR REPLACE Function terrapop_areal_rasterization_number(sample_geog_lvl_id bigint, rasters_id bigint, area_data_variables_id bigint, raster_sizer bigint, bnd_num integer)
5
+ RETURNS TABLE (rast raster)
6
+ AS
7
+ $BODY$
8
+ BEGIN
9
+ RETURN QUERY
10
+ WITH new_rast as
11
+ (
12
+ SELECT ST_Rescale(ST_Asraster(mybound.geom, my_rast.rast, '32BF', 1.0, -5), my_rast.scale_x/raster_sizer,
13
+ my_rast.scale_y/raster_sizer) as rast
14
+ FROM (
15
+ select ST_Collect(bound.geog::geometry) as geom
16
+ from sample_geog_levels sgl inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
17
+ inner join boundaries bound on bound.geog_instance_id = gi.id
18
+ where gi.sample_geog_level_id = sample_geog_lvl_id
19
+ ) mybound,
20
+ (
21
+ select ST_Scalex(r.rast) as scale_x, ST_Scaley(r.rast) as scale_y, r.rast
22
+ from rasters r
23
+ where r.raster_variable_id = rasters_id
24
+ limit 1
25
+ ) my_rast
26
+ )
27
+
28
+ SELECT ST_Union(ST_AsRaster(clip.geom, new_rast.rast, '32BF', areal_data.value)) as rast
29
+ FROM new_rast,
30
+ (
31
+ select gi.id, adv.mnemonic, area_data.value
32
+ from sample_geog_levels sgl inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
33
+ inner join boundaries bound on bound.geog_instance_id = gi.id
34
+ left join area_data_values area_data on gi.id = area_data.geog_instance_id
35
+ inner join area_data_variables adv ON area_data.area_data_variable_id = adv.id
36
+ where gi.sample_geog_level_id = sample_geog_lvl_id and adv.id = area_data_variables_id
37
+ ) areal_data inner join
38
+ (
39
+ SELECT gi.id, ST_union(bound.geog::geometry) as geom
40
+ from sample_geog_levels sgl inner join geog_instances gi on sgl.id = gi.sample_geog_level_id
41
+ inner join boundaries bound on bound.geog_instance_id = gi.id
42
+ inner join new_rast r on ST_Intersects(r.rast, bound.geog::geometry)
43
+ where gi.sample_geog_level_id = sample_geog_lvl_id
44
+ group by gi.id
45
+ ) clip on areal_data.id = clip.id;
46
+ END;
47
+ $BODY$
48
+ LANGUAGE 'plpgsql';
49
+ SQL
50
+
51
+ execute(sql)
52
+
53
+ end
54
+ end
55
+