将PostGIS与具有小数点坐标的现有数据表一起使用

时间:2011-01-09 16:42:03

标签: linux postgresql gis postgis

我有一个CSV格式的数据文件,其中包含以下数据: 字段ID |数据瓦片|数据描述|经度|纬度

我已经安装了PostgreSQL和PostGIS,我想使用PostGIS创建一个查询,该查询将显示距离纬度/经度位置指定距离内的所有记录(来自上表)。

问题在于我不知道如何开始。 我是否只是将我的CSV文件导入PostgreSQL数据库并在将CSV文件转换为PostgreSQL表后开始使用PostgreSQL和PostGIS函数?

是否有任何额外的步骤使表格与PostGIS功能一起使用?

这样做的正确步骤是什么?我真的很感谢你的帮助!

3 个答案:

答案 0 :(得分:8)

要使用PostGIS,您需要将这些脚本导入工作数据库。

完成此步骤后,设置表并将PostGIS列添加到其中

SELECT AddGeometryColumn('yourtable', 'columnname', 4269, 'POINT', 2 );

最后3个值是SRID,类型和维度。我只是假设这是你想要的。您可能需要调整SRID,但这应该没问题。

您可以在导入/更新/设置的任何内容中设置

添加几何体
ST_Transform(ST_PointFromText('POINT(-85.45899 32.1337)', 4326));

可以将此查询写入数据的UPDATE或INSERT脚本。

答案 1 :(得分:7)

我只需要解决相同的任务,并做了类似于DrColossos的解决方案...你现在可能已经完成了它,但我只是想添加它以防有人谷歌搜索这个问题(就像我做的那样):没有必要编写脚本来从lat / lon字段生成几何,您可以使用简单的连接字符串:

UPDATE mytable
SET the_geom = ST_PointFromText('POINT(' || x ||' '|| y ||')', 4326)

答案 2 :(得分:2)

这是一个有趣的问题: - )

你知道拉特龙的坐标系是什么吗?

我问这个问题,因为它与您存储数据的方式有关。

除了CSV文件中包含类型为POINT的PostGIS几何对象的列之外,您还需要创建一个列。

然后我将CSV数据导入表中的标准列,然后运行SQL更新以从每个记录构造POINT数据并将其存储在创建的几何列中。

此时,您应该能够使用PostGIS功能来访问和预测数据查询。

这就是我上面所说的所有元,因为关于所使用的数据存在复杂性。您需要了解最初与数据一起使用的空间参考系统。