forked from rasterio/rasterio
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGES.txt
767 lines (637 loc) · 29.8 KB
/
CHANGES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
Changes
=======
Next
----
Breaking changes:
- In the GeoJSON output of rio-blocks, the windows are now JSON
representations of the `Window` class (#1074).
- The `rasterio.windows.Window` class no longer derives from `tuple`.
Comparisons like `Window(0, 0, 1, 1) == ((0, 1), (0, 1))` are no
longer possible. Instead, call the `.toranges()` method of the
former or coerce the latter using `Window.from_ranges()` (#1074).
New features:
- Float precision read/write windows are now supported throughout
Rasterio (#1074).
- Use of old style range tuples as windows is deprecated and warned
against (#1074).
1.0a9 (2017-06-02)
------------------
Breaking changes:
- Removed `**options` argument from `rasterio.warp.transform()`. Transformer
options should be set explicitly inside the currently active
`rasterio.env.Env()`(#1010). This argument was initially added in `1.0a1`.
- The function `transform_geom()` now always splits geometries at the anti-
meridian (#1024).
- The `crs` property of a dataset is now `None` instead of `CRS()` when the
dataset's coordinate reference system is undefined (#1057).
New features:
- Enable setting and getting `GDAL_CACHEMAX` (#1042).
- Integer config option values are now properly encoded and decoded (#1042).
- A `from_wkt()` CRS constructor has been added (#1070).
- Targeting aligned pixels in rio-warp (#941).
- A new `WarpedVRT` class that surfaces GDAL's warp-on-demand VRT features. No
XML editing is required (#1071, #1029).
Bug fixes:
- `dtypes.get_minimum_dtype()` now returns proper value for uint* types
(#1064).
- Rasterio now uses `OSRRelease()` to avoid destroying shared spatial
reference system objects (#1031).
- GDAL_SKIP and GDAL_DRIVER_PATH options, when needed, are now set before
driver registration (#1001).
- A failure of reprojection to an array when source dataset bands have an
index higher than 1 has been fixed (#1056).
1.0a8 (2017-03-29)
------------------
Bug fixes:
- Secrets kept in GDAL config options could have been leaked via the Python
logger. AWS keys and tokens have always been redacted, but other options like
GDAL_HTTP_USERPWD were not. Logging of GDAL config options has been removed.
- Use of Rasterio with Python threads has not been well tested in
previous versions and a bug (#986) involving shared GDAL environment
state was found. Rasterio now uses thread local variables to track
GDAL environment state and uses the appropriate GDAL API functions to
isolate the environments of child threads from each other while
permitting inheritance from the main Python thread (#993, #996, #997).
Tests using both `ThreadPoolExecutor` and `ProcessPoolExecutor` have
been added to guard against regresion.
1.0a7 (2017-02-14)
------------------
Roses are red.
Irish say "feck."
Calling conventions
are a pain in the neck
Bug fixes:
- Use __stdcall for GDAL callbacks on Windows (#935, #951).
- Tear down Env more carefully (#968, #969), taking particular care not to
reinstate default options when a child environment is exited.
- Always close open file handles when exiting context managers returned by
`rasterio.open()` when file objects are given as arguments (#973).
- Properly append, not extend, shim module to extension list (#975).
1.0a6 (2017-02-03)
------------------
Bug fixes:
- Order of input datasets is preserved by rio-calc (#947, #965).
New features:
- `MemoryFile()` can now take a file object parameter or bytes. The file should
be opened in binary mode and its contents are read immediately into bytes.
This form of argument is for convenience only; the provided file is not
accessed in any other way.
- A `ZipMemoryFile` class derived from `MemoryFile` has been added. It is
created from a sequence of bytes representing a zip file. Its `open()` method
can take a path, allowing access to files within the zip file.
- For convenience of users, Rasterio's `open()` function now takes Python file
objects as well as filenames and URLs (#964). These file objects have their
contents read into `MemoryFile` instances within the `open()` call, so this
feature is equivalent to calling `MemoryFile(fp).open()`.
Refactoring:
- GDAL/OGR function definitions consolidated in gdal.pxi (#949).
- Shim APIs have been created to provide support for GDAL 2.0 and 2.1 features
that may be absent in a system's GDAL installation.
Packaging:
- Shim API C modules are included in source distributions.
1.0a5 (2016-12-23)
------------------
- New binary wheels using version 1.2.0 of sgillies/frs-wheel-builds. See
https://github.com/sgillies/frs-wheel-builds/blob/master/CHANGES.txt.
1.0a4 (2016-12-06)
------------------
New features:
- Geographic bounds designated by a `--geographic` option may now be
passed to `rio clip` (#932).
- The `rio edit-info` command's new `--unset-nodata` option can be used to
delete a dataset's nodata value (#510).
Bug fixes:
- Passing a `--co nodata=null` option to CLI commands will create
datasets without any nodata value set. The `--co` option name follows
GDAL's command line utilities. A `--profile` alias for this option has
also been added.
1.0a3 (2016-10-31)
------------------
New features:
- The `DatasetBase` class is now surfaced in `rasterio.io`. This is not too
promote the practice of subclassing `DatasetBase` but to help users that
would like to use type annotations (#925) or make `isinstance()` assertions.
- Ground control points may be read from and written to datasets (when the
format permits) and may be used when reprojecting arrays with `reproject()`
or on the command line with rio-warp (#203, #916). A new rio-gcps command
has been added, it can print a dataset's GCPs as GeoJSON Feature sequences
or FeatureCollections.
- A `BytesIO` like `MemoryFile` class has been added for an improved Python
interface to GDAL's in-memory filesystem (#899, #925).
- Error handlers are pushed to GDAL on entering a GDAL environment and popped
when exiting (#876, #902, #907).
- The GIL is released when calling GDAL's ChunkAndWarp() (#912).
Bug fixes:
- transform_geom() would fail when encountering geometries with z coordinate
values, but now handles them properly (#922, #923).
- show_hist() failed when nans were present in data (#913) and this has been
fixed with the use of nanmin() and nanmax() in #914.
1.0a2 (2016-10-03)
------------------
New features:
- A new `mask_flag_enums` attribute has been added to dataset objects (#881).
- Support for complex data types has been enabled (#714).
Bug fixes:
- Reduce log level when trying to identify a CRS as an EPSG code (#905).
- Acquire GIL when executing the error handler (#903).
- Raster data I/O involving ndarray views has now been corrected (#900, #901).
- Support for single band index in `sample()`, which was advertised in the
docstring but not implemented, has been added (#862).
- The rio-overview CLI command no longer opens datasets in 'r+' mode when
listing overviews (with the `--ls` option) (#885).
- Implicit JPEG overviews for JPEG-compressed GeoTIFF files have been disabled
in Rasterio's default environment, which means decimation is slower but
shows fewer JPEG compression artifacts (#884).
Refactoring:
- Data type-specific functions such as `io_uint8()` have been eliminated from
the private `_io` module and replaced by generic `io_band()`,
`io_multi_band()`, and `io_multi_mask()` functions (#901).
1.0a1 (2016-09-15)
------------------
Documentation:
- New introduction, guidance on switching from GDAL's Python bindings and much
more.
Breaking changes:
- The sense of rio-warp's `--bounds` options has been changed from source
bounds to destination bounds (#549).
- Extracted Rasterio's public dataset classes into `rasterio.io` (#743).
- All Rasterio functions with will raise an exception if a GDAL style
geotransform sequence is passed as `transform`.
- The `affine` attribute of dataset objects is deprecated.
- The `affine` member of dataset `profile` has been removed.
- The `rasterio.drivers()` context manager has been removed. It is replaced by
`rasterio.Env()`.
- The `read_band()` method of dataset objects has been removed. It is replaced
by `read()`.
- The `read_mask()` method of dataset objects has been removed. It is replaced
by `read_masks()`.
- `get_data_window()`, `window_union()`, `window_intersection()`, and
`windows_intersect()` have been removed from the `rasterio` module. They
have been moved to `rasterio.windows`.
- The `rasterio.tool` module has been removed. Its functions have been
relocated to `rasterio.plot` and `rasterio.rio.insp`.
- The `rasterio.tools` module has been removed. Its functions have been
relocated to `rasterio.mask` and `rasterio.merge`.
- The `rasterio.warp.RESAMPLING` enum has been replaced by
`rasterio.warp.Resampling`.
- The signatures of `rasterio.features.sieve()` and
`rasterio.features.rasterize()` have been changed: the `output` argument
is deprecated and is replaced by `out`.
- In the CLI, the `-o` option no longer causes existing output files to be
overwritten (#751).
New features:
- Added `descriptions` and `units` attributes to dataset objects, exposing
the descriptions and units of dataset bands (#850, #851).
- Creation of a `Window` class to abstract Rasterio's window selection
tuples (#759).
- Performance of `reproject()` has been increased by using an approximate
transformer as with gdal_translate (#569).
- `Band` objects may now represent one or more dataset bands and multiband
reprojection of imagery kept in a GDAL dataset is now possible (#569).
Bug fixes:
- `rasterize()` now checks that the `out_shape` is 2D before continuing (#847).
- Named AWS credential profiles are now properly set up up in the main CLI
command's environment (#838).
Refactoring:
- In the CLI, a GDAL environment is now configured by the top level command
and then passed in a Click context to subcommands (#841).
- Removal of redundant copies of GDAL geotransform detection code (#828).
- Window methods of dataset objects have been extracted into functions of
a new `rasterio.windows` module (#803).
Known bugs:
- `warp.project()` and rio-warp may lose one or more columns of data when
resampling to lower resolution (#853).
0.36.0 (2016-06-14)
-------------------
Bug fixes:
- rio-merge now copies colormaps to output files (#774, #778).
- The correct `--force-overwrite` and `--output` usage is now provided in the
case of a `FileOverwriteError` (#750).
- Passing undefined CRS to `reproject` no longer causes a segfault (#749).
- GDAL's invert projection check is always used by default in reprojecting
(#780).
- Forward slashes are always used for GDAL VSI paths (`/vsizip/` etc) instead
of `os.path.sep` (#754, #789).
Documentation:
- Contributing guidelines have been added (#701).
- Axis order has been corrected in image processing doc (#700).
- A framework for comprehensive documentaton has been created (#713, #723,
#729, #737, #738, #739, #740, #748, #756, #760).
New features:
- `--src-nodata` and `--dst-nodata` options for rio-warp (#746).
- `read()` and `read_masks()` take an `out_shape` argument for decimated reads
(#761).
- Color interpretation of bands added to rio-info output (#766).
- Dataset objects have a new per-dataset mask property: `dataset_mask` (#716).
- Utility functions for rehaping and plotting arrays have been added to
`rasterio.plot` (#718, #765).
- New `CRS` class like our old crs dicts, but with methods attached (#736,
#770).
Packaging:
- setup.py has new install extras: '[plot]', and '[all]' (#744).
Refactoring:
- We've standardized on `import numpy as np` (#727, #738, #740) throughout the
project.
- The `five` module has been renamed to `compat` (#745).
Testing:
- More coverage, more xfailing tests to mark known bugs (#742, #762, #753,
#773, #782).
0.35.1 (2016-05-06)
-------------------
- Bug fix: restore support for URI-like GDAL dataset names such as
'NETCDF:foo:bar' (#695).
- Bug fix: ensure GDAL environment is initialized for `transform_bounds()` as
well as the other functions in `rasterio.warp` (#694). In implementation, we
have done this with a function decorator.
0.35.0.post1 (2016-05-04)
-------------------------
- Bug fix: added rasterfill.cpp to MANIFEST.in so it is included in source
distributions no matter the build system's GDAL version (#690).
0.35.0 (2016-05-04)
-------------------
- Requirements: affine requirement upped to >=1.3.0 (#430).
- Bug fix: passing an empty JSON object to `crs.from_string()` raises CRSError
instead of passing silently (#628, #642).
- Bug fix: GDAL errors are no longer written to stderr; we no longer undefine
error handlers (#649, #658).
- Bug fix: the Rasterio library only configures a NullHandler, applications
must configure their own handlers to see Rasterio's log messages (#649,
#658).
- Bug fix: AWS credentials are only sought by Rasterio when s3:// URLs are
passed to `rasterio.open()` (#650, #665).
- Bug fix: window comparison functions now raise a ValueError when windows do
not intersect instead of returning an empty sequence (#651, #656, #662).
- Bug fix: upgrade from deprecated Numpy usage in `read()` by explicitly
converting window offsets to ints (#678, #680).
- Refactoring: window comparison functions may now take a variable number of
windows as positional arguments in addition to a sequence of windows.
- Refactoring: logging is much finer grained now because we've changed to the
`logger = logging.getLogger(__name__)` pattern throughout Rasterio (#649,
#658).
- Refactoring: replaced old `drivers()` implementation with a new `Env` class
and more consistent usage of it through the library and command line
interface (#665, #682).
0.34.0 (2016-04-04)
-------------------
- Bug fix: S3 support was found missing in several of the CLI commands
mentioned below. This is corrected in 0.34 and we have the tests to prove it
(#633).
0.33.0 (2016-04-01)
-------------------
I played a lot of One-on-One on the computers of the mid-1980s and dedicate
this release to the best #33 of all time, Larry Bird.
- Bug fix: YCbCr JPEG-in-TIFF files no longer break rio-info (#617, #618).
- New feature: the ability to read dataset metadata and imagery from S3 objects
is an extra feature that can be installed like this `pip install -U
rasterio[s3]`. AWS Credentials are handled by boto3 (and botocore) and so can
be provided by environment variables, session arguments, `~/.aws/credentials`
file, or EC2 instance metadata. S3 access is enabled in the following CLI
commands: rio-clip, rio-info, rio-insp, rio-bounds, rio-shapes, rio-sample
and may be expanded in future versions. S3 objects are identified on the
command line and in API functions by URIs following the pattern
`s3://bucket/object`. Extra thanks to Rob Emanuele and Even Rouault for
helping on this one (#551, #610).
- New feature: new and improved documentation coming soon to a website near
you (#588).
- Refactoring: commands for the rio CLI have been moved to their own
modules so that they're easier to find (#594).
- Refactoring: we've changed our primary pattern for checking errors set by
GDAL API functions (#600).
0.32.0.post1 (2016-03-27)
-------------------------
- No changes to the library in this post-release version, but there is a
significant change to the distributions on PyPI: to help make Rasterio more
compatible with Shapely on OS X, the GDAL shared library included in the
macosx (only) binary wheels now statically links the GEOS library. See
https://github.com/sgillies/frs-wheel-builds/issues/5.
0.32.0 (2016-03-22)
-------------------
- Bug fix: geometry factories and warp operations are properly deallocated
in normal and error situations (#494, #568).
- Bug fix: a code block in rio-merge's help has been better formatted (#535).
- Bug fix: the rasterio.vfs module is imported in __init__.py to assist
cx_Freeze (#536).
- Bug fix: old usage of `read_band()` has been replaced by `read()` throughout
the docs (#537).
- Bug fix: accidental overwriting of existing files is now prevented by the
`resolve_inout()` function in `rasterio.rio.helpers`. Commands that take
one or more input files plus an output file should use this helper and force
overwrite either by using a `--force-overwrite` option or by using the
`-o output` option, which implicitly forces overwriting (#539, #540).
- Bug fix: missing support for NaN nodata value in rio-warp added (#542, #544).
- Bug fix: missing documentation of `rasterize()`'s `fill` parameter added
(#543).
- Bug fix: raster dataset bounds are densified before transforming so that
the projected output of rio-bounds is correct (#556, #557).
- Bug fix: add 'line' to the `Interleaving` enum (#560).
- Bug fix: convert `matplotlib` import errors to a `RuntimeWarning` (#562).
- Bug fix: deallocate CPL strings in error cases (#573).
- Bug fix: non-invertable affine transforms are prevented using
`__future__.division` *#580).
- Bug fix: rio-warp clips output regions to the limits of the destination
CRS unless disabled with `--no-check-invert-proj` (#597).
- New feature: the functionality previously available only in rio-mask is now
available as `rasterio.tools.mask.mask()` (#552).
- New feature: raster bounds are used to label axes in `rasterio.tool.show()`
(#553).
- New feature: GDAL's suggested warp bounds algorithm is wrapped and exposed
for use in `warp()` and rio-warp (#574).
- Breaking change: align rio-warp's `--bounds` option with rio-merge's: these
are in destination CRS units (#541, #545).
0.31.0 (2015-12-18)
-------------------
- Warn when rasters have no georeferencing and when the default identity
transform will be applied by GDAL (#524, #527).
- Build OS X wheels using numpy>=1.10.2 (#529).
- When reading image windows in previous versions, given a window with
((row_start, row_stop), (col_start, col_stop)) if the stop index is greater
than the width/height the start index effectively shifts as well. This can
manifest itself in pixel misalignment if, e.g. you read block windows with
a bit of padding to avoid edge effects. Now the window offsets are determined
solely by row_start and col_start.(#532, #533).
0.30.0 (2015-11-16)
-------------------
- Added window utilities: get_data_window(), window_union(),
window_intersection(), windows_intersect() (#496, #506).
- Warn when an alpha band that might provide a dataset mask is shadowed by a
nodata attribute (#508, #523).
- IPython is not the default interpreter for rio-insp and the documentation
saying it is has been corrected (#518).
- Guard against creating datasets with block sizes larger than the dataset
width and height. Such datasets are semi-broken and are likely to be
mangled when read (#521).
- Refactor of the `rasterio.features` tests (#522).
0.29.0 (2015-10-22)
-------------------
- Fill masked arrays in rio-calc when using Numpy 1.10.x as well as with 1.8.x
(#500).
- When a raster dataset is not tiled, blockxsize and blockysize items are no
longer included in its `profile` property. This prevents meaningless block
size parameters from stripped, not tiled, datasets from being used when
creating new datasets (#503).
0.28.0 (2015-10-06)
-------------------
- Ensure that tools module is packaged (#489, #490). The rio-merge command was
broken in 0.27.0 and is restored to working order in version 0.28.0.
- Add `precision` keyword argument to `index()` method (#492).
0.27.0 (2015-09-25)
-------------------
- Ensure local uniqueness of the rio-shapes feature ids (#479).
- Surface compression and interleaving as dataset properties and in rio-info
(#481). In the module, these are enums (`enums.Compression` and
`enums.Interleaving`); the values of the enums correspond to GDAL terms
(i.e, "DEFLATE") and the names are what surface in the CLI ("deflate").
- Change get_window() and DatasetReader.window() to return a window guaranteed
to cover the input bounding box (#464, #485).
- Bug fix for improperly computed transforms of output file in tools.merge and
rio-merge (#485).
- More robust determination of dataset nodata values. In particular, the
absence of a nodata value is much more clear: dataset.nodata should never
return an out of range value when there is no nodata value, it should always
return `None` (#485).
0.26.0 (2015-08-11)
-------------------
- Add dependency on click-plugins, a new project that takes over the plugin
duties formerly assigned to cligj (#426).
- Change rio-stack's --photometric=RGB option to --rgb (#429). Other
photometric interpretations should be assigned using the --co option
added in 0.25.0.
- Allow for ndarray-like objects (like xray arrays), not just numpy arrays,
in warp() and elsewhere (#436).
- Add --rgb flag to rio-convert (#439).
- Fixed resampling algorithm enumeration bug (#441).
- Colormap handling was made too strict in 0.24.1 and has been made more
forgiving. Callers are now warned when alpha values will be ignored instead
of receiving exceptions (#444).
- Add a .gitignore (#445). Better late than never!
- Add a checksum() method to base dataset class and checksums to output of
rio-info (#449).
0.25.0 (2015-07-17)
-------------------
- New rio-warp command (#264, #404).
- Add driver-specific creation options (`--co`) to many commands (#379, #403).
- Add support for arbitrary CRS output to rio-bounds (#385, #392).
- Add support for getting values from template files in rio-edit-info with a
`--like` option (#387, #399).
- New rio-overview command (#388, #408).
- Fix rounding error in extracting shapes from decimated data (#391).
- Remove creation options from meta property and move them to new profile
property (#405, #406).
- Fix for bug in passing affine keyword argument to open() in 'w' mode (#411).
- New rio-convert command (#414, #417), a replacement for gdal_translate
with more features to come by 1.0.
- Improved error messages when seeking a driver when none are registered
(#415).
- Replace read_band() with read() in the rio-insp banner (#418).
- Fix an indexing error that prevented window() and window_bounds() from
round-tripping properly (#419).
0.24.1 (2015-06-30)
-------------------
- Improve safety of the sample() generator (#378).
- Provide array masking features missing from Numpy<1.9 (#380, #389).
- Guard against attempts to write RGBA colormap entries to TIFFs, which the
format can not support (#394, #395).
0.24.0 (2015-05-27)
-------------------#408).
- New rio-edit-info command (#358).
- Add option to package GDAL data in distributions (#362).
- Remove check that the path given to `rasterio.open()` in read mode is an
existing file, turning on some non-file formats (#364).
- Addition of a `window_bounds()` method to dataset objects (#366).
- Delegation of command exiting to Click (#367).
0.23.0 (2015-05-08)
-------------------
- Redesign CLI as dynamically loaded entry points (#346).
0.22.0 (2015-05-01)
-------------------
- Return masked arrays in the boundless read case (#338).
- Add -o/--output option to rio-calc,merge,stack,mask,shapes,rasterize (#333).
0.21.0 (2015-04-22)
-------------------
- New rio-mask command (#323).
- Masking bug fix for rio-shapes (#335).
- Addition of single valued nodata property to be used instead of nodatavals
(#329).
0.20.0 (2015-04-08)
-------------------
- Switch read() default to masked=False (#300, #317).
- Fix documentation of masking throughout module (#305).
- Remove option for in place nodata filling (#309).
- Enhancements for valid data footprint extraction in rio-shapes (#316, #318).
0.19.1 (2015-03-30)
-------------------
- Add missing blockxsize, blockysize, tiled keywords (#301).
0.19.0 (2015-03-25)
-------------------
- New rio-calc command (#175).
- Added a file band shortcut to fillnodata() (#271).
- Added fillnodata() to rio-calc functions (#277).
- New approach to masking arrays on read that conforms more closely to GDAL's
RFC 15 (#282, #284, #285).
- New read_masks() method (#284).
- Deprecation of read_mask() and read_band (#284).
- New affine transform factory functions from_origin(), from_bounds() (#287).
- Improve correctness of indexing and rio-merge logic (#288, #290).
0.18.0 (2015-02-10)
-------------------
- New rio-rasterize command (#187).
- New window_transform method (#215).
- New sample method and rio-sample command (#251, #275).
- New fillnodata function based on GDAL's rasterfill.cpp (#253).
- Speedups for _features and _warp modules (#259).
- Enhancements for rio-info: 'res', 'lnglat', and 'stats' (#269, #270).
0.17.1 (2015-01-20)
-------------------
- Properly handle metadata tags with values that contain "=" (#254).
0.17.0 (2015-01-15)
-------------------
- Enhancements to rio-merge: relaxation of same-extent and same-resolution
constraints, addition of --bounds and --res options (#242, 247).
- Data files in support of binary wheels (#239).
- Fix for reading bands with undefined nodata (#237, #240).
0.16.0 (2014-12-16)
-------------------
- More graceful, slice-like handling of windows (#191).
- Addition of optional z coordinate to warp.transform() (#199).
- Relax excessively strict transform guard, allowing translation of rasters
with no georeferencing (#210).
- Removal of setuptools from the package's install_requires (#222).
0.15.1 (2014-11-03)
-------------------
- Fix incorrect use of output.dtype (#196).
0.15 (2014-10-11)
-----------------
- Support for more data types in seive() (#159).
- Handle unexpected PROJ.4 values like "+no_defs=True" (#173).
- Support for writing PNG, JPEG, etc using GDALCreateCopy (#177).
- New rio-stack command (#180).
- Moved rio CLI main entry point to rasterio/rio/main:cli.
- Add rio-env command and --version option to rio.
- Make -f and --format aliases for --driver in CLI options (#183).
- Remove older rio_* scripts (#184).
- `out` keyword arg supercedes `output` in rasterio.features (#179).
0.14.1 (2014-10-02)
-------------------
- Allow update of nodata values in r+ mode (#167).
0.14 (2014-10-01)
-----------------
- Fixed tag update crasher (#145).
- Add --mask and --bidx options to rio shapes (#150).
- Faster geometry transforms and antimeridian cutting (#163).
- Support for more data types in shapes() and rasterize() (#155, #158).
- Switch to Cython 0.20+ for development (#151).
0.13.2 (2014-09-23)
-------------------
- Add enum34 to requirements (#149).
- Make rasterize() more robust (#146).
- Pin Cython>=0.20 and Numpy>=1.8 (#151).
0.13.1 (2014-09-13)
-------------------
- Read unprojected images with less flailing (#117).
0.13 (2014-09-09)
-----------------
- Add single value options to rio info command (#139, #143).
- Switch to console scripts entry points for rio, &c (#137).
- Avoid unnecessary imports of Numpy in info command, elsewhere (#140).
0.12.1 (2014-09-02)
-------------------
- Add missing rasterio.rio package (#135).
0.12 (2014-09-02)
-----------------
- Add --mercator option for rio bounds (#126).
- Add option for RS as a JSON text sequence separator (#127).
- Add rio merge command (#131).
- Change layout of tests (#134).
0.11.1 (2014-08-19)
-------------------
- Add --bbox option for rio bounds (#124).
0.11 (2014-08-06)
-----------------
- Add rio shapes command (#115).
- Accept CRS strings like 'EPSG:3857' (#116).
- Write multiple bands at a time (#95).
0.10.1 (2014-07-21)
-------------------
- Numpy.require C-contiguous data when writing bands (#108).
0.10 (2014-07-18)
-----------------
- Add rio bounds command (#111).
- Add rio transform command (#112).
0.9 (2014-07-16)
----------------
- Add meta and tag dumping options to rio_insp.
- Leave GDAL finalization to the DLL's destructor (#91).
- Add pad() function (#84).
- New read() method, returns 3D arrays (#83).
- New affine attribute and AffineMatrix object (#80, #86).
- Removal of rasterio.insp script (#51).
- Read_band() is now a special case of read() (#96).
- Add support for multi-band reprojection (#98).
- Support for GDAL CInt16 datasets (#97).
- Fix loss of projection information (#102).
- Fix for loss of nodata values (#109).
- Permit other than C-contiguous arrays (#108).
0.8 (2014-03-31)
----------------
- Add rasterize(), the inverse of shapes() (#45, #62).
- Change the sense of mask for shapes(). Masks are always positive in
rasterio, so we extract shapes only where mask is True.
0.7.3 (2014-03-22)
------------------
- Fix sieve() bug (#57).
0.7.2 (2014-03-20)
------------------
- Add rio_insp, deprecation warning in rasterio.insp (#50, #52).
- Fix transform bug in shapes() (#54).
0.7.1 (2014-03-15)
------------------
- Source distribution bug fix (#48).
0.7 (2014-03-14)
----------------
- Add a Band object, providing a shortcut for shapes() and sieve() functions
(#34).
- Reprojection of rasters (#12).
- Enhancements to the rasterio.insp console: module aliases, shortcut for
show().
- Add index() method.
- Reading and writing of GDAL mask bands (#41).
- Add rio_cp program.
- Enable r+ mode for GeoTIFFs (#46).
0.6 (2014-02-10)
----------------
- Add support for dataset and band tags (#32).
- Add testing dependence on pytest (#33).
- Add support for simple RGBA colormaps (#34).
- Fix for a crasher that occurs when a file is sent through a write-read
revolving door.
- New docs for tags and colormaps.
0.5.1 (2014-02-02)
------------------
- Add mask option to shapes() function (#26).
- Add rasterio.insp interactive interpreter.
0.5 (2014-01-22)
----------------
- Access to shapes of raster features via GDALPolygonize (#20).
- Raster feature sieving (#21).
- Registration and de-registration of drivers via context managers (#22).
0.4 (2013-12-19)
----------------
- Add nodatavals property (#13).
- Allow nodata to be set when opening file to write (#17).
0.3 (2013-12-15)
----------------
- Drop six dependency (#9)
- Add crs_wkt attribute (#10).
- Add bounds attribute and ul() method (#11).
- Add block_windows property (#7).
- Enable windowed reads and writes (#6).
- Use row,column ordering in window tuples as in Numpy (#13).
- Add documentation on windowed reading and writing.
0.2 (2013-11-24)
----------------
- Band indexes start at 1 (#2).
- Decimation or replication of pixels on read and write (#3).
- Add rasterio.copy() (#5).
0.1 (2013-11-07)
----------------
- Reading and writing of GeoTIFFs, with examples.