2013-11-27 33 views
0

POSTGIS_VERSION = 2.1;POSTGIS:錯誤:對混合SRID幾何圖形進行操作。試圖找到具有兩個不同SRID /表的重疊幾何體

我有兩個不同的SRID表。我的目標是顯示TABLE_B中的哪些幾何與TABLE_A中的某個區域相交。

SELECT tablebname, a.geom FROM TABLE_B as a INNER JOIN (SELECT geom FROM TABLE_A WHERE tableAID = '00001') as b ON ST_Intersects(a.geom, b.geom); 

我的表結構(截短的)如下

TABLE_A
文本tableAid
幾何的geom(SRID = 3577)

表-B
文本tableBid
幾何的geom(SRID = 4326)

我試過用ST_TRANSFORM(geom,3577)來轉換geoms,但我仍然得到了同樣的錯誤「錯誤:在混合SRID幾何體上的操作。」

使用以下命令
select distinct(ST_SRID(geom)) as srid, count(*) from tableA group by srid;

我得到以下

srid | count 
3566 | 2196 
    | 18 

我在改變過去的18到3577都是徒勞的嘗試。每次我更新SRID它說它成功或沒有找到任何SRID <> 3577.

任何幫助將appriciated。我可以在需要的地方提供更多細節。謝謝。

+0

哪個版本的PostGIS?沒有SRID的18個計數可能是NULL。 –

回答

1

沒有子查詢,更正表別名和使用轉換,這是否工作?

SELECT b.*, a.* 
FROM table_b AS b 
INNER JOIN table_a AS a ON 
    tableaid = '00001' AND ST_Intersects(ST_Transform(a.geom, 4326), b.geom); 

另外請注意,您的原始查詢,你分不清TABLE_B as a,這可能解釋了爲什麼用ST_Transform你的嘗試失敗了,因爲它並沒有轉化預期a.geom列。此外,沒有這種版本的PostGIS 9.1,所以我猜你有2.x.如果使用typmods進行設置(例如,geometry(Polygon, 4326)),則這些參數不能混合使用SRID。

+0

感謝Mike,當SQL查詢執行時,它不會返回任何匹配。我知道我有地區做重疊,但沒有返回的查詢。你有可能的解釋嗎?謝謝。 – abignold

+0

您的SQL查詢確實可以找到同一個表上的相鄰(相交)區域。我確實需要跨表格交叉區域。任何進一步的幫助,你可以提供的讚賞。我會繼續處理這個問題,並讓你知道任何事態發展。 – abignold

+0

你的SQL是正確的,我在兩個表上都使用了錯誤的SRID。 – abignold

相關問題