Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Geografia i geometria SQL 2008 — z której korzystać?

Geografia jest typem przeznaczonym do wykreślania punktów na Ziemi.

Jeśli masz tabelę, w której przechowywane są takie punkty Google Maps:

CREATE TABLE geo_locations (
    location_id       uniqueidentifier  NOT NULL,
    position_point    geography         NOT NULL
);

następnie możesz wypełnić w nim punkty za pomocą tej procedury składowanej:

CREATE PROCEDURE proc_AddPoint
    @latitude     decimal(9,6),
    @longitude    decimal(9,6),
    @altitude     smallInt
AS

DECLARE @point     geography = NULL;

BEGIN

    SET NOCOUNT ON;

    SET @point = geography::STPointFromText('POINT(' + CONVERT(varchar(15), @longitude) + ' ' + 
                                                       CONVERT(varchar(15), @latitude) + ' ' + 
                                                       CONVERT(varchar(10), @altitude) + ')', 4326)

    INSERT INTO geo_locations
    (
        location_id, 
        position_point
    )
    VALUES 
    (
        NEWID(),
        @point
    );

END

Następnie, jeśli chcesz zapytać o szerokość, długość i wysokość, po prostu użyj następującego formatu zapytania:

SELECT
    geo_locations.position_point.Lat  AS latitude,
    geo_locations.position_point.Long AS longitude,
    geo_locations.position_point.Z    AS altitude
FROM
    geo_locations;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Procedura składowana, która eksportuje dane do plików csv eksportuje tylko do jednego pliku

  2. Bootstrapowanie SQL Express z WiX?

  3. Czy mogę zmusić Linq do Sql do korzystania z Sql2005Provider?

  4. Jak uzyskać wartości kolumn tożsamości bez podawania nazwy kolumny tożsamości w Select — samouczek SQL Server/T-SQL, część 46

  5. Jak mogę rozwiązać Albo parametr @objname jest niejednoznaczny, albo zgłoszony @objtype (COLUMN) jest błędny.?