Skip to content

20treeAI/rpcm

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RPCM - Rational Polynomial Camera Model

Python implementation of the Rational Polynomial Camera (RPC) model for optical satellite images.

Carlo de Franchis, Gabriele Facciolo, Enric Meinhardt-Llopis (Centre Borelli, ENS Paris-Saclay, Université Paris-Saclay) 2013-21

rpcm is a Python library and command line tool for geolocating satellite images with RPCs. Its main source code repository is https://github.com/centreborelli/rpcm.

Installation

To install rpcm from PyPI:

pip install rpcm

Alternatively, to install rpcm from sources:

git clone https://github.com/centreborelli/rpcm.git
cd rpcm
pip install -e .

Usage

rpcm is a Python library that can be imported into other applications. A Jupyter notebook tutorial covering the main features of the library is included (TODO).

rpcm also comes with a Command Line Interface (CLI). The rpcm CLI has an extensive help that can be printed with the -h and --help switches.

$ rpcm -h
usage: rpcm [-h] {projection, localization, crop, footprint, angle} ...

Some CLI usage examples can be found in tests/tests.sh.

There are several subcommands, projection, localization, crop, footprint, angle, each of which has its own help.

Projection

$ rpcm projection -h
usage: rpcm projection [-h] [--lon LON] [--lat LAT] [-z Z] [--points POINTS]
                       [--crop CROP] [--svg SVG]
                       img

positional arguments:
  img              path or url to a GeoTIFF image file with RPC metadata

optional arguments:
  -h, --help       show this help message and exit
  --lon LON        longitude
  --lat LAT        latitude
  -z Z             altitude, in meters
  --points POINTS  path to a 2/3 columns txt file: lon lat [z]
  --crop CROP      path to a tif crop previously produced by rpcm. Image
                   coordinates are computed with respect to this crop.
  --svg SVG        path to an svg file where to plot projected points.

Localization

$ rpcm localization -h
usage: rpcm localization [-h] [-x X] [-y Y] [-z Z] [--points POINTS]
                     [--crop CROP]
                     img

positional arguments:
  img              path or url to a GeoTIFF image file with RPC metadata

optional arguments:
  -h, --help       show this help message and exit
  -x X             horizontal pixel coordinate (i.e. column index)
  -y Y             vertical pixel coordinate (i.e. row index)
  -z Z             altitude, in meters
  --points POINTS  path to a 3 columns txt file: x y z
  --crop CROP      path to a tif crop previously produced by rpcm. Image
                   coordinates are interpreted with respect to this crop.

Crop

$ rpcm crop -h
usage: rpcm crop [-h] [-z Z] img aoi crop

positional arguments:
  img         path to a GeoTIFF image file with RPC metadata
  aoi         path to geojson file defining the area of interest (AOI)
  crop        path to the output cropped tif image

optional arguments:
  -h, --help  show this help message and exit
  -z Z        altitude of the crop center

Footprint

$ rpcm footprint -h
usage: rpcm footprint [-h] [-z Z] img

positional arguments:
  img         path or url to a GeoTIFF image file with RPC metadata

optional arguments:
  -h, --help  show this help message and exit
  -z Z        altitude, in meters

Angle

$ rpcm angle -h
usage: rpcm angle [-h] [--lon LON] [--lat LAT] [-z Z] img1 img2

positional arguments:
  img1        path to a GeoTIFF image file with RPC metadata
  img2        path to a GeoTIFF image file with RPC metadata

optional arguments:
  -h, --help  show this help message and exit
  --lon LON   longitude
  --lat LAT   latitude
  -z Z        altitude

Common issues

Warning: A rasterio issue on Ubuntu causes the need for this environment variable (more info on rasterio's github):

export CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt