如何从osm2pgsql架构获取所有道路/方式?

时间:2013-03-25 15:22:12

标签: postgresql openstreetmap

我正在尝试创建德国每条道路的列表(纬度,经度和街道名称)。

到目前为止,我已经在osm2pgsql的帮助下将德语osm文件导入到postgres数据库中。

所以我正在寻找的是一个允许我查询每条道路的查询。

1 个答案:

答案 0 :(得分:2)

首先,我建议使用psql工具。因此,假设您的数据库名为gis,请在终端输入以下命令:

psql gis

从psql工具中你可以查询数据库,但首先想知道哪些表是由osm2psql创建的,请输入:

\d

这应该给你这样的输出:

               List of relations
 Schema |        Name        | Type  |  Owner   
--------+--------------------+-------+----------
 public | geography_columns  | view  | postgres
 public | geometry_columns   | table | gis
 public | planet_osm_line    | table | user
 public | planet_osm_nodes   | table | user
 public | planet_osm_point   | table | user
 public | planet_osm_polygon | table | user
 public | planet_osm_rels    | table | user
 public | planet_osm_roads   | table | user
 public | planet_osm_ways    | table | user
 public | spatial_ref_sys    | table | gis
(10 rows)

我们可以在planet_osm_roads看到一个可能正在寻找的候选人,输入:

\d planet_osm_roads

这将显示道路表的结构,它看起来像这样:

     Table "public.planet_osm_roads"
       Column       |   Type   | Modifiers 
--------------------+----------+-----------
 osm_id             | bigint   | 
 access             | text     | 
 addr:housename     | text     | 
 addr:housenumber   | text     | 
 addr:interpolation | text     | 
 admin_level        | text     | 
 aerialway          | text     | 
 aeroway            | text     | 
 amenity            | text     | 
 ....
 waterway           | text     | 
 wetland            | text     | 
 width              | text     | 
 wood               | text     | 
 z_order            | integer  | 
 way_area           | real     | 
 way                | geometry |

从那里我们可以制定我们的查询。类似的东西:

SELECT osm_id,name,way FROM planet_osm_roads LIMIT 1;

将为您提供列表中的第一条道路。 http://www.postgresql.org/docs/处的文档将帮助您解码几何字符串的方式。