2010-01-10 6 views
6

Dies kann eine wirklich dumme Frage sein, aber ...SQL Server-Einheiten Frage

Welche Einheiten kehrt Geography.STLength zurück? Die official MSDN page sagt nichts über die zurückgegebenen Einheiten, und this blog entry hier sagt STLength() returns a float indicating the length of the instance in units. Ja, das ist richtig, es sagt, es gibt es in Einheiten zurück.

Kann jemand etwas Licht auf welche Einheiten STLength zurückgibt? Füße? Meter? Zoll? Hilfe!

Antwort

8

Die Einheiten sind vollständig abhängig von der Spatial Reference ID (SRID) der Geografie-/Geometriedaten, die verwendet werden. Per Konvention würden Sie normalerweise eine SRID von "0" für Geometrietypen verwenden, wenn sich alle Daten in demselben Einheitensystem befinden.

In der Regel verwendet der Geografie-Typ jedoch eine SRID von 4326, die die Referenz-ID des Breitengrad-/Längengrad-Ellipsoid-Erdkoordinatensystems WGS 84 ist. Wenn Sie Punktkoordinaten in diesem System angeben, erfolgt dies in Winkelgraden von Breiten- und Längengrad, anstatt von einer Entfernung von einem Ursprung. Längen- und Flächenberechnungen an Punkten in diesem Bezugssystem ergeben völlig unterschiedliche Ergebnisse von geometrischen Berechnungen an genau denselben Punktpositionen (für ein gutes Beispiel see Differences between Geography and Geometry here und für why this happens, see here).

Wenn also Ihre Datenspalten mit einer SRID von "0" erstellt wurden, wird das System als einheitslos definiert und Sie benötigen einige Metadaten über das Datenmodell, um die Einheiten zu ermitteln. Wenn sie mit einem echten SRID definiert wurden, dann können Sie diese Abfrage verwenden:

SELECT spatial_reference_id 
    , well_known_text 
    , unit_of_measure 
    , unit_conversion_factor 
FROM sys.spatial_reference_systems 

zu prüfen, welche Einheiten die SRID darstellt. Die meisten sind in Metern, aber ein paar sind in Fuß.