sql >> Databáze >  >> RDS >> Sqlserver

SQL 2008 geografie a geometrie – kterou použít?

Geografie je typ, který je určen k vykreslování bodů na Zemi.

Pokud máte tabulku, která ukládá body Map Google, jako je tato:

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

pak byste v něm mohli vyplnit body touto uloženou procedurou:

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

Pokud se pak chcete dotazovat na zeměpisnou šířku, délku a nadmořskou výšku, jednoduše použijte následující formát dotazu:

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. Přenos dat z jedné databáze do jiné databáze

  2. Jak odečíst 30 dní od data v T-SQL

  3. java.sql.SQLException:Neznámý index počáteční znakové sady „255“ přijatý ze serveru pro konektor 8.0.11

  4. Neplatné přihlašovací údaje Oracle SQLPlus ORA-01017 při zadávání schématu