geohydra 0.3.1 → 0.3.3

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 (194) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -1
  3. data/.travis.yml +1 -2
  4. data/Gemfile +1 -8
  5. data/Gemfile.lock +87 -102
  6. data/README.md +2 -2
  7. data/VERSION +1 -1
  8. data/bin/accession.rb +99 -89
  9. data/bin/assemble.rb +288 -247
  10. data/bin/assemble_data.rb +54 -51
  11. data/bin/assemble_placenames.rb +85 -85
  12. data/bin/build_stage_options.rb +24 -18
  13. data/bin/derive_wgs84.rb +65 -66
  14. data/bin/extract_thumbnail.rb +38 -37
  15. data/bin/geo2mods.rb +78 -0
  16. data/bin/geohydra +14 -5
  17. data/bin/ingest_arcgis.rb +80 -60
  18. data/bin/iso2geo.rb +64 -0
  19. data/bin/loader_postgis.rb +121 -227
  20. data/bin/run_task.rb +23 -0
  21. data/bin/sync_geoserver_metadata.rb +132 -127
  22. data/bin/xsltproc-saxon +6 -0
  23. data/geohydra.gemspec +6 -4
  24. data/lib/geohydra.rb +5 -0
  25. data/lib/geohydra/accession.rb +24 -13
  26. data/lib/geohydra/{arcgis_to_iso19139_fc.xsl → arcgis_to_iso19110.xsl} +0 -0
  27. data/lib/geohydra/gazetteer.csv +842 -36
  28. data/lib/geohydra/gazetteer.rb +48 -24
  29. data/lib/geohydra/mods2geoblacklight.xsl +248 -0
  30. data/lib/geohydra/mods2ogp.xsl +5 -8
  31. data/lib/geohydra/transform.rb +8 -2
  32. data/lib/geohydra/utils.rb +6 -0
  33. data/lib/geohydra/workflow/gisAssemblyWF.rb +109 -0
  34. data/lib/geohydra/workflow/gisAssemblyWF.xml +85 -0
  35. data/lib/geohydra/workflow/gisDeliveryWF.rb +33 -0
  36. data/lib/geohydra/workflow/gisDeliveryWF.xml +36 -0
  37. data/lib/geohydra/workflow/gisDiscoveryWF.rb +55 -0
  38. data/lib/geohydra/workflow/gisDiscoveryWF.xml +28 -0
  39. data/lib/geohydra/workflow/task.rb +82 -0
  40. data/ogp/README.md +350 -0
  41. data/ogp/download.rb +92 -0
  42. data/ogp/fgdc2mods.sh +9 -0
  43. data/ogp/fgdc2mods.xsl +884 -0
  44. data/ogp/ingest.rb +48 -0
  45. data/ogp/select.rb +20 -0
  46. data/ogp/transform.rb +354 -0
  47. data/ogp/validate.rb +182 -0
  48. data/{bin → scripts}/ingest_tufts.rb +0 -0
  49. data/scripts/iso2html/doit.sh +15 -0
  50. data/scripts/iso2html/main.css +66 -0
  51. data/scripts/iso2html/pacioos-iso-html.xsl +1749 -0
  52. data/scripts/iso2html/utils/replace-newlines.xsl +97 -0
  53. data/scripts/iso2html/utils/replace-string.xsl +80 -0
  54. data/scripts/iso2html/utils/strip-digits.xsl +60 -0
  55. data/{bin → scripts}/loader.rb +0 -0
  56. data/scripts/rename_shapefiles.rb +5 -0
  57. data/scripts/render_gazetteer.rb +36 -0
  58. data/{bin → scripts}/seed.rb +0 -0
  59. data/{bin → scripts}/solr_indexer.rb +0 -0
  60. data/scripts/status.csv +253 -0
  61. data/scripts/status.rb +32 -0
  62. data/{bin → scripts}/validate_data.rb +1 -1
  63. data/solr/kurma-app-dev/conf/lang/stopwords_en.txt +34 -0
  64. data/solr/kurma-app-dev/conf/protwords.txt +21 -0
  65. data/solr/kurma-app-dev/conf/schema.xml +156 -0
  66. data/solr/kurma-app-dev/conf/solrconfig.xml +161 -0
  67. data/solr/kurma-app-dev/conf/synonyms.txt +29 -0
  68. data/solr/kurma-app-dev/purge.sh +8 -0
  69. data/solr/kurma-app-test/conf/lang/stopwords_en.txt +34 -0
  70. data/solr/kurma-app-test/conf/protwords.txt +21 -0
  71. data/solr/kurma-app-test/conf/schema.xml +158 -0
  72. data/solr/kurma-app-test/conf/solrconfig.xml +161 -0
  73. data/solr/kurma-app-test/conf/synonyms.txt +29 -0
  74. data/solr/kurma-app-test/deploy.sh +15 -0
  75. data/solr/kurma-app-test/purge.sh +8 -0
  76. data/solr/ogp-dev/purge.sh +1 -2
  77. data/spec/fixtures/bw938nk9584/temp/{TRIPURA-iso19139-fc.xml → TRIPURA-iso19110.xml} +0 -0
  78. data/spec/fixtures/cc142xj8436/temp/{HARYANA-iso19139-fc.xml → HARYANA-iso19110.xml} +0 -0
  79. data/spec/fixtures/cg716wc7949/temp/{metadata.iso19139-fc.xml → metadata.iso19110.xml} +0 -0
  80. data/spec/fixtures/cm007pv9601/temp/{MEGHALAYA-iso19139-fc.xml → MEGHALAYA-iso19110.xml} +0 -0
  81. data/spec/fixtures/cp055nb0189/temp/{metadata.iso19139-fc.xml → metadata.iso19110.xml} +0 -0
  82. data/spec/fixtures/cs838pw3418/temp/{OIL_GAS_FIELDS-iso19139-fc.xml → OIL_GAS_FIELDS-iso19110.xml} +0 -0
  83. data/spec/fixtures/dd308sy5843/temp/{ORISSA-iso19139-fc.xml → ORISSA-iso19110.xml} +0 -0
  84. data/spec/fixtures/dd452vk1873/temp/{metadata.iso19139-fc.xml → metadata.iso19110.xml} +0 -0
  85. data/spec/fixtures/dg850pt1796/temp/{STATE1951-iso19139-fc.xml → STATE1951-iso19110.xml} +0 -0
  86. data/spec/fixtures/dn744tf5427/temp/{DISTRICT1991-iso19139-fc.xml → DISTRICT1991-iso19110.xml} +0 -0
  87. data/spec/fixtures/dq603nz8402/temp/{STATE2001-iso19139-fc.xml → STATE2001-iso19110.xml} +0 -0
  88. data/spec/fixtures/dv609zt4699/temp/{ASSAM-iso19139-fc.xml → ASSAM-iso19110.xml} +0 -0
  89. data/spec/fixtures/dz222hw0585/temp/{PUNJAB-iso19139-fc.xml → PUNJAB-iso19110.xml} +0 -0
  90. data/spec/fixtures/fd673qb9705/temp/{STATE1971-iso19139-fc.xml → STATE1971-iso19110.xml} +0 -0
  91. data/spec/fixtures/fg451wp8917/temp/{SIKKIM-iso19139-fc.xml → SIKKIM-iso19110.xml} +0 -0
  92. data/spec/fixtures/fh247yz0156/temp/{RAJASTHAN-iso19139-fc.xml → RAJASTHAN-iso19110.xml} +0 -0
  93. data/spec/fixtures/fs487vd1465/temp/{CHHATTISGARH-iso19139-fc.xml → CHHATTISGARH-iso19110.xml} +0 -0
  94. data/spec/fixtures/fs591bn3317/temp/{HIMACHAL_PRADESH-iso19139-fc.xml → HIMACHAL_PRADESH-iso19110.xml} +0 -0
  95. data/spec/fixtures/fw920bc5473/temp/{PLSS_TWN-iso19139-fc.xml → PLSS_TWN-iso19110.xml} +0 -0
  96. data/spec/fixtures/gj831wj3625/temp/{metadata.iso19139-fc.xml → metadata.iso19110.xml} +0 -0
  97. data/spec/fixtures/gp075nv3265/temp/{PONDICHERRY-iso19139-fc.xml → PONDICHERRY-iso19110.xml} +0 -0
  98. data/spec/fixtures/gv800hj8141/temp/{BIHAR-iso19139-fc.xml → BIHAR-iso19110.xml} +0 -0
  99. data/spec/fixtures/gw520gz6339/temp/{DADRA_NAGAR_HAVELI_PT-iso19139-fc.xml → DADRA_NAGAR_HAVELI_PT-iso19110.xml} +0 -0
  100. data/spec/fixtures/gy054hz1045/temp/{HARYANA-iso19139-fc.xml → HARYANA-iso19110.xml} +0 -0
  101. data/spec/fixtures/gz352mw6982/temp/{metadata.iso19139-fc.xml → metadata.iso19110.xml} +0 -0
  102. data/spec/fixtures/hb489vm9892/temp/{DISTRICT1981-iso19139-fc.xml → DISTRICT1981-iso19110.xml} +0 -0
  103. data/spec/fixtures/hw125dq0418/temp/{DELHI-iso19139-fc.xml → DELHI-iso19110.xml} +0 -0
  104. data/spec/fixtures/hw892mn4587/temp/{KERALA-iso19139-fc.xml → KERALA-iso19110.xml} +0 -0
  105. data/spec/fixtures/jb371hz3868/temp/{INCOME-iso19139-fc.xml → INCOME-iso19110.xml} +0 -0
  106. data/spec/fixtures/jc017yk9928/temp/{KARNATAKA-iso19139-fc.xml → KARNATAKA-iso19110.xml} +0 -0
  107. data/spec/fixtures/jf841ys4828/temp/{ANDHRA_PRADESH-iso19139-fc.xml → ANDHRA_PRADESH-iso19110.xml} +0 -0
  108. data/spec/fixtures/jh802mp2160/temp/{DELHI_PT-iso19139-fc.xml → DELHI_PT-iso19110.xml} +0 -0
  109. data/spec/fixtures/jj806fc3801/temp/{metadata.iso19139-fc.xml → metadata.iso19110.xml} +0 -0
  110. data/spec/fixtures/jq835yn7161/temp/{HIMACHAL_PRADESH-iso19139-fc.xml → HIMACHAL_PRADESH-iso19110.xml} +0 -0
  111. data/spec/fixtures/jr455pt6676/temp/{TAMILNADU-iso19139-fc.xml → TAMILNADU-iso19110.xml} +0 -0
  112. data/spec/fixtures/js637zp2537/temp/{BIHAR-iso19139-fc.xml → BIHAR-iso19110.xml} +0 -0
  113. data/spec/fixtures/jv502wg9611/temp/{GOA-iso19139-fc.xml → GOA-iso19110.xml} +0 -0
  114. data/spec/fixtures/jw462ck6560/temp/{JAMMU_KASHMIR-iso19139-fc.xml → JAMMU_KASHMIR-iso19110.xml} +0 -0
  115. data/spec/fixtures/kj800fb6273/temp/{STATE2011-iso19139-fc.xml → STATE2011-iso19110.xml} +0 -0
  116. data/spec/fixtures/km504zq3948/temp/{HIMACHAL_PRADESH-iso19139-fc.xml → HIMACHAL_PRADESH-iso19110.xml} +0 -0
  117. data/spec/fixtures/ks297fy1411/temp/{OFFSH_BLOCKS-iso19139-fc.xml → OFFSH_BLOCKS-iso19110.xml} +0 -0
  118. data/spec/fixtures/md358hy5049/temp/{MIZORAM-iso19139-fc.xml → MIZORAM-iso19110.xml} +0 -0
  119. data/spec/fixtures/mg745bq0193/temp/{MADHYA_PRADESH-iso19139-fc.xml → MADHYA_PRADESH-iso19110.xml} +0 -0
  120. data/spec/fixtures/mh187yx3536/temp/{WEST_BENGAL-iso19139-fc.xml → WEST_BENGAL-iso19110.xml} +0 -0
  121. data/spec/fixtures/mk488yn6694/temp/{GUJARAT-iso19139-fc.xml → GUJARAT-iso19110.xml} +0 -0
  122. data/spec/fixtures/my216kp3008/temp/{DELHI-iso19139-fc.xml → DELHI-iso19110.xml} +0 -0
  123. data/spec/fixtures/my504nz9827/temp/{JAMMU_KASHMIR-iso19139-fc.xml → JAMMU_KASHMIR-iso19110.xml} +0 -0
  124. data/spec/fixtures/ng819jm8700/temp/{MANIPUR-iso19139-fc.xml → MANIPUR-iso19110.xml} +0 -0
  125. data/spec/fixtures/np020jq2139/temp/{metadata.iso19139-fc.xml → metadata.iso19110.xml} +0 -0
  126. data/spec/fixtures/ns377mt1608/temp/{STATE1991-iso19139-fc.xml → STATE1991-iso19110.xml} +0 -0
  127. data/spec/fixtures/nw926np8508/temp/{metadata.iso19139-fc.xml → metadata.iso19110.xml} +0 -0
  128. data/spec/fixtures/ny358rm8559/temp/{TRIPURA-iso19139-fc.xml → TRIPURA-iso19110.xml} +0 -0
  129. data/spec/fixtures/nz176rm8192/temp/{DISTRICT2011-iso19139-fc.xml → DISTRICT2011-iso19110.xml} +0 -0
  130. data/spec/fixtures/nz252rq2252/temp/{UTTAR_PRADESH-iso19139-fc.xml → UTTAR_PRADESH-iso19110.xml} +0 -0
  131. data/spec/fixtures/pd902kb3348/temp/{MADHYA_PRADESH-iso19139-fc.xml → MADHYA_PRADESH-iso19110.xml} +0 -0
  132. data/spec/fixtures/pz792fz1776/temp/{MAHARASHTRA-iso19139-fc.xml → MAHARASHTRA-iso19110.xml} +0 -0
  133. data/spec/fixtures/qb767ss4042/temp/{UTTAR_PRADESH-iso19139-fc.xml → UTTAR_PRADESH-iso19110.xml} +0 -0
  134. data/spec/fixtures/qc091qw0570/temp/{GUJARAT-iso19139-fc.xml → GUJARAT-iso19110.xml} +0 -0
  135. data/spec/fixtures/qc652vr7204/temp/{ANDHRA_PRADESH_PT-iso19139-fc.xml → ANDHRA_PRADESH_PT-iso19110.xml} +0 -0
  136. data/spec/fixtures/qk786js7484/temp/{DISTRICT1961-iso19139-fc.xml → DISTRICT1961-iso19110.xml} +0 -0
  137. data/spec/fixtures/qn676pg6767/temp/{GOA-iso19139-fc.xml → GOA-iso19110.xml} +0 -0
  138. data/spec/fixtures/qr255jh4074/temp/{LOKSABHA_14-iso19139-fc.xml → LOKSABHA_14-iso19110.xml} +0 -0
  139. data/spec/fixtures/qr374kj4827/temp/{ASSAM-iso19139-fc.xml → ASSAM-iso19110.xml} +0 -0
  140. data/spec/fixtures/qy162js1748/temp/{CHHATTISGARH-iso19139-fc.xml → CHHATTISGARH-iso19110.xml} +0 -0
  141. data/spec/fixtures/rd446vf2633/temp/{NAGALAND-iso19139-fc.xml → NAGALAND-iso19110.xml} +0 -0
  142. data/spec/fixtures/rf389hf2983/temp/{CHHATTISGARH_PT-iso19139-fc.xml → CHHATTISGARH_PT-iso19110.xml} +0 -0
  143. data/spec/fixtures/rf859ff4582/temp/{JHARKHAND-iso19139-fc.xml → JHARKHAND-iso19110.xml} +0 -0
  144. data/spec/fixtures/rh343ds8931/temp/{BIHAR-iso19139-fc.xml → BIHAR-iso19110.xml} +0 -0
  145. data/spec/fixtures/rn815xk8157/temp/{SIKKIM-iso19139-fc.xml → SIKKIM-iso19110.xml} +0 -0
  146. data/spec/fixtures/rq653sz4470/temp/{CHHATTISGARH-iso19139-fc.xml → CHHATTISGARH-iso19110.xml} +0 -0
  147. data/spec/fixtures/rt625ws6022/temp/{GULF_FAIRWAYS-iso19139-fc.xml → GULF_FAIRWAYS-iso19110.xml} +0 -0
  148. data/spec/fixtures/sc330vf4259/temp/{JHARKHAND-iso19139-fc.xml → JHARKHAND-iso19110.xml} +0 -0
  149. data/spec/fixtures/sq479mx3086/temp/{OFFSH_PLATF-iso19139-fc.xml → OFFSH_PLATF-iso19110.xml} +0 -0
  150. data/spec/fixtures/sr686bm4098/temp/{DAMAN_DIU_PT-iso19139-fc.xml → DAMAN_DIU_PT-iso19110.xml} +0 -0
  151. data/spec/fixtures/sv303sh5583/temp/{ARUNACHAL_PRADESH-iso19139-fc.xml → ARUNACHAL_PRADESH-iso19110.xml} +0 -0
  152. data/spec/fixtures/sy319nh8520/temp/{GUJARAT-iso19139-fc.xml → GUJARAT-iso19110.xml} +0 -0
  153. data/spec/fixtures/td363vx2792/temp/{HIMACHAL_PRADESH_PT-iso19139-fc.xml → HIMACHAL_PRADESH_PT-iso19110.xml} +0 -0
  154. data/spec/fixtures/tf374bd2484/temp/{DISTRICT1951-iso19139-fc.xml → DISTRICT1951-iso19110.xml} +0 -0
  155. data/spec/fixtures/tj797mj7877/temp/{LOKSABHA_15-iso19139-fc.xml → LOKSABHA_15-iso19110.xml} +0 -0
  156. data/spec/fixtures/tv060wq5179/temp/{ASSAM-iso19139-fc.xml → ASSAM-iso19110.xml} +0 -0
  157. data/spec/fixtures/tv536bn1915/temp/{ARUNACHAL_PRADESH-iso19139-fc.xml → ARUNACHAL_PRADESH-iso19110.xml} +0 -0
  158. data/spec/fixtures/tz359cc2977/temp/{MANIPUR-iso19139-fc.xml → MANIPUR-iso19110.xml} +0 -0
  159. data/spec/fixtures/vb525my6511/temp/{UTTARAKHAND-iso19139-fc.xml → UTTARAKHAND-iso19110.xml} +0 -0
  160. data/spec/fixtures/vh802fs4240/temp/{PONDICHERRY-iso19139-fc.xml → PONDICHERRY-iso19110.xml} +0 -0
  161. data/spec/fixtures/vk120xn2474/temp/{PLSS_SEC-iso19139-fc.xml → PLSS_SEC-iso19110.xml} +0 -0
  162. data/spec/fixtures/vn439bc7316/temp/{KERALA-iso19139-fc.xml → KERALA-iso19110.xml} +0 -0
  163. data/spec/fixtures/vq745jk0695/temp/{MEGHALAYA-iso19139-fc.xml → MEGHALAYA-iso19110.xml} +0 -0
  164. data/spec/fixtures/vr593vj7147/temp/{ANDHRA_PRADESH-iso19139-fc.xml → ANDHRA_PRADESH-iso19110.xml} +0 -0
  165. data/spec/fixtures/vw911qb5271/temp/{DISTRICT2001-iso19139-fc.xml → DISTRICT2001-iso19110.xml} +0 -0
  166. data/spec/fixtures/wg680pz0365/temp/{ANDHRA_PRADESH-iso19139-fc.xml → ANDHRA_PRADESH-iso19110.xml} +0 -0
  167. data/spec/fixtures/wg761xn1926/temp/{HARYANA-iso19139-fc.xml → HARYANA-iso19110.xml} +0 -0
  168. data/spec/fixtures/wh870qw1934/temp/{PUNJAB-iso19139-fc.xml → PUNJAB-iso19110.xml} +0 -0
  169. data/spec/fixtures/wk775mm4673/temp/{MAHARASHTRA-iso19139-fc.xml → MAHARASHTRA-iso19110.xml} +0 -0
  170. data/spec/fixtures/ws171yz2165/temp/{ARUNACHAL_PRADESH_PT-iso19139-fc.xml → ARUNACHAL_PRADESH_PT-iso19110.xml} +0 -0
  171. data/spec/fixtures/wt473hz7153/temp/{CHANDIGARH_PT-iso19139-fc.xml → CHANDIGARH_PT-iso19110.xml} +0 -0
  172. data/spec/fixtures/ww217dj0457/temp/{CO2_PIPE-iso19139-fc.xml → CO2_PIPE-iso19110.xml} +0 -0
  173. data/spec/fixtures/wy875pk9849/temp/{STATE1961-iso19139-fc.xml → STATE1961-iso19110.xml} +0 -0
  174. data/spec/fixtures/xb018tk2042/temp/{STATE1981-iso19139-fc.xml → STATE1981-iso19110.xml} +0 -0
  175. data/spec/fixtures/xg539vw8586/temp/{ORISSA-iso19139-fc.xml → ORISSA-iso19110.xml} +0 -0
  176. data/spec/fixtures/xv475kp4644/temp/{ASSAM_PT-iso19139-fc.xml → ASSAM_PT-iso19110.xml} +0 -0
  177. data/spec/fixtures/xy096gc2959/temp/{GOA-iso19139-fc.xml → GOA-iso19110.xml} +0 -0
  178. data/spec/fixtures/xz518gz3362/temp/{UTTARAKHAND-iso19139-fc.xml → UTTARAKHAND-iso19110.xml} +0 -0
  179. data/spec/fixtures/yh986wy4737/temp/{NAGALAND-iso19139-fc.xml → NAGALAND-iso19110.xml} +0 -0
  180. data/spec/fixtures/yn187fq4474/temp/{KARNATAKA-iso19139-fc.xml → KARNATAKA-iso19110.xml} +0 -0
  181. data/spec/fixtures/yn236mw3250/temp/{TAMILNADU-iso19139-fc.xml → TAMILNADU-iso19110.xml} +0 -0
  182. data/spec/fixtures/yz596nz0112/temp/{WEST_BENGAL-iso19139-fc.xml → WEST_BENGAL-iso19110.xml} +0 -0
  183. data/spec/fixtures/zk596gy7380/temp/{DISTRICT1971-iso19139-fc.xml → DISTRICT1971-iso19110.xml} +0 -0
  184. data/spec/fixtures/zn452hh7431/temp/{RAJASTHAN-iso19139-fc.xml → RAJASTHAN-iso19110.xml} +0 -0
  185. data/spec/fixtures/zt093fw6519/temp/{MIZORAM-iso19139-fc.xml → MIZORAM-iso19110.xml} +0 -0
  186. data/spec/fixtures/zv925hd6723/temp/{OGWELLS-iso19139-fc.xml → OGWELLS-iso19110.xml} +0 -0
  187. data/spec/fixtures/zy658cr1728/temp/{ANDAMAAN_NICOBAR_PT-iso19139-fc.xml → ANDAMAAN_NICOBAR_PT-iso19110.xml} +0 -0
  188. data/spec/fixtures/zz943vx1492/temp/{BASINS-iso19139-fc.xml → BASINS-iso19110.xml} +0 -0
  189. data/spec/unit/gazetteer_spec.rb +100 -35
  190. data/spec/unit/task_spec.rb +68 -0
  191. data/spec/unit/transform_spec.rb +1 -1
  192. data/spec/unit/utils_spec.rb +17 -3
  193. data/workflow.rb +35 -0
  194. metadata +323 -316
