Hallo, ich habe das wie folgt gemacht:
Ich benutze das GPS-Programm u-center 4.02.
Die ganze Anwendnug läuft allerdings nicht auf nem PDA sondern auf nem Rechner mit GPS.
Auf die Logdatei COM...x..y.ubx von u-center kann man auch in Echtzeit zugreifen, das heißt sogar dann, wenn da direkt Daten eingelesen werden.
Mittels eines PHP-Skriptes, welches alle 5 Sekunden aktualisiert wird,
wird der NMEA-String aus der Log-Datei geparst und in eine Geodatenbank (PostgreSQL, PostGIS) eingelesen.
Aletrnativ könnte man natürlich auch den umgekehrten Weg gehen und Daten an den Positionen auslesen.
Das Skript wie folgt:
<body>
<!--Header(Location: ); -->
<meta http-equiv="refresh" content="5"; URL=asus.php">
<!--<form action="
http://localhost/asus/asus.php" method="post"> -->
<?
include "verbindungsaufbau_gps_eintrag.php";
$con = pg_connect ($con_string);
$id_check = "SELECT max(gid)as gid from gps_werte2";
$res_id_check = pg_query($con,$id_check);
$count = pg_result($res_id_check,"gid");
echo "The value: ".$count;
$datei="COM3_070306_164948.ubx";
$zerpflueck_array=file($datei);
$y=0;
$z=0;
for ($x=0;$x<count($zerpflueck_array);$x++)
{
if (eregi("GPGGA",$zerpflueck_array[$x])) {
$nmea_array[]=$zerpflueck_array[$x];
$y++;
$nmea_gueltig_pruef=explode(",",$nmea_array[$y-1]);
if ($nmea_gueltig_pruef[2]!='') {
$z++;
echo "Eintrag: $z";
echo "<br>";
echo "Uhrzeit: ".$nmea_gueltig_pruef[1];
echo "<br>";
echo "Längengrad:". $nmea_gueltig_pruef[3];
$nmea_gueltig_pruef[2]= $nmea_gueltig_pruef[2]/100;
$nmea_gueltig_umgerechnet_latitude=explode(".",$nmea_gueltig_pruef[2]);
$nmea_gueltig_umgerechnet_latitude[1]=str_pad($nmea_gueltig_umgerechnet_latitude[1],6,"0");
$nmea_gueltig_umgerechnet_latitude[1]=$nmea_gueltig_umgerechnet_latitude[1]/10000/60;
$nmea_gueltig_umgerechnet_latitude_1=explode(".",$nmea_gueltig_umgerechnet_latitude[1]);
$laengengrad=$nmea_gueltig_umgerechnet_latitude[0].'.'.$nmea_gueltig_umgerechnet_latitude_1[1];
echo "<br>";
echo $nmea_gueltig_umgerechnet_latitude[1];
echo "<br>";
echo $laengengrad;
echo "<br>";
echo "Breitengrad:". $nmea_gueltig_pruef[5];
echo "<br>";
$nmea_gueltig_pruef[4]= $nmea_gueltig_pruef[4]/100;
$nmea_gueltig_umgerechnet_longitude=explode(".",$nmea_gueltig_pruef[4]);
$nmea_gueltig_umgerechnet_longitude[1]=str_pad($nmea_gueltig_umgerechnet_longitude[1],6,"0");
$nmea_gueltig_umgerechnet_longitude[1]=$nmea_gueltig_umgerechnet_longitude[1]/10000/60;
$nmea_gueltig_umgerechnet_longitude_1=explode(".",$nmea_gueltig_umgerechnet_longitude[1]);
$breitengrad=$nmea_gueltig_umgerechnet_longitude[0].'.'.$nmea_gueltig_umgerechnet_longitude_1[1];
echo $breitengrad;
echo "<br>";
$timestamp = time();
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("His",$timestamp);
echo $datum," - ",$uhrzeit," Uhr";
echo "<br>";
echo "---------------------";
echo "<br>";
if ($z > $count) {
$sql_befehl = "INSERT INTO gps_werte2(zeit_gps_erm,zeit_eintrag,gid,the_geom) VALUES ($nmea_gueltig_pruef[1],$uhrzeit,$z,GeometryFromText('POINT($breitengrad $laengengrad)',4326))";
$res = pg_query($con,$sql_befehl);
//$sql_befehl_2="UPDATE gps_werte2 SET the_geom_gk=transform(POINT($breitengrad $laengengrad),31467)";
//$res = pg_query($con,$sql_befehl_2);
}
}
}
}
echo "Insgesamt wurden $z Einträge getätigt";
$differenz=$z-$count;
echo "<br>";
echo "<font color='#FF0000'>Es wurden ".$differenz." neue Werte eingefügt</font>";
//echo "Also: ".sizeof($nmea_array);
//UPDATE poi SET the_geom=GeometryFromText ( 'POINT(3433607.3462448 5781422.89572127)',31467))where poinameid='777'
?></body>
<!--<input type="submit" value="absenden">
<input type="hidden" name="zaehler" value="<? echo $z; ?>"> </form> -->