mirror of
https://gitlab.com/Trygve/contour-creator.git
synced 2024-12-22 13:50:18 +00:00
begynner på tiff innlesning
This commit is contained in:
parent
4e84911d36
commit
5778f2fd8e
12
CMakeLists.txt
Normal file
12
CMakeLists.txt
Normal file
@ -0,0 +1,12 @@
|
||||
project(inf205 CXX)
|
||||
cmake_minimum_required(VERSION 3.0)
|
||||
|
||||
find_package(GDAL CONFIG REQUIRED)
|
||||
|
||||
set(EXAMPLE_NAME read_tiff)
|
||||
add_executable(${EXAMPLE_NAME}
|
||||
read_tiff.cpp
|
||||
)
|
||||
|
||||
|
||||
target_link_libraries(${EXAMPLE_NAME} GDAL::GDAL)
|
88
read_tiff.cpp
Normal file
88
read_tiff.cpp
Normal file
@ -0,0 +1,88 @@
|
||||
#include <array>
|
||||
#include <cstddef>
|
||||
#include <gdal/gdal.h>
|
||||
#include "gdal/gdal_priv.h"
|
||||
|
||||
#include <errno.h>
|
||||
#include <iostream>
|
||||
#include <iterator>
|
||||
|
||||
#include <stdfloat>
|
||||
#include <thread>
|
||||
#include <vector>
|
||||
/*
|
||||
class HeightMap
|
||||
{
|
||||
public:
|
||||
float* data;
|
||||
int x_size;
|
||||
int y_size;
|
||||
|
||||
HeightMap(int x_size, int y_size);
|
||||
};
|
||||
|
||||
HeightMap::HeightMap(int x_size, int y_size, char* filepath) {
|
||||
this->x_size = x_size;
|
||||
this->y_size = y_size;
|
||||
this->data = (float *) CPLMalloc(sizeof(GDT_Float32)*x_size*y_size);
|
||||
|
||||
|
||||
}
|
||||
*/
|
||||
int main(int argc, const char* argv[])
|
||||
{
|
||||
if (argc != 2) {
|
||||
return EINVAL;
|
||||
}
|
||||
const char* pszFilename = argv[1];
|
||||
|
||||
GDALDatasetUniquePtr poDataset;
|
||||
GDALAllRegister();
|
||||
const GDALAccess eAccess = GA_ReadOnly;
|
||||
poDataset = GDALDatasetUniquePtr(GDALDataset::FromHandle(GDALOpen( pszFilename, eAccess )));
|
||||
if( !poDataset )
|
||||
{
|
||||
std::cout << "Error :/"; // handle error
|
||||
}
|
||||
std::cout << poDataset->GetDriverName();
|
||||
|
||||
|
||||
double adfGeoTransform[6];
|
||||
printf( "Driver: %s/%s\n",
|
||||
poDataset->GetDriver()->GetDescription(),
|
||||
poDataset->GetDriver()->GetMetadataItem( GDAL_DMD_LONGNAME ) );
|
||||
printf( "Size is %dx%dx%d\n",
|
||||
poDataset->GetRasterXSize(), poDataset->GetRasterYSize(),
|
||||
poDataset->GetRasterCount() );
|
||||
if( poDataset->GetProjectionRef() != NULL )
|
||||
printf( "Projection is `%s'\n", poDataset->GetProjectionRef() );
|
||||
if( poDataset->GetGeoTransform( adfGeoTransform ) == CE_None )
|
||||
{
|
||||
printf( "Origin = (%.6f,%.6f)\n",
|
||||
adfGeoTransform[0], adfGeoTransform[3] );
|
||||
printf( "Pixel Size = (%.6f,%.6f)\n",
|
||||
adfGeoTransform[1], adfGeoTransform[5] );
|
||||
}
|
||||
|
||||
float *buffer;
|
||||
auto poBand = poDataset->GetBands()[0];
|
||||
|
||||
int x_size = poBand->GetXSize();
|
||||
int y_size = poBand->GetYSize();
|
||||
|
||||
|
||||
buffer = (float *) CPLMalloc(sizeof(GDT_Float32)*x_size*y_size);
|
||||
poBand->RasterIO( GF_Read, 0, 0, x_size, y_size,
|
||||
buffer, x_size, y_size, GDT_Float32,
|
||||
0, 0 );
|
||||
|
||||
for (int i = 0; i < x_size*y_size; i++)
|
||||
{
|
||||
buffer+=sizeof(GDT_Float32);
|
||||
if (*buffer)
|
||||
{
|
||||
std::cout << *buffer<<" "<<i<<"\n";
|
||||
}
|
||||
}
|
||||
std::cout << "🤡"<<*buffer;
|
||||
}
|
Loading…
Reference in New Issue
Block a user