@@ -3,64 +3,67 @@
3
3
  require File.expand_path(File.dirname(__FILE__) + '/../config/boot')
4
4
  require 'optparse'
5
5
 
6
- def assemble(path, flags)
7
- ap({:path => path, :flags => flags}) if flags[:debug]
8
- File.umask(002)
9
- Dir.glob(File.join(path, '**', '*.shp')) do |shp|
10
- raise ArgumentError, shp unless GeoHydra::Utils.shapefile?(shp)
6
+ class AssembleData < GeoHydra::Process
7
+ def assemble(path, flags)
8
+ ap({:path => path, :flags => flags}) if flags[:debug]
9
+ File.umask(002)
10
+ Dir.glob(File.join(path, '**', '*.shp')) do |shp|
11
+ raise ArgumentError, "SyntaxError: Not a shapefile #{shp}" unless GeoHydra::Utils.shapefile?(shp)
11
12
 
12
- ap({:shp => shp}) if flags[:debug]
13
- geometry_type = GeoHydra::Transform.geometry_type(shp)
14
- ap({:geometry_type => geometry_type}) if flags[:debug]
15
- puts ['Scanned', File.basename(shp), geometry_type].join("\t") if flags[:verbose]
16
-
17
- basename = File.basename(shp, '.shp')
18
- zipfn = File.join(path, 'content', 'data.zip')
19
- puts "Compressing #{basename} into #{zipfn}" if flags[:verbose]
20
- fns = Dir.glob(File.join(File.dirname(shp), "#{basename}.*")).select do |fn|
21
- fn !~ /\.zip$/
22
- end
23
- metadata_fns = []
24
- Dir.glob(File.join(File.dirname(shp), "#{basename}-iso19139*.xml")).each do |fn|
25
- metadata_fns << fn
13
+ ap({:shp => shp}) if flags[:debug]
14
+ geometry_type = GeoHydra::Transform.geometry_type(shp)
15
+ ap({:geometry_type => geometry_type}) if flags[:debug]
16
+ puts ['Scanned', File.basename(shp), geometry_type].join("\t") if flags[:verbose]
17
+
18
+ basename = File.basename(shp, '.shp')
19
+ zipfn = File.join(path, 'content', 'data.zip')
20
+ puts "Compressing #{basename} into #{zipfn}" if flags[:verbose]
21
+ fns = Dir.glob(File.join(File.dirname(shp), "#{basename}.*")).select do |fn|
22
+ fn !~ /\.zip$/
23
+ end
24
+ metadata_fns = []
25
+ Dir.glob(File.join(File.dirname(shp), "#{basename}-iso19*.xml")).each do |fn|
26
+ metadata_fns << fn
27
+ end
28
+ system "mkdir -p #{File.dirname(zipfn)}" unless File.directory?(File.dirname(zipfn))
29
+ cmd = "zip -vj '#{zipfn}' #{fns.join(' ')} #{metadata_fns.join(' ')}"
30
+ ap({:cmd => cmd, :fns => fns}) if flags[:debug]
31
+ system cmd
32
+ fns.each {|fn| FileUtils.rm(fn)} unless flags[:debug]
26
33
  end
