我正在創建Google地圖混搭並使用SQL 2008.SQL 2008地理&幾何 - 使用哪個?
我將在地球上擁有大量的點,並希望在SQL中對它們執行各種計算 - 例如選擇包含在一個特定的多邊形,或選擇XY內10km以內的所有點。
我從來沒有使用和SQL空間功能之前。我應該使用geography
還是geometry
數據類型?
我正在創建Google地圖混搭並使用SQL 2008.SQL 2008地理&幾何 - 使用哪個?
我將在地球上擁有大量的點,並希望在SQL中對它們執行各種計算 - 例如選擇包含在一個特定的多邊形,或選擇XY內10km以內的所有點。
我從來沒有使用和SQL空間功能之前。我應該使用geography
還是geometry
數據類型?
地理是用於繪製地球上的點的類型。
如果您有存儲谷歌地圖點,像這樣的表:如果您想查詢
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
然後:
CREATE TABLE geo_locations (
location_id uniqueidentifier NOT NULL,
position_point geography NOT NULL
);
,那麼你可以填它點與此存儲過程經緯度和高度,只需使用以下查詢格式:
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;
最有可能你想要的地理類型,因爲它佔地球的曲率。幾何更多的是對事物「平面」的看法。看看這篇文章的更多信息 http://www.mssqltips.com/tip.asp?tip=1847
您可以按照PostGIS常見問題給出
I'm all confused. Which data store should I use geometry or geography?
簡答題答案:地理是支持長距離 距離測量一個新的數據類型 。如果您使用 地理位置 - 您無需瞭解關於平面座標系的 。 如果您關心的所有 測量距離和 長度,並且您有來自全球所有 的數據,則地理通常是最好的。幾何數據類型是 較舊的數據類型,它具有許多支持它的 函數,並且享有來自第三方工具的強大支持 。 其最好的,如果你很舒服 與空間參照系或者在一個單一的空間 參照系(SRID) 所有的數據適合你 正在處理本地化數據,或者你需要 做大量的空間處理。 請參考第8.8節「PostGIS 功能支持列表」,瞭解目前支持哪些 ,什麼是 。
兩個數據庫PostGIS和SQL Server中的幾何和地理類型都遵循相同的概念,因此PostGIS FAQ中給出的答案適用於您的問題。