Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spatial and robust stats, intro documentation + Update of spatialstats.py with new scikit-gstat features #159

Merged
merged 120 commits into from
Aug 14, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
120 commits
Select commit Hold shift + click to select a range
f7f6108
Merge pull request #6 from GlacioHack/main
rhugonnet Mar 27, 2021
9c97f54
Merge branch 'GlacioHack:main' into main
rhugonnet Jun 17, 2021
db8fcc7
incremental commit for spatialstats documentation
rhugonnet Jun 27, 2021
5415f37
incremental commit for spatialstats documentation
rhugonnet Jun 27, 2021
d875f15
incremental commit on spatialstats documentation
rhugonnet Jun 27, 2021
d7df5c0
incremental commit for spatialstats documentation
rhugonnet Jun 28, 2021
0dc2d5e
incremental commit for spatialstats documentation
rhugonnet Jun 28, 2021
0cfdd1e
incremental commit for spatialstats documentation
rhugonnet Jun 28, 2021
0ac7c39
incremental commit for spatialstats documentation
rhugonnet Jun 28, 2021
1a030f5
incremental commit for spatialstats documentation
rhugonnet Jun 28, 2021
7252e6d
incremental commit for spatialstats documentation
rhugonnet Jun 28, 2021
f45bcab
incremental commit for spatialstats documentation
rhugonnet Jun 28, 2021
4cb4db4
incremental commit for spatialstats documentation
rhugonnet Jun 28, 2021
769fade
incremental commit for spatialstats documentation
rhugonnet Jun 28, 2021
c7591b3
incremental commit for spatialstats documentation
rhugonnet Jun 28, 2021
a6140ff
incremental commit for spatialstats documentation
rhugonnet Jun 28, 2021
99cfee4
incremental commit for spatialstats documentation
rhugonnet Jun 28, 2021
20d077b
incremental commit for spatialstats documentation
rhugonnet Jun 28, 2021
c5b10e8
incremental commit for spatialstats documentation
rhugonnet Jun 28, 2021
71db614
incremental commit for spatialstats documentation
rhugonnet Jun 28, 2021
d613edf
incremental commit for spatialstats documentation
rhugonnet Jun 28, 2021
e8f28a1
incremental commit for spatialstats documentation
rhugonnet Jun 28, 2021
0657daa
incremental commit for spatialstats documentation
rhugonnet Jun 28, 2021
34ca13a
accouting for pr comments
rhugonnet Jun 29, 2021
2901182
add accuracy/precision image
rhugonnet Jun 29, 2021
f20187b
incremental commit for spatialstats documentation
rhugonnet Jun 29, 2021
ec64445
try fix for image display
rhugonnet Jun 29, 2021
bf1914e
add doc image locally
rhugonnet Jun 29, 2021
8956527
try static dir in conf
rhugonnet Jun 29, 2021
fb9a4ea
add source link
rhugonnet Jun 29, 2021
2fee2b3
larger size image
rhugonnet Jun 29, 2021
90721c0
incremental commit for spatialstats documentation
rhugonnet Jun 30, 2021
4b2fa10
incremental commit for spatialstats documentation
rhugonnet Jun 30, 2021
49c4502
Merge remote-tracking branch 'upstream/main' into doc_spstats
rhugonnet Jun 30, 2021
ecde5de
incremental commit for spatialstats documentation
rhugonnet Jun 30, 2021
48f73cc
incremental commit for spatialstats documentation
rhugonnet Jul 1, 2021
aa53440
Merge remote-tracking branch 'upstream/main' into doc_spstats
rhugonnet Jul 2, 2021
ebef6d3
testing image width as percentage
rhugonnet Jul 2, 2021
eabfcd8
fix testing image width as percentage
rhugonnet Jul 2, 2021
94c5e0f
add plot 1d and 2d functions for binning
rhugonnet Jul 3, 2021
8bee9bc
remove remaining download example lines
rhugonnet Jul 3, 2021
b3679a4
first draft example nonstationarity
rhugonnet Jul 3, 2021
c4317b7
playing with sphinx gallery
rhugonnet Jul 3, 2021
cb02ff7
nonstationarity gallery example
rhugonnet Jul 4, 2021
fd8fbb1
fix warnings and improve prints
rhugonnet Jul 4, 2021
feecde8
fix curv unit
rhugonnet Jul 4, 2021
54890e1
fix min_count
rhugonnet Jul 4, 2021
fc5920b
fix slope variable name
rhugonnet Jul 4, 2021
eeffc0e
shorten title
rhugonnet Jul 4, 2021
d3cabed
reformulation
rhugonnet Jul 4, 2021
88aa7ad
text fixes
rhugonnet Jul 4, 2021
749cea5
fix text
rhugonnet Jul 4, 2021
ee12cd2
fix text
rhugonnet Jul 4, 2021
a5ad477
use subsample_raster, simplify with skgstat count property
rhugonnet Jul 6, 2021
24f623f
incremental commit for text
rhugonnet Jul 6, 2021
210fcbf
updating variogram sampling with skgstat custom binning
rhugonnet Jul 6, 2021
2a97d06
incremental commit for adapting to new skgstat
rhugonnet Jul 16, 2021
e593375
pr comments + refactor name
rhugonnet Jul 16, 2021
e579031
refactor spstats into spatialstats
rhugonnet Jul 16, 2021
e70d360
incremental commit on documentation
rhugonnet Jul 16, 2021
65a3621
incremental commit on documentation
rhugonnet Jul 16, 2021
2b67b3b
incremental commit on documentation
rhugonnet Jul 16, 2021
c0c5f37
incremental commit on documentation
rhugonnet Jul 16, 2021
51a50b0
incremental commit on documentation
rhugonnet Jul 17, 2021
ba56f72
incremental commit on documentation
rhugonnet Jul 17, 2021
81b6e6e
fix spatial variogram function with new metricspace
rhugonnet Jul 20, 2021
fa471c9
deal with nodata and simplify quantile binning
rhugonnet Jul 21, 2021
ee1adb9
reorganize variogram sampling with skgstat update, pass kwargs down, …
rhugonnet Jul 21, 2021
5333573
more robust variogram tests, fix small issues
rhugonnet Jul 23, 2021
5ebde8e
Merge remote-tracking branch 'upstream/main' into doc_spstats
rhugonnet Jul 23, 2021
d2c10ba
other merge commit left behind
rhugonnet Jul 23, 2021
3a2d843
reduce test length
rhugonnet Jul 23, 2021
6e69941
improve plot_vgm
rhugonnet Jul 23, 2021
f834082
finish skeleton of gallery example
rhugonnet Jul 23, 2021
45f51e6
remove old plotting
rhugonnet Jul 23, 2021
3689492
fix test
rhugonnet Jul 23, 2021
b3dca29
improve plot_vgm and patches_method
rhugonnet Jul 27, 2021
1f7a416
finalize plot_vgm gallery example
rhugonnet Jul 27, 2021
586490f
refine plot_vgm example
rhugonnet Jul 28, 2021
36028f2
fix patches_method test
rhugonnet Jul 28, 2021
c30dba3
update spatial stats doc page with new functions
rhugonnet Jul 28, 2021
ce1330d
improve modularity of patches_method, random_state, add more tests
rhugonnet Jul 28, 2021
afa5713
fixes with amaurys comments
rhugonnet Jul 28, 2021
78abe22
fix histogram bug with log scale for plot_vgm
rhugonnet Jul 28, 2021
b5704bf
polish text
rhugonnet Jul 28, 2021
14725e5
refine plot_vgm xmin
rhugonnet Jul 28, 2021
d65b55b
refactor nruns into n_variograms and nproc into n_jobs (like scikit)
rhugonnet Jul 29, 2021
2150e20
fix gallery example display
rhugonnet Jul 29, 2021
39d0c33
Fix spatialstats code with pytest.
erikmannerfelt Jul 29, 2021
8a9f7df
Merge pull request #7 from erikmannerfelt/doc_spstats
rhugonnet Jul 29, 2021
b20f024
add random state, polish fit_sum_variogram
rhugonnet Jul 29, 2021
4181930
pass down child random states to get independent variogram runs with …
rhugonnet Jul 29, 2021
5f284f7
change nuth and kaab reference to documentation to avoid sphinx galle…
rhugonnet Jul 29, 2021
84e218f
streamline gallery examples
rhugonnet Jul 29, 2021
ad1960e
refactor nmax argument of patches method into n_patches
rhugonnet Jul 29, 2021
db6407e
incremental commit on documentation
rhugonnet Jul 29, 2021
2100d15
incremental commit on documentation
rhugonnet Jul 29, 2021
e5d8889
incremental commit on documentation
rhugonnet Jul 29, 2021
ae6bc45
incremental commit on documentation
rhugonnet Jul 29, 2021
28c1d90
incremental commit on documentation
rhugonnet Jul 30, 2021
4e52840
incremental commit on documentation
rhugonnet Jul 30, 2021
c6a6d02
incremental commit on documentation
rhugonnet Jul 30, 2021
fb25a2a
refactor variogram function names
rhugonnet Jul 30, 2021
810dd09
add subsections
rhugonnet Jul 30, 2021
a63956a
incremental commit on documentation
rhugonnet Jul 30, 2021
56d7368
add plot to illustrate non stationarity
rhugonnet Aug 4, 2021
c5aa17a
fix doc tests
rhugonnet Aug 4, 2021
20953d9
draft standardization gallery example
rhugonnet Aug 4, 2021
206d89b
finalize standardization gallery example
rhugonnet Aug 5, 2021
0c9edec
add standardizing doc plot
rhugonnet Aug 5, 2021
cfc16f4
incremental commit on documentation
rhugonnet Aug 5, 2021
e2e03b0
fix test_docs
rhugonnet Aug 5, 2021
0919dfd
incremental commit on documentation
rhugonnet Aug 6, 2021
ecbdbe9
Merge remote-tracking branch 'upstream/main' into doc_spstats
rhugonnet Aug 9, 2021
0638e39
raise warning and return nan dataframe when no valid patch is found
rhugonnet Aug 11, 2021
55b0ae3
nan is clearly than nodata
rhugonnet Aug 11, 2021
8a4037c
accelerate patch sampling for large nan matrices
rhugonnet Aug 11, 2021
261579f
update minimal skgstat version
rhugonnet Aug 13, 2021
a73872b
try previous skgstat version for CI
rhugonnet Aug 13, 2021
e2b994a
eriks comments on gallery examples
rhugonnet Aug 13, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion dev-environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ dependencies:
- tqdm
- scikit-image
- proj-data
- scikit-gstat
- scikit-gstat>=0.6.7
- pytransform3d
- geoutils

