banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

#1 Tue 20 March 2007 17:10

alcibiade
Participant occasionnel
Date d'inscription: 20 Mar 2007
Messages: 12

Grass : questions diverses

Bonjour,

Je cherche à mettre en coordonnées region, sous grass60 des images raster png faites avec the gimp. Le tout sous linux.
mon image gimp fait 700X580 pixels
la map de grass n=2138994 s=2132265 o=751232 e=759410
systeme : lambert II extended

Peut-on sans trop de douleur générer du shape avec des outils autres que le suivi des courbes de niveau et un/son code ?

la structure des enregistrements de shape est un peu complexe....

Voilà, beaucoup de questions !

Qu'en pensez vous ?

Cordialement

Hors ligne

 

#2 Tue 27 March 2007 19:18

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9864
Site web

Re: Grass : questions diverses

Bonsoir,

Sous grass vous pouvez vectoriser un raster. Mais attention, au raster utilisé au départ, votre fichier vecteur risque de ne pas être utilisable. La commande est "r.to.vect".

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#3 Thu 29 March 2007 15:40

alcibiade
Participant occasionnel
Date d'inscription: 20 Mar 2007
Messages: 12

Re: Grass : questions diverses

Merci Yves

J'ai récupéré sur le net un programme en pascal pour transformer les coordonnées Dms en Lambert 2. Il donne des résultats incorrects et induit une forte déformation de mon raster cible dans lma zone NE.

Je peux vous envoyer une version c++  qui donne les même erreurs que celle retranscrite en scilab !
Je ne sais absolument pas où trouver les paramètres d'ajustement de l'éllipsoide de référence en Lambert 2 pour ma région entre 46°20 et 46°25 E.

L'erreur lors du géoréférencement sous GRASS mesemble provenir des fautes d'ajustement des paramètres du programme.

Bien cordialement.

Code:

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <cmath>
#include <iostream>
#include <cstdlib>

using namespace std;
double latISO(double phi);

// donne la latitude isomï¿œique Code:

double latISO(double phi)
{
 // radians !
    double adg = 6378249.2; // demi grand axe de l'ellipsoide
    double bdg = 6356515.0;
    double e;
    double v;
    double esinphi;
    double f;
    double esur2;
    f=(adg-bdg)/adg; // aplatissement
    e=sqrt((adg*adg-bdg*bdg)/(adg*adg)) ; // premiere excentricité
    esur2=e/2;
    esinphi=e*sin(phi);
    v=(1-esinphi)/(1+esinphi);
    v=exp(esur2*log(v));
    return log(tan(M_PI_4+phi/2)*v);
}

// et THE procedure!! Code:

double * lglttolambert2et (double lg , double lt, double * r )
{
    //const k0 : double =0.99987741;
    //facteur aplatissement de la projection 
    double doublenl;
    double phi;
    double lambda;
    double rs;
    double phi0;
    double n;
    double pm;
    double lambda0;
    double nl;
    // pour optimiser la vitesse de calcul
    pm=M_PI/180;    
    lambda0=2.33723*pm; //2.33638888888888907*pm;         //dmstocentieme('220''11"E')*pm;
    //origine lambert 2 
    
    phi0=46.8*pm ; //origine lambert 2
    n=sin(phi0);
    if ((lg<-5.6) || (lg>9) || (lt<41) || (lt>52))
    {
        // controle des limites: valide
        //x=0;
        //y=0;
        // seulement en France!
        exit(-1);
    }
    phi=lt*pm;
    // conversion en radians 
    lambda=lg*pm;
    nl=11745793.39*exp(-n*latISO(phi));
    rs=n*(lambda-lambda0);
    r[0]= 600000+nl*sin(rs)-8;
    //r++;
    r[1]=8199695.768-nl*cos(rs)+7;
}
//et on a x=719446 y=2557241
int main(int argc, char *argv[])
{
    double r[2];
    double lg=0;
    double lt=0;
    if (argv[1]!=NULL)
    {
        lg = atof(argv[1]);
    }
    if (argv[2]!=NULL)
    {
        lt = atof(argv[2]);
    }
    //r=malloc(2*sizeof(double));
    lglttolambert2et(lg, lt, (double *) &r);
    printf("longitude : %12.2f latitude : %12.2f\n",r[0],r[1]);
  return EXIT_SUCCESS;
}

