Olen uusi SQL Server 2008: ssa ja toivon, että ymmärrät kysymykseni / tarve.

Minulla on siis taulukko, joka sisältää 3 kenttää (Nimi, Leveys ja Pitkä) tietokannassani (spatiaalinen). Haluan luoda geometria / maantiede -sarakkeen näiden kenttien (Lat ja Pitkä), mutta valitettavasti ilman menestystä.

Kysymykseni kuuluu: Kuinka voin tehdä sen?

Kommentit

vastaus

Voit lisätä tällaisen lasketun sarakkeen

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

Olen lisännyt muunnoksen lng: stä tai latista, koska tallennan Long ja Lats numeroina.

Kommentit

  • Kiitos vastauksistasi, onnistuin ratkaista ongelmani tällä rivillä: PÄIVITÄ tietokanta SET geometry_column = geometry :: P voit ([ColX], [ColY], SRID)
  • Onko mahdollista luoda liipaisin tälle? Kuten kun täytät kentät (sarakkeet X ja Y) tiedoilla, joita yllä mainittu komentosarja suorittaa.

Vastaa

Näyttää siltä, että haluat STGeomFromText() tai STPointFromText() SQL-menetelmä:

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

tai

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

Luo Geometry tai Geography -kenttä ja täytä sitten kenttä SQL: llä käyttämällä lat / lon -arvojasi.

Kommentit

  • Mitä eroa olisi seuraavan menetelmän käyttämisessä … DECLARE @g geometry; SET @g = geometry::STPointFromText('POINT (100 100)', 0);
  • @awesomo – Kyllä, voit käyttää sitä, jos haluat.

Vastaa

SQL Server 2012

Voit tehdä sen näin,

SELECT geography::Point(lat, long, 4326) 

Lisätietoja on tietokannan järjestelmänvalvojien viestissä, ”SQL Server Pistekonstruktori tai ST_Point (x, y) -versio? ”

Kommentit

  • Jos Point vie argumentteja x, y, joten sinun on vaihdettava tilauksesi sellaisenaan: geography::Point(long, lat, 4326). Pituusaste on x ja leveysaste on y.

Vastaa

Jos alkuperäisten Long / Lat-arvojen pyöristys esiintyy käytettäessä lauseketta CONVERT(VARCHAR,.

Kokeile:

GeoData = geometry:: STGeomFromText("POINT(" + CAST(CAST(X AS decimal(13, 2)) AS varchar) + " " + CAST(CAST(Y AS decimal(13, 2)) AS varchar) + ")", 4326) 

Kommentit

  • Minua pelkää tämän menetelmän käyttö, koska siihen liittyy sijaintitarkkuuden menetys.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *