Quick update:
We are now using uv texture mapping in Makie.jl to visualize “rasters”, which gives an additional 2.5x speedup. If you need this speed, please update your environment.
We are now using uv texture mapping in Makie.jl to visualize “rasters”, which gives an additional 2.5x speedup. If you need this speed, please update your environment.
If you want faster upsampling, look into NNlib. The julia native bilinear upsampling there is parallelized for cpu and gpu and supports 1, 2 & 3D data and is as fast as it can probably get.
Relevant update:
Two job opportunities:
I’m finishing a Masters in Geophysics that is in the geospatial realm (my research is in geodesy). Maybe by the end of my degree I’ll qualify as for being “proficient in high-performance programming languages” because as of now, I’m firmly between novice and adequate. lol
Good luck with the search!
New discretization and refinement methods, and various other small improvements and fixes.
New MaxLengthDiscretization
to discretize geometries into subgeometries of maximum length. This is used in viz
of geodesic geometries.
If you create a Segment
from two points with LatLon
coordinates, and call viz
you will see it is “curved”. Below you can see this with random segments:
segs = rand(Segment, 100, crs=LatLon)
viz(segs)
Works for various other geometries of course, including all geometries with parametric dimension 1 (e.g. Ring
s of polygons).
The TriRefinement
now supports a predicate function for adaptive refinement. For instance, you can refine all elements with area greater than a given threshold TriRefinement(e -> area(e) > 1km^2)
.
The georef
function now supports a lenunit
option besides the crs
to specify the length units of some CRS from raw unitless columns.
All Grid
subtypes now support CRS
(e.g., RectilinearGrid, StructuredGrid, RegularGrid, CartesianGrid). The CartesianGrid
is now an alias to a RegularGrid
with Cartesian
CRS. If you need to convert back and forth between LatLon
and Projected
coordinates, prefer RegularGrid
in your workflows.
We are seeing more and more articles in applied sciences citing the software. Thank you
This release introduces transiogram functions, which measure the transition probability between categorical values at any given distance along any given direction. Transiograms are used to simulate Markov processes in more than one dimension (e.g. space).
Various models are implemented, including the MatrixExponentialTransiogram
model by Carle et al and the PiecewiseLinearTransiogram
model by Li et al.
Below is an example where transition probabilities are estimated for 4 categorical values DebrisFlow
, Floodplain
, Overbank
and Channel
along the vertical direction.
Another function that was introduced recently is eachvertex
, which can be used to iterate over the vertices of a polytope (polygon, segment, etc.) or mesh (e.g. grid) without memory allocation:
for v1 in eachvertex(g1)
for v2 in eachvertex(g2)
...
end
end
Various other performance optimizations related to eachvertex
were implemented to speed things up and reduce the memory usage of specific algorithms.