2010-01-10 20 views
6

To może być naprawdę głupie pytanie, ale ...Pytanie jednostki SQL Server:

Jakie jednostki powraca Geography.STLength? official MSDN page nie mówi nic o zwróconych jednostkach, a tutaj this blog entry mówi: STLength() returns a float indicating the length of the instance in units. Tak, zgadza się, mówi, że zwraca go w jednostkach jednostek.

Czy ktoś może rzucić trochę światła na to, co zwraca jednostka STLength? Stopy? Metry? Cale? Wsparcie!

Odpowiedz

8

Jednostki są całkowicie zależne od identyfikatora przestrzennego (SRID) wykorzystywanych danych geograficznych/geometrycznych. Zgodnie z przyjętą konwencją zwykle używa się SRID "0" dla typów geometrii, jeśli wszystkie dane są w tym samym systemie jednostek.

Zazwyczaj jednak typ geograficzny wykorzystuje SRID 4326, który jest identyfikatorem odniesienia układu współrzędnych szerokości i długości geograficznej elipsoidalnej znanego jako WGS 84. Gdy określa się współrzędne punktu w tym systemie, jest on pod kątem szerokości i długości geograficznej, a nie w pewnej odległości od miejsca pochodzenia. Obliczenia długości i powierzchni na punktach w tym układzie odniesienia zwrócą zupełnie inne wyniki z obliczeń geometrycznych na dokładnie tych samych pozycjach punktowych (dla świetnego przykładu see Differences between Geography and Geometry here, a dla why this happens, see here).

Jeśli więc kolumny danych zostały utworzone z SRID "0", to system jest zdefiniowany jako bezimienny i potrzebne są pewne metadane dotyczące modelu danych, aby obliczyć jednostki. Jeśli zostały one zdefiniowane z prawdziwym SRID, wówczas można użyć tej kwerendy:

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

sprawdzić co JEDNOSTKI SRID reprezentuje. Większość jest w metrach, ale kilka jest w stopach.