sql >> データベース >  >> RDS >> Sqlserver

SQL 2008 の地理とジオメトリ - どちらを使用するか?

    Geography は、地球上の点をプロットするためのタイプです。

    次のような Google マップ ポイントを格納するテーブルがある場合:

    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. SQL:他のテーブルからgroup byし、結果を反転します

    2. Lumen-実行時にデータベース接続を作成します

    3. MySQL Workbenchチュートリアル–RDBMSツールの包括的なガイド

    4. 無効な識別子SQL