Projection de Mercator

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
MetalOS
Messages : 1492
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Projection de Mercator

Message par MetalOS »

Grace à l'aide d'un utilisateur du forum anglais voici un exemple de placement d'un point sur une carte qui utilise une projection de mercator.

Voici la carte utilisé:

Image

Voici les limites de la carte:

Nord: 52
Ouest: -5.5
Est: 10
Sud: 40.9166

Et voici le code pour placer le point sur la carte:

Code : Tout sélectionner

EnableExplicit

Procedure.d MercatorProjection(b.d)
  ProcedureReturn(Log(Tan(#PI / 4.0 + b * #PI / 360.0)))
EndProcedure

Procedure.d MercatorScaleFactor(XSize.i, East.d, West.d)
  ProcedureReturn(XSize / (Radian(East) - Radian(West)))
EndProcedure

Procedure.d MercatorY(b.d, Scale.d, North.d) ; using Latitude
  ProcedureReturn((Scale * (MercatorProjection(North) - MercatorProjection(b))))
EndProcedure

Procedure.d MercatorX(l.d, Scale.d, West.d) ; using Longitude
  ProcedureReturn((Scale * (Radian(l) - Radian(West))))
EndProcedure


Define.i Img, ImgWidth, ImgHeight, X, Y
Define.d Latitude, Longitude, Scale


#ImgNorth = 52
#ImgWest = -5.5
#ImgEast = 10
#ImgSouth = 40.9166

;Coordonnées de Paris
Latitude = 48.853
Longitude = 2.35

UsePNGImageDecoder()

Img = LoadImage(#PB_Any, "Map.png")
If Img  
  
  ImgWidth = ImageWidth(Img)
  ImgHeight = ImageHeight(Img)
  
  Scale = MercatorScaleFactor(ImgWidth, #ImgEast, #ImgWest)
  X = MercatorX(Longitude, Scale, #ImgWest)
  Y = MercatorY(Latitude, Scale, #ImgNorth)
  
  StartDrawing(ImageOutput(Img))
  Circle(X, Y, 5, $0000FF)
  StopDrawing()
  
  OpenWindow(0, 0, 0, ImgWidth, ImgHeight, "Mercator", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ImageGadget(0, 0, 0, 0, 0, ImageID(Img))
  
  Repeat
  Until WaitWindowEvent() = #PB_Event_CloseWindow
  
EndIf
Pour créer des carte à projection de mercator vous pouvez utiliser ceci: http://gmt.soest.hawaii.edu/

Bonne utilisation
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Projection de Mercator

Message par Micoute »

Bonjour MetalOS et merci beaucoup pour ce partage.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
MetalOS
Messages : 1492
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Projection de Mercator

Message par MetalOS »

De rien c'est un truc que je cherche à faire depuis 4 ans et c'était si simple.
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: Projection de Mercator

Message par G-Rom »

Tu aurais posé la question ici je t'aurais donner la solution !
J'avais codé une application qui reproduisait en 3D toutes les villes de la terre , chaque ville était un point ( j'avais trouvé une liste sur le net de qq centaine de mo )
et je faisait tourné mon beau globe ^^
Avatar de l’utilisateur
MetalOS
Messages : 1492
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Projection de Mercator

Message par MetalOS »

J'avais déjà posté il y à un moment sur le forum francophone. Pas grave ça permet aussi de ce creuser la tête.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Projection de Mercator

Message par Kwai chang caine »

Impressionnant ce code, j'ai essayé avec mes coordonnées et ça marche nickel
Merci MetalOs 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
MetalOS
Messages : 1492
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Projection de Mercator

Message par MetalOS »

De rien, le plus dur et de trouver une carte perso. Je me demande si il n'est pas possible le d'utiliser ce code avec une carte Google Map dans un Web gadget.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Projection de Mercator

Message par Kwai chang caine »

Alors la ... tu imagines que je peux pas te le dire....mais c'est super intéréssant comme sujet à l'époque ou on peux pas aller aux toilettes sans être géolocalisé :?

Pour ce qui est de l'utilisation avec Google Map, Goddle seul le sait :mrgreen:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
MetalOS
Messages : 1492
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Projection de Mercator

Message par MetalOS »

Suis les traces pour retrouver les toilettes :-D
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Projection de Mercator

Message par Kwai chang caine »

:lol:
Ou alors il faudrait installer un "Sniffer" sur la machine :lol:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
MetalOS
Messages : 1492
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Projection de Mercator

Message par MetalOS »

Pour créer des cartes interactive ou statiques vous pouvez utiliser le logiciel Tilemill sur mapbox.

https://www.mapbox.com/tilemill/
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Projection de Mercator

Message par Kwai chang caine »

Un truc que j'ai pas compris (Etonnant non ?? :mrgreen:)
Une fois que tu as ta carte comme la france que tu as créé, tu n'as pas besoin d'en créér d'autres ??
Juste si par exemple, tu n'as besoin que d'une carte de PARIS avec les rues et "tout le toutim" pour positionner les coordonnées GPS dessus, alors tu auras besoin de créé une nouvelle carte, c'est bien ça ?? :oops:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
MetalOS
Messages : 1492
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Projection de Mercator

Message par MetalOS »

Oui
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Projection de Mercator

Message par Kwai chang caine »

Merci METALOS 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
MetalOS
Messages : 1492
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Projection de Mercator

Message par MetalOS »

Quelqu'un sait comment faire pour calculer une distance entre deux points avec coordonnées géographique décimal ?
Répondre