27
- cmd = "zip -vj '#{zipfn}' #{fns.join(' ')} #{metadata_fns.join(' ')}"
28
- ap({:cmd => cmd, :fns => fns}) if flags[:debug]
29
- system cmd
30
- fns.each {|fn| FileUtils.rm(fn)} unless flags[:debug]
31
34
  end
32
- end
33
35
 
34
- # __MAIN__
35
- begin
36
- flags = {
37
- :debug => false,
38
- :verbose => false,
39
- :srcdir => '/var/geomdtk/current/stage'
40
- }
36
+ def run(args)
37
+ flags = {
38
+ :debug => false,
39
+ :verbose => false,
40
+ :srcdir => GeoHydra::Config.geohydra.stage || '/var/geomdtk/current/stage'
41
+ }
41
42
 
42
- OptionParser.new do |opts|
43
- opts.banner = <<EOM
44
- Usage: #{File.basename(__FILE__)} [options] [srcdir]
43
+ OptionParser.new do |opts|
44
+ opts.banner = <<EOM
45
+ Usage: #{File.basename(__FILE__)} [options] [srcdir]
45
46
  EOM
46
- opts.on("-v", "--verbose", "Run verbosely") do |v|
47
- flags[:debug] = true if flags[:verbose]
48
- flags[:verbose] = true
49
- end
50
- end.parse!
47
+ opts.on("-v", "--verbose", "Run verbosely") do |v|
48
+ flags[:debug] = true if flags[:verbose]
49
+ flags[:verbose] = true
50
+ end
51
+ end.parse!(args)
51
52
 
