Sql server 2008 SQL 2008地理和几何图形-使用哪种?
我正在创建一个GoogleMapMashup并使用SQL2008 我将在地球上有大量的点,并希望在SQL中对它们执行各种计算-例如选择特定多边形中包含的所有点,或选择XY 10km范围内的所有点Sql server 2008 SQL 2008地理和几何图形-使用哪种?,sql-server-2008,geometry,geospatial,geography,Sql Server 2008,Geometry,Geospatial,Geography,我正在创建一个GoogleMapMashup并使用SQL2008 我将在地球上有大量的点,并希望在SQL中对它们执行各种计算-例如选择特定多边形中包含的所有点,或选择XY 10km范围内的所有点 我以前从未使用过和SQL空间特性。我应该使用地理数据类型还是几何数据类型?您很可能需要地理数据类型,因为它考虑了地球的曲率。几何学更适合于平面视图。查看本文以了解更多信息 地理是用于在地球上绘制点的类型 如果您有一个存储谷歌地图点的表格,如下所示: CREATE TABLE geo_locations
我以前从未使用过和SQL空间特性。我应该使用地理数据类型还是几何数据类型?您很可能需要地理数据类型,因为它考虑了地球的曲率。几何学更适合于平面视图。查看本文以了解更多信息
地理是用于在地球上绘制点的类型 如果您有一个存储谷歌地图点的表格,如下所示:
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;
您可以按照FAQ中给出的答案进行操作 简而言之:地理是一种新的数据 支持长距离传输的类型 距离测量。如果你使用 地理-你不需要学习 很多关于平面坐标系的知识。 如果你愿意的话,地理通常是最好的 关心的是测量距离和距离 长度,并且您拥有来自所有 世界各地。几何数据类型为 一种较旧的数据类型,具有多个 支持它的功能和享受 来自第三方工具的强大支持。 如果你很舒服的话最好 使用空间参照系或 正在处理本地化数据,其中 所有数据都可以放在一个空间中 参考系统SRID,或者您需要 进行大量的空间处理。 参考第8.8节“PostGIS “功能支持矩阵”查看什么 当前支持什么 不是 PostGIS和SQL Server数据库中的几何图形和地理类型遵循相同的概念,因此PostGIS常见问题解答中给出的答案适用于您的问题