Expand Down
2 changes: 1 addition & 1 deletion docs/source/api.rst
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Full information about xdem's functionality is provided on this page.
dem
filters
spatial_tools
spstats
spatialstats
terrain
volume

Expand Down
16 changes: 16 additions & 0 deletions docs/source/biascorr.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
.. _biascorr:

Bias corrections
================

Bias corrections correspond to transformations that cannot be described as a 3-dimensional affine function (see :ref:`coregistration`).

Directional biases
------------------

TODO

Terrain biases
--------------

TODO
41 changes: 41 additions & 0 deletions docs/source/code/spatialstats.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
"""Code example for spatial statistics"""
import xdem
rhugonnet marked this conversation as resolved.
Show resolved Hide resolved
import geoutils as gu
import numpy as np


# Load data
dh = gu.georaster.Raster(xdem.examples.get_path("longyearbyen_ddem"))
ref_dem = xdem.DEM(xdem.examples.get_path("longyearbyen_ref_dem"))
glacier_mask = gu.geovector.Vector(xdem.examples.get_path("longyearbyen_glacier_outlines"))
mask = glacier_mask.create_mask(dh)
slope = xdem.terrain.get_terrain_attribute(ref_dem.data, resolution=ref_dem.res[0], attribute=['slope'])

# Keep only stable terrain data
dh.data[mask] = np.nan