52
-
53
- flags[:srcdir] = ARGV.pop unless File.directory?(flags[:srcdir])
54
- raise ArgumentError, "Missing directory #{flags[:srcdir]}" unless flags[:srcdir] and File.directory?(flags[:srcdir])
55
53
 
56
- puts "Searching for druid folders in #{flags[:srcdir]}..." if flags[:verbose]
57
- n = 0
58
- Dir.glob(File.join(flags[:srcdir], DruidTools::Druid.glob + '/')).sort.collect do |p|
59
- assemble p, flags
60
- n = n + 1
54
+ flags[:srcdir] = args.pop if args.size > 0
55
+ raise ArgumentError, "Missing directory #{flags[:srcdir]}" unless flags[:srcdir] and File.directory?(flags[:srcdir])
56
+
57
+ puts "Searching for druid folders in #{flags[:srcdir]}..." if flags[:verbose]
58
+ n = 0
59
+ Dir.glob(File.join(flags[:srcdir], DruidTools::Druid.glob + '/')).sort.collect do |p|
60
+ assemble p, flags
61
+ n = n + 1
62
+ end
63
+ puts "Processed #{n} folders."
61
64
  end
62
- puts "Processed #{n} folders."
63
- rescue SystemCallError => e
64
- $stderr.puts "ERROR: #{e.message}"
65
- exit(-1)
66
65
  end
