Adressen in Geokoordinaten umwandeln (nochmal)

  • Hallo Forum,


    zwar wurde das Thema nun schon einmal in
    thema
    beschrieben, aber hier nochmal zur Abgrenzung in einem neuen Thread.


    Aufgabenstellung: Aus einer Cvs-Datei ein Overlay machen.


    Die Lösung ist soweit wirklich einfach, einziges Problem ist das Finden der Geokoordinaten. Was tun, wenn man dieses MS-Programm (Mappoint) nicht besitzt? Ich habe zwar Zugang zu Map and Guide 8 aber selbst da bekomme ich die Geokoordinaten nur innerhalb des Programmes zu Gesicht, kann sie aber nicht exportieren.


    Also: Kennt jemand weitere Programme, die eine Konvertierung machen können (also Eingabe von Strasse, Hausnummer, PLZ (Ort) und Ausgabe von Geokoordinaten)?


    Am besten wäre natürlich eine Weboberfläche, öffentlich zugänglich, deren URL man per Skript (wie von joeduck beschrieben) manipulieren kann.


    Gruß
    Peter

  • Lustig, manchmal bekommt man die Lösung ein paar Minuten später...


    Mappoint gibt es auch im Internet unter


    http://mappoint.msn.com/


    hier kann man einen Ort eingeben und bekommt eine Seite zurück in der eine hidden-Variable MapForm:POIText steht.


    sieht in etwa so aus:
    <input name="MapForm:POIText" id="MapForm_POIText" type="hidden" value="P=|50.7805568741819%2c6.07974593326567|1|Pontstra%c3%9fe+133%2c+Aachen%2c+Nordrhein-Westfalen+52062|L1|" />


    Die Breiten-/Längengradangaben sind hier dann schön "parse"-bar.


    Das ist für mich schon eine schicke Lösung. Mal sehen, später wohl mehr, wenn es eine Fertige Lösung "Outlook Kontakte -> TTN Overlay" gibt.


    Gruß
    Peter

  • @StreetPiet: Super, das ist ja echt ne Alternative! Die Ergbenisse der Geokodierung in der Onlineversion sind übrigens bis auf die letzte Nachkommastelle identisch mit denen auf dem Desktop (habe gerade mal ein paar McDs gecheckt).


    Abgesehen davon kann man aber auch eine Trial-Version von Mappoint 2002 bei Microsoft auf CD-ROM beziehen für 9,95$. Die gibt es unter http://www.microsoft.com/offic…oint/evaluation/trial.asp


    Die Trial-Version ist 60 Tage ab Installationsdatum lauffähig und hat keinerlei funktionale Beschränkungen.


    Gruss,
    Martin

  • @vossi
    danke für den Hinweis mit der Trial. Soll natürlich eine dauerhaftere Lösung sein :-). Aber nun gut, wenn es denn erstmal nicht anders geht.


    Ich hätte ja am liebsten eine Skriptlösung (von Linux/Windows ein Skript aufrufen, dass wget oder so aufruft, per Perl alles parst und dann die entsprechenden Overlay tools aufruft)


    Das mit Mappoint: naja, geht nicht so ganz, die checken Post-Parameter. Ich kann die home.aspx die angesprochen wird, nicht über get-Parameter ansprechen.


    Noch jemand eine andere Lösung?


    Gruß
    Peter

  • Etwas Off-Topic, aber vielleicht ja ganz interessant: Habe gerade festgestellt, daß Mappoint übrigens mit Navtech-Kartenmaterial arbeitet (wie der Destinator). Ist schon witzig, da generiert man die Koordinaten mit Hilfe der hausnummerngenauen Navtech-Karten, um diese dann als POIs im Tele-Atlas-basierten TTN zu verwenden....

  • ENDLICH!


    Das mit Mappoint ist wirklich total in die Hose gegangen, da muss man ohne ende tricksen, über POST alle Daten schicken, ein Cookie manuell mitschicken, und wahrscheinlich auch noch den Referer faken. Zu viel für mich.


    Ich habe dann bei Map24 nochmal geschaut. Da ist es doch ganz einfach, ich habe die Koordinaten einfach nicht gefunden, weil die alle Koordinaten mit 60 multipliziert haben, keine Ahnung wieso.


    hier also das Script (in PHP).
    Es erwartet eine csv-Datei (adresses.csv), von Outlook generiert und erzeugt eine Datei (test.dat)
    wer möchte, kann sich das Script nach Belieben umstricken, ist wahrscheinlich eh nicht so ganz astrein.


    Am wichtigsten ist natürlich Zeile 58 des Scripts: Der Aufruf der URL bei map24


    <?php


    /**
    * convert
    * plaintext addresses into geo-coordinates
    * via map24 freeservice
    *
    * LICENSE: artistic.
    * (Do what you want with it,
    * you have to put the result under the artistic license again)
    *
    * @author Peter Gabriel <peter@gabriel-online.net>
    * @version 1.0
    */

    // addresses.csv has to be a file generated by outlook
    // i am using outlook 2002 (the sold-with-ipaq-version)
    $csv = file("addresses.csv");


    //csv is now an array with many columns the following columns are used
    //15 Strasse privat
    //18 Ort privat
    //20 PLZ privat


    //new is for geocoordinated addresses
    $new = array();


    for ($i=1; $i<count($csv); $i++)
    {
    $row = $csv[$i];

    $data = explode(",",trim($row));
    for ($j=0; $j<count($data); $j++)
    {
    $data[$j] = substr($data[$j], 1, -1);
    }
    $new[] = array(
    "name" => $data[1]." ".$data[3],
    "street" => $data[15],
    "city" => $data[18],
    "zip" => $data[20]
    );

    }


    //processing part

    //open file for writing
    $fp = fopen("test.dat","w");

    for ($i=0; $i<count($new); $i++)
    {
    $row = $new[$i];

    //set time limit to unlimited script time
    set_time_limit(30);

    if ($row["name"] && $row["street"] && $row["city"] && $row["zip"])
    {
    //this is the core-part of the script
    $lines = file("http://www.map24.com/map24/index.php3?street0=&quot;.urlencode($row["street"]).
    "&zip0=".$row["zip"].
    "&city0=".$row["city"]."&country0=de&gcf=1&force_maptype=RELOAD&x=0&y=0");

    //grep the coordinates from html-text and convert the coordinates (they have been multiplied with 60 by map24)


    foreach ($lines as $row2)
    {
    if (preg_match("/wx0=(.*)\&wy0=(.*)\&locid/", $row2, $matches)) {
    $new[$i]["x"] = $matches[1]/60;
    $new[$i]["y"] = $matches[2]/60;

    //output the data for processing with makeov2
    $line = $new[$i]["y"]." , ".$new[$i]["x"]." , \"".$new[$i]["name"]."\"\n";
    echo $line."<br>";

    //write a line to file
    fwrite($fp, $line);
    flush();
    } //if
    } //foreach
    } //if
    } //for


    //close filehandle
    fclose($fp);


    ?>

  • ein kleiner fehler hat sich doch eingeschlichen, der längengrad muss zuerst in die datei geschrieben werden.


    also einfach einmal "x" und "y" vertauschen.

  • Hi StreetPiet,


    kannst Du bitte mal erklären wie man so ein skript einsetzt ?(
    ciao Tomsen