Données via blitzortung.tmt.de/Data_1/Protected/strikes.txt


  • Participant

    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?

  • Participant

    A mon avis il ont supprimer l'ancien système de données. Il faut donc utiliser le nouveau.

  • Participant

    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...

  • Participant

    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.

  • Admin

    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]

  • Participant

    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

  • Participant

    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

  • Admin

    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]

  • Participant

    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]

Log in to reply