66
+
67
+
68
+ # __MAIN__
69
+ AssembleData.new.run(ARGV)
@@ -5,106 +5,106 @@ require 'druid-tools'
5
5
  require 'optparse'
6
6
  require 'json'
7
7
 
8
- @@g = GeoHydra::Gazetteer.new
9
-
10
- #
11
- # Resolves placenames using local gazetteer
12
- #
13
- # * Changes subject/geographic with GeoNames as authority to have the correct valueURI
14
- # * Adds correct rdf:resource to geo extension
15
- # * Adds a LCSH or LCNAF keyword if needed
16
- #
17
- def resolve_placenames(modsFn, flags)
18
- puts "Processing #{modsFn}" if flags[:verbose]
19
- mods = Nokogiri::XML(File.open(modsFn, 'rb'))
20
- r = mods.xpath('//mods:geographic', { 'mods' => 'http://www.loc.gov/mods/v3' })
21
- r.each do |i|
22
- ap({:i => i}) if flags[:debug]
23
- k = i.content
8
+ class AssemblePlacenames < GeoHydra::Process
9
+ #
10
+ # Resolves placenames using local gazetteer
11
+ #
12
+ # * Changes subject/geographic with GeoNames as authority to have the correct valueURI
13
+ # * Adds correct rdf:resource to geo extension
14
+ # * Adds a LCSH or LCNAF keyword if needed
15
+ #
16
+ def resolve_placenames(g, modsFn, flags)
17
+ puts "Processing #{modsFn}" if flags[:verbose]
18
+ mods = Nokogiri::XML(File.open(modsFn, 'rb'))
19
+ r = mods.xpath('//mods:geographic', { 'mods' => 'http://www.loc.gov/mods/v3' })
20
+ r.each do |i|
21
+ ap({:i => i}) if flags[:debug]
22
+ k = i.content
24
23
 
