2010-01-10 21 views
6

Bu gerçekten aptal bir soru olabilir, ancak ...SQL Server birimleri soru

Coğrafya.STLength hangi birimleri döndürür? official MSDN page, döndürülen birimler hakkında hiçbir şey söylemiyor ve this blog entry, burada STLength() returns a float indicating the length of the instance in units diyor. Evet, doğru, birim biriminde döndürdüğünü söylüyor.

kimse hangi birimleri STLength getirileri üzerinde bazı ışık döken? Ayaklar? Metre? İnç? Yardım et!

cevap

8

tane kullanılan coğrafya/geometri verileri Mekansal Referans numarası (SRID) ile tamamen bağlıdır. Kural olarak, tüm veriler aynı birim sistemde ise, genellikle geometri türleri için "0" bir SRID kullanırsınız.

Ancak, genellikle coğrafya türü, WGS 84 olarak bilinen enlem/boylamsal elipsoidal toprak koordinat sisteminin referans numarası olan bir 4326 SRID kullanır. Bu sistemde nokta koordinatlarını belirttiğinizde, açı derecesi cinsinden ifade edilir. Enlem ve boylam, bir menşei belli bir mesafeden değil. Bu referans sistemindeki noktalar üzerindeki uzunluk ve alan hesaplamaları, tam olarak aynı nokta pozisyonlarındaki geometrik hesaplamalardan tamamen farklı sonuçlar verecektir (harika bir örnek için see Differences between Geography and Geometry here ve why this happens, see here için olduğu gibi). Veri sütunları "0" bir SRID ile oluşturulduysa

Yani, sistem birimsizdir olarak tanımlanır ve birimlerini anlamaya veri modeli hakkında bazı meta gerekir. gerçek bir SRID ile tanımlanmış olsaydı, o zaman bu sorguyu kullanabilirsiniz:

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

SRID neyi temsil birimleri kontrol etmek. Çoğu metre cinsindendir, ancak birkaç tanesi ayaktadır.