-
Bonjour,
J'utilise habituellement http://nom:pass@blitzortung.tmt.de/Data_1/Protected/strikes.txt pour récupérer les données mais cette adresse ne fonctionne plus. Y a t'il une solution de remplacement?
-
A mon avis il ont supprimer l'ancien système de données. Il faut donc utiliser le nouveau.
-
Ok c'est bien dommage car ce txt donnait toutes les infos pour les utiliser ensuite avec un script php qui lui aussi a disparu du site blitzortung rubrique services > Miscellaneous.
Il ny' a plus que cet extrait d'exemple:$username= "User";
$password= "xxxxxxxx";
//
$map= 'http://www.blitzortung.org/Maps/F_Florida_-92.0_-76.0_38.0_24.3.png';
$west= -92.0;
$north= 38.0;
$east= -76;
$south= 24.3;
//
$region= "3";
$time_interval= 7200;
$local_strokes_file= '/var/www/Tmp/Strokes';
$tmp_strokes_file= '/var/www/Tmp/Strokes_tmp';
//
$font_file_bold= '/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf';
$font_file= '/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf';
$font_size_1= 10;
$font_size_2= 8;
$font_size_3= 7;
Mais ca nécessite de tout recoder pour utiliser les données brutes "raw data"! Un peu abusé cette évolution...
-
Oui surtout que l'url des raw data change en permanence suivant la date et l'heure. Il faudrait un script pour télécharger les dernière données afin de les exploiter sur son serveur perso.
-
Essaies un coup si ça convient :
[code]<?php
$username= "";
$password= "";
$name="strikes.txt";
$region="1";
$strokes_dir= 'http://' . $username . ':' . $password . '@blitzortung.net/Data_' . $region . '/Protected/Strokes/';
$end_time= time();
$time_interval= 7200;
$l_time=$end_time-$time_interval;
$run_time= $l_time;
$filename= $strokes_dir . gmdate("Y/m/d/H/",$run_time) . $run_time/600%6 . '0.log';
$content = file_get_contents($filename);
$file = fopen($name, "w+");
fputs($file, $content);
fclose($file);
?>[/code]
-
Hello,
Pour mon SFLOC2008, qui génère certaines cartes, comme sur le site de lightningradar ou chasseurs-orages, l'adaptation c'est terminée vers 2H... soit 6 heures de boulot.