25
- # Verify Gazetteer keyword
26
- uri = @@g.find_uri_by_keyword(k)
27
- if uri.nil?
28
- puts "WARNING: Missing gazetteer entry for '#{k}'" if flags[:verbose]
29
- next
30
- end
24
+ # Verify Gazetteer keyword
25
+ uri = g.find_placename_uri(k)
26
+ if uri.nil?
27
+ puts "WARNING: Missing gazetteer entry for '#{k}'" if flags[:verbose]
28
+ next
29
+ end
31
30
 
32
- # Ensure correct valueURI for subject/geographic for GeoNames
33
- i['valueURI'] = uri
34
- i['authority'] = 'geonames'
35
- i['authorityURI'] = 'http://www.geonames.org/ontology#'
31
+ # Ensure correct valueURI for subject/geographic for GeoNames
32
+ i['valueURI'] = uri
33
+ i['authority'] = 'geonames'
34
+ i['authorityURI'] = 'http://www.geonames.org/ontology#'
36
35
 
37
- # Correct any linkages for placenames in the geo extension
38
- coverages = mods.xpath('//mods:extension//dc:coverage', { 'mods' => 'http://www.loc.gov/mods/v3', 'dc' => 'http://purl.org/dc/elements/1.1/' })
39
- coverages.each do |j|
40
- if j['dc:title'] == k
41
- puts "Correcting dc:coverage@rdf:resource for #{k}" if flags[:debug]
42
- j['rdf:resource'] = uri
36
+ # Correct any linkages for placenames in the geo extension
37
+ coverages = mods.xpath('//mods:extension//dc:coverage', { 'mods' => 'http://www.loc.gov/mods/v3', 'dc' => 'http://purl.org/dc/elements/1.1/' })
38
+ coverages.each do |j|
39
+ if j['dc:title'] == k
40
+ puts "Correcting dc:coverage@rdf:resource for #{k}" if flags[:debug]
41
+ j['rdf:resource'] = uri + 'about.rdf'
42
+ end
43
43
  end
44
- end
45
44
 
