sql - 如何使用 PostGIS 创建和查询包含经/纬度的表?

标签 sql postgresql gis postgis

如何使用 PostGIS 创建一个包含地理点(纬度/经度)的表格?然后,插入到该表中的格式是什么(使用 SQL/PostgreSQL)?

创建表是否只是以下内容:

CREATE TABLE x (geog geography(point, 4326))

如果是这样, 是什么,您什么时候改用ST_Point(X,Y)

这个列应该有一个索引吗?

注意:之前回答的许多问题都详细说明了如何转换。但是我想从头开始创建一个支持存储经纬度的空表。

最佳答案

是的,用地理创建表的语法很简单 CREATE TABLE x (geog geography(POINT,4326) );

在此命令中,POINT 是此表将存储的形状类型。其他可能性是:

  • 线串
  • 多边形
  • 多点
  • 多线
  • 多边形
  • 几何集合

在某些情况下将地理存储在表中的原因是它使您能够运行 several functions这会给你结果,就好像你在球形地球上计算一样。因此,例如,我可以将两个点存储为地理(只知道每个点的经纬度),并且我可以轻松地以米为单位找到它们之间的距离

ST_Point(X,Y) 只是一个函数,它接受两个数字,然后创建一个点,其中 X 作为第一个数字,Y 作为第二个数字。它不必是经纬度对。事实上,这个点并不知道它在哪个坐标引用系中。

创建表后,向其中插入记录非常简单: INSERT INTO X (geog) VALUES (ST_GeographyFromText('POINT(2.5559 49.0083)'));

您正在为巴黎创建一个地理点,纬度为 49.0083N,经度为 2.5559E

关于sql - 如何使用 PostGIS 创建和查询包含经/纬度的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41475698/

相关文章:

sql - 比较 Postgres 中的 JSON 数组

python - "with psycopg2.connect"是否自动关闭连接?

r - 使用ggplot绘制SpatialPolygonsDataFrame

gis - PostGIS中的ST是什么?

r - R可以用于GIS吗?

sql - CAST as NVarChar 时删除尾随 0

c# - C# 对象不能从 DBNull 转换为其他类型

Mysql 在 select 语句中设置局部变量并仅通过一个查询返回相同的 select 输出

sql - INSERT INTO ... FROM SELECT ... RETURNING id 映射

sql - PostgreSQL-错误 : column does not exist SQL state: 42703