Hej, jeg har en "Punkter" SQL database som ligger på SQL Server 2008, som jeg gerne vil lave om til en spatial database. Er der nogen der kan hjælpe mig med det? Kan man opgradere en eksisterende database med nogle nye spatiale kolumner eller skal jeg have en hel ny spatial tabel? Eller måske en hel ny spatial database? Jeg har ingen erfaring med spatiale data.
Det er meget nemt... din database er allerede spatial..
hvis dine punkter er er koordinater på verdenskortet skal du bruge datatypen Geography (kolonne) eller i et koordinatsystem: Geometry
Lad os sige at du i forvejen har 2 kolonner: Longtitude og Latitude
så skal du oprette en ny kolonne som hedder GeoCord af typen Geography (kan indeholder punkter, polygoner og streger)
Denne kan du så sætte til punkt-værdien ved at kalde: UPDATE [TABLENAME] SET GeoCoord = geography::Point(Latitude, Longitude, 4326)
4326 = jordkloden
du kan derefter oprette et Spatial index på din GeoCoord kolonne. vælg Spatial / Tessellation Scheme = Geography Auto Grid hvis dine koordinater findes på hele jordkloden.
Derefter kan du Query dine koordinater på 2 måder:
SELECT * FROM [TABLENAME] WHERE (@poly.STIntersects(GeoCoord) = 1)
eller med et punkt hvor du leder efter den nærmeste:
DECLARE @center geography = geography::Point(@Lati, @Long, 4326) SELECT TOP 100 * FROM [TABLENAME] A WHERE @center.STDistance(A.GeoCoord) < @MaxDistKm * 1000 ORDER BY @center.STDistance(A.GeoCoord)
-------------
Hvis du bruger koordinater i et Geometrisk system i stedet for Geoide, skal du bruge Geometry i stedet for Geography...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.