Bonjour à vous,

J'apprend actuellement à utiliser OGR / GDAL et je suis confronter à une difficulté depuis quelques jours.
J'essaye de transformer un raster en vecteur en utilisant la méthode GDALPolygonize mais sans succès.
J'obtiens un OGRLayer qui contient des objets OGRFeatures vides et je n'arrive pas à savoir l'erreur.
De plus lors de la création du layer je dois ajouter des OGRFields mais je ne sais pas quel format leur donner.


Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// Objets GDAL
GDALDataset* GDAL_dataSet;
GDALRasterBand* GDAL_raster;
	
// Objets OGR
OGRSFDriverRegistrar* OGR_driverRegistar;
OGRSFDriver* OGR_driver;
OGRDataSource* OGR_dataSource;
OGRLayer* OGR_layer;
	
// Variables d'erreurs GDAL & OGR
CPLErr GDAL_err;
OGRErr OGR_err;

// Initialiser GDAL & OGR
GDALAllRegister();
OGRRegisterAll();
	
// Récupérer le raster
GDAL_dataSet = (GDALDataset*) GDALOpen("pedologie", GA_ReadOnly );
GDAL_raster = GDAL_dataSet->GetRasterBand(1);
	
// Créer un layer
OGR_driverRegistar = OGRSFDriverRegistrar::GetRegistrar();
OGR_driver = OGR_driverRegistar->GetDriverByName("ESRI ShapeFile");
OGR_dataSource = OGR_driver->CreateDataSource("datasource1");
OGR_layer = OGR_dataSource->CreateLayer("layer1",NULL,wkbMultiPolygon,NULL);

// Ajouter un champ au layer de type Integer
OGRFieldDefn OGR_field("index", OFTInteger);
OGR_layer->CreateField(&OGR_field);
	
// Passer de raster en vecteur
GDALPolygonize((GDALRasterBandH)GDAL_raster, NULL, (OGRLayerH)OGR_layer, 0,NULL, NULL, NULL);
Merci d'avance,
Waugriff