我以前曾问过这个问题,但我尝试的答案却无效。
我想查询边界框内的所有OSM方式。OSM数据是使用默认的球形墨卡托导入的。我正在使用LAT / LON查询,因此转换
SELECT *
FROM planet_osm_ways
WHERE ST_Transform(
ST_MakeEnvelope(37.808264, 37.804339, -122.275244, -122.271189,
4326),3857
);
运行此命令时,出现以下错误:
错误:WHERE的参数必须为布尔型,而不是几何第3行:WHERE ST_Transform(ST_MakeEnvelope(37.808264,37.804339,-12 ...
1
提供指向您已阅读并用于构建查询的旧问题的链接。
—
user30184
您在ST_MakeEnvelope()中的坐标顺序看起来不像是这种格式,即xmin,ymin,xmax,ymax
—
Artwork21'1
@ artwork21我在ST_MakeEnvelope中使用纬度/经度。错了吗 我需要将其转换为其他格式吗?我认为这就是ST_Transform所做的
—
theartofbeing
抱歉,我不得不再次阅读包括架构文档在内的高级手册wiki.openstreetmap.org/wiki/Osm2pgsql/schema#planet_osm_ways。Planet_osm_ways不包含几何形状,对最终用户而言毫无用处。它用于系统。没有机会从该表进行边界框查询。使用诸如planet_osm_roads之类的表,这是可能的。planet_osm_roads.geom仍然不存在,因为从模式中可以看到,它被命名为planet_osm_roads.way。
—
user30184
否。我说过您不能从planet_osm_ways进行边界框查询,因为该表没有任何几何形状。请参阅:ID,节点,标签,待定-它们都不包含几何。表_line,_point,_polygon和_roads都可以。我试图强调所有几何表中的几何列都被命名为“ way”,而不是“ geom”或其他名称。
—
user30184