php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Scripts > BRAINSTORMING PHP/SQL/HTML/JS/CSS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


BRAINSTORMING PHP/SQL/HTML/JS/CSS Ihr habt eine Idee, aber keinen genauen Ansatz? Diskutiert mit anderen Usern des Forums über eure Gedankengänge um evtl. hilfreiche Ideen zu bekommen!
Normale Fragen bitte weiterhin in die entsprechenden Foren!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 25-03-2010, 21:10
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard Koordinate in Gebiet abfragen

Ich bräucht auch grad mal wieder einen Denkansatz.

Ich habe:
Tabelle 'Placemarks':
ID, Lat, Lon

Tabelle 'Areas':
ID, PolygonData

Das heißt... ich habe die Tabellen noch nicht auf einem Server, sondern erst in meinem Kopf. Das Feld PolygonData wäre einfach ein Textfeld, das mit 'Lat,Lon Lat,Lon Lat,Lon ....' gefüllt wäre. Alternativ könnte hierfür auch eine weitere Tabelle stehen, in dem jeder LatLon-Wert eines Polygons in einem eigenem Datensatz hinterlegt wäre - das würde dann auch noch zusätzlich eine Sortierspalte erforderlich machen. Wie die Polygone gespeichert werden hat mit meinem eigentlichen Anliegen aber erstmal nichts zu tun - glaube ich zumindest...

In PHP habe ich mir nun eine Funktion geschrieben, welche feststellt, ob eine mit Lat und Lon definierte Koordinate sich innerhalb eines Polygons (Array) befindet. Diese Funktion habe ich nicht nur in meinem Kopf, sondern die ist bereits "auf Papier" und funktioniert einwandfrei.

Nun ist es aber nicht möglich in SQL direkt abzufragen, ob sich eine Koordinate innerhalb eines Polygons befindet. Wenn ich also wissen will welche Datensätze aus 'Placemarks' sich innerhalb eines bestimmten Polygons aus "Areas" befinden, muss ich alle Datensätze aus 'Placemarks' holen und in PHP dann checken ob sich die Placemark innerhalb oder ausserhalb des Polygons befindet. Wie es euch dabei geht weiß ich jetzt nicht, aber mein Bauchgefühl sagt mir schon, dass das nicht gerade der Königsweg sein kann.

Der sinnvollste Weg, der mir im Augenblick einfällt, sieht so aus, dass ich eine Tabelle 'PlacemarkInArea' anlege:
ID, placemark_ID, area_id, is_in
Diese würde dann per Cronjob in regelmässigen Abständen auf fehlende Kombinationen aus placemark_ID und area_ID geprüft werden und das Prüfungsergebnis aus der PHP-Funktion würde dann dort eingetragen werden.

Wie seht ihr das? Alternativen?

PS:
Der Burner schlechthin wäre, diese Funktion direkt in mySql zu implementieren - aber das ist für mich eine Nummer zu hoch.
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
Mit Zitat antworten
  #2 (permalink)  
Alt 25-03-2010, 21:33
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Respekt. Welchen Algorithmus hast du benutzt? Ray casting? Dafür musst du doch lineare Gleichungssysteme lösen. Hab das auch mal gemacht und fand das nicht besonders lustig, wegen der Float-Ungenauigkeit.

Edit: Ich merk grad, dass das Blödsinn ist. Ich hatte im 3D-Raum Schnittpunkte errechnen müssen, aber in der Ebene ist das ja viel einfacher und ohne LGS machbar.
__________________
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!

