Hata iletisinin yalnızca bir kısmını ima etmesine rağmen ifadenizle ilgili üç sorununuz var ... "NEREDE boolean türü olmalıdır?", WHERE'ye verdiğiniz bilgilerin boole sonucunu değerlendirmediği anlamına gelir.
ST_MakeEnvelope bu sırada onun parametreleri sorar: xmin, ymin, xmax, ymax, srid
.
Yanlış geçtiniz ymax, ymin, xmax, xmin, srid
.
Boole için NEREDE değerlendirme yapmalıdır:
Bir geometrinin ve zarfın ortak unsurları olup olmadığını belirlemek için WHERE şöyle inşa edilmelidir: WHERE geom && envelope_geom
aksi takdirde ST_Contains kullanabilirsiniz
Geometrinin zarfın içinde olup olmadığını belirlemek için: `WHERE ST_Contains (zarf_geom, geom)
İçin herhangi bir karşılaştırma yöntemi sağlamadınız WHERE
.
'Planet_osm_ways' tablosu herhangi bir geometri sütunu içermez, ancak 'planet_osm_roads' 'way' adlı bir geometri sütunu içermez.
İlgili planet_osm_nodes.lat ve planet_osm_nodes.lon'dan 'planet_osm_ways' tablosunda bir geometri sütunu oluşturabilirsiniz.
'Planet_osm_roads' kullanarak, bir sınırlama kutusunun geometri sütunu olan bir tabloya nasıl kullanılacağını gösterir:
SELECT *
FROM planet_osm_roads
WHERE planet_osm_roads.way && ST_Transform(
ST_MakeEnvelope(-122.271189, 37.804339, -122.275244, 37.808264,
4326),3857
);
veya bunu şu şekilde değiştirin:
SELECT *
FROM planet_osm_roads
WHERE ST_Contains(
ST_Transform(
ST_MakeEnvelope(-122.271189, 37.804339, -122.275244, 37.808264,
4326)
,3857)
,planet_osm_roads.way);