Postgresql

為什麼我們在 SQL 數據庫中有幾何數據類型?

  • June 14, 2016
  1. SQL 表中特定 SDI 數據類型的用途是什麼?
  2. 它們可以表示為**“(3,1)”**(如果是平面上的點)VARCHAR,然後由應用程序檢索並處理它們?
  3. Geometrical 和 Geographical 數據類型有什麼區別?
  4. 請在 SQL 原始碼中提及 SDI 類型的應用,以便更好地理解。
  5. 是否有任何範例數據庫(最好用於 postgreSQL)來展示這些數據類型的使用,因為學習者使用數據來更好地理解它們的效用?
  1. 目的是提供可以在 Postgresql 中索引和查詢的數據實體(例如座標或路徑)的邏輯表示。而且 postgresql 也可以理解這種數據類型。

2)從技術上講這是可能的,但你最好將它儲存為兩個浮點數,這樣你就可以過濾它們。永遠不建議嘗試超越數據庫數據類型。例如,如果您將其儲存為 VARCHAR,您將如何查詢 ((1,3), (7,9)) 邊界框中的所有數據點。這將變得非常複雜,並且在應用程序級別進行管理並不理想。

3)說得非常簡單:幾何數據代表一個正常的笛卡爾座標窗格,其中尺寸是空間中的直線。地理是基於緯度、經度並使用大地測量計算的。當您開始談論點之間的距離和距離之間的可變性時,差異會變得更加明顯。

在平面計算中,(1,1) 和 (2,2) 之間的距離與 (101,101) 和 (202,202) 之間的距離相同。在大地測量中,距離變化很大,這取決於你離赤道有多遠。

這在 gis stackoverflow 的另一個答案中得到了更詳細的回答:https ://gis.stackexchange.com/questions/6681/what-are-the-pros-and-cons-of-postgis-geography-and-geometry-types

  1. 範例:
create table something (
 id serial PRIMARY KEY,
 p point not null
);

insert into something (p) values (point(1,2)), (point(5,6)), (point(123,32));

select * from something where p <@ BOX(POINT(1,1), POINT(2,2));
id |   p
----+-------
 1 | (1,2)
(1 row)
  1. 我將開始使用查詢、插入和查詢數據來發現這些數據類型的強大功能。

引用自:https://dba.stackexchange.com/questions/141127