ffi-gdal 0.0.4 → 1.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (138) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +7 -1
  3. data/Rakefile +12 -1
  4. data/TODO.md +11 -0
  5. data/ffi-gdal.gemspec +2 -2
  6. data/lib/ext/error_symbols.rb +59 -0
  7. data/lib/ext/float_ext.rb +15 -0
  8. data/lib/ext/narray_ext.rb +16 -0
  9. data/lib/ext/to_bool.rb +2 -0
  10. data/lib/ffi-gdal.rb +139 -4
  11. data/lib/ffi/{gdal/cpl_conv.rb → cpl/conv_h.rb} +2 -3
  12. data/lib/ffi/{gdal/cpl_error.rb → cpl/error_h.rb} +1 -25
  13. data/lib/ffi/cpl/minixml_h.rb +14 -0
  14. data/lib/ffi/{gdal/cpl_string.rb → cpl/string_h.rb} +0 -25
  15. data/lib/ffi/{gdal/cpl_vsi.rb → cpl/vsi_h.rb} +0 -0
  16. data/lib/ffi/cpl/xml_node.rb +13 -0
  17. data/lib/ffi/gdal.rb +57 -593
  18. data/lib/ffi/gdal/alg_h.rb +127 -0
  19. data/lib/ffi/gdal/gdal_grid_data_metrics_options.rb +14 -0
  20. data/lib/ffi/gdal/gdal_grid_inverse_distance_to_a_power_options.rb +19 -0
  21. data/lib/ffi/gdal/gdal_grid_moving_average_options.rb +14 -0
  22. data/lib/ffi/gdal/gdal_grid_nearest_neighbor_options.rb +13 -0
  23. data/lib/ffi/gdal/gdal_h.rb +683 -0
  24. data/lib/ffi/gdal/gdal_rpc_info.rb +27 -0
  25. data/lib/ffi/gdal/gdal_transformer_info.rb +14 -0
  26. data/lib/ffi/gdal/gdal_warp_options.rb +43 -0
  27. data/lib/ffi/gdal/grid_h.rb +51 -0
  28. data/lib/ffi/gdal/version.rb +1 -1
  29. data/lib/ffi/gdal/warper_h.rb +48 -0
  30. data/lib/ffi/ogr.rb +12 -0
  31. data/lib/ffi/ogr/api_h.rb +553 -0
  32. data/lib/ffi/ogr/core_h.rb +148 -0
  33. data/lib/ffi/ogr/featurestyle_h.rb +22 -0
  34. data/lib/ffi/ogr/geocoding_h.rb +21 -0
  35. data/lib/ffi/ogr/ogr_contour_writer_info.rb +14 -0
  36. data/lib/ffi/ogr/ogr_envelope.rb +12 -0
  37. data/lib/ffi/ogr/ogr_envelope_3d.rb +14 -0
  38. data/lib/ffi/ogr/ogr_field.rb +50 -0
  39. data/lib/ffi/ogr/ogr_style_param.rb +12 -0
  40. data/lib/ffi/ogr/ogr_style_value.rb +13 -0
  41. data/lib/ffi/ogr/srs_api_h.rb +325 -0
  42. data/lib/gdal/color_entry.rb +47 -0
  43. data/lib/gdal/color_entry_extensions.rb +30 -0
  44. data/lib/gdal/color_interpretation.rb +15 -0
  45. data/lib/gdal/color_table.rb +146 -0
  46. data/lib/gdal/color_table_extensions.rb +47 -0
  47. data/lib/gdal/color_table_types/cmyk.rb +25 -0
  48. data/lib/gdal/color_table_types/gray.rb +9 -0
  49. data/lib/gdal/color_table_types/hls.rb +21 -0
  50. data/lib/gdal/color_table_types/rgb.rb +25 -0
  51. data/lib/gdal/data_type.rb +38 -0
  52. data/lib/gdal/dataset.rb +437 -0
  53. data/lib/gdal/dataset_extensions.rb +496 -0
  54. data/lib/gdal/driver.rb +244 -0
  55. data/lib/gdal/driver_extensions.rb +56 -0
  56. data/lib/gdal/environment_methods.rb +43 -0
  57. data/lib/{ffi-gdal → gdal}/exceptions.rb +4 -1
  58. data/lib/gdal/geo_transform.rb +188 -0
  59. data/lib/gdal/geo_transform_extensions.rb +90 -0
  60. data/lib/gdal/logger.rb +7 -0
  61. data/lib/{ffi-gdal → gdal}/major_object.rb +15 -14
  62. data/lib/gdal/options.rb +49 -0
  63. data/lib/gdal/raster_attribute_table.rb +185 -0
  64. data/lib/gdal/raster_attribute_table_extensions.rb +40 -0
  65. data/lib/{ffi-gdal → gdal}/raster_band.rb +227 -99
  66. data/lib/gdal/raster_band_extensions.rb +198 -0
  67. data/lib/{ffi-gdal → gdal}/version_info.rb +8 -0
  68. data/lib/gdal/warp_operation.rb +96 -0
  69. data/lib/ogr/coordinate_transformation.rb +108 -0
  70. data/lib/ogr/data_source.rb +172 -0
  71. data/lib/ogr/data_source_extensions.rb +32 -0
  72. data/lib/ogr/driver.rb +119 -0
  73. data/lib/ogr/envelope.rb +80 -0
  74. data/lib/ogr/envelope_extensions.rb +92 -0
  75. data/lib/ogr/exceptions.rb +35 -0
  76. data/lib/ogr/feature.rb +212 -0
  77. data/lib/ogr/feature_definition.rb +120 -0
  78. data/lib/ogr/feature_definition_extensions.rb +36 -0
  79. data/lib/ogr/feature_extensions.rb +31 -0
  80. data/lib/ogr/field.rb +91 -0
  81. data/lib/ogr/field_extensions.rb +23 -0
  82. data/lib/ogr/geocoding_session.rb +84 -0
  83. data/lib/ogr/geometry.rb +617 -0
  84. data/lib/ogr/geometry_extensions.rb +60 -0
  85. data/lib/ogr/geometry_types/collection.rb +45 -0
  86. data/lib/ogr/geometry_types/curve.rb +120 -0
  87. data/lib/ogr/geometry_types/surface.rb +20 -0
  88. data/lib/ogr/layer.rb +226 -0
  89. data/lib/ogr/layer_extensions.rb +55 -0
  90. data/lib/ogr/line_string.rb +7 -0
  91. data/lib/ogr/linear_ring.rb +6 -0
  92. data/lib/ogr/multi_line_string.rb +9 -0
  93. data/lib/ogr/multi_point.rb +7 -0
  94. data/lib/ogr/multi_polygon.rb +14 -0
  95. data/lib/ogr/point.rb +89 -0
  96. data/lib/ogr/polygon.rb +9 -0
  97. data/lib/ogr/spatial_reference.rb +723 -0
  98. data/lib/ogr/spatial_reference_extensions.rb +32 -0
  99. data/lib/ogr/style_table.rb +17 -0
  100. data/lib/ogr/style_table_extensions.rb +16 -0
  101. data/spec/{ffi-gdal/integration → integration}/color_table_info_spec.rb +1 -1
  102. data/spec/{ffi-gdal/integration → integration}/dataset_info_spec.rb +0 -0
  103. data/spec/{ffi-gdal/integration → integration}/driver_info_spec.rb +1 -1
  104. data/spec/{ffi-gdal/integration → integration}/geo_transform_info_spec.rb +0 -0
  105. data/spec/{ffi-gdal/integration → integration}/raster_attribute_table_info_spec.rb +1 -1
  106. data/spec/{ffi-gdal/integration → integration}/raster_band_info_spec.rb +5 -5
  107. data/spec/spec_helper.rb +4 -1
  108. data/spec/support/shapefiles/states_21basic/states.prj +1 -0
  109. data/spec/support/shapefiles/states_21basic/states.sbn +0 -0
  110. data/spec/support/shapefiles/states_21basic/states.sbx +0 -0
  111. data/spec/support/shapefiles/states_21basic/states.shp +0 -0
  112. data/spec/support/worldfiles/SR_50M/SR_50M.VERSION.txt +1 -0
  113. data/spec/support/worldfiles/SR_50M/SR_50M.prj +1 -0
  114. data/spec/support/worldfiles/SR_50M/SR_50M.tfw +6 -0
  115. data/spec/{ext/cpl_error_symbols_spec.rb → unit/ext/error_symbols_spec.rb} +1 -1
  116. data/spec/unit/gdal/color_table_spec.rb +146 -0
  117. data/spec/unit/ogr/layer_spec.rb +97 -0
  118. data/spec/unit/ogr/linear_ring_spec.rb +111 -0
  119. data/spec/unit/ogr/point_spec.rb +321 -0
  120. data/spec/{ffi-gdal/unit → unit}/version_info_spec.rb +1 -1
  121. data/testing_gdal.rb +168 -0
  122. data/testing_gdalwarp.rb +91 -0
  123. data/testing_layer_to_layer.rb +35 -0
  124. data/testing_ndvi.rb +76 -0
  125. data/testing_nir.rb +77 -0
  126. data/testing_ogr.rb +63 -0
  127. metadata +167 -59
  128. data/lib/ext/cpl_error_symbols.rb +0 -37
  129. data/lib/ffi-gdal/color_table.rb +0 -59
  130. data/lib/ffi-gdal/dataset.rb +0 -359
  131. data/lib/ffi-gdal/driver.rb +0 -151
  132. data/lib/ffi-gdal/geo_transform.rb +0 -137
  133. data/lib/ffi-gdal/raster_attribute_table.rb +0 -78
  134. data/lib/ffi/gdal/ogr_api.rb +0 -21
  135. data/lib/ffi/gdal/ogr_core.rb +0 -195
  136. data/lib/ffi/gdal/ogr_srs_api.rb +0 -44
  137. data/meow.rb +0 -144
  138. data/rubby.rb +0 -224