# Estimate the measurement error by bin of slope, using the NMAD as robust estimator
df_ns = xdem.spatialstats.nd_binning(dh.data.ravel(), list_var=[slope.ravel()], list_var_names=['slope'],
statistics=['count', xdem.spatialstats.nmad])

# Derive a numerical function of the measurement error
err_dh = xdem.spatialstats.interp_nd_binning(df_ns, list_var_names=['slope'])

# Standardize the data
z_dh = dh.data.ravel() / err_dh(slope.ravel())

# Sample empirical variogram
df_vgm = xdem.spatialstats.sample_empirical_variogram(values=dh.data, gsd=dh.res[0], subsample=50,
random_state=42, runs=10)
# Fit sum of double-range spherical model
fun, coefs = xdem.spatialstats.fit_sum_model_variogram(list_model=['Sph', 'Sph'], empirical_variogram=df_vgm)

# Calculate the area-averaged uncertainty with these models
list_vgm = []
for i in range(2):
list_vgm.append((coefs[2 * i], "Sph", coefs[2 * i + 1]))
area = 1000
neff = xdem.spatialstats.neff_circ(area, list_vgm)



22 changes: 22 additions & 0 deletions docs/source/code/spatialstats_nonstationarity_slope.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
"""Code example for spatial statistics"""
import xdem
import geoutils as gu
import numpy as np

