2010-07-04 24 views
2

我剛開始使用PostGIS & Postgresql,一切運行都很順利。當我試圖找到一個點在哪個MULTIPOLYGON時,我會陷入困境。我有兩個獨立的觀點,我確定存在於我的數據庫中的一個且只有一個形狀爲MULTIPOLYGON數據類型。它們並不相同,而且格式不同。PostGIS交匯點疑難解答

示例1,我不確定它是什麼格式,但查詢返回像我期望的真值(注意,我通過將數據集加載到QGIS並將其懸停在一個點內部)找到了此值。

在第二個示例中,我對位於正在查看的形狀內的地址進行了地理編碼。但是,由於查詢返回了錯誤的值。

我用shp2pgsql將數據直接從形狀文件加載到我的數據庫中。形狀文件的SRID是4269(我嘗試在GeomFromText調用期間指定SRID的同時運行下面的查詢,但結果相同)。

這兩個座標集有什麼區別?我需要做什麼以便我可以使用使用緯度/經度值的POINTS執行相交測試? 1)SELECT ST_Intersects((從gard = 37選擇wardstable中的the_geom), ST_GeomFromText('POINT(1172539 1924462)')); ()()()選擇ST_Intersects((從wardstable選擇其中gid = 37的地址), ST_GeomFromText('POINT(-87.6547884 41.96367)'));

謝謝!

回答

1

當執行像ST_Intersects這樣的空間操作時,Multipolygons和Points數據集都應該處於相同的投影(SRID)中。在你的第二個例子中,該點的座標是緯度/經度(4326)。你應該使用ST_Transform它們變換爲4269:

SELECT ST_Intersects((select the_geom from wardstable where gid=37), ST_Transform(ST_GeomFromText('POINT(-87.6547884 41.96367)',4326),4269)); 

編輯:我錯過了ST_GeomFromText的SRID參數。