@@ -0,0 +1,91 @@
1
+ require 'bundler/setup'
2
+ require 'pry'
3
+ require 'ffi-gdal'
4
+
5
+ include GDAL::Logger
6
+ GDAL::Logger.logging_enabled = true
7
+
8
+
9
+ # https://trac.osgeo.org/gdal/ticket/1599
10
+
11
+ #floyd_path = '/Users/sloveless/Development/projects/ffi-gdal/spec/support/images/Floyd/Floyd_1058_20140612_NRGB.tif'
12
+ #floyd = GDAL::Dataset.open(floyd_path, 'r')
13
+ #floyd_wkt = 'MULTIPOLYGON(((-87.5530099868775 31.16710573359053,-87.65300998687 31.167105000001, -87.5530099868775 31.165600160261103,-87.55384683609009 31.16710573359053,-87.5530099868775 31.16710573359053)))'
14
+ spatial_ref = OGR::SpatialReference.new_from_epsg(4326)
15
+ #floyd_geometry = OGR::Geometry.create_from_wkt(floyd_wkt, spatial_ref)
16
+ #floyd_geometry.transform_to!(floyd.spatial_reference)
17
+
18
+ harper_wkt = "MULTIPOLYGON (((-87.5639814967 31.18677438740807, -87.56095596493151 31.186756030714633, -87.56127783001327 31.185048842709264, -87.56022640407895 31.184259487308854, -87.55996891201355 31.183800556723995, -87.56037660778345 31.183470125325623, -87.55999036968537 31.182295248791167, -87.55936809719456 31.181891381615166, -87.55887457073558 31.18031261157701, -87.55968996227632 31.180018884013712, -87.55872436703105 31.17799948235227, -87.55769439876855 31.177852615097343, -87.55664297283512 31.177283502330614, -87.5565464133106 31.175998396405248, -87.56492563427345 31.176016755184154, -87.56496854961708 31.177154992523167, -87.5639814967 31.177669030707264, -87.56415315807725 31.178752173461035, -87.56501146496161 31.179908735942732, -87.56496854961708 31.18462663017465, -87.56400295437183 31.184810201073287, -87.5639814967 31.18677438740807)))"
19
+ harper_path = '/Users/sloveless/Development/projects/ffi-gdal/spec/support/images/Harper/Harper_1058_20140612_NRGB.tif'
20
+ harper = GDAL::Dataset.open(harper_path, 'r')
21
+ harper_geometry = OGR::Geometry.create_from_wkt(harper_wkt, spatial_ref)
22
+ harper_geometry.transform_to!(harper.spatial_reference)
23
+
24
+ #epsg4326_geom = floyd.to_geometry
25
+
26
+ #floyd.close
27
+ harper.close
28
+
29
+
30
+ #puts floyd.contains_geometry?(floyd_wkt)
31
+
32
+ #`gdalwarp -wo "INIT_DEST=255,0,255" -wo "#{floyd_geometry.to_wkt}" #{floyd_path} cut-out.tif`
33
+ #`gdalwarp -wo "CUTLINE=#{floyd_geometry.to_wkt}" #{floyd_path} cut-out.tif`
34
+ #`gdalwarp -dstnodata -1 -cutline "#{floyd_geometry.to_wkt}" #{floyd_path} cut-out.tif`
35
+ #cmd = %{gdalwarp -dstnodata -1 -cutline "#{floyd_geometry.to_wkt}" -crop_to_cutline #{floyd_path} cut-out.tif}
36
+ #cmd = %{gdalwarp -dstnodata -1 -cutline "#{floyd_geometry.to_wkt}" -crop_to_cutline #{floyd_path} cut-out.tif}
37
+
38
+ # Result: No file
39
+ # cmd = %{gdalwarp -cutline "#{floyd_geometry.to_wkt}" -crop_to_cutline #{floyd_path} cut-out.tif}
40
+
41
+ #cmd = %{gdalwarp -wo "INIT_DEST=NO_DATA" -wo "CUTLINE=#{floyd_geometry.to_wkt}" -crop_to_cutline #{floyd_path} cut-out.tif}
42
+ #cmd = %{gdalwarp -wo "CUTLINE_ALL_TOUCHED=TRUE" -wo "INIT_DEST=NO_DATA" -wo "CUTLINE=#{floyd_geometry.to_wkt}" -crop_to_cutline #{floyd_path} cut-out.tif}
43
+ #cmd = %{gdalwarp -wo "CUTLINE_ALL_TOUCHED=TRUE" -wo "CUTLINE=#{floyd_geometry.to_wkt}" -wo "SAMPLE_GRID=YES" #{floyd_path} cut-out.tif}
44
+ #cmd = %{gdalwarp -wo "ALL_TOUCHED=TRUE" -wo "CUTLINE=#{floyd_geometry.to_wkt}" #{floyd_path} cut-out.tif}
45
+ #cmd = %{gdal_grid -clipsrc "#{floyd_geometry.to_wkt}" #{floyd_path} cut-out.tif}
46
+
47
+ require 'fileutils'
48
+ FileUtils.rm_rf 'stuff'
49
+ FileUtils.rm_rf 'stuff.shp'
50
+ FileUtils.rm_rf 'stuff.*'
51
+ FileUtils.rm_rf 'geometry.json'
52
+ FileUtils.rm_rf 'cut-out.tif'
53
+
54
+ #File.write('geometry.json', harper_geometry.to_geo_json)
55
+ #File.write('geometry.json', epsg4326_geom.to_geo_json)
56
+ #ogr_cmd = %{ogr2ogr -f "ESRI Shapefile" stuff.shp geometry.json OGRGeoJSON}
57
+ #p ogr_cmd
58
+
59
+ #{}`#{ogr_cmd}`
60
+
61
+ def make_shapefile(geo_json)
62
+ geo_json_file = Tempfile.new(%w[geo_json .json])
63
+ geo_json_file.write(geo_json)
64
+ geo_json_file.close
65
+
66
+ shape_dir = Dir.mktmpdir('shapes')
67
+ shapefile_name = 'clip_shape.shp'
68
+ shapefile_path = File.join(shape_dir, shapefile_name)
69
+
70
+ ogr_command = %{ogr2ogr -f "ESRI Shapefile" #{shapefile_path} #{geo_json_file.path} OGRGeoJSON}
71
+ logger.debug "Running command to make shapefile: #{ogr_command}"
72
+
73
+ `#{ogr_command}`
74
+
75
+ FileUtils.rm("#{shape_dir}/clip_shape.prj")
76
+
77
+ shape_dir
78
+ end
79
+
80
+ # Result: Empty file
81
+ #cmd = %{gdalwarp -wo "CUTLINE=#{floyd_wkt}" -s_srs "EPSG:32616" #{floyd_path} cut-out.tif}
82
+ #prj_file = File.expand_path('stuff.prj', __dir__)
83
+ #p prj_file
84
+ #FileUtils.rm prj_file
85
+ binding.pry
86
+
87
+ #cmd = %{gdalwarp -dstnodata -1 -s_srs EPSG:32616 -t_srs EPSG:26916 -crop_to_cutline -cutline stuff.shp #{floyd_path} cut-out.tif}
88
+ cmd = %{gdalwarp -dstnodata -1 -s_srs EPSG:32616 -t_srs EPSG:26916 -crop_to_cutline -cutline stuff.shp #{harper_path} cut-out.tif}
89
+
90
+ p cmd
91
+ `#{cmd}`
@@ -0,0 +1,35 @@
1
+ require 'bundler/setup'
2
+ require 'pry'
3
+ require 'ffi-gdal'
4
+
5
+ include GDAL::Logger
6
+ GDAL::Logger.logging_enabled = true
7
+
8
+ # http://pcjericks.github.io/py-gdalogr-cookbook/vector_layers.html#create-a-new-layer-from-the-extent-of-an-existing-layer
9
+
10
+ # Get a Layer's Extent
11
+ data_source = OGR::DataSource.open('spec/support/shapefiles/states_21basic/states.shp', 'r')
12
+ layer = data_source.layer(0)
13
+ extent = layer.extent
14
+
15
+ # extent = geometry.envelope.world_to_pixel(floyd.geo_transform)
16
+ # x_min = extent[:x_origin]
17
+ # x_max = extent[:x_max]
18
+ # y_min = extent[:y_origin]
19
+ # y_max = extent[:y_max]
20
+ # log "x_min: #{x_min}"
21
+ # log "y_min: #{y_min}"
22
+ # log "y_max: #{y_max}"
23
+ # log "x_max: #{x_max}"
24
+
25
+ # Create a polygon from the extent
26
+ ring = OGR::Geometry.create(:wkbLinearRing)
27
+ ring.add_point(extent.x_min, extent.y_min)
28
+ ring.add_point(extent.x_max, extent.y_min)
29
+ ring.add_point(extent.x_max, extent.y_max)
30
+ ring.add_point(extent.x_min, extent.y_max)
31
+ ring.add_point(extent.x_min, extent.y_min)
32
+ poly = OGR::Geometry.create(:wkbPolygon)
33
+ poly.add_geometry(ring)
34
+
35
+ binding.pry
data/testing_ndvi.rb ADDED
@@ -0,0 +1,76 @@
1
+ require 'bundler/setup'
2
+ require 'pry'
3
+ require 'ffi-gdal'
4
+
5
+ include GDAL::Logger
6
+ GDAL::Logger.logging_enabled = true
7
+
8
+
9
+ floyd_path = '/Users/sloveless/Development/projects/ffi-gdal/spec/support/images/Floyd/Floyd_1058_20140612_NRGB.tif'
10
+ floyd = GDAL::Dataset.open(floyd_path, 'r')
11
+ floyd_wkt = 'MULTIPOLYGON (((-87.5530099868775 31.16710573359053,-87.5530099868775 31.165600160261103,-87.55384683609009 31.16710573359053,-87.5530099868775 31.16710573359053)))'
12
+
13
+ # http://pcjericks.github.io/py-gdalogr-cookbook/vector_layers.html#convert-vector-layer-to-array
14
+ pixel_size = 25
15
+ no_data_value = -1
16
+
17
+ # Get the extent of the geometry
18
+ spatial_reference = OGR::SpatialReference.new_from_epsg(4326)
19
+ geometry = OGR::Geometry.create_from_wkt(floyd_wkt, spatial_reference)
20
+ geometry.transform_to!(floyd.spatial_reference)
21
+ source_srs = geometry.spatial_reference
22
+ polygon = geometry.geometry_at 0
23
+ ring = polygon.geometry_at 0
24
+
25
+ extent = geometry.envelope
26
+ x_min = extent.x_min
27
+ x_max = extent.x_max
28
+ y_min = extent.y_min
29
+ y_max = extent.y_max
30
+
31
+ log "x_min: #{x_min}"
32
+ log "y_min: #{y_min}"
33
+ log "y_max: #{y_max}"
34
+ log "x_max: #{x_max}"
35
+
36
+ # extent = geometry.envelope.world_to_pixel(floyd.geo_transform)
37
+ # x_min = extent[:x_origin]
38
+ # x_max = extent[:x_max]
39
+ # y_min = extent[:y_origin]
40
+ # y_max = extent[:y_max]
41
+ # log "x_min: #{x_min}"
42
+ # log "y_min: #{y_min}"
43
+ # log "y_max: #{y_max}"
44
+ # log "x_max: #{x_max}"
45
+
46
+
47
+ # Create the destination data source
48
+ x_res = ((x_max - x_min) / pixel_size).to_i
49
+ y_res = ((y_max - y_min) / pixel_size).to_i
50
+ log "x_res: #{x_res}"
51
+ log "y_res: #{y_res}"
52
+
53
+ #target_ds = GDAL::Driver.by_name('MEM').create_dataset('', x_res, y_res, data_type: :GDT_Float32)
54
+ target_ds = GDAL::Driver.by_name('GTiff').create_dataset('grr.tif', x_res, y_res, data_type: :GDT_Float32)
55
+
56
+ geo_transform = floyd.geo_transform
57
+ geo_transform.x_origin = x_min
58
+ geo_transform.pixel_width = pixel_size
59
+ geo_transform.y_origin = y_max
60
+ geo_transform.pixel_width = -pixel_size
61
+ target_ds.geo_transform = geo_transform
62
+ target_ds.projection = floyd.projection
63
+
64
+ band = target_ds.raster_band(1)
65
+ band.no_data_value = no_data_value
66
+ band.fill(100)
67
+
68
+ #target_ds.rasterize_geometries!(1, geometry, 1, all_touched: 'TRUE')
69
+ target_ds.rasterize_geometries!(1, ring, 1, all_touched: 'TRUE')
70
+
71
+ band.to_na
72
+
73
+
74
+ binding.pry
75
+
76
+ target_ds.close
data/testing_nir.rb ADDED
@@ -0,0 +1,77 @@
1
+ require 'bundler/setup'
2
+ require 'pry'
3
+ require 'ffi-gdal'
4
+
5
+ GDAL::Logger.logging_enabled = true
6
+
7
+ floyd_path = '/Users/sloveless/Development/projects/ffi-gdal/spec/support/images/Floyd/Floyd_1058_20140612_NRGB.tif'
8
+ floyd = GDAL::Dataset.open(floyd_path, 'r')
9
+
10
+ # dataset = floyd.extract_nir('nir.tif', 1)
11
+ # band = dataset.raster_band(1)
12
+ # colors = %w[644d1e 745924 856728 95742b a5812d b69930 c8b22d d8cb3c e8e65a
13
+ # f4ee79 e0e457 c8da42 afd135 97b73c 7e993c 657e36 4b612c 314441 23295e
14
+ # 282973]
15
+ # band.colorize!(*colors)
16
+ # binding.pry
17
+ # dataset.close
18
+
19
+ # dataset = floyd.extract_ndvi('ndvi_float.tif', band_order: %i[nir red green blue],
20
+ # data_type: :GDT_Float32,
21
+ # remove_negatives: true,
22
+ # photometric: 'PALETTE')
23
+ # dataset.close
24
+
25
+ # byte_dataset = floyd.extract_ndvi('ndvi_byte.tif', band_order: %i[nir red green blue],
26
+ # data_type: :GDT_Byte,
27
+ # remove_negatives: true,
28
+ # photometric: 'PALETTE')
29
+ # byte_dataset.close
30
+ #
31
+ # uint16_dataset = floyd.extract_ndvi('ndvi_uint16.tif', band_order: %i[nir red green blue],
32
+ # data_type: :GDT_UInt16,
33
+ # remove_negatives: true,
34
+ # photometric: 'PALETTE')
35
+ # uint16_dataset.close
36
+ #
37
+
38
+ colors = %w[644d1e 745924 856728 95742b a5812d b69930 c8b22d d8cb3c e8e65a
39
+ f4ee79 e0e457 c8da42 afd135 97b73c 7e993c 657e36 4b612c 314441 23295e
40
+ 282973]
41
+
42
+ # byte_dataset = GDAL::Dataset.open('ndvi_byte.tif', 'w')
43
+ # byte_band = byte_dataset.raster_band(1)
44
+ # byte_band.colorize!(*colors)
45
+ # byte_dataset.close
46
+
47
+ # unit16_dataset = GDAL::Dataset.open('ndvi_uint16.tif', 'w')
48
+ # uint16_band = uint16_dataset.raster_band(1)
49
+ # uint16_band.colorize!(*colors)
50
+ # uint16_dataset.close
51
+
52
+ # g_uint16_dataset = floyd.extract_gndvi('gndvi_uint16.tif', band_order: %i[nir red green blue],
53
+ # data_type: :GDT_UInt16,
54
+ # remove_negatives: true,
55
+ # photometric: 'PALETTE'
56
+ # )
57
+ # g_uint16_dataset.close
58
+ #
59
+ # g_unit16_dataset = GDAL::Dataset.open('gndvi_uint16.tif', 'w')
60
+ # g_uint16_band = g_uint16_dataset.raster_band(1)
61
+ # g_uint16_band.colorize!(*colors)
62
+ # g_uint16_dataset.close
63
+
64
+ g_byte_dataset = floyd.extract_gndvi('gndvi_byte.tif', band_order: %i[nir red green blue],
65
+ data_type: :GDT_Byte,
66
+ remove_negatives: true,
67
+ photometric: 'PALETTE'
68
+ )
69
+ g_byte_dataset.close
70
+
71
+ g_byte_dataset = GDAL::Dataset.open('gndvi_byte.tif', 'w')
72
+ g_byte_band = g_byte_dataset.raster_band(1)
73
+ g_byte_band.colorize!(*colors)
74
+ binding.pry
75
+ g_byte_dataset.close
76
+
77
+ # floyd.extract_natural_color('nc.tif', band_order: %i[nir red green blue])
data/testing_ogr.rb ADDED
@@ -0,0 +1,63 @@
1
+ require 'bundler/setup'
2
+ require 'pry'
3
+ require 'ffi-gdal'
4
+
5
+ data_source = OGR::DataSource.open('spec/support/shapefiles/states_21basic/states.shp', 'r')
6
+
7
+ point_wkt = 'POINT (1 2)'
8
+ point = OGR::Geometry.create_from_wkt(point_wkt)
9
+ other_point_wkt = 'POINT (1 2)'
10
+ other_point = OGR::Geometry.create_from_wkt(point_wkt)
11
+
12
+ line_string_wkt = 'LINESTRING (1 2, 10 30, 40 40, 1 2)'
13
+ line_string = OGR::Geometry.create_from_wkt(line_string_wkt)
14
+ other_line_string_wkt = 'LINESTRING (10 10, 0 30, 40 10)'
15
+ other_line_string = OGR::Geometry.create_from_wkt(other_line_string_wkt)
16
+
17
+ polygon_wkt = "POLYGON ((0 0,4 0,4 4,0 4,0 0), (1 1, 2 1, 2 2, 1 1))"
18
+ polygon = OGR::Geometry.create_from_wkt(polygon_wkt)
19
+ other_polygon_wkt = "POLYGON ((1 1,5 1,5 5,1 5,1 1), (10 10, 20 10, 20 20, 10 10))"
20
+ other_polygon = OGR::Geometry.create_from_wkt(other_polygon_wkt)
21
+
22
+ multi_point_wkt = 'MULTIPOINT ((10 40), (40 30), (20 20), (30 10))'
23
+ multi_point = OGR::Geometry.create_from_wkt(multi_point_wkt)
24
+
25
+ multi_line_string_wkt = 'MULTILINESTRING ((10 10, 20 20, 10 40), (40 40, 30 30, 40 20, 30 10))'
26
+ multi_line_string = OGR::Geometry.create_from_wkt(multi_line_string_wkt)
27
+
28
+ multi_polygon_wkt = 'MULTIPOLYGON (((-120.03296317083633 44.226828996384285, -120.03199741570855 44.230616638863914, -120.03305119285443 44.23322276021398, -120.03305439612939 44.23323503554639, -120.03305423080232 44.233247523039175, -120.03305070309673 44.23325975261691, -120.03304394580853 44.233271263913274, -120.03303421330706 44.233281623601044, -120.0330218719597 44.23329044170392, -120.03300738634044 44.23329738627662, -120.03299130174162 44.23330219590042, -120.03297422364709 44.23330468952384, -120.03295679493954 44.23330477327791, -120.0329396717 44.23330244400986, -120.03259652218235 44.23323046886841, -120.03259605091168 44.23323469214073, -120.03259130838445 44.233246748969734, -120.03258339633375 44.23325791928269, -120.03257261443646 44.233267779993575, -120.03255937106756 44.233275957618844, -120.03254416783288 44.23328214242357, -120.03252758057009 44.23328610015274, -120.03251023753826 44.2332876809039, -120.032492795622 44.23328682480475, -120.0324759154512 44.23328356428076, -120.03246023637918 44.23327802282714, -120.03244635226639 44.233270410331386, -120.03229057481504 44.233166296752856, -120.03144275436163 44.23298846700243, -120.03135705202111 44.23542539118272, -120.03135483571377 44.23543806847976, -120.0313491680669 44.2354501823413, -120.0313402724131 44.23546125542315, -120.03132849928409 44.23547085139311, -120.03131431259804 44.235478592124444, -120.03129827137883 44.235484172595754, -120.03128100772805 44.23548737291011, -120.03126320191683 44.23548806696012, -120.03124555558011 44.235486227396926, -120.03122876406881 44.235481926707976, -120.03121348904955 44.23547533436071, -120.03120033243181 44.23546671012462, -120.03118981264993 44.23545639383555, -120.02629194435607 44.229488174527326, -120.0262841759258 44.22947593881562, -120.0262801234077 44.229462813795166, -120.02627996353844 44.22944937186798, -120.0262837032901 44.22943619925734, -120.02629117956641 44.22942387044152, -120.02630206631528 44.22941292309999, -120.02631588874878 44.229403834664076, -120.02650834059244 44.22930162063937, -120.02596466290531 44.22893822933382, -120.02595288197551 44.22892861642798, -120.02594398682248 44.22891752390089, -120.02593832881524 44.2289053899198, -120.02593613145164 44.22889269379079, -120.02593748153026 44.22887993702566, -120.02594232572132 44.2288676235318, -120.02595047267361 44.22885623970722, -120.0259616005729 44.228846235226946, -120.02597526985406 44.22883800528063, -120.0259909405644 44.22883187496161, -120.02600799369236 44.22882808642537, -120.02602575561929 44.228826789324046, -120.02604352472815 44.22882803489487, -120.02606059911827 44.2288317739361, -120.02607630433104 44.22883785875077, -120.02675839864344 44.229168810839475, -120.02688733695234 44.22910032953997, -120.02611125484312 44.228061533840545, -120.02610457348571 44.22805003875662, -120.02610110582951 44.22803783693943, -120.02610098163969 44.228025384999874, -120.02610420556363 44.2280131489091, -120.02611065695699 44.22800158656121, -120.0261200943985 44.22799113063793, -120.02613216472427 44.22798217241707, -120.02614641624366 44.227975047130094, -120.0261623156424 44.22797002141719, -120.02617926794002 44.22796728334896, -120.0261966387548 44.227966935388565, -120.02621377804353 44.22796899055725, -120.02623004442708 44.22797337194719, -120.0262448291917 44.2279799155993, -120.02625757906833 44.22798837663918, -120.02626781693645 44.22799843844071, -120.02754662923428 44.229551257921585, -120.030836241635 44.23114734101261, -120.03136956622194 44.229959117652726, -120.03138391393463 44.22955111324294, -120.03138620312208 44.229538207384174, -120.0313920671636 44.22952589494864, -120.03140126651873 44.229514678887824, -120.03141342540293 44.229505017367465, -120.03142804713777 44.22949730505196, -120.03144453443974 44.229491856982676, -120.03146221381887 44.22948889570851, -120.03148036308987 44.22948854219496, -120.03149824087296 44.229490810882744, -120.03151511687828 44.22949560909792, -120.03153030173767 44.22950274083756, -120.03154317516459 44.22951191477631, -120.0315532112922 44.22952275616695, -120.03156000257852 44.22953482814357, -120.03278854263438 44.22679758476189, -120.03286127379035 44.226512326846944, -120.03286465252121 44.226503048718484, -120.03286991708133 44.22649423317623, -120.03301731535839 44.22629080564284, -120.03302703028369 44.22628013425537, -120.03303948802117 44.22627104306898, -120.03305420051213 44.22626388825138, -120.03307059136289 44.22625895010873, -120.0330880184265 44.22625642210408, -120.03310579896007 44.22625640327766, -120.03312323637284 44.226258894367135, -120.03313964751646 44.22626379777834, -120.03315438944897 44.22627092140904, -120.03316688462326 44.22627998617475, -120.03317664351395 44.22629063694302, -120.03318328379541 44.22630245644617, -120.03318654532022 44.226314981629145, -120.03318630031114 44.22632772179051, -120.0331825583669 44.22634017780693, -120.03296317083633 44.226828996384285)))'
29
+ multi_polygon = OGR::Geometry.create_from_wkt(multi_polygon_wkt)
30
+
31
+ # point_wkt = 'POINT (1 2)'
32
+ # point = OGR::Geometry.create_from_wkt(point_wkt)
33
+ # puts <<-POINT
34
+ # boundary: #{point.boundary}
35
+ # convex_hull: #{point.convex_hull}
36
+ # count: #{point.count}
37
+ # name: #{point.name}
38
+ # point_count: #{point.point_count}
39
+ # points: #{point.points}
40
+ # length: #{point.length}
41
+ # area: #{point.area}
42
+ # valid: #{point.valid?}
43
+ # boundary: #{boundary}
44
+ # POINT
45
+ #
46
+ def things(geometry)
47
+ geometry = geometry.clone
48
+ ls = geometry.to_line_string
49
+ mls = geometry.to_multi_line_string
50
+ #mpoint = geometry.to_multi_point
51
+ #mpolygon = geometry.to_multi_polygon
52
+ polygon = geometry.to_polygon
53
+
54
+ {
55
+ line_string_points: ls ? ls.point_count : nil,
56
+ multi_line_string_points: mls ? mls.point_count : nil,
57
+ #multi_point_points: mpoint ? mpoint.point_count : nil,
58
+ #multi_polygon_points: mpolygon ? mpolygon.point_count : nil,
59
+ #polygon_points: polygon ? polygon.point_count : nil
60
+ }
61
+ end
62
+
63
+ binding.pry
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ffi-gdal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 1.0.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Loveless
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-27 00:00:00.000000000 Z
11
+ date: 2014-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: log_switch
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 1.0.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 1.0.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: multi_xml
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -66,20 +66,6 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 0.6.0
69
- - !ruby/object:Gem::Dependency
70
- name: ruby-progressbar
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: bundler
85
71
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +108,20 @@ dependencies:
122
108
  - - "~>"
123
109
  - !ruby/object:Gem::Version
124
110
  version: '3.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: ruby-progressbar
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
125
  description:
126
126
  email:
127
127
  - steve.loveless@gmail.com
@@ -136,46 +136,140 @@ files:
136
136
  - LICENSE.txt
137
137
  - README.md
138
138
  - Rakefile
139
+ - TODO.md
139
140
  - ffi-gdal.gemspec
140
- - lib/ext/cpl_error_symbols.rb
141
+ - lib/ext/error_symbols.rb
142
+ - lib/ext/float_ext.rb
143
+ - lib/ext/narray_ext.rb
141
144
  - lib/ext/to_bool.rb
142
145
  - lib/ffi-gdal.rb
143
- - lib/ffi-gdal/color_table.rb
144
- - lib/ffi-gdal/dataset.rb
145
- - lib/ffi-gdal/driver.rb
146
- - lib/ffi-gdal/exceptions.rb
147
- - lib/ffi-gdal/geo_transform.rb
148
- - lib/ffi-gdal/major_object.rb
149
- - lib/ffi-gdal/raster_attribute_table.rb
150
- - lib/ffi-gdal/raster_band.rb
151
- - lib/ffi-gdal/version_info.rb
146
+ - lib/ffi/cpl/conv_h.rb
147
+ - lib/ffi/cpl/error_h.rb
148
+ - lib/ffi/cpl/minixml_h.rb
149
+ - lib/ffi/cpl/string_h.rb
150
+ - lib/ffi/cpl/vsi_h.rb
151
+ - lib/ffi/cpl/xml_node.rb
152
152
  - lib/ffi/gdal.rb
153
- - lib/ffi/gdal/cpl_conv.rb
154
- - lib/ffi/gdal/cpl_error.rb
155
- - lib/ffi/gdal/cpl_string.rb
156
- - lib/ffi/gdal/cpl_vsi.rb
153
+ - lib/ffi/gdal/alg_h.rb
157
154
  - lib/ffi/gdal/gdal_color_entry.rb
158
155
  - lib/ffi/gdal/gdal_gcp.rb
159
- - lib/ffi/gdal/ogr_api.rb
160
- - lib/ffi/gdal/ogr_core.rb
161
- - lib/ffi/gdal/ogr_srs_api.rb
156
+ - lib/ffi/gdal/gdal_grid_data_metrics_options.rb
157
+ - lib/ffi/gdal/gdal_grid_inverse_distance_to_a_power_options.rb
158
+ - lib/ffi/gdal/gdal_grid_moving_average_options.rb
159
+ - lib/ffi/gdal/gdal_grid_nearest_neighbor_options.rb
160
+ - lib/ffi/gdal/gdal_h.rb
161
+ - lib/ffi/gdal/gdal_rpc_info.rb
162
+ - lib/ffi/gdal/gdal_transformer_info.rb
163
+ - lib/ffi/gdal/gdal_warp_options.rb
164
+ - lib/ffi/gdal/grid_h.rb
162
165
  - lib/ffi/gdal/version.rb
166
+ - lib/ffi/gdal/warper_h.rb
167
+ - lib/ffi/ogr.rb
168
+ - lib/ffi/ogr/api_h.rb
169
+ - lib/ffi/ogr/core_h.rb
170
+ - lib/ffi/ogr/featurestyle_h.rb
171
+ - lib/ffi/ogr/geocoding_h.rb
172
+ - lib/ffi/ogr/ogr_contour_writer_info.rb
173
+ - lib/ffi/ogr/ogr_envelope.rb
174
+ - lib/ffi/ogr/ogr_envelope_3d.rb
175
+ - lib/ffi/ogr/ogr_field.rb
176
+ - lib/ffi/ogr/ogr_style_param.rb
177
+ - lib/ffi/ogr/ogr_style_value.rb
178
+ - lib/ffi/ogr/srs_api_h.rb
179
+ - lib/gdal/color_entry.rb
180
+ - lib/gdal/color_entry_extensions.rb
181
+ - lib/gdal/color_interpretation.rb
182
+ - lib/gdal/color_table.rb
183
+ - lib/gdal/color_table_extensions.rb
184
+ - lib/gdal/color_table_types/cmyk.rb
185
+ - lib/gdal/color_table_types/gray.rb
186
+ - lib/gdal/color_table_types/hls.rb
187
+ - lib/gdal/color_table_types/rgb.rb
188
+ - lib/gdal/data_type.rb
189
+ - lib/gdal/dataset.rb
190
+ - lib/gdal/dataset_extensions.rb
191
+ - lib/gdal/driver.rb
192
+ - lib/gdal/driver_extensions.rb
193
+ - lib/gdal/environment_methods.rb
194
+ - lib/gdal/exceptions.rb
195
+ - lib/gdal/geo_transform.rb
196
+ - lib/gdal/geo_transform_extensions.rb
197
+ - lib/gdal/logger.rb
198
+ - lib/gdal/major_object.rb
199
+ - lib/gdal/options.rb
200
+ - lib/gdal/raster_attribute_table.rb
201
+ - lib/gdal/raster_attribute_table_extensions.rb
202
+ - lib/gdal/raster_band.rb
203
+ - lib/gdal/raster_band_extensions.rb
204
+ - lib/gdal/version_info.rb
205
+ - lib/gdal/warp_operation.rb
206
+ - lib/ogr/coordinate_transformation.rb
207
+ - lib/ogr/data_source.rb
208
+ - lib/ogr/data_source_extensions.rb
209
+ - lib/ogr/driver.rb
210
+ - lib/ogr/envelope.rb
211
+ - lib/ogr/envelope_extensions.rb
212
+ - lib/ogr/exceptions.rb
213
+ - lib/ogr/feature.rb
214
+ - lib/ogr/feature_definition.rb
215
+ - lib/ogr/feature_definition_extensions.rb
216
+ - lib/ogr/feature_extensions.rb
217
+ - lib/ogr/field.rb
218
+ - lib/ogr/field_extensions.rb
219
+ - lib/ogr/geocoding_session.rb
220
+ - lib/ogr/geometry.rb
221
+ - lib/ogr/geometry_extensions.rb
222
+ - lib/ogr/geometry_types/collection.rb
223
+ - lib/ogr/geometry_types/curve.rb
224
+ - lib/ogr/geometry_types/surface.rb
225
+ - lib/ogr/layer.rb
226
+ - lib/ogr/layer_extensions.rb
227
+ - lib/ogr/line_string.rb
228
+ - lib/ogr/linear_ring.rb
229
+ - lib/ogr/multi_line_string.rb
230
+ - lib/ogr/multi_point.rb
231
+ - lib/ogr/multi_polygon.rb
232
+ - lib/ogr/point.rb
233
+ - lib/ogr/polygon.rb
234
+ - lib/ogr/spatial_reference.rb
235
+ - lib/ogr/spatial_reference_extensions.rb
236
+ - lib/ogr/style_table.rb
237
+ - lib/ogr/style_table_extensions.rb
163
238
  - linkies.rb
164
- - meow.rb
165
239
  - readie.rb
166
- - rubby.rb
167
- - spec/ext/cpl_error_symbols_spec.rb
168
- - spec/ffi-gdal/integration/color_table_info_spec.rb
169
- - spec/ffi-gdal/integration/dataset_info_spec.rb
170
- - spec/ffi-gdal/integration/driver_info_spec.rb
171
- - spec/ffi-gdal/integration/geo_transform_info_spec.rb
172
- - spec/ffi-gdal/integration/raster_attribute_table_info_spec.rb
173
- - spec/ffi-gdal/integration/raster_band_info_spec.rb
174
- - spec/ffi-gdal/unit/version_info_spec.rb
175
240
  - spec/ffi-gdal_spec.rb
241
+ - spec/integration/color_table_info_spec.rb
242
+ - spec/integration/dataset_info_spec.rb
243
+ - spec/integration/driver_info_spec.rb
244
+ - spec/integration/geo_transform_info_spec.rb
245
+ - spec/integration/raster_attribute_table_info_spec.rb
246
+ - spec/integration/raster_band_info_spec.rb
176
247
  - spec/spec_helper.rb
177
248
  - spec/support/integration_help.rb
249
+ - spec/support/shapefiles/states_21basic/states.dbf
250
+ - spec/support/shapefiles/states_21basic/states.prj
251
+ - spec/support/shapefiles/states_21basic/states.sbn
252
+ - spec/support/shapefiles/states_21basic/states.sbx
253
+ - spec/support/shapefiles/states_21basic/states.shp
254
+ - spec/support/shapefiles/states_21basic/states.shp.xml
255
+ - spec/support/shapefiles/states_21basic/states.shx
178
256
  - spec/support/shared_examples/major_object_examples.rb
257
+ - spec/support/worldfiles/SR_50M/SR_50M.VERSION.txt
258
+ - spec/support/worldfiles/SR_50M/SR_50M.prj
259
+ - spec/support/worldfiles/SR_50M/SR_50M.tfw
260
+ - spec/support/worldfiles/SR_50M/SR_50M.tif
261
+ - spec/unit/ext/error_symbols_spec.rb
262
+ - spec/unit/gdal/color_table_spec.rb
263
+ - spec/unit/ogr/layer_spec.rb
264
+ - spec/unit/ogr/linear_ring_spec.rb
265
+ - spec/unit/ogr/point_spec.rb
266
+ - spec/unit/version_info_spec.rb
267
+ - testing_gdal.rb
268
+ - testing_gdalwarp.rb
269
+ - testing_layer_to_layer.rb
270
+ - testing_ndvi.rb
271
+ - testing_nir.rb
272
+ - testing_ogr.rb
179
273
  - things.rb
180
274
  homepage: https://github.com/turboladen/ffi-gdal
181
275
  licenses:
@@ -192,26 +286,40 @@ required_ruby_version: !ruby/object:Gem::Requirement
192
286
  version: '0'
193
287
  required_rubygems_version: !ruby/object:Gem::Requirement
194
288
  requirements:
195
- - - ">="
289
+ - - ">"
196
290
  - !ruby/object:Gem::Version
197
- version: '0'
291
+ version: 1.3.1
198
292
  requirements: []
199
293
  rubyforge_project:
200
- rubygems_version: 2.4.1
294
+ rubygems_version: 2.2.2
201
295
  signing_key:
202
296
  specification_version: 4
203
297
  summary: FFI wrapper for GDAL/OGR.
204
298
  test_files:
205
- - spec/ext/cpl_error_symbols_spec.rb
206
- - spec/ffi-gdal/integration/color_table_info_spec.rb
207
- - spec/ffi-gdal/integration/dataset_info_spec.rb
208
- - spec/ffi-gdal/integration/driver_info_spec.rb
209
- - spec/ffi-gdal/integration/geo_transform_info_spec.rb
210
- - spec/ffi-gdal/integration/raster_attribute_table_info_spec.rb
211
- - spec/ffi-gdal/integration/raster_band_info_spec.rb
212
- - spec/ffi-gdal/unit/version_info_spec.rb
213
299
  - spec/ffi-gdal_spec.rb
300
+ - spec/integration/color_table_info_spec.rb
301
+ - spec/integration/dataset_info_spec.rb
302
+ - spec/integration/driver_info_spec.rb
303
+ - spec/integration/geo_transform_info_spec.rb
304
+ - spec/integration/raster_attribute_table_info_spec.rb
305
+ - spec/integration/raster_band_info_spec.rb
214
306
  - spec/spec_helper.rb
215
307
  - spec/support/integration_help.rb
308
+ - spec/support/shapefiles/states_21basic/states.dbf
309
+ - spec/support/shapefiles/states_21basic/states.prj
310
+ - spec/support/shapefiles/states_21basic/states.sbn
311
+ - spec/support/shapefiles/states_21basic/states.sbx
312
+ - spec/support/shapefiles/states_21basic/states.shp
313
+ - spec/support/shapefiles/states_21basic/states.shp.xml
314
+ - spec/support/shapefiles/states_21basic/states.shx
216
315
  - spec/support/shared_examples/major_object_examples.rb
217
- has_rdoc:
316
+ - spec/support/worldfiles/SR_50M/SR_50M.VERSION.txt
317
+ - spec/support/worldfiles/SR_50M/SR_50M.prj
318
+ - spec/support/worldfiles/SR_50M/SR_50M.tfw
319
+ - spec/support/worldfiles/SR_50M/SR_50M.tif
320
+ - spec/unit/ext/error_symbols_spec.rb
321
+ - spec/unit/gdal/color_table_spec.rb
322
+ - spec/unit/ogr/layer_spec.rb
323
+ - spec/unit/ogr/linear_ring_spec.rb
324
+ - spec/unit/ogr/point_spec.rb
325
+ - spec/unit/version_info_spec.rb