Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Anywhere Server - Unterstützung für räumliche Daten » Räumliche Daten » Praktische Einführung: Mit den räumlichen Funktionen experimentieren

 

Lektion 6: Räumliche Daten projizieren

Diese Lektion zeigt, wie Sie Daten in einem räumlichen Bezugssystem mit planer Erddarstellung projizieren, sodass Sie die Bereichs- und Abstandsmessungen berechnen können.

Voraussetzungen

In dieser Lektion wird davon ausgegangen, dass Sie bereits alle vorherigen Lektionen abgeschlossen haben. Siehe Lektion 1: Zusätzliche Maßeinheiten und räumliche Bezugssysteme installieren.

In dieser Lektion wird davon ausgegangen, dass Sie die Rollen und Privilegien haben, die im Abschnitt "Privilegien" am Anfang dieser praktischen Einführung aufgeführt sind: Praktische Einführung: Mit den räumlichen Funktionen experimentieren.

Kontext und Bemerkungen

Die räumlichen Werte in Massdata wurden SRID 4269 (räumliches Bezugssystem NAD83) zugeordnet, als Sie die Daten aus der ESRI-Formdatei in die Datenbank eingelesen haben. SRID 4269 ist ein räumliches Bezugssystem mit gewölbter Erddarstellung. Bestimmte Berechnungen, wie die des Bereichs von Geometrien und einiger räumlicher Prädikate, werden im Modell der gewölbten Erddarstellung jedoch nicht unterstützt. Wenn Ihre Daten derzeit einem räumlichen Bezugssystem mit gewölbter Erddarstellung zugeordnet sind, können Sie eine neue Spalte für räumliche Daten erstellen, die die Werte in ein räumliches Bezugssystem mit planer Erddarstellung projiziert, und dann die Berechnungen mit dieser Spalte durchführen.

 Aufgabe
  1. Zur Messung des Bereichs der Polygone, die die PLZ-Bereiche darstellen, müssen Sie die Daten in Massdata.geometry in ein räumliches Bezugssystem mit planer Erddarstellung projizieren.

    Zur Auswahl einer geeigneten SRID für die Projektion der Daten in Massdata.geometry fragen Sie die konsolidierte Ansicht ST_SPATIAL_REFERENCE_SYSTEM in Interactive SQL folgendermaßen nach einer SRID ab, die das Wort Massachusetts enthält:

    SELECT * FROM ST_SPATIAL_REFERENCE_SYSTEMS WHERE srs_name LIKE '%massachusetts%';

    Diese Abfrage gibt mehrere SRIDs zur Verwendung mit den Massachusetts-Daten zurück. Für diese praktische Einführung wird 3586 verwendet.

  2. Sie müssen nun die Spalte Massdata.proj_geometry erstellen, in die Sie die Geometrien in 3586 mit der ST_Transform-Methode projizieren werden. Führen Sie hierzu die folgende Anweisung in Interactive SQL aus:

    ALTER TABLE Massdata 
    ADD proj_geometry 
     AS ST_Geometry(SRID=3586)
     COMPUTE( geometry.ST_Transform( 3586 ) );
  3. Sie können den Bereich mit Massdata.proj_geometry berechnen. Führen Sie beispielsweise folgende Anweisung in Interactive SQL aus:

    SELECT zip, proj_geometry.ST_ToMultiPolygon().ST_Area('Statute Mile') AS area
    FROM Massdata
    ORDER BY area DESC;
    Hinweis

    ST_Area wird nur zwischen Punktgeometrien, aber nicht in räumlichen Bezugssystemen mit gewölbter Erddarstellung unterstützt.

  4. Um die Wirkung zu sehen, die die Projektion in ein anderes räumliches Bezugssystem auf die Abstandsberechnungen hat, können Sie mit folgender Abfrage den Abstand zwischen den Mittelpunkten der Postleitzahlen mit dem Modell mit gewölbter Erddarstellung (präziser) sowie mit dem Modell mit planer Erddarstellung berechnen. Beide Modelle sind für diese Daten brauchbar, da die Projektion für den Datensatz geeignet ist.

    SELECT M1.zip, M2.zip,
           M1.CenterPoint.ST_Distance( M2.CenterPoint, 'Statute Mile' ) dist_round_earth, 
           M1.CenterPoint.ST_Transform( 3586 ).ST_Distance( M2.CenterPoint.ST_Transform( 3586 ), 
           'Statute Mile' ) dist_flat_earth
    FROM Massdata M1, Massdata M2
    WHERE M1.ZIP = '01775'
    ORDER BY dist_round_earth DESC;
  5. Angenommen, Sie möchten PLZ-Bereiche suchen, die an den PLZ-Bereich von 01775 angrenzen. Hierzu verwenden Sie die ST_Touches-Methode. Die ST_Touches-Methode vergleicht die Geometrien, um festzustellen, ob eine Geometrie eine andere berührt, ohne sie zu überlappen. Die Ergebnisse für ST_Touches enthalten nicht die Zeile für die Postleitzahl 01775 (im Gegensatz zur ST_Intersects-Methode).

    CREATE OR REPLACE VARIABLE @Mass_01775 ST_Geometry;
    SELECT geometry INTO @Mass_01775
    FROM Massdata
    WHERE ZIP = '01775';
    
    SELECT record_number, proj_geometry 
    FROM Massdata 
    WHERE proj_geometry.ST_Touches( @Mass_01775.ST_Transform( 3586 ) ) = 1;
  6. Mit der Methode ST_UnionAggr können Sie eine Geometrie zurückgeben, die die Vereinigung einer Gruppe von PLZ-Bereichen darstellt. Beispiel: Sie möchten eine Geometrie erstellen, die die Vereinigung der benachbarten PLZ-Bereiche des PLZ-Bereichs 01775 darstellt, unter Ausschluss von 01775 selbst.

    In Interactive SQL klicken Sie auf Extras » Spatial Viewer und führen folgende Abfrage aus:

    SELECT ST_Geometry::ST_UnionAggr(proj_geometry) 
    FROM Massdata
    WHERE proj_geometry.ST_Touches( @Mass_01775.ST_Transform( 3586 ) ) = 1;

    Doppelklicken Sie auf das Ergebnis, um es anzuzeigen.

    Wenn Sie einen Fehler erhalten, der darauf hinweist, dass die vollständige Spalte nicht aus der Datenbank gelesen werden konnte, erhöhen Sie die Einstellung Kürzungslänge für Interactive SQL. Hierzu klicken Sie in Interactive SQL auf Extras » Optionen » SQL Anywhere und setzen Sie Kürzungslänge auf einen höheren Wert. Führen Sie die Abfrage nochmals aus und sehen Sie sich die Geometrie an.

Ergebnisse

Sie haben die praktische Einführung abgeschlossen.

Nächste Schritte

Stellen Sie den ursprünglichen Zustand der Beispieldatenbank (demo.db) mithilfe der Schritte unter Neuerstellung der Beispieldatenbank (demo.db) wieder her.

 Siehe auch