46
- # Add a LC heading if needed
47
- lc = @@g.find_lc_by_keyword(k)
48
- ap({:lc => lc}) if flags[:debug]
49
- unless lc.nil? or k == lc
50
- puts "Adding Library of Congress entry to end of MODS record" if flags[:verbose]
51
- lcauth = @@g.find_lcauth_by_keyword(k)
52
- unless lcauth.nil?
53
- lcuri = @@g.find_lcuri_by_keyword(k)
54
- unless lcuri.nil?
55
- lcuri = " valueURI='#{lcuri}'"
45
+ # Add a LC heading if needed
46
+ lc = g.find_loc_keyword(k)
47
+ ap({:lc => lc}) if flags[:debug]
48
+ unless lc.nil? or k == lc
49
+ puts "Adding Library of Congress entry to end of MODS record" if flags[:verbose]
50
+ lcauth = g.find_loc_authority(k)
51
+ unless lcauth.nil?
52
+ lcuri = g.find_loc_authority(k)
53
+ unless lcuri.nil?
54
+ lcuri = " valueURI='#{lcuri}'"
55
+ end
56
+ i.parent.parent << Nokogiri::XML("
57
+ <subject>
58
+ <geographic authority='#{lcauth}'#{lcuri}>#{lc}</geographic>
59
+ </subject>
60
+ ").root
56
61
  end
57
- i.parent.parent << Nokogiri::XML("
58
- <subject>
59
- <geographic authority='#{lcauth}'#{lcuri}>#{lc}</geographic>
60
- </subject>
61
- ").root
62
62
  end
63
+ ap({:i => i}) if flags[:debug]
63
64
  end
64
- ap({:i => i}) if flags[:debug]
65
- end
66
65
 
67
- # Save XML tree
68
- mods.write_to(File.open(modsFn, 'wb'), :encoding => 'UTF-8', :indent => 2)
69
- end
66
+ # Save XML tree
67
+ mods.write_to(File.open(modsFn, 'wb'), :encoding => 'UTF-8', :indent => 2)
68
+ end
70
69
 
71
- def main(flags)
72
- File.umask(002)
73
- puts "Searching for MODS records..." if flags[:verbose]
74
- Dir.glob(flags[:workspacedir] + '/**/' + DruidTools::Druid.glob + '/metadata/descMetadata.xml') do |modsFn|
75
- resolve_placenames(modsFn, flags)
70
+ def main(flags)
71
+ g = GeoHydra::Gazetteer.new
72
+ File.umask(002)
73
+ puts "Searching for MODS records..." if flags[:verbose]
74
+ Dir.glob(flags[:workspacedir] + '/**/' + DruidTools::Druid.glob + '/metadata/descMetadata.xml') do |modsFn|
75
+ resolve_placenames(g, modsFn, flags)
76
+ end
76
77
  end
77
- end
78
78
 
79
- # __MAIN__
80
- begin
81
- flags = {
82
- :debug => false,
83
- :verbose => false,
84
- :workspacedir => GeoHydra::Config.geohydra.workspace || 'workspace'
85
- }
79
+ def run(args)
80
+ flags = {
81
+ :debug => false,
82
+ :verbose => false,
83
+ :workspacedir => GeoHydra::Config.geohydra.workspace || 'workspace'
84
+ }
86
85
 
87
- OptionParser.new do |opts|
88
- opts.banner = <<EOM
89
- Usage: #{File.basename(__FILE__)} [options]
86
+ OptionParser.new do |opts|
87
+ opts.banner = <<EOM
88
+ Usage: #{File.basename(__FILE__)} [options]
90
89
  EOM
91
- opts.on('-v', '--verbose', 'Run verbosely') do |v|
92
- flags[:debug] = true if flags[:verbose]
93
- flags[:verbose] = true
94
- end
95
- opts.on('--workspace DIR', "Workspace directory for assembly (default: #{flags[:workspacedir]})") do |v|
96
- flags[:workspacedir] = v
90
+ opts.on('-v', '--verbose', 'Run verbosely') do |v|
91
+ flags[:debug] = true if flags[:verbose]
92
+ flags[:verbose] = true
93
+ end
94
+ opts.on('--workspace DIR', "Workspace directory for assembly (default: #{flags[:workspacedir]})") do |v|
95
+ flags[:workspacedir] = v
96
+ end
97
+ end.parse!(args)
98
+
99
+ %w{workspacedir}.each do |k|
100
+ d = flags[k.to_sym]
101
+ raise ArgumentError, "Missing directory #{d}" unless d.nil? or File.directory? d
97
102
  end
98
- end.parse!
99
103
 
100
- %w{workspacedir}.each do |k|
101
- d = flags[k.to_sym]
102
- raise ArgumentError, "Missing directory #{d}" unless d.nil? or File.directory? d
104
+ ap({:flags => flags}) if flags[:debug]
105
+ main flags
103
106
  end
104
-
105
- ap({:flags => flags}) if flags[:debug]
106
- main flags
107
- rescue SystemCallError => e
108
- $stderr.puts "ERROR: #{e.message}"
109
- exit(-1)
110
107
  end
108
+
109
+ # __MAIN__
110
+ AssemblePlacenames.new.run(ARGV)
@@ -3,25 +3,31 @@
3
3
  require 'geohydra'
4
4
  require 'json'
5
5
 
6
- def doit(shp)
7
- r = {}
8
- r['druid'] = File.basename(File.dirname(File.dirname(shp)))
9
- raise ArgumentError unless GeoHydra::Utils.shapefile?(shp)
10
- r['geometryType'] = GeoHydra::Transform.geometry_type(shp)
11
- r['filename'] = File.basename(shp)
12
- File.open(File.join(File.dirname(shp), 'geoOptions.json'), 'w') do |f|
13
- f.puts r.to_json.to_s
6
+ class BuildStageOptions < GeoHydra::Process
7
+ # @param [String] shp assumes foo/bar/aa111bb1111/temp/shapefile.shp
8
+ def doit(shp)
9
+ r = {}
10
+ r['druid'] = File.basename(File.dirname(File.dirname(shp)))
11
+ raise ArgumentError, "SyntaxError: Not a shapefile: #{shp}" unless GeoHydra::Utils.shapefile?(shp)
12
+ r['geometryType'] = GeoHydra::Transform.geometry_type(shp)
13
+ r['filename'] = File.basename(shp)
14
+ File.open(File.join(File.dirname(shp), 'geoOptions.json'), 'w') do |f|
15
+ f.puts r.to_json.to_s
16
+ end
14
17
  end
15
-
16
- end
17
18
 
18
- if ARGV.empty?
19
- Dir.glob('/var/geomdtk/current/stage/**/temp/*.shp') do |shp|
20
- doit(shp)
21
- end
22
- else
23
- ARGV.each do |shp|
24
- doit(shp)
19
+ def run(args)
20
+ if args.empty?
21
+ Dir.glob('/var/geomdtk/current/stage/**/temp/*.shp') do |shp|
22
+ doit(shp)
23
+ end
24
+ else
25
+ args.each do |shp|
26
+ doit(shp)
27
+ end
28
+ end
25
29
  end
26
-
27
30
  end
31
+
32
+ # __MAIN__
33
+ BuildStageOptions.new.run(ARGV)
@@ -4,82 +4,81 @@ require 'druid-tools'
4
4
  require 'fileutils'
5
5
  require 'optparse'
6
6
 
7
+ class DeriveWGS84 < GeoHydra::Process
8
+ def run(args)
9
+ File.umask(002)
10
+ flags = {
11
+ :overwrite_prj => true,
12
+ :verbose => false,
13
+ :workspacedir => GeoHydra::Config.geohydra.workspace || 'workspace',
14
+ :tmpdir => GeoHydra::Config.geohydra.tmpdir || 'tmp',
15
+ # ogr2ogr is using a different WKT than GeoServer -- this one is from GeoServer 2.3.1.
16
+ # As implemented by EPSG database on HSQL:
17
+ # http://docs.geotools.org/latest/userguide/library/referencing/hsql.html
18
+ # Also see:
19
+ # http://spatialreference.org/ref/epsg/4326/prettywkt/
20
+ :wkt => {
21
+ '4326' => %Q{
22
+ GEOGCS["WGS 84",
23
+ DATUM["WGS_1984",
24
+ SPHEROID["WGS 84",6378137,298.257223563,
25
+ AUTHORITY["EPSG","7030"]],
26
+ AUTHORITY["EPSG","6326"]],
27
+ PRIMEM["Greenwich",0,
28
+ AUTHORITY["EPSG","8901"]],
29
+ UNIT["degree",0.01745329251994328,
30
+ AUTHORITY["EPSG","9122"]],
31
+ AUTHORITY["EPSG","4326"]]
32
+ }.split.join.freeze
33
+ }
7
34
 
35
+ }
8
36
 
9
- # __MAIN__
10
- begin
11
- File.umask(002)
12
- flags = {
13
- :overwrite_prj => true,
14
- :verbose => false,
15
- :workspacedir => GeoHydra::Config.geohydra.workspace || 'workspace',
16
- :tmpdir => GeoHydra::Config.geohydra.tmpdir || 'tmp',
17
- # ogr2ogr is using a different WKT than GeoServer -- this one is from GeoServer 2.3.1.
18
- # As implemented by EPSG database on HSQL:
19
- # http://docs.geotools.org/latest/userguide/library/referencing/hsql.html
20
- # Also see:
21
- # http://spatialreference.org/ref/epsg/4326/prettywkt/
22
- :wkt => {
23
- '4326' => %Q{
24
- GEOGCS["WGS 84",
25
- DATUM["WGS_1984",
26
- SPHEROID["WGS 84",6378137,298.257223563,
27
- AUTHORITY["EPSG","7030"]],
28
- AUTHORITY["EPSG","6326"]],
29
- PRIMEM["Greenwich",0,
30
- AUTHORITY["EPSG","8901"]],
31
- UNIT["degree",0.01745329251994328,
32
- AUTHORITY["EPSG","9122"]],
33
- AUTHORITY["EPSG","4326"]]
34
- }.split.join.freeze
35
- }
36
-
37
- }
38
-
39
- OptionParser.new do |opts|
40
- opts.banner = <<EOM
41
- Usage: #{File.basename(__FILE__)} [options] [druid...]
37
+ OptionParser.new do |opts|
38
+ opts.banner = <<EOM
39
+ Usage: #{File.basename(__FILE__)} [options] [druid...]
42
40
  EOM
43
- opts.on("-v", "--verbose", "Run verbosely") do |v|
44
- flags[:verbose] = true
45
- end
46
- opts.on("--workspace DIR", "Workspace directory for assembly (default: #{flags[:workspacedir]})") do |v|
47
- flags[:workspacedir] = v
48
- end
49
- opts.on("--tmpdir DIR", "Temporary directory for assembly (default: #{flags[:tmpdir]})") do |v|
50
- flags[:tmpdir] = v
51
- end
52
- opts.on("--wkt SRID FILE", "Read WKT for SRID from FILE") do |srid, f|
53
- flags[:wkt][srid.to_s] = File.read(f).split.join.freeze
54
- end
55
- end.parse!
56
-
57
- [flags[:tmpdir], flags[:workspacedir]].each do |d|
58
- raise ArgumentError, "Missing directory #{d}" unless File.directory? d
59
- end
60
-
61
- if ARGV.empty?
62
- # matches druid workspace structure
63
- Dir.glob(flags[:workspacedir] + '/??/???/??/????/???????????/content/*.zip').each do |fn|
64
- id = File.basename(File.dirname(File.dirname(fn)))
65
- druid = DruidTools::Druid.new(id, flags[:workspacedir])
66
- unless fn =~ %r{_EPSG_}i
67
- puts "Processing #{druid.id} #{fn}"
68
- GeoHydra::Transform.reproject druid, fn, flags
41
+ opts.on("-v", "--verbose", "Run verbosely") do |v|
42
+ flags[:verbose] = true
43
+ end
44
+ opts.on("--workspace DIR", "Workspace directory for assembly (default: #{flags[:workspacedir]})") do |v|
45
+ flags[:workspacedir] = v
69
46
  end
47
+ opts.on("--tmpdir DIR", "Temporary directory for assembly (default: #{flags[:tmpdir]})") do |v|
48
+ flags[:tmpdir] = v
49
+ end
50
+ opts.on("--wkt SRID FILE", "Read WKT for SRID from FILE") do |srid, f|
51
+ flags[:wkt][srid.to_s] = File.read(f).split.join.freeze
52
+ end
53
+ end.parse!(args)
54
+
55
+ [flags[:tmpdir], flags[:workspacedir]].each do |d|
56
+ raise ArgumentError, "Missing directory #{d}" unless File.directory? d
70
57
  end
71
- else
72
- ARGV.each do |id|
73
- druid = DruidTools::Druid.new(id, flags[:workspacedir])
74
- Dir.glob(druid.content_dir + '/*.zip').each do |fn|
58
+
59
+ if args.empty?
60
+ # matches druid workspace structure
61
+ Dir.glob(flags[:workspacedir] + '/??/???/??/????/???????????/content/data.zip').each do |fn|
62
+ id = File.basename(File.dirname(File.dirname(fn)))
63
+ druid = DruidTools::Druid.new(id, flags[:workspacedir])
75
64
  unless fn =~ %r{_EPSG_}i
76
65
  puts "Processing #{druid.id} #{fn}"
77
66
  GeoHydra::Transform.reproject druid, fn, flags
78
67
  end
79
68
  end
69
+ else
70
+ args.each do |id|
71
+ druid = DruidTools::Druid.new(id, flags[:workspacedir])
72
+ Dir.glob(druid.content_dir + '/data.zip').each do |fn|
73
+ unless fn =~ %r{_EPSG_}i
74
+ puts "Processing #{druid.id} #{fn}"
75
+ GeoHydra::Transform.reproject druid, fn, flags
76
+ end
77
+ end
78
+ end
80
79
  end
81
80
  end
82
- rescue SystemCallError => e
83
- $stderr.puts "ERROR: #{e.message}"
84
- exit(-1)
85
81
  end
82
+
83
+ # __MAIN__
84
+ DeriveWGS84.new.run(ARGV)