Як отримати кути обмежувальної скриньки з ST_Extent?


16

Чи є спосіб отримати ширину / довгу кути обмежувальної коробки, яку ми отримали від ST_Extent?

select ST_Extent(geom) from tableName;

Відповіді:


25

ST_Extent повертає вікно, що складається з xmin, ymin, xmax, ymax (лівий нижній, верхній правий координати):

osm=# select st_extent(way) from planet_osm_point;
                            st_extent                                
-------------------------------------------------------------------------
 BOX(2259828.73261444 5412478.55751597,3301031.7673783 6147766.43413396)

Щоб отримати точку, відповідну знизу зліва, ви можете побудувати точку, що складається з нижньої лівої координати X (st_xmin) і нижньої лівої координати Y (st_ymin), наприклад:

osm=# select st_astext(st_makepoint(st_xmin(st_extent(way)), st_ymin(st_extent(way)))) 
      from planet_osm_point;
            st_astext                 
------------------------------------------
 POINT(2259828.73261444 5412478.55751597)

Зауважте, що оскільки st_extent повертає обмежувальне поле, він знімає SRID з вашої геометрії, тому ви можете додати його до новоствореної точки (я використовую 900913, щоб відповідати SRID моїх даних OSM):

osm=# select st_asewkt(st_setsrid(st_makepoint(st_xmin(st_extent(way)), st_ymin(st_extent(way))), 900913)) 
      from planet_osm_point;
            st_astext                 
------------------------------------------
 SRID=900913;POINT(2259828.73261444 5412478.55751597)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.