-
script C réalisable ?
Bonjour,
Je suis débutant en programmation. J'ai commencé par le C ( et je viens d'atteindre un niveau qui me parait correct pour commencer mon projet).
J'ai le projet de développer une application, ainsi je vous renvois sur ce poste si vous voulez plus d'infos ( la lecture du post n'est pas nécessaire pour répondre à ma question).
http://www.developpez.net/forums/d16...n/#post8880213
En clair, pour commencer mon projet j'ai besoin de me constituer une base de données des nœuds d'une ville ( les intersection et changement de direction de chaque route, les ronds points étant gérés comme des hexagones, si on zoom sur google map c'est ca).
Pour cela, j'ai pensé à mettre en place le dispositif suivant :
Une fonction (qui prend en argument une position géographique type GPS(un couple de 2 double), un zoom (un double en%))
On notera que la position GPS entrée est au pixel extrême en haut a gauche de l'écran utilisateur.
La fonction parcourt chaque pixel de l'image, et y associe un int correspondant à sa couleur.
Elle renvoi donc un tableau[taille nombre de pixel /image] de structure (coordoné GPS x, coordoné GPS y, couleur)
couleur étant un int qui correspond a une couleur (un peu comme les 'a' pour les lettres).
Quand elle arrive a la fin d'une image, elle va à la coordonnée en haut a droite de l'image (c'est calculable et ca dépend de la taille du pixel et de l'echelle de la page donc du zoom), déplace l'écran afin de mettre ce point en haut à gauche et recommence.
Donc, on choisit la zone a cartographier, et ça cartographie tout seul.
Si cette fonction est écrivable en C, alors j'ai le bagage math et les connaissances suffisantes en C pour calculer tout les noeuds d'une image, j'ai déja écrit l'algorithme mathématiquement parlant sur papier, me manque juste l'acquisition des couleurs ( <=>en nombre) de tout les pixels, et de pouvoir utiliser une table de correspondance nombre <=> couleur.
Si c'est faisable, de quelles bibliothèque aurais-je besoin ?
Au plaisir de vous lire :)
EDIT : PS :
Par contre le programme n'étant pas destiné à être portable, ça ne sert à rien d'automatiser tout : par exemple l'ouverture de google map, le choix du zoom on peut l'enlever en argument. Par contre on peut imaginer de mettre en argument la zone de l'écran ou la carte est, afin d'éviter de faire l'acquisition de pixel ne représentant rien géographiquement parlant, et mettre une deuxième sécurité sur le nombre d'itération réalisées sur une image.
Si C n'est pas possible, alors à quoi penseriez vous ( sachant que ca m'aiderai bien que ca soit sous C, du point de vu des connaissances et du point de vu des performances, je veux faire des cartes, donc faire surchauffer mon PC ) comme langage ?7
EDIT Bis : Je ne parle pas du même algorithme que celui dans le post qui a été linké.
-
Bonjour et bienvenue,
C'est faisable « en soi » en langage C. Par contre, je n'ai pas très bien saisi où tu voulais en venir. En gros, tu veux scanner automatiquement les cartes de Google Maps pour y reconnaître les routes et intersections puis, de là, tu veux en faire un graphe sur lequel tu vas appliquer des algos style voyageur de commerce pour refaire ce que font les GPS personnels, ou pour réécrire un Mappy amélioré, c'est bien ça ?
Dans l'absolu, c'est possible mais loin d'être simple. Tout d'abord, il faudra t'assurer que ce genre de chose est permis par les licences d'exploitation de Google sur les données qu'il propose. Ensuite, il faudra vérifier que la colorimétrie des cartes est toujours la même, sinon tu auras besoin de faire du traitement d'images par dessus (postérisation, suppression des annotations, etc.). Il te faudra tenir compte de l'échelle (altitude) de la carte concerné et, enfin, il va falloir convertir en vecteurs les plages de couleurs correspondant aux routes. Autrement dit, faire de la détection de forme en isolant tout ce qui est plus long que large.
-
-
Tu veux reconstruire les données cartographiques à partir d'une image déjà constituée ? Ouch.
Fucking ouch.
Tu sais que les données d'origine (topographie, hydrographie, réseaux routier, ferroviaire, de distribution d'eau, cadastre, etc..) sont récupérables telles quelles depuis les bases distantes via des API RESTful ? Il existe des solutions payantes (auprès d'un fournisseur commercial comme Google Maps, Bing Maps, Mapquest ou autre) et gratuite grâce à OpenStreetMap.
-
Si ce dont tu as besoin pour commencer c'est une collection d'images avec des cartes dessus,
voici une petite suggestion pour te simplifier la vie (et ce ne sera ps du luxe !)
Avec ton navigateur préféré tu visites google maps (ou autre site de carto en ligne, il y en a plein).
Quand tu as la carte qui te plait, avec un petit outil de capture d'écran tu la sauvegardes dans un fichier.
Et tu recommences jusqu'à ce que tu aies la base de cartes qui te convient.
Ensuite, dans ton code C, il ne te reste plus qu'à accéder à ces images : freeimage fait ça très bien !
Ce t'évitera d'avoir à piloter la navigation sur google maps depuis ton code...
-
Pour Matt Houston :
Ok, ca pourrait m'arranger, avec open street map, mais du coup je suis allé sur leurs site et comment on fait pour faire ca ? Je dois trouver une API Rest qui fait ca moi même, et la reconfigurer pour avoir ce que je veux ?
Pour Captain :
Bonne idée, freeimage c'est bien une bibliothèque C ? Est elle compatible avec C++ (on m'a conseillé de plutôt aller vers ce langage car il me serait alors plus simple de programmer l'algorithme du point de vue des maths) ?
Si c'est bien une bibliothèque, alors tu sais si il y a des fonctions qui peuvent parcourir des pixels et tester leurs couleurs ?
Autre question : connaissez vous une bibliothèque qui fournit des outils de calculs en géométrie euclidienne et en fonctions (2D) ? Comme par exemple la distance d'un point à une droite, la regression linéaire ou la gestion des ensembles de définition pour les fonctions ?
Je vais pouvoir tester si la méthode des pixels en créant moi même des cartes a peu de pixels et en testant. Du coup si j'arrive pas a avoir de résultats sur des images genre 10x10 je ne continuerai pas dans l'idée d'automatiser la création des nodes, je creuserai l'idée d'aller voir openstreetmap etc..
-
@CaptainFLam : merci pour FreeImage je ne connaissais pas cette lib elle va m'être utile ;)