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