将 PostGIS 与具有十进制坐标的现有数据表结合使用

发布于 2024-10-11 06:33:26 字数 325 浏览 2 评论 0原文

我有一个 CSV 格式的数据文件,其中包含如下一些数据: 字段 ID |数据块|数据说明|经度 |纬度

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

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

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

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

I have a data file in CSV format that has the some data like this:
field id | data tile | data description | longitude | latitude

I have PostgreSQL and PostGIS already installed and I would like to use PostGIS to create a query that will bring up all the records (from the table above) that are within the specified distance from a lat/long location.

The problem is that I don't know how to get started.
Do I just import my CSV file in PostgreSQL database and start using PostgreSQL and PostGIS functions once I have the CSV file converted into a PostgreSQL table?

Are there any extra steps to make the table work with the PostGIS functions?

What would be the correct steps to go about this? I truly appreciate your help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

物价感观 2024-10-18 06:33:26

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

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

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

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

您可以在导入/更新/任何您选择添加几何图形的内容中进行设置,例如

ST_Transform(ST_PointFromText('POINT(-85.45899 32.1337)', 4326));

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

In order to work with PostGIS, you need to import these scripts into your working database.

Once you have this step done, set up your table and add the PostGIS column to it

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

The last 3 values are SRID, the type and the dimension. I just assume this is what you want. You probably need to adjust the SRID but this should be fine.

You can set in your import/update/whatever you chose to add the geometry like

ST_Transform(ST_PointFromText('POINT(-85.45899 32.1337)', 4326));

This query can be written into your UPDATE or INSERT script for the data.

岁吢 2024-10-18 06:33:26

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

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

I just had to solve the same task and did something similar to DrColossos's solution... You're probably done with it by now, but I just wanted to add this in case someone googles this issue (like I did): There's no need to write a script to generate a geometry from the lat/lon fields, you can use a simple concatenated string:

UPDATE mytable
SET the_geom = ST_PointFromText('POINT(' || x ||' '|| y ||')', 4326)
就是爱搞怪 2024-10-18 06:33:26

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

你知道经纬度采用什么坐标系吗?

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

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

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

此时,您应该能够使用 PostGIS 函数来访问数据并对数据进行谓词查询。

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

This is a fun question :-)

Do you know what coordinate system the lat lons are in?

I ask this question because it is relevant to how you store the data.

What you'll need to do is create a column in addition to the ones in the CSV file that contain a PostGIS geometry object of type POINT.

I would then import the CSV data into the standard columns in the table, then run a SQL update to construct the POINT data from each record and store that in the created geometry column.

At that point you should be able to use the PostGIS functions to access and predicate queries on the data.

This is all kind of meta what I'm saying above because there are intricacies with regard to the data being used. You will need to know the spatial referencing system used with the data initially.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文