karin: polygon -select

Hallo

Ich habe eine OracleDB mit diversen Daten, incl. X- und Y-Koordinaten. Nun kriege ich einen String mit n Koordinatenpaaren. Damit soll ich ein Select machen, das alle Daten selektiert, die innerhalb dieses Polygons liegen.
Mit 'between x1 and x2' selektiere ich ja nur ein Rechteck, gibt es irgendeinen Befehl im SQL, damit ich ein Polygon selektieren kann?

Dank&Gruss
Karin

  1. http://www.biology.ualberta.ca/facilities/gis/uploads/instructions/AVPolygonDistribution.pdf

    versuche es mal hier! aber sicher bin ich mir auch nicht

  2. Hi Karin,

    Ich habe eine OracleDB mit diversen Daten, incl. X- und Y-Koordinaten.

    ...

    Mit 'between x1 and x2' selektiere ich ja nur ein Rechteck, gibt es irgendeinen Befehl im SQL, damit ich ein Polygon selektieren kann?

    Das kommt darauf an welche Oracle Version Ihr verwendet. M.E. ist soetwas per SQL direkt hoechstens mit den zusaetzlichen Filteroptionen von Oracle Spatial zu machen (womit ich keine Erfahrung habe), ansonsten muesste man eine richtige GIS Software verwenden (ArcGIS, MapInfo etc).

    Gruss,
    Melanie

  3. Ich habe eine OracleDB mit diversen Daten, incl. X- und Y-Koordinaten. Nun kriege ich einen String mit n Koordinatenpaaren. Damit soll ich ein Select machen, das alle Daten selektiert, die innerhalb dieses Polygons liegen.
    Mit 'between x1 and x2' selektiere ich ja nur ein Rechteck, gibt es irgendeinen Befehl im SQL, damit ich ein Polygon selektieren kann?

    wie lautet die aufgabe? alle punkte innerhalb eines polygonzuges?

    wenn ja, sowas hatten wir hier letztens schonmal.

    ich glaube nicht, daß ein db system soetwas direkt unterstützt. denkbar wäre allenfalls, eine funktion zu erstellen, welches das db system in der abfrage benutzt.

    ansonsten würde ich erst einmal ein viereck um den polygonzug legen, und damit eine grobauswahl der datensätze selektieren.
    dann müßte jeder punkt gegen den polygonzug laufen, um zu sehen ob dieser innhalb liegt.

    nun geht man mit dem theorem von jordan vor:

    zur prüfung jedes punktes wird ein strahl von diesem punkt gelegt. (am besten 0 grad, dann spart man winkelfunktionen, wenn der polygonzug aus linien besteht).

    dann rappelt man den polygonzug ab und prüft, ob die linie des polygonzugteilstückes den strahl schneidet. findet dies eine ungerade anzahl statt, liegt der punkt innerhalb.