Bienvenue! Inscrivez-vous et rejoignez notre communauté :)
  • Login:

Bienvenue sur Forum SIG - Systèmes d'Information Géographique et Géomatique.

Bienvenue sur le forumSIG. S'il s'agit de votre première visite, assurez vous de faire une recherche préalable dans les FAQ SIG. Vous devez vous inscrire avant de pouvoir poster.

Affichage des résultats 1 à 3 sur 3
  1. #1

    Date d'inscription
    mars 2005
    Localisation
    Nancy
    Emploi
    Etudiant - stage de fin d'études
    Organisme
    CNRS
    Âge
    32
    Messages
    24

    Par défaut Non Résolu : [ArcGIS 8.x] Créer une nouvelle couche et afficher des points

    Bonjour,

    voici mon problème : je suis entrain de créer un outil sur ArcMap. Le problème, c'est que je ne suis pas loin de le finir, mais ce que je cherche à faire dépasse mes connaissances (qui sont très maigres) en programmation avec les ArcObjects.

    L'outil fait ceci:
    Attent que l'utilisateur clique sur la carte
    lorsque l'utilisateur a cliqué sur la carte, je récupère les coordonnées (pour le moment, et pour faire simple, je récupère les coordonnées écran). A partir de l'endroit cliqué, je construit un fichier texte qui contient une série de points (X Y) et je lance un programme externe qui me retourne un autre fichier texte.

    Mon problème est le suivant :
    une fois le nouveau fichier créé, je le lis et récupère les coordonnées de chaque point. Je stocke ces coordonnées dans des objets de type IPoint (car je passe en coordonnées terrain).
    Seulement, après, je voudrai créer une nouvelle couche sur laquelle j'afficherai les points.

    Mais je bloque

    Voilà, si quelqu'un peut me venir en aide, j'en serai ravi

    Father

    PS (pour Belzebuth): Je suis sur ArcInfo 8.0.2
    PS (pour Father): Merci beaucoup
    Dernière modification par Belzebuth ; 22/06/2005 à 09h56.

  2. #2

    Date d'inscription
    janvier 2005
    Emploi
    Ingénieur Etude
    Messages
    83

    Par défaut Salut !

    Peux tu mettre en ligne ton code pour qu'on puisse le voir ?

    Bonne journée

  3. #3

    Date d'inscription
    mars 2005
    Localisation
    Nancy
    Emploi
    Etudiant - stage de fin d'études
    Organisme
    CNRS
    Âge
    32
    Messages
    24

    Par défaut

    Salut ibfabrice

    Oui, voici mon bout de code
    je programme en C# (j'ai toujours pas calé comment écrire des outils en C++ et le VB n'est pas mon fort. De plus, je suis sur VS.NET)

    Bon, voilà le code de la fonction OnMouseDown héritée de la classe ITool

    publicvoid OnMouseDown(int Button, int Shift, int X, int Y)
    {
    IActiveView activeView = m_mxDoc.ActiveView;
    IPoint m_point = new PointClass();
    StreamWriter fileInput = new StreamWriter(@"C:\input.txt");
    int i, j, etat;

    // On récupère les coordonnées dans le système d'unités de la carte
    // m_point = activeView.ScreenDisplay.DisplayTransformation.ToM apPoint(X, Y);
    for (i = X - 5 ; i <= X + 4 ; i++)
    {
    for (j = Y - 5 ; j <= Y + 4 ; j++)
    {
    if (i == X && j == Y)
    etat = 1;
    else
    etat = 0;

    String sMessage = Convert.ToString(i) + " " + Convert.ToString(j) + " 0 " + Convert.ToString(etat) + "\r\n";
    fileInput.Write(sMessage);
    }
    }

    fileInput.Close();

    // Lancement du moteur de propagation de feux de forêts (version 1)
    System.Diagnostics.Process procExtern = new System.Diagnostics.Process();
    procExtern.StartInfo.FileName = @"C:\Moteur_feux_version1.exe";
    procExtern.StartInfo.Arguments = @"C:\input.txt C:\output.txt";
    procExtern.Start();
    procExtern.WaitForExit();

    // On récupère le résultat de la première itération
    StreamReader fileOutput = new StreamReader(@"C:\output.txt");
    string line = "0";
    for (i = 0 ; i < 100 ; i++) // boucle de lecture des données
    {
    int a, b, c, d;
    IColor m_color = new RgbColorClass();
    m_color.RGB = 255;
    IPoint m_newPoint = new PointClass();
    line = fileOutput.ReadLine();
    a = Convert.ToInt32(line);
    line = fileOutput.ReadLine();
    b = Convert.ToInt32(line);
    line = fileOutput.ReadLine();
    c = Convert.ToInt32(line);
    line = fileOutput.ReadLine();
    d = Convert.ToInt32(line);
    String sMessage = "Dernier point lu: x=" + Convert.ToString(a) + " y=" + Convert.ToString(b) + " z=" + Convert.ToString(c) + " etat=" + Convert.ToString(d);
    m_app.StatusBar.set_Message(0, sMessage);

    // On peut maintenant afficher le point sur la carte, selon son état
    switch(d)
    {
    case 1:
    // Le point est en feu
    // Par conséquent, on va créer un point rouge sur la carte dans une nouvelle couche
    break;
    case 2:
    // Le point a complêtement brûlé
    // Par conséquent, on va créer un point noir sur la carte
    break;
    default:
    // Le point n'a pas changé d'état
    // Par conséquent, on ne va rien faire
    break;
    }
    }
    activeView.Refresh();
    }
    Je pense qu'il faut que je crée ma nouvelle couche avant de rentrer dans la boucle de lecture des données, puis que je crée les points dans la fonction switch

    Voilà, j'espère que c'est suffisamment clair

 

 

Discussions similaires

  1. [QGIS 1.x] Créer une nouvelle couche depuis une autre
    Par projl dans le forum Assistance et Programmation
    Réponses: 6
    Dernier message: 15/02/2013, 09h27
  2. [ArcGIS 10.x] Créer points à partir de champs XY d'une couche SHAPE
    Par fluks dans le forum Assistance Technique
    Réponses: 5
    Dernier message: 26/07/2012, 08h47
  3. [ArcGIS 9.x] VBA Créer nouvelle couche dans geodatabase, copier des polygones d'une couche.
    Par Julian.Eleutério dans le forum Programmation
    Réponses: 2
    Dernier message: 31/01/2011, 12h52
  4. [GeoConcept 6.x] Créer des points et les afficher
    Par coverHarry dans le forum Programmation
    Réponses: 2
    Dernier message: 03/06/2009, 09h59
  5. [ArcGIS 9.x] Créer une couche de points à partir de coordonnées...
    Par Denis.Degez dans le forum Assistance Technique
    Réponses: 1
    Dernier message: 09/11/2006, 18h42

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •