image annotateImages

Scénario Cas Limite : Annotation de Données Géospatiales Incomplètes

Scénario de test & Cas d'usage

Contexte Métier

Une agence d'analyse géospatiale reçoit des données d'annotation pour des images satellites de sources multiples. La qualité des données est variable : certaines annotations sont manquantes, d'autres sont dans un format incorrect. Ce scénario teste la robustesse de l'action `annotateImages` face à des données d'annotation imparfaites. L'objectif est que l'action traite les enregistrements valides et ignore gracieusement les enregistrements invalides sans échouer.
À propos du Set : image

Traitement, manipulation et analyse d'images.

Découvrir toutes les actions de image
Préparation des Données

Crée une table 'SATELLITE_ANNOTATIONS' avec des données d'annotation hétérogènes pour des polygones (format Protobuf). La table inclut un enregistrement valide, un avec une valeur manquante pour l'annotation, et un avec une chaîne de caractères malformée qui ne peut pas être parsée comme un Protobuf.

Copié !
1DATA casuser.SATELLITE_ANNOTATIONS;
2 LENGTH image_id $40 _protobuf_data_ $500;
3 
4 /* Cas 1: Donnée valide */
5 image_id = 'SAT_IMG_FR_PARIS_001.tif';
6 _protobuf_data_ = '1a2b0a290a0408011001122109f6...'; /* Chaîne Protobuf valide (simulée) */
7 OUTPUT;
8 
9 /* Cas 2: Donnée manquante */
10 image_id = 'SAT_IMG_FR_LYON_002.tif';
11 _protobuf_data_ = ''; /* Chaîne vide */
12 OUTPUT;
13 
14 /* Cas 3: Donnée malformée */
15 image_id = 'SAT_IMG_DE_BERLIN_003.tif';
16 _protobuf_data_ = 'ceci-nest-pas-un-protobuf'; /* Chaîne invalide */
17 OUTPUT;
18 
19 /* Cas 4: Donnée avec valeur SAS manquante */
20 image_id = 'SAT_IMG_ES_MADRID_004.tif';
21 call missing(_protobuf_data_);
22 OUTPUT;
23RUN;

Étapes de réalisation

1
Lancement de l'action 'annotateImages' avec le type d'annotation 'PROTOBUF' sur la table contenant les données imparfaites. On s'attend à ce que l'action génère des avertissements (warnings) dans le journal SAS mais ne s'arrête pas en erreur.
Copié !
1PROC CAS;
2 image.annotateImages /
3 TABLE={name='SATELLITE_ANNOTATIONS'}
4 casOut={name='SATELLITE_ANNOTEES_ROBUST', replace=true}
5 annotations={{annotation={
6 annotationType='PROTOBUF',
7 representation={representationType='SINGLE_COLUMN', columnName='_protobuf_data_'}
8 }}}
9 images={id='image_id', image='_image_'};
10RUN;
11QUIT;
2
Inspection de la table de sortie. Elle devrait contenir les 4 enregistrements, mais seule l'image du premier enregistrement ('SAT_IMG_FR_PARIS_001.tif') doit être annotée.
Copié !
1 
2PROC CASUTIL;
3list rows=10 casdata='SATELLITE_ANNOTEES_ROBUST';
4QUIT;
5 

Résultat Attendu


L'action s'exécute jusqu'à son terme sans erreur fatale. La table 'SATELLITE_ANNOTEES_ROBUST' est créée et contient 4 lignes. Seule l'image 'SAT_IMG_FR_PARIS_001.tif' est visuellement annotée avec le polygone. Les trois autres images sont présentes dans la table mais ne sont pas annotées. Le journal (log) SAS doit contenir des avertissements indiquant que les annotations pour les images de Lyon, Berlin et Madrid n'ont pas pu être appliquées en raison de données manquantes ou invalides. Ce comportement confirme la robustesse de l'action.