# Load data
dh = gu.georaster.Raster(xdem.examples.get_path("longyearbyen_ddem"))
ref_dem = xdem.DEM(xdem.examples.get_path("longyearbyen_ref_dem"))
glacier_mask = gu.geovector.Vector(xdem.examples.get_path("longyearbyen_glacier_outlines"))
mask = glacier_mask.create_mask(dh)

# Get slope for non-stationarity
slope = xdem.terrain.get_terrain_attribute(dem=ref_dem.data, resolution=dh.res, attribute=['slope'])

# Keep only stable terrain data
dh.data[mask] = np.nan

# Estimate the measurement error by bin of slope, using the NMAD as robust estimator
df_ns = xdem.spatialstats.nd_binning(dh.data.ravel(), list_var=[slope.ravel()], list_var_names=['slope'],
statistics=['count', xdem.spatialstats.nmad], list_var_bins=30)

xdem.spatialstats.plot_1d_binning(df_ns, 'slope', 'nmad', 'Slope (degrees)', 'Elevation measurement error (m)')
44 changes: 44 additions & 0 deletions docs/source/code/spatialstats_standardizing.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
"""Documentation plot illustrating standardization of a distribution"""
import numpy as np
import matplotlib.pyplot as plt

# Example x vector
mu = 15
sig = 5
np.random.seed(42)
y = np.random.normal(mu, sig, size=300)

fig, ax1 = plt.subplots(figsize=(8,3))

# Original histogram
ax1.hist(y, color='tab:blue', edgecolor='white', linewidth=0.5, alpha=0.7)
ax1.vlines(mu, ymin=0, ymax=90, color='tab:blue', linestyle='dashed', lw=2)
ax1.vlines([mu-2*sig, mu+2*sig], ymin=0, ymax=90, colors=['tab:blue','tab:blue'], linestyles='dotted', lw=2)
ax1.annotate('Original\ndata $x$\n$\\mu_{x} = 15$\n$\\sigma_{x} = 5$', xy=(mu+0.5, 85), xytext=(mu+5, 110), arrowprops=dict(color='tab:blue', width=0.5, headwidth=8),
color='tab:blue', fontweight='bold', ha='left')
ax1.spines['right'].set_visible(False)
ax1.spines['top'].set_visible(False)
ax1.spines['left'].set_visible(False)
ax1.set_yticks([])
ax1.set_ylim((0,130))

# Standardized histogram
ax1.hist((y-mu)/sig, color='tab:olive', edgecolor='white', linewidth=0.5, alpha=0.7)
ax1.vlines(0, ymin=0, ymax=90, color='tab:olive', linestyle='dashed', lw=2)
ax1.vlines([-2, 2], ymin=0, ymax=90, colors=['tab:olive','tab:olive'], linestyles='dotted', lw=2)
ax1.annotate('Standardized\ndata $z$\n$\\mu_{z} = 0$\n$\\sigma_{z} = 1$', xy=(-0.3, 85), xytext=(-5, 110), arrowprops=dict(color='tab:olive', width=0.5, headwidth=8),
color='tab:olive', fontweight='bold', ha='left')
ax1.spines['right'].set_visible(False)
ax1.spines['top'].set_visible(False)
ax1.spines['left'].set_visible(False)
ax1.set_yticks([])
ax1.set_ylim((0,130))

