de coordonnées Decimal style : 39.873928 en son equivalent degres,minute,secondes style :N 39° 52' 26.14''
Marche dans les deux sens , mais je l'ai surtout fait pour une conversion Decimal-> degres minute secondes ...
Code : Tout sélectionner
;***********************************************
;Titre :*convertisseur_gps
;Auteur : Dobro
;Date :20/03/2014
;Heure :23:12:14
;Version Purebasic : PureBasic 5.22 LTS (Windows - x86)
;Version de l'editeur :EPB V2.54
; Libairies necessaire : Aucune
;***********************************************
; ******************* base 60 2 Deci ******************************
;Exemple. Soit une latitude de 45° 53' 36" (45 degrés, 53 minutes et 36 secondes). Exprimée en degrés décimaux, la latitude sera égale à :
;latitude = 45 + (53 / 60) + (36 / 3600) = 45.89
;Formulation générale :
;latitude (degrés décimaux) = degrés + (minutes / 60) + (secondes / 3600)
; ******************* decimal 2 base 60 **************************
; Exemple : soit une longitude de 121,135°
;
; Le nombre avant la virgule indique les degrés ? 121°
; Multiplier le nombre après la virgule par 60 ? 0,135 * 60 = 8,1
; Le nombre avant la virgule devient la minute (8')
; Multiplier le nombre après la virgule par 60 ? 0,1 * 60 = 6
; Le résultat correspond aux secondes (6").
; Notre longitude sera de 121° 8' 6"
;
;http://www.maplorer.com/convert1.html
;47.285288
Declare OpenWindow_Window_0()
Declare.s Convert_gps(gps_Deci.s,gps_sexa.s)
;{- Enumerations / DataSections
;{ Windows
Enumeration
#Window_0
EndEnumeration
;}
;{ Gadgets
Enumeration
#Titre
#Text_base_60
#Text_deci
#String_Sexa
#String_decimal
#Text_base_602
#Text_deci2
#String_Sexa2
#String_decimal2
#Auteur
#info
#info2
#button_carte
EndEnumeration
;}
;{ Fonts
Enumeration
#Font_Titre
#Font_String_Sexa
#Font_String_decimal
#Font_String_Sexa2
#Font_String_decimal2
EndEnumeration
;}
;}
Procedure OpenWindow_Window_0()
If OpenWindow(#Window_0, 506, 152, 459, 289, "Convertisseur GPS", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
;If CreateGadgetList(WindowID(#Window_0))
TextGadget(#Titre, 42, 8, 342, 48, "Convertisseur GPS")
TextGadget(#Text_base_60, 20, 82, 80, 28, "Deg Min Sec")
TextGadget(#Text_deci, 20, 124, 70, 22, "Decimal")
StringGadget(#String_Sexa, 114, 78, 240, 32, "00 00 00")
StringGadget(#String_decimal, 114, 116, 240, 32, "00.0000")
TextGadget(#Text_base_602, 20, 170, 80, 28, "Deg Min Sec")
TextGadget(#Text_deci2, 20, 208, 70, 22, "Decimal")
StringGadget(#String_Sexa2, 114, 166, 240, 32, "00 00 00")
StringGadget(#String_decimal2, 114, 204, 240, 32, "00.0000")
TextGadget(#Auteur, 366, 270, 80, 24, "By Dobro")
TextGadget(#Info, 366, 78, 80, 40, "Lat=Nord"+chr(10)+"(si positif)")
TextGadget(#Info2, 366, 166, 80, 40, "Lon=Est"+chr(10)+"(si positif)")
; Gadget Fonts
SetGadgetFont(#Titre, LoadFont(#Font_Titre, "Microsoft Sans Serif", 22, #PB_Font_Bold|#PB_Font_HighQuality))
SetGadgetFont(#String_Sexa, LoadFont(#Font_String_Sexa, "Microsoft Sans Serif", 14, #PB_Font_HighQuality))
SetGadgetFont(#String_decimal, LoadFont(#Font_String_decimal, "Microsoft Sans Serif", 14, #PB_Font_HighQuality))
SetGadgetFont(#String_Sexa2, LoadFont(#Font_String_Sexa2, "Microsoft Sans Serif", 14, #PB_Font_HighQuality))
SetGadgetFont(#String_decimal2, LoadFont(#Font_String_decimal2, "Microsoft Sans Serif", 14, #PB_Font_HighQuality))
ButtonGadget(#button_carte,114,260,200,25,"afficher la carte")
;EndIf
EndIf
EndProcedure
OpenWindow_Window_0()
;{- Event loop
Repeat
Select WaitWindowEvent(2)
; ///////////////////
Case #PB_Event_Gadget
Select EventGadget()
Case #Titre
Case #Text_base_60
Case #Text_deci
Case #button_carte
;www.itilog.com/fr/gps/39.873928/-4.046692
;https://www.google.fr/maps/@45.317723,5.4372395,8z
;https://maps.google.com/maps?q=48.838857,3.010464
if copie_gps_Deci.s<>"" and copie_gps_Deci2.s<>""
;
;html$="www.itilog.com/fr/gps/"+copie_gps_Deci.s+"/"+copie_gps_Deci2.s ;<<<<<<<<<<<<<<<<<<< en utilisant Itilog
;html$="https://www.google.fr/maps/@"+copie_gps_Deci.s+","+copie_gps_Deci2.s+","+"13z" ; <<<<<<<<<<<< en utilisant GoogleMap
html$="https://maps.google.com/maps?q="+copie_gps_Deci.s+","+copie_gps_Deci2.s+"" ; <<<<<<<<<<<< en utilisant GoogleMap avec pointeur
RunProgram(html$)
Endif
Case #String_Sexa
gps_sexa.s=GetGadgetText(#String_Sexa)
gps_Deci.s=""
SetGadgetText(#String_decimal,gps_Deci.s)
SetGadgetText(#String_decimal, Convert_gps(gps_Deci.s,gps_sexa.s))
Case #String_decimal
gps_Deci.s=GetGadgetText(#String_decimal)
copie_gps_Deci.s=gps_Deci.s
if valf(gps_Deci.s)<0
gps_Deci.s=strf(-valf(gps_Deci.s),6)
;;SetGadgetText(#String_decimal,gps_Deci.s )
Endif
gps_sexa.s=""
SetGadgetText(#String_Sexa,gps_sexa.s )
SetGadgetText(#String_Sexa, Convert_gps(gps_Deci.s,gps_sexa.s))
Case #String_Sexa2
gps_sexa.s=GetGadgetText(#String_Sexa2)
gps_Deci2.s=""
SetGadgetText(#String_decimal2,gps_Deci2.s)
SetGadgetText(#String_decimal2, Convert_gps(gps_Deci2.s,gps_sexa.s))
Case #String_decimal2
gps_Deci2.s=GetGadgetText(#String_decimal2)
copie_gps_Deci2.s=gps_Deci2.s
if valf(gps_Deci2.s)<0
gps_Deci2.s=strf(-valf(gps_Deci2.s),6)
;;SetGadgetText(#String_decimal2,gps_Deci.s )
Endif
gps_sexa.s=""
SetGadgetText(#String_Sexa2,gps_sexa.s )
SetGadgetText(#String_Sexa2, Convert_gps(gps_Deci2.s,gps_sexa.s))
Case #Auteur
EndSelect
; ////////////////////////
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Window_0
CloseWindow(#Window_0)
Break
EndSelect
EndSelect
Forever
;
;}
procedure.s Convert_gps(gps_Deci.s,gps_sexa.s)
; By Dobro
diviseur.s="10,100,1000,10000,100000,1000000,10000000"
if gps_Deci.s<>""
degres_deci.s=stringfield(gps_Deci.s,1,".")
minute_deci.s=stringfield(gps_Deci.s,2,".")
if len(minute_deci.s)>6
minute_deci.s=left(minute_deci.s,6)
endif
if len(minute_deci.s)>0
divi=val(StringField(diviseur.s,len(minute_deci.s),"," ))
else
divi=1
endif
degres=val(degres_deci.s)
minut.i=val(minute_deci.s)*60/divi
seconde.d=valf(minute_deci.s)*60/divi
sec$=strf(seconde.d) :sec$=StringField(sec$,2,".")
seconde.d=valf(sec$)*60/divi
gps_sexa.s=str(degres)+"° "+str(minut.i)+"' "+Strf(seconde.d/10000,2)+"''"
ProcedureReturn gps_sexa.s
endif
if gps_sexa.s<>""
gps_sexa.s=ReplaceString(gps_sexa.s,"°"," ")
gps_sexa.s=ReplaceString(gps_sexa.s,"''"," ")
gps_sexa.s=ReplaceString(gps_sexa.s,"'"," ")
degres_sexa.s=stringfield(gps_sexa.s,1," ")
minute_sexa.s=stringfield(gps_sexa.s,2," ")
seconde_sexa.s=stringfield(gps_sexa.s,3," ")
reste0.i=val(degres_sexa.s)
reste1.d=val(minute_sexa.s)/60
reste2.d=val(seconde_sexa.s)/3600
gps_deci.s=strf(reste0.i+reste1.d+reste2.d,5)
ProcedureReturn gps_deci.s
endif
endprocedure
;
;
;
;
;
;
;
;
; Epb