X ve y alanlarından bir coğrafya / geometri sütunu oluşturun - SQL Server 2008


26

SQL Server 2008'de yeniyim ve umarım sorumu / ihtiyacımı anlarsınız.

Bu nedenle, veri tabanımda (mekansal) 3 alan (Ad, En ve Uzun) içeren bir tablom var. Bu alanlara dayanan bir geometri / coğrafya sütunu oluşturmak istiyorum (Uzun ve Uzun) ama ne yazık ki başarılı olamadım.

Sorum şu: Bunu nasıl başarabilirim?


Yanıtlar:


36

Buna benzer bir hesaplanmış sütun ekleyebilirsiniz

alter table yourTable add geographyColumn as geography::STGeomFromText('POINT('+convert(varchar(20),Long)+' '+convert(varchar(20),Lat)+')',4326)

Long ve Lat'leri sayı olarak sakladığım için lng veya lat'tan dönüşümü ekledim.


3
Cevaplarınız için teşekkür ederim, bu satırı kullanarak sorunumu çözmeyi başardım: GÜNCELLEME veri bankanızı ayarlayın SET geometry_column = geometry :: Point ([ColX], [ColY], SRID)
Tudor

3
Bunun için bir tetikleyici oluşturmak mümkün mü? Alanlarınızı doldurduğunuzda (X ve Y sütunları) yukarıda belirtilen komut dosyası çalışacaktır.
Tudor

10

İstediğiniz gibi görünüyor STGeomFromText()veya STPointFromText()SQL yöntemi:

DECLARE @g geography;
SET @g = geography::STGeomFromText('POINT(-122.34900 47.65100)', 4326);
SELECT @g.ToString();

veya

DECLARE @g geography;
SET @g = geography::STPointFromText('POINT(-122.34900 47.65100)', 4326);
SELECT @g.ToString();

Kendi alanınızı Geometryya da Geographyalanınızı oluşturun , ardından lat / lon değerlerinizi kullanarak bu alanı doldurmak için SQL kullanın.


Bunun yerine aşağıdaki yöntemi kullanarak fark ne olurdu ...DECLARE @g geometry; SET @g = geometry::STPointFromText('POINT (100 100)', 0);
awesomo

@awesomo - Evet, eğer istersen, onu kullanabilirsin.
Chad Cooper


1

Orijinal Long / Lat değerlerinin yuvarlanması durumunda CONVERT(VARCHAR,ifade kullanılır.

Kullanmayı deneyin:

GeoData = geometry:: STGeomFromText('POINT(' + CAST(CAST(X AS decimal(13, 2)) AS varchar) + ' '  + CAST(CAST(Y AS decimal(13, 2)) AS varchar) + ')', 4326)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.