create_nodes.sql 463 B

123456789101112131415
  1. DROP TABLE IF EXISTS :schema.nodes CASCADE;
  2. CREATE TABLE :schema.nodes AS
  3. WITH all_nodes AS (
  4. SELECT ST_StartPoint(geom) AS geom FROM :schema.links
  5. UNION
  6. SELECT ST_EndPoint(geom) AS geom FROM :schema.links
  7. ),
  8. distinct_nodes AS (
  9. SELECT DISTINCT geom FROM all_nodes
  10. )
  11. SELECT ROW_NUMBER() OVER () AS id, geom FROM distinct_nodes;
  12. CREATE INDEX IF NOT EXISTS nodes_geom_idx ON :schema.nodes USING GIST (geom);
  13. ALTER TABLE :schema.nodes ADD PRIMARY KEY (id);