Benutzer mit den meisten Antworten
Spatial Daten im SQL-Server 2008: Peformance und erstellen neuer Punkte aus Entfernungsangaben....

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#
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- Als Antwort markiert Robert BreitenhoferModerator Montag, 23. Mai 2011 12:03
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- Als Antwort markiert Robert BreitenhoferModerator Montag, 23. Mai 2011 12:03
-
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
- Bearbeitet Robert BreitenhoferModerator Montag, 23. Mai 2011 12:02 Formatierung