none
Spatial Daten im SQL-Server 2008: Peformance und erstellen neuer Punkte aus Entfernungsangaben.... RRS feed

  • Frage

  • Hi, ich fange an mich mit den geograph. Daten im SQL-Server zu beschäftigen.

     

    Ich finde keine Infos zu folgenden Fragen:

     

    1.

    ich würde gern um einen Mittelpunkt geographisch korrekt 4 Punkte mit einem definierten Abstand erzeugen. Also ein virtuelles Quadrat, welches den Suchbereich um einen definierten Punkt festlegt. Dabei soll die Kantenlänge sowohl am Äquator als auch in der Antarktis der Vorgabe entsprechen.

    In Javascript gibt es bei GoogleMaps eine Funktion, in der ich einen Winkel und eine Anzahl Meter angeben kann. Ausgehend von einem vorhanden Punkt wird dann ein korrekter zweiter Punkt errechnet.

    Geht so etwas auf dem SQL-Server 2008 R2 und ausserdem in C# innerhalb einer asp.net Anwendung auch?

     

    2.

    Wenn ich viele Datensätze mit Geo-Coordinaten habe macht es aus Sicht der Peformance Sinn diese nicht nur als Datensatz vom Typ Geography:Point abzulegen sondern zusätzlich die Koordinaten als 2 decimal-Werte mit Index drauf?

     

    3.

    Funktionieren Index auf Geo-Daten im 2008R2 überhaupt?

     

     

    Im Voraus vielen Dank für Eure wertvolle Zeit, die Ihr in meine Probleme investiert habt. 

     

    Gruß

     

     Bernd#

     

    Donnerstag, 31. März 2011 05:26

Antworten

  • Hallo Bernd,

    1.) In der Standard Implementierung geht es meines Wissens nicht, das man einen Punkt quasi verschieben kann. Aber es gibt bei CodePlex eine Erweiterung "SQL Server Spatial Tools", das die Funktion "ShiftGeometry", allerdings eben für Geometry, nicht für Geography. Es sollte aber machbar sein, so etwas selbst zu implementieren, sei es als Clr oder in T-SQL; Beispiel siehe Moving a Point along a Path in SQL Server 2008.

    Die Spatial Data Typen kannst Du auch in .NET Applikation verwenden, dazu musst Du nur die "CLR-Typen des Microsoft® SQL Server® 2008 R2-Systems" aus dem Sql Server 2008R2 Feature Pack installieren.

    2) Nein, das macht nicht wirklich Sinn und würde ja auch nur bei 2 dimensionalen Punkten funktionieren und nicht mit Polygonen u.ä., zudem ...

    3) ... gibt es die "Spatial Index" für die Spatial Datatypes, siehe Übersicht über räumliche Indizierung und CREATE SPATIAL INDEX; diese Indexart ist speziell hierfür optimiert.


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing
    Donnerstag, 31. März 2011 07:08

Alle Antworten

  • Hallo Bernd,

    1.) In der Standard Implementierung geht es meines Wissens nicht, das man einen Punkt quasi verschieben kann. Aber es gibt bei CodePlex eine Erweiterung "SQL Server Spatial Tools", das die Funktion "ShiftGeometry", allerdings eben für Geometry, nicht für Geography. Es sollte aber machbar sein, so etwas selbst zu implementieren, sei es als Clr oder in T-SQL; Beispiel siehe Moving a Point along a Path in SQL Server 2008.

    Die Spatial Data Typen kannst Du auch in .NET Applikation verwenden, dazu musst Du nur die "CLR-Typen des Microsoft® SQL Server® 2008 R2-Systems" aus dem Sql Server 2008R2 Feature Pack installieren.

    2) Nein, das macht nicht wirklich Sinn und würde ja auch nur bei 2 dimensionalen Punkten funktionieren und nicht mit Polygonen u.ä., zudem ...

    3) ... gibt es die "Spatial Index" für die Spatial Datatypes, siehe Übersicht über räumliche Indizierung und CREATE SPATIAL INDEX; diese Indexart ist speziell hierfür optimiert.


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing
    Donnerstag, 31. März 2011 07:08
  • Besten Dank Olaf,

    Dein Hinweis auf den stackoverflow-thread hat mich auf die richtige Spur gebracht.

    Für alle die sich für Spatial-Sachen interessieren noch folgender interessanter Link, auf den ich gestoßen bin:

    http://www.movable-type.co.uk/scripts/latlong.html

    Die JavaScript Beispiele kann man prima in Funktionen für die Datenbank umwandeln. Für weitergehende Sachen.

    Gruß

    Bernd

     

     

     


    Donnerstag, 31. März 2011 13:35