我有這兩個疑問,
SELECT ST_AsText(geom)
FROM areasTable
WHERE "Name" ILIKE 'Kachina';
假設它回傳一個多邊形值:POLYGON((-XXX.XX XX.XXX, -XXX.XX XX.XXX, -XXX.XX XX.XXX, -XXX.XX XX.XXX))。然后我使用該值進行另一次搜索。
SELECT "ROAD_NAME"
FROM addresses
WHERE ST_Contains(ST_GEOMFROMTEXT('POLYGON((-XXX.XX XX.XXX, -XXX.XX XX.XXX, -XXX.XX XX.XXX, -XXX.XX XX.XXX))',4326), addresses.geom);
我一直在嘗試做的是節省一步,只需找到某個區域內的所有道路,而無需手動復制和粘貼該區域的多邊形。有任何想法嗎?
uj5u.com熱心網友回復:
嘗試創建一個存盤程序。https://www.w3schools.com/sql/sql_stored_procedures.asp
然后用可以與 SQL DB 互動的語言撰寫一個程式,并運行一個回圈來一遍又一遍地呼叫這個存盤程序。
uj5u.com熱心網友回復:
我將其作為對可能對我如何解決此問題感到好奇的人的幫助,但從技術上講,MaximumBoy 向我指出了我問題的直接答案,因此我將投票支持他的答案作為正確答案。我不知道怎么用Maximum的方式來做,但那是因為我對SQL知之甚少。
我就是這樣完成了我想要的。注意我在我的解決方案中將表名從“areasTable”更改為“areas”。
第一種方式,
SELECT
"ROAD_NAME"
FROM
addresses
JOIN areas ON ST_Contains(areas.geom, addresses.geom)
WHERE
areas. "Name" ILIKE 'KACHINA';
實作此目的的第二種方法如下,
SELECT
addresses."ROAD_NAME"
FROM
areas, addresses
WHERE
areas."Name" ILIKE 'KACHINA'
AND ST_Contains(areas.geom, addresses.geom);
第一個查詢比第二個查詢慢一點,但這是根據我的經驗觀察得出的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/511366.html
上一篇:解決權限問題的系統方法
