ebiz-consult PHP Entwicklung
- Ad -
php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 10-03-2010, 12:04
Skaschy
 Registrierter Benutzer
Links : Onlinestatus : Skaschy ist offline
Registriert seit: Jun 2002
Ort: Bad Wörishofen (Allgäu)
Beiträge: 582
Skaschy ist zur Zeit noch ein unbeschriebenes Blatt
Skaschy eine Nachricht über ICQ schicken
Standard OpenGeoDB (Lat / Lon) auf 2D Karte (PNG)

Hallo zusammen,

ich bin derzeit auf der Suche nach einer Formel wie ich eine Position auf einer 2D Karte markieren kann.

Auf meiner Suche bin ich auf Folgendes gestoßen:

PHP-Code:

        
//coord
        
$coord_x_min    5.5;        //west (min longitude)
        
$coord_x_max    15.5;     //east (max longitude)
        
$coord_y_min    47.2;     //north (max latitude)
        
$coord_y_max    55.1;     //south (min latitude)

        //karte
        
$map_x_min        0;    //west
        
$map_x_max        $aMapSize['x'];     //east
        
$map_y_min        0;     //north
        
$map_y_max        $aMapSize['y'];    //south
        
        
$coord_x_diff    $coord_x_max $coord_x_min;
        
$coord_y_diff    $coord_y_min $coord_y_max;
        
        
$coord_x        $fLongitude;
        
$coord_y        $fLatitude;
        
        
$point_x        $map_x_max / ( $coord_x_diff / ( $coord_x $coord_x_min ) );
        
$point_y        $map_y_max / ( $coord_y_diff / ( $coord_y $coord_y_max ) );        

        
$final_point_x    $point_x;
        
$final_point_y    = ($map_y_max $point_y);
        
        return Array(
'x' => Round($final_point_x2), 'y' => Round($final_point_y2)); 

Jedoch ist die Berechnung murks, da München hier in der nähe von Köln angezeigt wird.


Ich denke mal das die Coord X/Y (min/max) falsch sind, weil ich eine eigene Imagemap benutze.

Weißt jemand weiter?

Ach ja die Longitude / Latitude Daten liegen im Dezimalformat vor.



Liebe Grüße
__________________
Gruss TobY

