ฉันมีแรสต์ riff ในฐานข้อมูล PostGIS 2.0 ของฉัน ฉันต้องการรับค่าของแรสเตอร์ที่ตำแหน่ง lat / lon ที่ระบุ
ฉันมี:
- PostgreSQL-9.1
- postgis-2.0-svn พร้อมการสนับสนุนแบบราสเตอร์
- raster ที่นำเข้าสู่ PostGIS SRID ของมันคือ 3035
ฉันมีแรสต์ riff ในฐานข้อมูล PostGIS 2.0 ของฉัน ฉันต้องการรับค่าของแรสเตอร์ที่ตำแหน่ง lat / lon ที่ระบุ
ฉันมี:
คำตอบ:
คุณสามารถเปลี่ยนจุด lat / lon เป็น raster CRS ได้ทันทีโดยใช้ ST_Transform () รวมแล้วแบบสอบถามจะมีลักษณะดังนี้:
ST_Value(your_raster, ST_Transform(ST_SetSRID(ST_MakePoint(lon,lat),4326),3035))
ฟังก์ชัน ST_value:
http://postgis.net/docs/RT_ST_Value.html
ส่งคืนค่าแรสเตอร์ที่กำหนดจุดใน x, y หรือ lat, lon
ในขณะที่ ST_Value ใช้งานได้คุณยังคงต้องเข้าร่วมกับจุดด้วยเช่นกัน:
SELECT ST_Value(your_raster.rast, ST_Transform(ST_SetSRID(ST_MakePoint(lon,lat),4326),3035))
FROM your_raster
WHERE ST_Intersects(your_raster.rast, ST_SetSRID(ST_MakePoint(lon,lat),4326),3035))
หรือด้วยโต๊ะ:
SELECT ST_Value(your_raster.rast, ST_Transform(ST_SetSRID(ST_MakePoint(your_table.lon,your_table.lat),4326),3035))
FROM your_raster
JOIN your_table ON ST_Intersects(your_raster.rast, ST_SetSRID(ST_MakePoint(your_table.lon,your_table.lat),4326),3035))