Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Orte in der Nähe

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Orte in der Nähe

    Hallo meine Freunde

    Ich möchte in einem Radar Orte in der Nähe anzeigen. Die aktuelle Position lese ich über geolocation ein. Jetzt möchte ich mit den ausgegebenen Koordinaten in einer Datenbank nach Orten in einem Umkreis von 200m suchen. Nun zu den Problemen dabei:

    1. Wie baue ich die Tabelle auf? Bestehen soll sie aus ID, Longitude, Latitude und Name. Kann man da mit einer sql Abrage Orte in einem bestimmten Koordinatenbereich raussuchen?
    2. Wie rechne ich die 200m in Koordinaten um?

    Ich hoffe ich habe mich deutlich ausformuliert.

    Danke und Gruß, Freddy


  • #2
    Zitat von Fred-Dienste Beitrag anzeigen
    Hallo meine Freunde

    Ich möchte in einem Radar Orte in der Nähe anzeigen. Die aktuelle Position lese ich über geolocation ein. Jetzt möchte ich mit den ausgegebenen Koordinaten in einer Datenbank nach Orten in einem Umkreis von 200m suchen. Nun zu den Problemen dabei:

    1. Wie baue ich die Tabelle auf? Bestehen soll sie aus ID, Longitude, Latitude und Name. Kann man da mit einer sql Abrage Orte in einem bestimmten Koordinatenbereich raussuchen?
    2. Wie rechne ich die 200m in Koordinaten um?
    Das geht ganz einfach mit PostGIS. http://forum.openstreetmap.org/viewtopic.php?id=8293
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      Zitat von akretschmer Beitrag anzeigen
      Das geht ganz einfach mit PostGIS. http://forum.openstreetmap.org/viewtopic.php?id=8293
      Du bist ein Schatz! <3
      Ich versuche das mal und melde mich wieder falls ich es nicht hinbekomme. Solange lasse ich das Thema ungelöst, falls noch jemand schlaues was weiß DANKE!

      Kommentar


      • #4
        Hi,

        ergänzend zu akretschmer's Vorschlag -> auch ne Möglichkeit:

        PHP-Code:
        select *,ROUND((((acos(sin(('latwert'*pi()/180)) * sin((`lat`*pi()/180))+cos(('latwert'*pi()/180)) * cos((`lat`*pi()/180)) * cos((('longwert'- `lng`)*pi()/180))))*180/pi())*60*1.1515*1.609344),2) as distance from deine tabelle... 
        latwert und longwert musst du halt durch die Spaltennamen mit den entsprechenden Longitude und Latitude nehmen.

        mfg wolf29
        while (!asleep()) sheep++;

        Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

        Kommentar


        • #5
          Zitat von wolf29 Beitrag anzeigen
          Hi,

          ergänzend zu akretschmer's Vorschlag -> auch ne Möglichkeit:


          mfg wolf29

          vermutlich langsammer, da die PostGIS-Funktionen (in aktuellen Versionen) dies indexbasiert machen können (PostGIS 2.0 oder so und aktuelles PG natürlich)
          PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

          Kommentar


          • #6
            vermutlich langsammer, da die PostGIS-Funktionen (in aktuellen Versionen) dies indexbasiert machen können (PostGIS 2.0 oder so und aktuelles PG natürlich)
            Ist es eventuell auch - müsste ich testen! Ist nur ne Ergänzung in dem Fall zu deinem Vorschlag.
            while (!asleep()) sheep++;

            Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

            Kommentar


            • #7
              Zitat von wolf29 Beitrag anzeigen
              Hi,

              ergänzend zu akretschmer's Vorschlag -> auch ne Möglichkeit:

              PHP-Code:
              select *,ROUND((((acos(sin(('latwert'*pi()/180)) * sin((`lat`*pi()/180))+cos(('latwert'*pi()/180)) * cos((`lat`*pi()/180)) * cos((('longwert'- `lng`)*pi()/180))))*180/pi())*60*1.1515*1.609344),2) as distance from deine tabelle... 
              latwert und longwert musst du halt durch die Spaltennamen mit den entsprechenden Longitude und Latitude nehmen.

              mfg wolf29
              Bitte was?!
              Wie kommst du auf diese Zahlenorgie?

              Kommentar


              • #8
                Zitat von Fred-Dienste Beitrag anzeigen
                Bitte was?!
                Wie kommst du auf diese Zahlenorgie?
                Findet man via Google
                PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                Kommentar


                • #9
                  Zitat von akretschmer Beitrag anzeigen
                  Findet man via Google
                  Ja, habs gefunden danke
                  Ich hoffe mal, dass ich den Durchblick nicht verliere.. Bin selbst noch Schüler und lerne dieses Sinus und Cosinus Zeug grad erst

                  Kommentar


                  • #10
                    Zitat von Fred-Dienste Beitrag anzeigen
                    Ja, habs gefunden danke
                    Ich hoffe mal, dass ich den Durchblick nicht verliere.. Bin selbst noch Schüler und lerne dieses Sinus und Cosinus Zeug grad erst
                    *smile*

                    Die Berechnung ist halt für JEDEN datensatz durchzuführen. Ist die Tabelle groß, dauert das halt. Die von mir genannte Lösung kann aber einen sog. KNN-Index nutzen und ist daher um etliche Größenordnungen schneller. Zum lernen für Dich: http://workshops.boundlessgeo.com/po...intro/knn.html
                    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                    Kommentar


                    • #11
                      Ich hab es mir jetzt um einiges einfacher gemacht
                      Ich hab einfach mal mitten in Deutschland zwei Koordinaten mit dem Gleichen Breitangrad gesucht, die aber 200 Meter voneinander entfernt liegen. Das gleiche habe ich mit dem Längengrad gemacht. Die Differenz nutze ich als Anhaltspunkt. Ist vllt nicht in ganz deutschland genau 200 Meter aber für mein Projekt reicht das

                      Kommentar

                      Lädt...
                      X