[ANN] GeoStats.jl - Geospatial Data Science and Geostatistical Modeling in Julia

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.

1 Like

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.

1 Like

Relevant update:

1 Like

GeoStats.jl v0.66

Refactored Slice transform and other minor fixes:

1 Like

Two job opportunities:

1 Like

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! :+1:

2 Likes

GeoStats.jl v0.68

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.

    Example

    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)
    

    image
    Works for various other geometries of course, including all geometries with parametric dimension 1 (e.g. Rings 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 :juliaheartpulsing:

3 Likes

GeoStats.jl v0.71

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.

3 Likes