Страница 1 из 1
Посчитать количество городов
Добавлено: 22 мар 2012, 12:32
a.lineff
Прошу о помощи.
Необходимо посчитать количество городов с хорошей детализацией.
Есть в таблице полигоны городов и зданий. Если они пересекаются - значит город с хорошей детализацией (информация о домах есть), считаем его.
Как составить запрос к базе (база большая)?
таблица polygons, колонка mp_type хранит тип объекта, 61 - город, 71 - дом.
Re: Посчитать количество городов
Добавлено: 22 мар 2012, 12:44
rhot
т.е. у вас пространственная информация об объектах типа "город", и объектах типа "дом" хранится в одном поле геометрии, что ли?
Re: Посчитать количество городов
Добавлено: 22 мар 2012, 13:03
rhot
Код: Выделить всё
SELECT DISTINCT count(mp_type) FROM
(SELECT the_geom, mp_type FROM polygons WHERE mp_type=61) AS towns,
(SELECT the_geom, mp_type FROM polygons WHERE mp_type=71) AS buildings
WHERE ST_Contains(towns.the_geom,buildings.the_geom)=TRUE AND mp_type=61;
Не гарантирую, что код рабочий.

Re: Посчитать количество городов
Добавлено: 22 мар 2012, 14:54
a.lineff
rhot писал(а):т.е. у вас пространственная информация об объектах типа "город", и объектах типа "дом" хранится в одном поле геометрии, что ли?
Да, какие-то записи - города, какие-то - дома. Отличаются типом mp_type.
Re: Посчитать количество городов
Добавлено: 23 мар 2012, 15:19
a.lineff
rhot писал(а):Код: Выделить всё
SELECT DISTINCT count(mp_type) FROM
(SELECT the_geom, mp_type FROM polygons WHERE mp_type=61) AS towns,
(SELECT the_geom, mp_type FROM polygons WHERE mp_type=71) AS buildings
WHERE ST_Contains(towns.the_geom,buildings.the_geom)=TRUE AND mp_type=61;
Не гарантирую, что код рабочий.

Чуть подредактировал, получился рабочий запрос. За подсказку спасибо большое.
Код: Выделить всё
SELECT DISTINCT towns.gid FROM
(SELECT the_geom, gid, mp_type FROM polygons WHERE mp_type = 61) AS towns,
(SELECT the_geom, mp_type FROM polygonscd WHERE mp_type=71) AS buildings
WHERE ST_Contains(towns.the_geom,buildings.the_geom)=TRUE AND towns.mp_type=61;
Re: Посчитать количество городов
Добавлено: 23 мар 2012, 15:23
rhot
не за что =)