Hors ligne

 

#4 Fri 30 March 2007 07:31

alcibiade
Participant occasionnel
Date d'inscription: 20 Mar 2007
Messages: 12

Re: Grass : questions diverses

Erratum.

Bien sûr j'ai confondu lat. et long ! Je voulais dire que mes données sont entre 4°10' et 4°22'.

et non entre 5°6 et 9°

Hors ligne

 

#5 Fri 30 March 2007 08:41

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3180
Site web

Re: Grass : questions diverses

Bonjour,

Peut-être un indice ici:

http://www.linux-nantes.fr.eu.org/piper … 00900.html

Les paramètres de l'ellipsoide:

http://www.ign.fr/telechargement/FAQ/FAQ5.pdf

D'une façon générale:

recherche google  avec comme mot clef :  Ellipsoide Clark

A+

Christophe


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

#6 Fri 30 March 2007 15:10

alcibiade
Participant occasionnel
Date d'inscription: 20 Mar 2007
Messages: 12

Re: Grass : questions diverses

Merci Christophe,

Mes grand axes et petit axe sont OK.
Je vois que Basile a eu le même problème.
Je cherche encore le recadrage....

A+

Armand

Hors ligne

 

#7 Fri 30 March 2007 16:30

alcibiade
Participant occasionnel
Date d'inscription: 20 Mar 2007
Messages: 12

Re: Grass : questions diverses

Pour se résumer, si j'ai bien compris :
1- On assimile le géoïde à un ellipsoïde de centre : le centre terrestre, de petit et grand axe :  à choisir selon Lambert étendu ou 93 ? (logique?)
2- Pour avoir une carte, on projette sur un plan tangeant les coordonnées angulaires  phi et theta (relevées sur la carte IGN) pour obtenir X,Y (dans un voisinage V.... qui est un ouvert....), là je dérape un peu !
3- Pour celà, il faut calculer d'abord rho(0) et n

et au travers de formules : X= rho*sin(theta) + X0 ; Y= Y0 + rho0 -rho*cos(theta)

Il vaut mieux utiliser en France la norme Lambert 93
C'est ce que l'on trouve sur les cartes IGN au 1/25000 ème ?
Je crois voir + clair ?


Cordialement

Hors ligne

 

#8 Wed 04 April 2007 17:57

alcibiade
Participant occasionnel
Date d'inscription: 20 Mar 2007
Messages: 12

Re: Grass : questions diverses

Bonjour,
GRASS60 Linux
Les rasters créés à partir de GIMP (pixels) images 750X600 sont maintenant parfaitement géoréférencés.
les images obtenues sont bonnes.
Pour faire des vecteurs partant d'un raster input=chemins, j'apllique r.thin et obtiens un fichier qui est transformé par r.to.vect.

MAIS: De très nombreux arcs sont reliés entre eux par des lignes à 45 degrés,
les essais avec v.thin refont une topologie, mais pas ou peu d'amélioration....
Puis-je espérer "couper" les liens ou faut-il passer à une autre technique livrant un raster plus "thin" ?

Cordialement

Hors ligne

 

#9 Sun 08 April 2007 14:39

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9864
Site web

Re: Grass : questions diverses

Bonjour,

Tout le problème est là, lorsqu'on vectorise un rasteur. Il est possible de nettoyer votre vecteur : r.thin est un moyen, il en existe d'autre en fonction de vos erreurs : v.clean par exemple.

Description:
Toolset to clean vector topology

Keywords:
vector

Usage:
v.clean [-b] input=name output=name [type=string[,string,...]]
   [error=name] tool=string[,string,...] [thresh=value[,value,...]]
   [--overwrite]

Flags:
  -b   Do not rebuild and store the topology at the end
--o   Force overwrite of output files

