Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL 2008 география и геометрия - кое да използвам?

Географията е типът, предназначен за начертаване на точки на земята.

Ако имате таблица, която съхранява точки от Google Maps като тази:

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

тогава можете да попълните точки в него с тази съхранена процедура:

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

След това, ако искате да направите заявка за географска ширина, дължина и надморска височина, просто използвайте следния формат на заявка:

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. Техники за оптимизация на заявки в SQL Server:5 най-добри практики за повишаване на производителността на заявките

  2. Как да използвам DATEDIFF, за да върна година, месец и ден?

  3. Как да проверите настройката ANSI_NULLS на вашата сесия в SQL Server

  4. SQL няма да вмъкне нулеви стойности с BULK INSERT

  5. tsql връща таблица от функция или процедура за съхранение