#1 Wed 07 July 2010 11:40
- lukhan
- Participant occasionnel
- Date d'inscription: 5 Jul 2010
- Messages: 11
manipulation de shapefile avec API OGR
Bonjour à tous,
Voici mon souci : J'ai un shapefile qui contient une polyligne, et j'aimerai récupérer les 4 points les plus "extrèmes" en terme de positionnement : le point le plus à l'est, nord, sud, et ouest.
J'ai dans l'idée d'ouvrir mon shapefile, de récupérer la geometry, de la convertir en points grâce à OGR_G_ForceToMultiPoint(), et ensuite de faire une petite moulinette min/max pour trouver ces 4 points.
Déjà, je ne sais pas si ma méthode est la bonne, où si il y a plus simple ?
Et second problème, il ne me semble pas avoir le prototype de OGR_ForceToMultiPoint() dans ogr_api.h, comme dans la doc, d'où une "undefined reference to..." à la compilation.
Merci de votre aide.
Hors ligne
#2 Wed 07 July 2010 11:54
- rouault
- Participant assidu
- Date d'inscription: 26 Apr 2009
- Messages: 168
Re: manipulation de shapefile avec API OGR
La doc de la fonction OGR_G_ForceToMultiPoint() dit :
/*Tries to force the provided geometry to be a multipoint. Currently this just effects a change on points. */
Bon j'avoue que ce n'est pas super clair, mais le code lui l'est un peu plus ;-) En fait l'implémentation actuelle transforme une GEOMETRYCOLLECTION contenant uniquement des POINT en une géométrie MULTIPOINT. Donc pas pertinent pour ton besoin.
Et les fonctions n'ont été ajoutées dans l'API C du trunk GDAL qu'il y a 3 mois, donc ça ne sera dispo que pour GDAL 1.8.0
Le plus simple c'est que tu itères sur les points constituant ta polyligne. Quelque chose comme :
int nPoints = OGR_G_GetPointCount(hPolyline);
int i;
for(i=0;i<nPoints;i++)
{
double x = OGR_G_GetX(hPolyline, i);
double y = OGR_G_GetY(hPolyline, i);
/* code pour comparer (x,y) avec les 4 points extrêmes courants et mettre à jour si besoin */
}
Hors ligne
#3 Wed 07 July 2010 11:54
Re: manipulation de shapefile avec API OGR
Si tu veux l'enveloppe, tu prends OGR_G_GetEnvelope
Sinon avec OGR_G_GetX et OGR_G_GetY tu as les coordonnées de tes points sans faire une conversion de polygon en point (surtout que là c'est du multipoint, donc ça ne t'arranges pas).
Pour la dernière remarque, le nom exact est OGR_G_ForceToMultiPoint
Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !
Hors ligne
#4 Wed 07 July 2010 18:12
- lukhan
- Participant occasionnel
- Date d'inscription: 5 Jul 2010
- Messages: 11
Re: manipulation de shapefile avec API OGR
Ok, j'ai réussi.
Merci beaucoup.
Hors ligne