Parameters:
[..]
   error   Name of output map where errors are written
    tool   Cleaning tool
           options: break,rmdupl,rmdangle,chdangle,rmbridge,chbridge,snap,
                    rmdac,bpol,prune,rmarea,rmsa
           break: break lines at each intersection
           rmdupl: remove duplicate lines (pay attention to categories!)
           rmdangle: remove dangles, threshold ignored if < 0
           chdangle: change the type of boundary dangle to line, threshold ignored if < 0, input line type is ignored
           rmbridge: remove bridges connecting area and island or 2 islands
           chbridge: change the type of bridges connecting area and island or 2 islands from boundary to line
           snap: snap lines to vertex in threshold
           rmdac: remove duplicate area centroids ('type' option ignored)
           bpol: break (topologically clean) polygons (imported from non topological format (like shapefile). Boundaries are broken on each point shared between 2 and more polygons where angles of segments are different
           prune: remove vertices in threshold from lines and boundaries, boundary is pruned only if topology is not damaged (new intersection, changed attachement of centroid), first and last segment of the boundary is never changed
           rmarea: remove small areas, the longest boundary with adjacent area is removed
           rmsa: remove small angles between lines at nodes
  thresh   Threshold
           Threshold in map units, one value for each tool (default: 0.0[,0.0,...])


Y.

Dernière modification par Yves (Sun 08 April 2007 14:41)


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#10 Wed 11 April 2007 08:56

alcibiade
Participant occasionnel
Date d'inscription: 20 Mar 2007
Messages: 12

Re: Grass : questions diverses

Bonjour,

J'ai contourné le problème de la vectorisation en utilisant des données (numériques) plus "fines" : le scan d'une carte IGN. Après géoréférencement, la vectorisation 2D s'effectue normalement, sans sauvegarde dans une table MySQL des attributs et sites ou points (sans doûte lié à l' absence de CREATION de la base MySQL ou BDF).

DANS LA SUITE JE TRAITE directement mes données

Il me faut recueillir des infos pour créer une carte 2.5D ET SAUVEGARDER dans des tables si possible MySQL.
Comme dans le cas de la création d'une base sous "apache", il me faudra résoudre le problème d'attribution des droits, lors de la création de la dite base SQL, après celà, les commandes d'ajout, de modification d'enregistrement, d'envoi de la table sur le serveur sont transparents !!
Si quelqu'un a l'expérience de la liaison d'une base MySQL (ou dbase) sous GRASS60, je suis preneur.

Autrement, le logiciel GRASS est bien documenté,
même si la préhension des outils est parfois délicate : pp 84-88 de la doc GDF Hannovre (Numériser sous GRASS)
C'EST A DIRE :
PAS DE TABLE, ==> PAS de fenêtre FORM après la saisie d'une courbe de niveau. 

Coment créer cette table avec v.digit où est le "menu paramètres --> Table (voir figure 22)" ????

Merci à la communauté de lire et répondre aux questions d'un amateur.


Bien cordialement

Hors ligne

 

#11 Wed 11 April 2007 14:35

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9864
Site web

Re: Grass : questions diverses

Bonjour,

Pour gérer tout ce qui concerne les tables d'une base, vous avez les outils db.xxx, db.execute pour éxécuter une requête par exemple. Liste des commandes :
*   db.columns
*   db.copy
*   db.drivers
*   db.login
*   db.tables
*   db.connect
*   db.describe
*   db.execute
*   db.select
*   db.test

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#12 Fri 13 April 2007 10:03

alcibiade
Participant occasionnel
Date d'inscription: 20 Mar 2007
Messages: 12

Re: Grass : questions diverses

Bonjour,

Merci à Yves et Bruno et à beaucoup d'autres (comme Luigi en Italie, Thierry à Strassbg et Moritz ) qui m'ont permis de bien appréhender la complexité de gestion et  conduite d'un projet SIG à partir de données locales, nécessairement (et presque obligatoirement) extraites de celles de l'Institut IGN ??? pour être complétées sous GRASS.
Le prix d'accès aux scans est un peu élevé pour une petite communauté rurale qui souhaite présenter au touriste du net ses sites historiques et ses lieux de villégiature.... enfin entrer dans la société de l'information.
Nous poursuivons l'aventure, en espérant minimiser la fonction coût, (sans faire appel à Pontriagine !) ...  pour trouver la commande optimale.

Il y a certes encore beaucoup à faire pour démocratiser  le système et faire avancer la communauté des amateurs derrière celle des Pros.

Courage, les amis, on avance....

Armand

Hors ligne

 

Pied de page des forums

Powered by FluxBB