Geändert von AmicaNoctis (25-03-2010 um 22:05 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 25-03-2010, 22:10
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Das ist schon ne Weile her, aber weil ich grad wieder an der Thematik dran bin kam ich auf die Frage hier - aber du glaubst ja jetzt nicht ernsthaft, ich hätt mir den Algorhitmus selbst ausbaldowert?!

Google war mein Freund - was man da findet dann noch auf PHP umzumünzen stellt mal wirklich keinen vor besondere Herausforderungen.

Ich hab allerdings schon auch versucht zu verstehen was der Algo macht - er zählt mit, ob das Polygon den gesuchten Punkt umkreist in dem er mitzählt, wie oft eine Polygonkante eine Linie, die von dem Punkt aus weggeht von unten nach oben und von oben nach unten schneidet. Kommt was anderes als 0 raus, liegt der Punkt drin.

Ray Casting? Keine Ahnung - berechnest du da den Winkel einer Linie von den Eckpunkten des Polygons zum zu prüfenden Punkt?
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
Mit Zitat antworten
  #4 (permalink)  
Alt 25-03-2010, 22:17
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Nein, ray casting ist genau das, was du machst, auch wenn du es etwas vage beschreibst. Ich denke, das lässt sich ganz gut als Stored Function in MySQL umsetzen.
__________________
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
  #5 (permalink)  
Alt 25-03-2010, 22:35
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

stored functions - ich wusste von stored procedures und dass mir die in dem Fall nicht weiterhelfen. Ich müsst meine Kenntnisse über mySql mal langsam über den Stand von vor 9 oder 10 Jahren hinausbringen

Ich dachte ich müsste direkt an den Quellcode von mySql ran um das reinzukriegen - aber so kann ich mir das mal angucken.

Vielen Dank!
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
Mit Zitat antworten
  #6 (permalink)  
Alt 25-03-2010, 22:40
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Ein Beispiel, wie sowas aussieht (wenn auch ein völlig anderes Thema) findest du hier.
__________________
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 26-03-2010, 04:10
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

MySQL :: MySQL 5.0 Reference Manual :: 11.12.5.6 Functions That Test Spatial Relationships Between Geometries
Mit Zitat antworten
  #8 (permalink)  
Alt 26-03-2010, 11:32
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

@onemorenerd
Danke - wusste auch nicht, das mySql inzwischen dafür eigene Datentypen bereithält. Hab mich damit mal kurz befasst.

Dumm ist:
In kml-Dateien werden Polygone in der Form abgelegt:
13.35323242,48.523232,0 13.534232453,48.13353323,0 13.12412312,48.9897989,0

Der mySql-geometrie-Datentyp erwartet die Daten dagegen so:
13.35323242 48.523232, 13.534232453 48.13353323, 13.12412312 48.9897989, 13.35323242 48.523232

Ist zwar nicht weiter tragisch - man muss halt wieder mal hin- und herkonvertieren.

Hab jetzt mal ein wenig damit rumgespielt, eine Tabelle angelegt, Polygone drin gespeichert und dann nach Punkten darin gesucht - schaut gut aus


EDIT:
Also für GeoInfo ist das echt super und easy - einfach alle Infos (Gebiete, Punkte, Routen) in eine Spalte mit dem Datentyp 'geometrie' einpflegen, die Tabelle mit sich selbst joinen und schon kann man sich beliebig ineinander verschachtelte Gebiete, Punkte, Routen usw. rausziehen - der Tipp war mal echt Gold Wert
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

Geändert von Quetschi (26-03-2010 um 17:36 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 26-03-2010, 16:57
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Zitat:
Zitat von Quetschi Beitrag anzeigen
Hab jetzt mal ein wenig damit rumgespielt, eine Tabelle angelegt, Polygone drin gespeichert und dann nach Punkten darin gesucht - schaut gut aus


EDIT:
Also für GeoInfo ist das echt super und easy - einfach alle Infos (Gebiete, Punkte, Routen) in eine Spalte mit dem Datentyp 'geometrie' einpflegen, die Tabelle mit sich selbst joinen man kann sich beliebig ineinander verschachtelte Gebiete, Punkte, Routen usw. rausziehen - der Tipp war mal echt Gold Wert
Ich nehme alles zurück und behaupte das Gegenteil!

... naja, ganz so schlimm ist es nicht aber etwas den ich erhalte inzwischen Resultate, die so nicht stimmen können. Ein genauerer Blick ins Manual verrät dann auch warum das so kommt:

Die Funktion within scheint nur zu prüfen ob der gesuchte Punkt innerhalb eines Rechtecks (MBR) liegt, das durch die jeweiligen äußeren Eckpunkte des Polygons, in welchem gesucht wird, definiert wird.

Nun kann ich aber so schonmal mehr oder weniger auf die Datensätze eingrenzen, auf die das zutrifft und den Rest dann z.B. noch gegen meine PHP-Funktion checken.

Für heute hab ich aber keine Zeit mehr - war aber trotzdem ein guter Tipp!
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
Mit Zitat antworten
  #10 (permalink)  
Alt 26-03-2010, 17:31
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Und contains statt within?
__________________
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
  #11 (permalink)  
Alt 26-03-2010, 17:33
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Und contains statt within?
Selbiges. Verstehe den Unterschied eh nicht, kommt immer das Gleiche raus. Nur die Parameter werden in umgekehrter Reihenfolge übergeben.

EDIT:
In einem Link in den User-Notes wird beschrieben, dass within wohl ab 5.1 korrekt, also nicht nur MBR-basiert arbeitet. Hab leider momentan nur 5.0.77. Muss mal unsere Server durchforsten ob irgendwo >= 5.1 drauf ist.
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

Geändert von Quetschi (26-03-2010 um 17:38 Uhr)
Mit Zitat antworten
  #12 (permalink)  
Alt 26-03-2010, 22:11
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Ich hab mir jetzt daheim zum Testen mal den mySql-snapshot von GIS Functions - MySQL Forge Wiki daheim aufgespielt und siehe da

Bin gespannt, wann das in die offizielle reinkommt...

Den Unterschied zwischen contains und within hab ich jetzt auch begriffen - die Namen sagen eigentlich eh alles. Dadurch, dass die Funktionen in den aktuellen offiziellen MySql-Versionen aber noch MBR-basiert, sind fielen die Probeläufe bei mir leider genau so aus, dass sich keine Unterschiede ergaben.
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

Geändert von Quetschi (26-03-2010 um 22:17 Uhr)
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
PHP-Freelancer im Rhein-Main-Gebiet gesucht Well Jobgesuche 0 19-06-2006 12:15
Suchen Programmierer im Rhein-Main-Gebiet Well Jobgesuche 0 19-04-2006 09:02
[Oracle] PLZ-Gebiet aus GEODB auslesen POffice SQL / Datenbanken 8 05-08-2005 15:54
PHP Programmierer (Rhein-Main Gebiet) screenportal Jobgesuche 0 09-01-2004 10:25
bin totall neu auf dem gebiet php hilfe austriabox20 PHP Developer Forum 8 20-12-2002 06:29

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

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

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