ax1.annotate('', xy=(0, 65), xytext=(mu, 65), arrowprops=dict(arrowstyle="-|>", connectionstyle="arc3,rad=0.2", fc="w"),
color='black')
ax1.text(mu/2, 90, 'Standardization:\n$z = \\frac{x - \\mu}{\\sigma}$', color='black', ha='center', fontsize=14,
fontweight='bold')
ax1.plot([], [], color='tab:gray', linestyle='dashed', label='Mean')
ax1.plot([], [], color='tab:gray', linestyle='dotted', label='Standard\ndeviation (2$\\sigma$)')
ax1.legend(loc='center right')

71 changes: 71 additions & 0 deletions docs/source/code/spatialstats_stationarity_assumption.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
"""Documentation plot illustrating stationarity of mean and variance"""
import matplotlib.pyplot as plt
import numpy as np
import xdem

# Example x vector
x = np.linspace(0,1,200)

sig = 0.2
np.random.seed(42)
y_rand1 = np.random.normal(0, sig, size=len(x))
y_rand2 = np.random.normal(0, sig, size=len(x))
y_rand3 = np.random.normal(0, sig, size=len(x))


y_mean = np.array([0.5*xval - 0.25 if xval >0.5 else 0.5*(1-xval) - 0.25 for xval in x])

fac_y_std = 0.5 + 2*x


fig, (ax1, ax2, ax3) = plt.subplots(ncols=3, figsize=(8,4))

# Stationary mean and variance
ax1.plot(x, y_rand1, color='tab:blue', linewidth=0.5)
ax1.hlines(0, xmin=0, xmax=1, color='black', label='Mean', linestyle='dashed')
ax1.hlines([-2*sig, 2*sig], xmin=0, xmax=1, colors=['tab:gray','tab:gray'], label='Standard deviation',linestyles='dashed')
ax1.set_xlim((0,1))
ax1.set_title('Stationary mean\nStationary variance')
# ax1.legend()
ax1.spines['right'].set_visible(False)
ax1.spines['top'].set_visible(False)
ax1.set_ylim((-1,1))
ax1.set_xticks([])
ax1.set_yticks([])
ax1.plot(1, 0, ">k", transform=ax1.transAxes, clip_on=False)
ax1.plot(0, 1, "^k", transform=ax1.transAxes, clip_on=False)

# Non-stationary mean and stationary variance
ax2.plot(x, y_rand2 + y_mean, color='tab:olive', linewidth=0.5)
ax2.plot(x, y_mean, color='black', label='Mean', linestyle='dashed')
ax2.plot(x, y_mean + 2*sig, color='tab:gray', label='Dispersion (2$\\sigma$)', linestyle='dashed')
ax2.plot(x, y_mean - 2*sig, color='tab:gray', linestyle='dashed')
ax2.set_xlim((0,1))
ax2.set_title('Non-stationary mean\nStationary variance')
ax2.legend(loc='lower center')
ax2.spines['right'].set_visible(False)
ax2.spines['top'].set_visible(False)
ax2.set_xticks([])
ax2.set_yticks([])
ax2.set_ylim((-1,1))
ax2.plot(1, 0, ">k", transform=ax2.transAxes, clip_on=False)
ax2.plot(0, 1, "^k", transform=ax2.transAxes, clip_on=False)

# Stationary mean and non-stationary variance
ax3.plot(x, y_rand3 * fac_y_std, color='tab:orange', linewidth=0.5)
ax3.hlines(0, xmin=0, xmax=1, color='black', label='Mean', linestyle='dashed')
ax3.plot(x, 2*sig*fac_y_std, color='tab:gray', linestyle='dashed')
ax3.plot(x, -2*sig*fac_y_std, color='tab:gray', linestyle='dashed')
ax3.set_xlim((0,1))
ax3.set_title('Stationary mean\nNon-stationary variance')
# ax1.legend()
ax3.spines['right'].set_visible(False)
ax3.spines['top'].set_visible(False)
ax3.set_xticks([])
ax3.set_yticks([])
ax3.set_ylim((-1,1))
ax3.plot(1, 0, ">k", transform=ax3.transAxes, clip_on=False)
ax3.plot(0, 1, "^k", transform=ax3.transAxes, clip_on=False)

