Si ejecuta la siguiente sentencia, probablemente verá que su tabla no contiene ningún punto:
Select *
FROM ch03.paris_hetero
WHERE ST_GeometryType(geom) = 'ST_Point';
Puede enumerar los Geometrytypes que contiene su tabla así:
Select Distinct ST_GeometryType(geom)
FROM ch03.paris_hetero;
Supongo que te has perdido algunos pasos del flujo de trabajo PostGIS-In-Action del capítulo 3:
-- Crear la extensión hstore desde el archivo sql o en las versiones más nuevas sólo
Create Extension hstore;
-- -- ejecutar planet_osm_line.sql desde la subcarpeta "raw_data_files"
-- a continuación, el etiquetado de la región y el recorte de datos a un distrito específico
INSERT INTO ch03.paris_hetero(osm_id, geom, ar_num, tags) --[1 BEG] SELECT o.osm_id, ST_Intersection(o.geom, a.geom) As geom, a.ar_num, o.tags DE (SELECT osm_id, ST_Transform(way, 32631) As geom, tags FROM planet_osm_line) AS o INNER JOIN ch03.arrondissements AS A ON (ST_Intersects(o.geom, a.geom));
-- -- ejecutar planet_osm_point.sql desde la subcarpeta "raw_data_files"
-- -- ejecutar planet_osm_polygon.sql desde la subcarpeta "raw_data_files"
-- repetir para planet_osm_polygon, planet_osm_point -- NO SE MUESTRA EN EL LIBRO
INSERT INTO ch03.paris_hetero(osm_id, geom, ar_num, tags)
SELECT o.osm_id, ST_Intersection(o.geom, a.geom) As geom,
a.ar_num, o.tags
FROM
(SELECT osm_id, ST_Transform(way, 32631) As geom, tags FROM planet_osm_polygon) AS o
INNER JOIN ch03.arrondissements AS A ON (ST_Intersects(o.geom, a.geom));
INSERT INTO ch03.paris_hetero(osm_id, geom, ar_num, tags)
SELECT o.osm_id, o.geom,
a.ar_num, o.tags
FROM
(SELECT osm_id, ST_Transform(way, 32631) As geom, tags FROM planet_osm_point) AS o
INNER JOIN ch03.arrondissements AS A ON (ST_Intersects(o.geom, a.geom));
-- Crear su tabla
CREATE TABLE ch03.paris_points(gid SERIAL PRIMARY KEY, osm_id integer, ar_num integer, feature_name varchar(200), feature_type varchar(50));
SELECT AddGeometryColumn('ch03', 'paris_points', 'geom', 32631,'POINT', 2);
-- o mejor simplemente
CREATE TABLE ch03.paris_points(gid SERIAL PRIMARY KEY, osm_id integer, ar_num integer, feature_name varchar(200), feature_type varchar(50),geom geometry(Point,32631));
-- Llena tu mesa
INSERT INTO ch03.paris_points(osm_id, ar_num, geom, feature_name,feature_type)
SELECT osm_id, ar_num, geom, tags->'name' As feature_name,
COALESCE(tags->'tourism', tags->'railway','other')::varchar(50) As feature_type
FROM ch03.paris_hetero
WHERE ST_GeometryType(geom) = 'ST_Point';
-- Comprobar si los puntos están insertados:
select * from ch03.paris_points;