Geändert von Skaschy (10-03-2010 um 12:12 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 10-03-2010, 12:17
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.769
unset befindet sich auf einem aufstrebenden Ast
Standard

Hallo Tobias,

eine Position markierst du mithilfe von Längen- und Breitengrad … wie auch sonst? Entfernungen, Umkreis und all so ein Krempel machst du mit der Haversine-Formel!
Mit Zitat antworten
  #3 (permalink)  
Alt 10-03-2010, 12:30
Skaschy
 Registrierter Benutzer
Links : Onlinestatus : Skaschy ist offline
Registriert seit: Jun 2002
Ort: Bad Wörishofen (Allgäu)
Beiträge: 582
Skaschy ist zur Zeit noch ein unbeschriebenes Blatt
Skaschy eine Nachricht über ICQ schicken
Standard

Hallo Cem,

ich benutze ja die Latitude und Longitude Werte, jedoch kann ich diese Werte nicht einfach auf eine 2D Karte klatschen, da hier weder die Erdkrümmung noch die Differenzen zwischen den Graden kalkuliert wird.
__________________
Gruss TobY

Geändert von Skaschy (10-03-2010 um 12:43 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 10-03-2010, 13:18
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.769
unset befindet sich auf einem aufstrebenden Ast
Standard

Deswegen Haversine …
Mit Zitat antworten
  #5 (permalink)  
Alt 10-03-2010, 13:29
Skaschy
 Registrierter Benutzer
Links : Onlinestatus : Skaschy ist offline
Registriert seit: Jun 2002
Ort: Bad Wörishofen (Allgäu)
Beiträge: 582
Skaschy ist zur Zeit noch ein unbeschriebenes Blatt
Skaschy eine Nachricht über ICQ schicken
Standard

Aber Haversine ist doch nur für die Entfernung zwischen zwei Punkten?
__________________
Gruss TobY
Mit Zitat antworten
  #6 (permalink)  
Alt 10-03-2010, 13:36
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Ort: Dresden
Beiträge: 5.463
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Genau und was ist ein Ort auf einer Karte? Ein Punkt. Und die Position des Ortes auf der Karte ist nichts anderes als die beiden Entfernungen dieses Punktes von der linken und von der oberen Kante.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #7 (permalink)  
Alt 10-03-2010, 13:43
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.769
unset befindet sich auf einem aufstrebenden Ast
Standard

Richtig, für die Entfernung (und alles damit zusammenhängende) brauchst du Haversine. Ich schnall aber auch jetzt erst, was du genau willst.

Die Wikipedia-Artikel zum Längen- und Breitengrad sagen dir, dass die Breitengrade immer gleich weit voneinander entfernt liegen und lediglich die Längengrade unterschiedliche Entfernungen aufweisen. Dort findest du allerdings auch eine Formel, wie du diese Berechnen kannst. Das Problem wird hier aber in erster Linie sein, dass niemand deine Karte kennt …
Mit Zitat antworten
  #8 (permalink)  
Alt 10-03-2010, 14:57
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 2.679
Quetschi befindet sich auf einem aufstrebenden Ast
Standard

*kopfkratz* Die Haversine-Formel sollte hier doch eigentlich nicht gebraucht werden?! Eine korrekte 2D-Projektion der Karte vorrausgesetzt?

Stellen die ersten vier Werte aus deinem Codebeispiel (bzw. in den Script, dass du verwendest) auch die linke obere Ecke und rechte untere Ecke aus DEINER Karte dar? Und enthält das Array $aMapSize die Groesse DEINER Karte in Pixeln?

Wenn ich das Script richtig checke, liefert es die Pixel-Koordinaten für deine Karte anhand der übergebenen Werte $fLongitude und $fLatitude. Dazu muss es die LAT/LON Werte für die linke obere und rechte untere Ecke kennen, sowie die Abmessungen deiner Karte in Pixeln - sonst nichts - eigentlich eine simple Geschichte.

PS:
Wenn die Werte aus deinem Codebeispiel für deine Karte gelten sollen, dann liegt die linke obere Ecke deiner Karte in irgendeinem französischem Acker
__________________
Drelingdo
Krabonse
Simmannamando

Geändert von Quetschi (10-03-2010 um 15:03 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 10-03-2010, 15:47
Skaschy
 Registrierter Benutzer
Links : Onlinestatus : Skaschy ist offline
Registriert seit: Jun 2002
Ort: Bad Wörishofen (Allgäu)
Beiträge: 582
Skaschy ist zur Zeit noch ein unbeschriebenes Blatt
Skaschy eine Nachricht über ICQ schicken
Standard

Okay, die Werte waren von einer anderen Deutschlandkarte.

Woher, bzw. wie komm ich an die Werte für meine Karte?

Die Pixelangaben sind korrekt:

431x575 Pixel



Französischer Acker ist nicht gut, schließlich will ich kein Wein anbauen.
__________________
Gruss TobY
Mit Zitat antworten
  #10 (permalink)  
Alt 10-03-2010, 15:52
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 2.679
Quetschi befindet sich auf einem aufstrebenden Ast
Standard

z.B. Google Earth - aber Vorsicht - die Ansicht auf Dezimalgrad umstellen!

EDIT:
Also bei den Werten oben sind die
PHP-Code:
        $coord_y_min    47.2;     //north (max latitude)
        
$coord_y_max    55.1;     //south (min latitude) 
Werte vertauscht - mach draus

PHP-Code:
        $coord_y_min    55.1;     //north (max latitude)
        
$coord_y_max    47.2;     //south (min latitude) 
dann kommt da ein Ausschnitt raus, in dem Deutschland gut reinpasst.
__________________
Drelingdo
Krabonse
Simmannamando

Geändert von Quetschi (10-03-2010 um 16:04 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 10-03-2010, 16:22
Skaschy
 Registrierter Benutzer
Links : Onlinestatus : Skaschy ist offline
Registriert seit: Jun 2002
Ort: Bad Wörishofen (Allgäu)
Beiträge: 582
Skaschy ist zur Zeit noch ein unbeschriebenes Blatt
Skaschy eine Nachricht über ICQ schicken
Standard

Also die Werte passen recht gut (5.5, 15.2, 55.1, 47.2), schaut aber immernoch etwas bescheiden aus.

München (PLZ: 80686) wäre demnach direkt in Prag.


Irgendwie ist da noch etwas arg daneben.


Edit:
Anbei mal nen Screen aus GoogleEarth
Miniaturansicht angehängter Grafiken
OpenGeoDB (Lat / Lon) auf 2D Karte (PNG)-overlay.jpg  
__________________
Gruss TobY

Geändert von Skaschy (10-03-2010 um 16:30 Uhr)
Mit Zitat antworten
  #12 (permalink)  
Alt 10-03-2010, 16:27
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 2.679
Quetschi befindet sich auf einem aufstrebenden Ast
Standard

Also ich kann mir evtl. heut Abend nochmal genau ansehen, was das Script macht - im Augenblick kann ich mich aber nicht ausgiebig der Sache annehmen.
__________________
Drelingdo
Krabonse
Simmannamando
Mit Zitat antworten
  #13 (permalink)  
Alt 11-03-2010, 15:08
Skaschy
 Registrierter Benutzer
Links : Onlinestatus : Skaschy ist offline
Registriert seit: Jun 2002
Ort: Bad Wörishofen (Allgäu)
Beiträge: 582
Skaschy ist zur Zeit noch ein unbeschriebenes Blatt
Skaschy eine Nachricht über ICQ schicken
Standard

Also ich bin nachwievor an einer Lösung interessiert.

Die Berechnungen sollten eigentlich richtig sein, vielleicht passt was an meinen Lat/Lon Daten nicht? Diese sind im Dezimalformat vorhanden und stammen von der OpenGeoDB.
__________________
Gruss TobY
Mit Zitat antworten
  #14 (permalink)  
Alt 11-03-2010, 15:16
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 2.679
Quetschi befindet sich auf einem aufstrebenden Ast
Standard

Bin gestern nicht mehr dazu gekommen - nutzt du die Daten auch "richtig" herum? Also in deinem "System" zur Anzeige des Punktes auf der Karte (via Javascript/Css o.ä.)? Evtl. sind da Lat/Lon vertauscht?!
__________________
Drelingdo
Krabonse
Simmannamando
Mit Zitat antworten
  #15 (permalink)  
Alt 11-03-2010, 15:24
Skaschy
 Registrierter Benutzer
Links : Onlinestatus : Skaschy ist offline
Registriert seit: Jun 2002
Ort: Bad Wörishofen (Allgäu)
Beiträge: 582
Skaschy ist zur Zeit noch ein unbeschriebenes Blatt
Skaschy eine Nachricht über ICQ schicken
Standard

In der Tat, die Werte für die "div" layer, in denen wird ein Marker und Text angezeigt waren vertauscht.

Außerdem sind nun die Orte mit folgenden Werten Perfekt in der Karte:

PHP-Code:
$coord_x_min    6.1;        //west (min longitude)
$coord_x_max    17.9;        //east (max longitude)
$coord_y_min    55.1;     //north (max latitude)
$coord_y_max    48.8;     //south (min latitude) 

Seltsam...
__________________
Gruss TobY
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
OpenGeoDB: PLZ => Ort DMKlein PHP Developer Forum 4 21-02-2008 18:35
Einschätzung openGeoDB strauberry Appz und Script Gesuche 1 29-01-2007 13:30
Problem OpengeoDB Hazzardous PHP Developer Forum 1 07-12-2004 15:00
[opengeodb] karte zeichnen fragen Appz und Script Gesuche 2 18-10-2004 22:14
opengeodb frage Hazzardous Appz und Script Gesuche 3 30-09-2004 11:30

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Schwere Sicherheitslücke in PHP 5.3.9
Schwere Sicherheitslücke in PHP 5.3.9Die Sicherheitslücke erlaubt das Ausführen von PHP-Code über das Netzwerk. Suhosin bringt Abhilfe öffnet jedoch alte Probleme

02.02.2012 | Berni

Firefox 10 enthält neue Entwicklerwerkzeuge
Firefox 10 enthält neue EntwicklerwerkzeugeFirefox steht in der Version 10 zum Download bereit. Gerade Entwickeler dürften sich über die neuen Entwicklungswerkzeuge freuen.

31.01.2012 | phpler

 

Aktuelle PHP Scripte

Gästebuchservice Script ansehen Gästebuchservice Script

Eröffnen Sie ihren eigenen Gäsebuchservice und bieten Sie ihren Besuchern ein kostenloses Gästebuch an. Verdienen Sie an den Integrierten AD System. Viele Benutzerdeffinierte Einstellungen ermöglichen ihren Kunden eine gute Integration an das Layout ihrer

10.02.2012 maternet | Kategorie: PHP/ Gaestebuch
LizenzMaker

Mit dem PDF-LicenseMaker erstellen Sie völlig unkompliziert und innerhalb kürzester Zeit eine Lizenz für Ihre Software-Artikel im PDF-Format. Sie verwalten die Daten Ihrer Software, Lizenztexte, PDF-Dokumente und Lizenzgrafiken bequem über ein Webinter

10.02.2012 maternet | Kategorie: PHP/ PDF
Top 100 Counterservice mit Verzeichnis ansehen Top 100 Counterservice mit Verzeichnis

Sie erhalten in diesem Script ein Top 100 Verzeichnis mit einem integrierten Counterservice. Wenn Sie sich Registrieren erhalten Sie einen kostenlosen Counter für ihre Website. Wenn ihre Besucher auf den Counter klicken, erhalten Sie automatisch eine h

09.02.2012 maternet | Kategorie: WEBMASTER/ Counter
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:11 Uhr.