SQL 2008 Geographie und Geometrie - die zu benutzen?
-
18-09-2019 - |
Frage
Ich erstelle eine Karte Mashup Google und bin mit SQL 2008.
Ich werde eine große Anzahl von Punkten auf der Erde haben und wollen, um verschiedene Berechnungen auf sie in SQL ausführen -. Wie alle Punkte innerhalb eines bestimmten polygone enthaltenen auswählen, oder wählen Sie alle Punkte innerhalb von 10 km von XY
Ich habe noch nie verwendet und SQL räumliche Funktionen vor. Sollte ich die geography
oder geometry
Datentyp für diese verwenden?
Lösung
Geographie ist der Typ, der zum Plotten Punkte auf der Erde bestimmt ist.
Wenn Sie eine Tabelle, die Google Maps Punkte wie folgt speichert:
CREATE TABLE geo_locations (
location_id uniqueidentifier NOT NULL,
position_point geography NOT NULL
);
dann könnte man füllen Punkte mit dieser gespeicherten Prozedur:
CREATE PROCEDURE proc_AddPoint
@latitude decimal(9,6),
@longitude decimal(9,6),
@altitude smallInt
AS
DECLARE @point geography = NULL;
BEGIN
SET NOCOUNT ON;
SET @point = geography::STPointFromText('POINT(' + CONVERT(varchar(15), @longitude) + ' ' +
CONVERT(varchar(15), @latitude) + ' ' +
CONVERT(varchar(10), @altitude) + ')', 4326)
INSERT INTO geo_locations
(
location_id,
position_point
)
VALUES
(
NEWID(),
@point
);
END
Dann, wenn Sie für die Breite, Länge und Höhe abfragen möchten, verwenden Sie einfach die folgende Abfrage-Format:
SELECT
geo_locations.position_point.Lat AS latitude,
geo_locations.position_point.Long AS longitude,
geo_locations.position_point.Z AS altitude
FROM
geo_locations;
Andere Tipps
Sie können die in PostGIS FAQ
ich alle verwirrt bin. Welche Datenspeicher sollte ich Geometrie oder Geographie?
Kurze Antwort: Geographie ist ein neuen Daten Typ, der langen Bereich unterstützt Entfernungen Messungen. Wenn du benutzt Geographie - Sie brauchen nicht zu lernen viel über planaren Koordinatensysteme. Geographie ist in der Regel am besten, wenn alles, was Sie interessiert, ist das Messen von Abständen und Längen und Sie haben Daten von allen auf der Welt. Geometry-Datentyp ist eine ältere Datentyp, der viele hat Funktionen, die es zu unterstützen und genießt große Unterstützung von Tools von Drittanbietern. Seine besten, wenn Sie recht komfortabel mit räumlichen Bezugssystemen oder Sie beschäftigen sich mit lokalisierten Daten, wobei alle Ihre Daten passen in einem einzigen räumlichen Bezugssystem (SRID), oder Sie brauchen eine Menge von räumlichen Verarbeitung zu tun. Siehe Abschnitt 8.8, „PostGIS Funktion Support Matrix“zu sehen, was derzeit unterstützt wird und was nicht.
Die Geometrie und Geographie Typen in beiden Datenbanken, PostGIS und SQL Server, folgen dem gleichen Konzept, so dass die Antwort in der PostGIS FAQ gegeben ist anwendbar für Ihr Problem.
Die meisten wahrscheinlich, dass Sie die Geographie Art wollen, da es für die Krümmung der Erde ausmacht. Die Geometrie ist mehr für eine „flache“ Sicht der Dinge. Schauen Sie sich diesen Artikel für weitere Informationen http://www.mssqltips.com/tip.asp?tip=1847