plt.tight_layout()
plt.show()
26 changes: 26 additions & 0 deletions docs/source/code/spatialstats_variogram_covariance.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
"""Documentation plot illustrating the link between variogram and covariance"""
import matplotlib.pyplot as plt
import numpy as np

# Example variogram function
def variogram_exp(h):
from xdem.spatialstats import vgm
val = vgm(h, 15, model='Exp', psill=10)
return val

fig, ax = plt.subplots()
x = np.linspace(0,100,100)
ax.plot(x, variogram_exp(x), color='tab:blue', linewidth=2)
ax.plot(x, 10 - variogram_exp(x), color='black', linewidth=2)
ax.hlines(10, xmin=0, xmax=100, linestyles='dashed', colors='tab:red')
ax.text(75, variogram_exp(75)-1, 'Semi-variogram $\\gamma(l)$', ha='center', va='top', color='tab:blue')
ax.text(75, 10 - variogram_exp(75) + 1, 'Covariance $C(l) = \\sigma^{2} - \\gamma(l)$', ha='center', va='bottom', color='black')
ax.text(75, 11, 'Variance $\\sigma^{2}$', ha='center', va='bottom', color='tab:red')
ax.set_xlim((0, 100))
ax.set_ylim((0, 12))
ax.set_xlabel('Spatial lag $l$')
ax.set_ylabel('Variance of elevation differences (m²)')
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
plt.tight_layout()
plt.show()
2 changes: 1 addition & 1 deletion docs/source/comparison.rst
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
DEM subtraction and volume change
Differencing and volume change
=================================

.. contents:: Contents
Expand Down
4 changes: 2 additions & 2 deletions docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
},
# directory where function/class granular galleries are stored
"backreferences_dir" : "gen_modules/backreferences",
"doc_module": ("xdem", "geoutils") # I honestly don't know what this is.
"doc_module": ("xdem", "geoutils") # which function/class levels are used to create galleries
}

# Add any paths that contain templates here, relative to this directory.
Expand All @@ -87,7 +87,7 @@
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
# html_static_path = ['_static'] # Commented out as we have no custom static data
html_static_path = ['imgs'] # Commented out as we have no custom static data
rhugonnet marked this conversation as resolved.
Show resolved Hide resolved


exclude_patterns = [
Expand Down
16 changes: 12 additions & 4 deletions docs/source/coregistration.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,16 @@
.. _coregistration:

DEM Coregistration
==================
Coregistration
===============

Coregistration between DEMs correspond to aligning the digital elevation models in three dimension.

Transformations that can be described by a 3-dimensional `affine <https://en.wikipedia.org/wiki/Affine_transformation>`_ function are included in coregistration methods.
Those transformations include for instance:

- vertical and horizontal translations,
- rotations, reflections,
- scalings.

.. contents:: Contents
:local:
Expand Down Expand Up @@ -208,11 +217,10 @@ For larger rotations, ICP is the only reliable approach (but does not outperform

coreg.ICP() + coreg.NuthKaab()


For large biases, rotations and high amounts of noise:

.. code-block:: python

coreg.BiasCorr() + coreg.ICP() + coreg.NuthKaab()
coreg.VerticalShift() + coreg.ICP() + coreg.NuthKaab()


6 changes: 6 additions & 0 deletions docs/source/filters.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
.. _filters:

Filtering
=========

In construction
Binary file added docs/source/imgs/precision_accuracy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 6 additions & 2 deletions docs/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

Welcome to xdem's documentation!
================================
xdem aims to make Digital Elevation Model (DEM) comparisons easy.
``xdem`` aims to make Digital Elevation Model (DEM) analysis easy.
Coregistration, subtraction (and volume measurements), and error statistics should be available to anyone with the correct input data.


Expand All @@ -27,9 +27,13 @@ Simple usage
:maxdepth: 2
:caption: Contents:

intro
coregistration
biascorr
filters
comparison
spatial_stats
spatialstats
robuststats
terrain
auto_examples/index.rst
api.rst
Expand Down
Loading