sandboxed-api/oss-internship-2020/gdal
Christian Blichmann 839914d6dd cmake: Rename build options to follow Abseil naming
`BUILD_TESTING` is a CMake provided option and we should use similar naming,
just like how Abseil does it.

- `SAPI_ENABLE_TESTS` -> `SAPI_BUILD_TESTING`
- `SAPI_ENABLE_CONTRIB_TESTS` -> `SAPI_CONTRIB_BUILD_TESTING`
- `SAPI_ENABLE_EXAMPLES` -> `SAPI_BUILD_EXAMPLES`

Drive-by:
- Fix option name in GitHub action
PiperOrigin-RevId: 443305932
Change-Id: Ice2b42be1229a0f9ae7c2ceda9ce87187baf22c4
2022-04-21 01:17:39 -07:00
..
raster_to_gtiff Change license link to HTTPS URL 2022-01-28 01:39:09 -08:00
CANYrelief1-geo.tif GDAL good version 2020-09-23 15:39:49 +00:00
CMakeLists.txt cmake: Rename build options to follow Abseil naming 2022-04-21 01:17:39 -07:00
raster.cc Change license link to HTTPS URL 2022-01-28 01:39:09 -08:00
README.md Merge pull request #53 from doinachiroiu:master 2020-09-24 06:57:28 -07:00

GDAL Raster GeoTIFF Workflow

Build Tools: CMake/Ninja
OS: Linux

For installing GDAL:

sudo apt-get install python3.6-dev
sudo add-apt-repository ppa:ubuntugis/ppa && sudo apt update
sudo apt-get install gdal-bin
sudo apt-get install libgdal-dev

Dependencies:

PNG: sudo apt-get install libpng-dev

PCRE: sudo apt-get install libpcre3 libpcre3-dev

PROJ: sudo apt-get install libproj-dev

OBS! You may need to set export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib. It is required for libproj.so to be found into /usr/local/lib/. You can also fix this by typing locate libproj.so which will give you <the_absolute_libproj.so_path> and then cp <the_absolute_libproj.so_path> /usr/local/lib/.

Initializing GDAL submodule:

git submodule add https://github.com/OSGeo/gdal/tree/master/gdal

Building GDAL statically

GNUmakefile from gdal/gdal can handle building the static library.

cd gdal/gdal && make static-lib

cd ../.. && mkdir lib

cp gdal/gdal/libgdal.a lib/

OBS! The file is huge! It may take a while.

For testing:

mkdir build && cd build

cmake .. -G Ninja

ninja

./raster <your_absolute_tiff_file_path>

About the project

GDAL is a translator library for raster and vector geospatial data format. The project consist in rastering a GeoTIFF file format using GDAL functionalities and sandboxed methods.

Implementation

Sandboxing...

The purpose of sandboxing is to limit the permissions and capabilities of librarys methods, in order to secure the usage of them. After obtaining the sandbox, the functions will be called through an Sandbox API (being called api in the current test) and so, the operations, system calls or namspaces access may be controlled.

Raster process...

Useful functions from the gdal.h header are added to the SAPI library built with CMake.

One .tiff file is manipulated with GDALOpen functionality, which extracts a pointer to the data set containg a list of raster bands, all pertaining to the same area. Metadata, a coordinate system, a georeferencing transform, size of raster and various other information are kept into the data set that corresponds to the image.

To create an array containing the image information, the dimentions needed are extracted using some specific GDAL(X/Y)Size functions applied to the block. GDALRasterBand function takes care of data type conversion, one more step following: placing the converted data (with RasterIO method) into the created and well allocated structure.