创建PostGIS我的第一个表

时间:2012-10-08 10:11:50

标签: postgresql geospatial postgis

我在PostgreSQL数据库的表中有大约200万条记录,其中包含“source_location”,“destination_location”,“source_lat”,“source_long”,“destination_lat”,“destination_long”等列。

如何利用此表将其转换为PostGIS中的Spatial表格,以便我可以对此数据进行空间查询?

3 个答案:

答案 0 :(得分:2)

假设您的数据位于表foo中。首先添加几何列:

SELECT AddGeometryColumn('foo', 'source_geom', 4326, 'POINT', 2);
SELECT AddGeometryColumn('foo', 'destination_geom', 4326, 'POINT', 2);

您可以设置几何列的值:

UPDATE foo SET
  source_geom =
    ST_SetSRID(ST_MakePoint(source_lon, source_lat), 4326),
  destination_geom = 
    ST_SetSRID(ST_MakePoint(destination_lon, destination_lat), 4326);

因此,您可以在空间查询中使用列source_geomdestination_geom

SELECT * FROM foo
WHERE ST_Distance_Sphere(source_geom, destination_geom) > 1000000;

此查询返回源和目标之间距离的所有记录> 1000公里。

答案 1 :(得分:1)

错误:

function addgeometrycolumn("unknown", "unknown", integer, "unknown", integer) does not exist

告诉您PostgreSQL无法识别此PostGIS功能。

这可能是因为:

  1. 未安装PostGIS(请参阅http://postgis.refractions.net/download/);

  2. 您的数据库未加载这些功能(请参阅http://trac.osgeo.org/postgis/wiki/UsersWikiNewbieAddgeometrycolumn

答案 2 :(得分:0)

Creating a spatial table - PostGIS manual

它建议您使用AddGeometryColumn。