Postgresql
如何在沒有 PostGIS 的情況下儲存緯度和經度?
我知道這裡有類似的問題已經得到解答,但不幸的是,它們都不適合我。我正在通過創建一個頁面來破解我的方式,該頁面將在地圖上顯示多個位置。我正在使用 HTML 5 映射和Google地圖。我已將我擁有的地址轉換為 long/lat,並將它們與其他屬性一起儲存在 CSV 文件中。
我嘗試儲存為點、字元變化和數字,以及嘗試創建自己的定義,但沒有成功。該表已經存在,我只需要添加這些額外的列。我寧願不使用 PostGIS,因為這感覺就像增加了額外的複雜性,而我完全可以不用。
所以你有什麼建議?
沒有 PostGIS 的最簡單的解決方案是將 lat/long 儲存為兩個數字列。
numeric
精確度。
double precision
或者即使real
你不需要精度。點是幾何類型的基本二維建構塊。
point
使用以下任一語法指定類型的值:( x , y ) x , y
其中
x
和y
是各自的座標,作為浮點數。有關的:
我寧願不使用 PostGIS,因為這感覺就像增加了額外的複雜性,而我完全可以不用。
這很愚蠢。首先,沒有 SRS ID 的緯度和經度沒有說明這些點的位置。它們是投影的還是未投影的?在哪裡
POINT( 0 0 )
?你是從東方還是西方向消極的方向講話?只需使用 PostGIS。這並不復雜。它可以解決更多問題,因此您不必這樣做。
CREATE TABLE foo ( geog geography(POINT, 4326) ); INSERT INTO foo (geog) ( ST_MakePoint(0,0) );
與幾何比較
point
即使在簡單的情況下,
PostGIS 中的一個點可以導出為 GeoJSON
ST_AsGeoJSON
,或多種導出格式可以聚合成一個
GEOMETRYCOLLECTION
可以聚合成一條連接所有點的線。
可以聚合成一個多邊形 (
ST_ConvexHull
)可以使用計算點之間的距離
ST_Distance
可以重新投影到其他參考系統
可以被索引
- 受 KNN 對索引(查找最近點)查詢的影響
<=>
- 查找 X 範圍內的所有興趣點
ST_DWithin