[img]http://users.telenet.be/danielv38//Lightning_radar/picture4t.jpg[/img]
Noaa couplé à blitzortung
Finalement, c'est pas si mal comme technique.
S'il y a des candidats pour les sources en .net... souffler dans la buse.
Amicalement
Dan
-
Bonjour,
Personnellement, j'utilise ça :
[code]
$temps = time()-(3600*(date("I")+1));
$mdp="";
$password="";
for($i=0; $i<=11;$i++)
{
$annee = date("Y", $temps-($i*600));
$mois = date("m", $temps-($i*600));
$jour = date("d", $temps-($i*600));
$heure = date("H", $temps-($i*600));
$min = (floor(date("i", $temps-($i*600))/10))*10;
if($min<10) $min="0".$min;
@copy("http://$mdp:$password@data.blitzortung.org/Data_1/Protected/Strokes/$annee/$mois/$jour/$heure/$min.log", "Temp/strikes-$i.txt");
if(!file_exists("Temp/strikes-$i.txt")) { $file = fopen("Temp/strikes-$i.txt", "a"); fclose($file); }
$file = fopen("Temp/strikes.txt", "a");
$data = fopen("Temp/strikes-$i.txt", "r");
while (!feof($data))
{
$page .= fgets($data, 60);
}
fputs($file, $page);
fclose($file);
fclose($data);
$page="";
}
unset($temps); unset($i); unset($annee); unset($mois); unset($jour); unset($heure); unset($min); unset($file); unset($data); unset($page);
$dat=date("Ymd");
$heure2="".date("H")."H".date("i");
$font2 = imageloadfont('Config/Font/ecriture_titre.gdf');
for($typecarte=1;$typecarte<=5;$typecarte++) // Type de carte
{
$t=explode(" ",TypeCarte($typecarte));
$nomcarte=str_replace("_", " ", $t[1]); $cartebase=$t[0]; $ouest=$t[2]; $nord=$t[3]; $est=$t[4]; $sud=$t[5]; unset($t);
$comm="Carte des impacts - $nomcarte";
echo "\r\n Carte des impacts - $nomcarte $cartebase";
// copy image
if($typecarte!=7) $img= imagecreatefrompng("Config/Cartes/vide.png");
else $img= imagecreatefrompng("Config/Cartes/vide-2.png");
$img_X= imagesx($img);
$img_Y= imagesy($img);
// colors
$noir = imagecolorallocate($img, 0, 0, 0);
$c1 = imagecolorallocate($img, 255, 255, 255);
$c2 = imagecolorallocate($img, 255, 255, 0);
$c3 = imagecolorallocate($img, 255, 170, 0);
$c4 = imagecolorallocate($img, 255, 85, 0);
$c5 = imagecolorallocate($img, 255, 0, 0);
$c6 = imagecolorallocate($img, 191, 0, 0);
$heure= time();
$File= fopen ("Temp/strikes.txt", "r"); $strikes=0;
while (!feof($File))
{
fscanf ($File,"%d-%d-%d %d:%d:%s %s", $year, $mon, $day, $hour, $min, $sec, $l);
$pos=explode(";", $l);
$lat=$pos[1];
$lon=$pos[2];
$heure_impact= mktime($hour, $min, $sec, $mon, $day, $year)+3600+(3600*date("I"));
if (($lon >= $ouest)&&($lon <= $est)&&($lat <= $nord)&&($lat >= $sud))
{
$strikes++;
$x=($img_X/($est-$ouest))*($lon-$ouest);
$y=$img_Y-(($lat-$sud)*($img_Y/($nord-$sud)));
if ($heure-$heure_impact < 1200) $couleur= $c1;
else if ($heure-$heure_impact < 2400) $couleur= $c2;
else if ($heure-$heure_impact < 3600) $couleur= $c3;
else if ($heure-$heure_impact < 4800) $couleur= $c4;
else if ($heure-$heure_impact < 6000) $couleur= $c5;
else $couleur= $c6;
ImageFilledEllipse ($img, $x, $y, 7, 7, $couleur);
ImageEllipse ($img, $x, $y, 7, 7, $noir);
}
}
fclose ($File);
[/code]
Il est pas complet et utilisé comme tel, ne fonctionnera pas, mais ce script permet de télécharger, mettre en forme et détecter la date et l'emplacement des impacts.
Thomas
-
Intéressant tout cela,je voudrais créer une page internet avec localisation de l'utilisateur et affichage des données.
pour la localisation c'est simple mais le reste.....
Position pour smartphone [url=http://www.meteofontenay.fr/gps1.html]ici[/url]
-
Voici la version vb.net (visual studio 2005) => FrameWork 2.0
[size=85]
[code]
Imports System.IO
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim OffSetGmt As Integer = -2 ' offset entre l'heure locale et GMT... bien faire attention ici !!!
' Usage ("L'heure GMT actuelle", "nombre de tranche de 10 minutes souhaitées")
SFlocLoadTOA(Now().AddHours(OffSetGmt), 6)
End Sub
Sub SFlocLoadTOA(ByVal GmtTime As DateTime, ByVal ArrayStop As Integer)
' Ajoute le 28/02/2014 suite à un changement du protocole
' Maintenant les données sont disponibles qu'en paquet de 10 minutes
' La procédure ici ne télécharge que les anciennes valeurs, le fichier de la dizaine entamée n'est pas téléchargé
' Déclaration des variables
Dim Sfloc() As String
Dim Boucle As Integer
Dim Boucle3 As Integer
Dim ArrayAnnee As New ArrayList
Dim ArrayMois As New ArrayList
Dim ArrayJour As New ArrayList
Dim ArrayHeure As New ArrayList
Dim ArrayMinute As New ArrayList
Dim MonGmtTime As DateTime = GmtTime
Dim ErrorMessage As String = ""
Dim UrlUpDate As String = ""
Dim Essai As Integer = 0
' Url utilisée actuellement
Dim url As String = "http://data.blitzortung.org/Data_1/Protected/Strokes/%annee%/%mois%/%jour%/%heure%/%minute%.log"
Dim UserName As String = "User Account"
Dim PassWord As String = "Password"
' Recherche de minute multiple de dix
Do While Mid(MonGmtTime.ToString("mm"), 2, 1) <> "0"
MonGmtTime = MonGmtTime.AddMinutes(-1)
Loop
' Retire 10 minutes car la butée est le début et non la fin dans les fichiers
MonGmtTime = MonGmtTime.AddMinutes(-10)
' Génération des array des heures sur 24 heures pour chaques 10 minutes
For Boucle3 = 0 To 143
ArrayAnnee.Add(MonGmtTime.AddMinutes(-Boucle3 * 10).ToString("yyyy"))
ArrayMois.Add(MonGmtTime.AddMinutes(-Boucle3 * 10).ToString("MM"))
ArrayJour.Add(MonGmtTime.AddMinutes(-Boucle3 * 10).ToString("dd"))
ArrayHeure.Add(MonGmtTime.AddMinutes(-Boucle3 * 10).ToString("HH"))
ArrayMinute.Add(MonGmtTime.AddMinutes(-Boucle3 * 10).ToString("mm"))
Next
' Test devrait correspondre au dernier fichier terminé disponible sur le serveur
Dim test As String = ArrayAnnee(0) & "/" & ArrayMois(0) & "/" & ArrayJour(0) & " " & ArrayHeure(0) & ":" & _
ArrayMinute(0)
' GUI mise à jour
TextBox1.Text = "Download in progress, please wait..." : TextBox1.Refresh()
' Efface le fichier de sortie afin de partir sur une nouvelle base
If My.Computer.FileSystem.FileExists("BlitzortungDataOutput.txt").ToString = True Then Kill("BlitzortungDataOutput.txt")
' Boucle de téléchargement, on commence par le fichier plus petit en heure
For Boucle3 = ArrayStop - 1 To 0 Step -1
'Préparation de l'URL
UrlUpDate = url
UrlUpDate = UrlUpDate.Replace("%annee%", ArrayAnnee(Boucle3))
UrlUpDate = UrlUpDate.Replace("%mois%", ArrayMois(Boucle3))
UrlUpDate = UrlUpDate.Replace("%jour%", ArrayJour(Boucle3))
UrlUpDate = UrlUpDate.Replace("%heure%", ArrayHeure(Boucle3))
UrlUpDate = UrlUpDate.Replace("%minute%", ArrayMinute(Boucle3))
' Efface le fichier temporaire de la requet de l'url
If My.Computer.FileSystem.FileExists("TemporyOutput.txt").ToString = True Then Kill("TemporyOutput.txt")
' Deux essais sont engagés avant d'abandonner
Essai = 0
Do While Essai <> 2
Try
' La requête est engagée
My.Computer.Network.DownloadFile(UrlUpDate, "TemporyOutput.txt", UserName, PassWord, True, 60000, True)
TextBox1.Text = "Download part of date: " & ArrayAnnee(Boucle3) & "/" & ArrayMois(Boucle3) & "/" & _
ArrayJour(Boucle3) & " " & ArrayHeure(Boucle3) & ":" & ArrayMinute(Boucle3) & ":00 (Part " & _
ArrayStop - (Boucle3) & " of " & ArrayStop & ") " : TextBox1.Refresh()
Catch ex As Exception
' S'il y a une erreur, on log l'erreur
LogWrite("")
LogWrite("Problem to download the TOA data from the Blitzortung server")
LogWrite("SYS msg = " & ex.Message)
LogWrite("URL used is : " & UrlUpDate)
ErrorMessage = ex.Message
TextBox1.Text = ex.Message : TextBox1.Refresh()
End Try
'Vérifie que le fichier temporaire est bien sorti, sinon on retente
If My.Computer.FileSystem.FileExists("TemporyOutput.txt").ToString = True Then
'Chargement du fichier temporaire dans la mémoire
Sfloc = File.ReadAllLines("TemporyOutput.txt")
'Ouverture en mode append du fichier de sortie
FileOpen(1, "BlitzortungDataOutput.txt", OpenMode.Append)
For boucle = 0 To Sfloc.Length - 1
PrintLine(1, Sfloc(boucle))
Next
FileClose(1)
' Effacement du fichier temporaire, sinon la requête sera bloquée car le fichier existe déjà
Kill("TemporyOutput.txt")
' Le fichier était présent, donc on fixe à 2 pour sortir de la boucle
Essai = 2
TextBox1.Text = TextBox1.Text & " complete"
' Laisse un mot dans le log
LogWrite("Download part of date: " & ArrayAnnee(Boucle3) & "/" & ArrayMois(Boucle3) & "/" & _
ArrayJour(Boucle3) & " " & ArrayHeure(Boucle3) & ":" & ArrayMinute(Boucle3) & ":00 (Part " & _
(ArrayStop - Boucle3) & " of " & ArrayStop & ") ")
' Petite temporisation de 2 secondes avant de continuer
hbwait(2000)
Else
' Zut, le premier essai a raté, on incrément de 1 pour le second essai
Essai = Essai + 1
' Petite temporisation de 5 secondes avant de continuer
hbwait(5000)
End If
Loop
Next
TextBox1.Text = "Execution done" : TextBox1.Refresh()
End Sub
Sub LogWrite(ByVal text As String)
FileOpen(2, "Sfloc_Err.log", OpenMode.Append)
PrintLine(2, Now.ToString("HH:mm:ss dd/MM/yyyy : ") & text)
FileClose(2)
End Sub
Friend Sub hbwait(ByVal ms_to_wait As Long)
Dim endwait As Double
endwait = Environment.TickCount + ms_to_wait
While Environment.TickCount < endwait
System.Threading.Thread.Sleep(1)
Application.DoEvents()
End While
End Sub
End Class
[/code]
[/size]
[size=100]Le concepteur de vue[/size]
[size=85]
[code]
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form1
Inherits System.Windows.Forms.Form
'Form remplace la méthode Dispose pour nettoyer la liste des composants.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Requise par le Concepteur Windows Form
Private components As System.ComponentModel.IContainer
'REMARQUE : la procédure suivante est requise par le Concepteur Windows Form
'Elle peut être modifiée à l'aide du Concepteur Windows Form.
'Ne la modifiez pas à l'aide de l'éditeur de code.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.TextBox1 = New System.Windows.Forms.TextBox
Me.Button1 = New System.Windows.Forms.Button
Me.SuspendLayout()
'
'TextBox1
'
Me.TextBox1.Location = New System.Drawing.Point(12, 42)
Me.TextBox1.Name = "TextBox1"
Me.TextBox1.Size = New System.Drawing.Size(383, 20)
Me.TextBox1.TabIndex = 0
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(13, 13)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(139, 23)
Me.Button1.TabIndex = 1
Me.Button1.Text = "Button1"
Me.Button1.UseVisualStyleBackColor = True
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(415, 83)
Me.Controls.Add(Me.Button1)
Me.Controls.Add(Me.TextBox1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
Friend WithEvents Button1 As System.Windows.Forms.Button
End Class
[/code]
[/size]