Mr.*_*ble 12 geometry geography geospatial sql-server-2008
我正在创建一个Google地图mashup并使用SQL 2008.
我将在地球上拥有大量的点,并希望在SQL中对它们执行各种计算 - 例如选择特定多边形中包含的所有点,或选择距离XY 10km内的所有点.
我之前从未使用过SQL空间功能.我应该使用geography或geometry数据类型吗?
Dan*_*llo 16
地理是用于绘制地球上的点的类型.
如果您有一个存储谷歌地图点的表格,如下所示:
CREATE TABLE geo_locations (
location_id uniqueidentifier NOT NULL,
position_point geography NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
然后你可以用这个存储过程填充它的点:
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
Run Code Online (Sandbox Code Playgroud)
然后,如果要查询纬度,经度和海拔高度,只需使用以下查询格式:
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;
Run Code Online (Sandbox Code Playgroud)
您可以按照PostGIS FAQ中给出的答案进行操作
简答:地理是一种支持远程距离测量的新数据类型.如果使用地理 - 您不需要了解平面坐标系.如果您关心的只是测量距离和长度,并且您拥有来自世界各地的数据,那么地理位置通常是最好的.Geometry数据类型是一种较旧的数据类型,它具有许多支持它的功能,并且受到第三方工具的大力支持.如果您对空间参考系统非常熟悉,或者您正在处理所有数据都适合单个空间参考系统(SRID)的本地化数据,或者您需要进行大量空间处理,那么它是最好的.请参阅第8.8节"PostGIS功能支持矩阵"以查看当前支持的内容和不支持的内容.
PostGIS和SQL Server这两个数据库中的几何和地理类型遵循相同的概念,因此PostGIS FAQ中给出的答案适用于您的问题.
| 归档时间: |
|
| 查看次数: |
10908 次 |
| 最近记录: |