Benutzer mit den meisten Antworten
DbGeography performant nutzen

Frage
-
Hallo zusammen,
ich habe da eine Frage zu dem Typ DbGeography. Ich habe gesehen, dass mit diesem Datentyp auch interessante Methoden zur Verfügung stehen wie z.B. Distance().
Ich möchte eine Datenbank aufbauen mit mehreren Millionen Datensätzen verteilt mit Koordinaten in ganz Deutschland.
Im nächsten Schritt möchte ich die Datensätze eingrenzen z.B. anzeigen aller Datenpunkte in einem Radius von 50km um Dortmund herum.
Zunächst müsse bei alle Datensätzen die Entfernung zu dem Punkt in Dortmund berechnet werden und im nächsten Schritt alle Anzeigen wo <=50km entfernt sind. Nicht schön! Die Abfrage kann doch nicht wirklich performant sein oder?
Eher vorstellen könnte ich mir, dass man die Latitude und Longitude Properties verwendet und damit ein Quadrat über die Schnittmenge legt und auf diese Schnittmenge dann die Distance() Methode aufrufen und alle Datensätze anzeigen <=50km.
Das wäre mein favorisierter Ansatz bei solch einer Abfrage.
Was sagen die Experten dazu?
Gruß
David
Antworten
-
Hallo David,
der SQL Server verfügt auch über die Möglichkeit eine "Spatial Index" auf Geodaten Felder anzulegen, um solche Abfragen zu beschleunigen, siehe Übersicht über räumliche Indizierung
Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort vorgeschlagen Christoph Muthmann Mittwoch, 17. Mai 2017 05:58
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 31. Mai 2017 08:39
Alle Antworten
-
Hallo David,
Für Versionen vor .NET 4.5 kannst Du in Entity Framework räumliche Funktionen nutzen, aber es ist anspruchsvoll, da man die DbContext-Funktion nicht direkt verwenden kann, um die Standortdaten zu manipulieren. In Entity Framework 5.0, das auf .NET 4.5 ausgeführt wird, fügt Microsoft Unterstützung für räumliche Typen hinzu. Hier verwendet die STGeomFromText-Funktion Geographie-Daten. Sie akzeptiert eine Zeichenfolge, die auf ein geometrisches Element verweist, zum Beispiel ein Punkt, eine Linie, ein Pfad oder ein Polygon u. a. In folgendem Thread findest Du die Beschreibung von grundlegenden Geographie-Funktionen, die sich mit einzelnen Standort- und Distanzberechnungen befassen, die wahrscheinlich das häufigste Nutzungsszenario sind:
Basic Spatial Data with SQL Server and Entity Framework 5.0Gruß,
Ivan Dragov
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
Hallo David,
der SQL Server verfügt auch über die Möglichkeit eine "Spatial Index" auf Geodaten Felder anzulegen, um solche Abfragen zu beschleunigen, siehe Übersicht über räumliche Indizierung
Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort vorgeschlagen Christoph Muthmann Mittwoch, 17. Mai 2017 05:58
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 31. Mai 2017 08:39