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?

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top