【问题标题】:SQL 2008 geography & geometry - which to use?SQL 2008 地理和几何 - 使用哪个?
【发布时间】:2010-12-24 11:38:43
【问题描述】:

我正在创建一个 Google 地图混搭,并且正在使用 SQL 2008。

我将在地球上拥有大量点,并希望在 SQL 中对它们执行各种计算 - 例如选择特定多边形内包含的所有点,或选择 XY 10 公里内的所有点。

我以前从未使用过 SQL 空间功能。我应该为此使用geography 还是geometry 数据类型?

【问题讨论】:

    标签: sql-server-2008 geometry geospatial geography


    【解决方案1】:

    您很可能需要 geography 类型,因为它考虑了地球的曲率。几何更适合于对事物的“平面”视图。查看这篇文章了解更多信息 http://www.mssqltips.com/tip.asp?tip=1847

    【讨论】:

      【解决方案2】:

      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;
      

      【讨论】:

        【解决方案3】:

        您可以按照PostGISFAQ中给出的答案进行操作

        I'm all confused. Which data store should I use geometry or geography?

        简短回答:地理是一种新数据 支持远程的类型 距离测量。如果你使用 地理——你不需要学习 很多关于平面坐标系的。 地理通常是最好的,如果你 关心的是测量距离和 长度,你有来自所有的数据 全世界。几何数据类型是 一种较旧的数据类型,有很多 支持它并享受的功能 第三方工具的大力支持。 如果你很舒服最好 使用空间参考系统或您 正在处理本地化数据 您的所有数据都适合单个空间 参考系统 (SRID),或者您需要 做了很多空间处理。 请参阅第 8.8 节,“PostGIS 功能支持矩阵”看看什么 目前支持,什么是 不是。

        PostGIS 和 SQL Server 数据库中的几何和地理类型遵循相同的概念,因此 PostGIS 常见问题解答中给出的答案适用于您的问题。

        【讨论】:

          猜你喜欢
          • 2010-09-27
          • 2016-11-17
          • 2010-12-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-21
          • 1970-01-01
          • 2012-05-26
          相关资源
          最近更新 更多