Skip to content

Releases: yeesian/ArchGDAL.jl

v0.5.0

15 Aug 21:09
e944323
Compare
Choose a tag to compare

ArchGDAL v0.5.0

Diff since v0.4.1

Merged pull requests:

v0.4.1

21 Jun 11:08
47cc556
Compare
Choose a tag to compare

ArchGDAL v0.4.1

Diff since v0.4.0

Closed issues:

  • Argument type specifications in rasterio.jl too narrow (#126)

Merged pull requests:

  • Remove type specification from indices argument in rasterio.jl (#128) (@AlfTetzlaff)

v0.4.0

04 Jun 15:06
29c824b
Compare
Choose a tag to compare

ArchGDAL v0.4.0

Diff since v0.3.3

Merged pull requests:

  • require julia 1.3 / GDAL build with artifacts (#125) (@evetion)

v0.3.3

03 Jun 16:07
5fce0c1
Compare
Choose a tag to compare

ArchGDAL v0.3.3

Diff since v0.3.2

Closed issues:

  • getindex methods for Dataset (#91)
  • Use generalised convert, transform, import and similar methods instead of custom fromWKT etc methods (#95)
  • Opening of ENVI stack with long line in header fails (#111)
  • ArchGDAL.getproj(dataset) return empty string, while dataset.GetProjection() retrun string "PROJCS[...]" using gdal in python (#116)
  • importEPSG and importEPSGA both swap axis order to lat/lon (#119)
  • Travis CI not running on PRs? (#122)
  • Raster writing via ArchGDAL.copy suddenly broken? (#123)

Merged pull requests:

v0.3.2

09 Apr 21:03
f57c2dc
Compare
Choose a tag to compare

ArchGDAL v0.3.2

Diff since v0.3.1

Closed issues:

  • specifying geotif compression when writing? (#109)
  • (Feature Request?) GDALDriver::Create() ... no create method implemented for this format. (#112)
  • Register Drivers Function Doesn't Seem To Work (#115)

Merged pull requests:

v0.3.1

24 Jan 12:45
v0.3.1
c4b1e92
Compare
Choose a tag to compare

v0.3.1 (2020-01-24)

Diff since v0.3.0

Closed issues:

  • No docstrings in docs (#92)

Merged pull requests:

interactive REPL usage

29 Dec 14:48
Compare
Choose a tag to compare

this is a breaking release

Features

  1. removes the need to register drivers before usage.
  2. introduces "interactive datasets" (IDataset) that does not need to be contained within a do-block. This makes it much easier to play with datasets interactively, rather than having to enclose everything within a do-block.
  3. gives featurelayers "first-class treatment": they can now be created and copied as "floating" objects (via createlayer() and copy(featurelayer)), independently of the choice of a dataset. For floating featurelayers, a corresponding dataset will be created in memory.

Includes the latest GDAL 3.0.2 via JuliaGeo/GDAL.jl#81 with cURL and GEOS drivers

Changelog (see also #76)

new

  • src/types.jl: introduce IDataset (short for "interactive datasets") which has a finalizer that closes the corresponding file when it goes out of scope. This is in contrast to Dataset which exists only within the scope of a do-block. They both fall under the type hierarchy
    • Dataset <: AbstractDataset and
    • IDataset <: AbstractDataset.
  • src/types.jl: introduce FeatureDefn, IFeatureDefnView <: AbstractFeatureDefn
  • src/types.jl: introduce GeomFieldDefn, IGeomFieldDefnView <: AbstractGeomFieldDefn
  • src/types.jl: introduce FieldDefn, IFieldDefnView <: AbstractGeomFieldDefn
  • src/types.jl: IFeatureDefnView, IFieldDefnView and IGeomFieldDefnView are introduced to model internal references to existing objects. They support only a restricted set of operations.
  • src/types.jl: enable more flags
  • unsafe_ methods will return objects that needs to be cleaned up, and are not meant to be used by users.
  • tests: use /vsimem/ instead of creating tmp folders and files, and update for new dataset APIs
  • src/featurelayer.jl: introduce nfield(featurelayer) and ngeom(featurelayer)

different

Now getspatialref(...), getgeom(...), and getspatialfilter(...) always makes a copy of the object.

breaking

  • fromWKT(data) and fromWKB(data) no longer takes in a spatialref argument.

call signatures

  • createlayer(dataset, name) -> createlayer(name = name, dataset = dataset)
  • create(filename, driver) -> create(filename, driver = driver) or create(driver, filename = filename)
  • colortable = getcolortable(band) -> getcolortable(band) do colortable
  • copywholeraster(source, dest, options) -> copywholeraster(source, dest, options = options)
  • transform!(coordtransform, xs, ys, zs) -> transform!(xs, ys, zs, coordtransform) (for consistency with transform!(geom, coordtransform))

renamed

  • registerdrivers(...) -> environment(...). It is no longer required for file io, since we provide a driver manager that registers all the drivers during module initialization.
  • setattr!(spatialref, path) -> setattrvalue!(spatialref, path) (consistent with setattrvalue!(spatialref, path, value))
  • copylayer(dataset, layer, name) -> copy(layer, name = name, dataset = dataset) (layer is implied)
  • createcopy(dataset, filename, driver) -> copy(dataset, filename = filename, driver = driver) (create is implied)

The name geomfield sounded too long and confusing (is it a geom? or a field?), so I've decided to rename it to just geom:

  • deletegeomfielddefn!(featuredefn, i) -> deletegeomdefn!(featuredefn, i)
  • gfd = creategeomfielddefn(...) -> creategeomdefn(...) do gfd
  • getgeomfielddefn(...) -> getgeomdefn(...)
  • getgeomfield(...) -> getgeom(...)
  • setgeomfield!(...) -> setgeom!(...)
  • ngeomfield(...) -> ngeom(...)

Standardize on get/add|fielddefn/geomdefn/feature:

  • addgeomfielddefn!(featuredefn, geomdefn) -> addgeomdefn!(featuredefn, geomdefn)
  • creategeomfield!(layer, geomdefn) -> addgeomdefn!(layer, geomdefn)
  • createfield!(layer, fielddefn) -> addfielddefn!(layer, fielddefn)
  • createfeature!(layer, feature) -> addfeature!(layer, feature)

Some method names are too generic-sounding, so I've lengthened them to be clearer.

  • find(...) -> findstylestring(...)

Too many methods were being called get<methodname> without any unifying reason. I've decided to try and rename methods such that all remaining methods that start with get suggests a method corresponding to a modifier (such as add, set, etc).

  • getblocksize(rasterband) -> blocksize(rasterband)
  • getdatatype(rasterband) -> pixeltype(rasterband)
  • getaccess(rasterband) -> accessflag(rasterband)
  • getnumber(rasterband) -> indexof(rasterband)
  • getmaskflags(rasterband) -> maskflags(rasterband)
  • getmaximum(rasterband) -> maximum(rasterband)
  • getminimum(rasterband) -> minimum(rasterband)
  • getfidcolname(layer) -> fidcolumnname(layer)
  • getgeomcolname(layer) -> geomcolumnname(layer)
  • getlayerdefn(layer) -> layerdefn(layer)
  • getcurvegeom(geom) -> curvegeom(geom)
  • getlineargeom(geom) -> lineargeom(geom)
  • getdim(geom) -> geomdim(geom)
  • getgeomname(geom) -> geomname(geom)
  • getpaletteinterp(colortable) -> paletteinterp(colortable)
  • getsampleoverview(...) -> sampleoverview(...)
  • getrgba(...) -> toRGBA(...)
  • getextent(...) -> envelope(...)
  • getenvelope(geom) -> envelope(geom)
  • getenvelope3d(geom) -> envelope3d(geom)
  • getcolumnname(...) -> columnname(...)
  • getcolumnusage(...) -> columnusage(...)
  • getcolumntype(...) -> columntype(...)

Some of the index methods are now prefixed with find to be suggestive of what is actually happening.

  • getrowindex(rat, pxvalue) -> findrowindex(rat, pxvalue)
  • getcolumnindex(...) -> findcolumnindex(...)
  • getfieldindex(...) -> findfieldindex(...)
  • getgeomfieldindex(...) -> findgeomindex(...)

At the end of it all, we have

julia> AG.get
getattrvalue          getdefaultRAT          getgeotransform!       getoverview            getsubtype
getband               getdriver              getjustify             getpart                getthreadconfigoption
getcategorynames      getfeature             getlayer               getpoint               gettype
getcolorentry         getfeaturedefn         getlinearbinning       getpoint!              getunit
getcolorentryasrgb    getfid                 getmaskband            getprecision           getunittype
getcolorinterp        getfield               getmediatype           getproj                getwidth
getcolortable         getfielddefn           getname                getscale               getx
getconfigoption       getgeom                getnativedata          getspatialfilter       gety
getcoorddim           getgeomdefn            getnodatavalue         getspatialref          getz
getdataset            getgeomtype            getnonlineargeomflag   getstylestring
getdefault            getgeotransform        getoffset              getstyletable

julia> AG.set
setattributefilter!   setfeature!            setjustify!            setparam!              setstyleignored!
setattrvalue!         setfid!                setlinearbinning!      setparams!             setstylestring!
setcategorynames!     setfield!              setmediatype!          setpoint!              setstyletable!
setcolorentry!        setfrom!               setname!               setpointcount!         setsubtype!
setcolorinterp!       setgeom!               setnativedata!         setprecision!          setthreadconfigoption
setcolortable!        setgeomignored!        setnextbyindex!        setproj!               settype!
setconfigoption       setgeomtype!           setnodatavalue!        setrowcount!           setunit!
setcoorddim!          setgeotransform!       setnonlineargeomflag!  setscale!              setunittype!
setdefault!           setignored!            setnullable!           setspatialfilter!      setvalue!
setdefaultRAT!        setignoredfields!      setoffset!             setspatialref!         setwidth!

julia> AG.add
addfeature    addfielddefn   addgeom!       addpart!       addstyle!
addfeature!   addfielddefn!  addgeomdefn!   addpoint!

which feels a lot more reasonable.

dropped

  • getfeaturesread(layer): not all drivers seem to update this count properly, and advanced users can call GDAL.getfeaturesread(layer.ptr)
  • starttransaction(layer): advanced users can call GDAL.starttransaction(layer.ptr)
  • rollbacktransaction(layer): advanced users can call GDAL.rollbacktransaction(layer.ptr)
  • committransaction(layer): advanced users can call GDAL.committransaction(layer.ptr)
  • synctodisk!(layer): advanced users can call GDAL.synctodisk(layer.ptr)
  • flushcache!(rasterband): advanced users can call GDAL.flushrastercache(rasterband.ptr)
  • setstyletabledirectly!(feature, styletable): use setstyletable!(feature, styletable) instead. advanced users can call GDAL.setstyletabledirectly(feature.ptr, styletable.ptr).
  • setgeomdirectly!(feature[, i], geom): use setgeom!(feature[, i], geom) instead. advanced users can call GDAL.setgeometrydirectly(feature.ptr[, i], geom.ptr).
  • addgeomdirectly!(geom1, geom1): use push!(geom1, geom2) instead. advanced users can call GDAL.addgeometrydirectly(geom1.ptr, geom2.ptr).
  • setspatialref!(geom, spatialref) and transform!(geom, spatialref): rather than doing setspatialref!(geom, spatialref1); transform!(geom, spatialref2), do createcoordtrans(spatialref1, spatialref2) do coordtransform; transform!(geom, coordtransform) end instead. advanced users can call GDAL.assignspatialreference(geom.ptr, spatialref.ptr) and GDAL.transformto(geom.ptr, spatialref.ptr) instead.

v0.2.2

02 Dec 22:28
v0.2.2
Compare
Choose a tag to compare

v0.2.2 (2019-12-02)

Diff since v0.2.1

Closed issues:

  • ArchGDAL has to be installed before GDAL/must install GDAL itself (#94)
  • read! and write! argument order (#90)
  • Getting metadata on single band geotiff? (#89)
  • Add readgeotiff util function? (#88)
  • transposed rasters (#37)

Merged pull requests:

  • bump patch version and add compat entries (#99) (visr)
  • import GeoInterface methods explicitly (#96) (rafaqz)
  • Update documentation on order of dimensions. (#93) (evetion)

v0.2.1

21 Aug 22:08
v0.2.1
Compare
Choose a tag to compare

v0.2.1 (2019-08-21)

Diff since v0.2.0

Closed issues:

  • How to read and write wkb with srid? (#77)
  • Add support for GDAL utilities (#74)
  • Error tagging new release (#71)
  • Tag Julia 0.6 version (#70)
  • Support rasterization of vector objects (#55)

Merged pull requests:

  • Migrated to Pkg3. Pinned GDAL. (#86) (evetion)
  • Add support for gdal utilities (#75) (yeesian)
  • Support AbstractSpatialRef in all functions (#73) (yeesian)

ArchGDAL v0.2.0

03 Jan 20:58
Compare
Choose a tag to compare
add feature count test