postgis - ST_Intersects не работает, другая система измерения - PullRequest
0 голосов
/ 29 марта 2019

У меня есть 2 таблицы, посылки и единицы. Посылки в метрах, а единицы в футах

Я пытаюсь сделать следующее:

SELECT p.pin, ST_AsGeoJSON(ST_Transform(p.geom,4326)) as geojson
  FROM susquehanna_parcels p, units_pa u
  WHERE ST_Intersects(p.geom, u.the_geom)
    AND u.unit_name='Traver E North 07-081'

Я не получаю никаких результатов, потому что система измерения выключена. Вы можете видеть, что я пытаюсь получить десятичные градусы (что работает в других запросах), но поскольку пересечений с данными нет, результатов нет.

Как я могу преобразовать p.geom в футы на лету или u.the_geom в метры на лету, чтобы ST_Intersects мог работать правильно?

1 Ответ

0 голосов
/ 29 марта 2019

Если parcels в метрах и units в футах, пока единица измерения зависит от SRID, они не находятся в одном и том же SRID. Убедитесь, что оба geom находятся в одном и том же SRID, если вы проверяете, пересекаются ли они.

SELECT p.pin, ST_AsGeoJSON(ST_Transform(p.geom,4326)) as geojson
  FROM susquehanna_parcels p, units_pa u
  WHERE ST_Intersects(ST_Transform(p.geom, 4326), ST_Transform(u.the_geom, 4326))
    AND u.unit_name='Traver E North 07-081'

Я использовал EPSG 4326 здесь, потому что это то же самое, что вы использовали раньше, но все остальные должны быть хорошими, если они одинаковы для обоих geom внутри ST_Intersects

...