SQL:从两列lat、long将新列更新为几何点_ 背景

SQL:从两列lat、long将新列更新为几何点_ 背景,sql,geospatial,latitude-longitude,alter-table,Sql,Geospatial,Latitude Longitude,Alter Table,我有一个表hospitals\u healthcenters\u joint\u to\u vaculation zones,具有以下属性: lat纬度 长经度 我试过的 我正在尝试创建一个几何数据类型列Point,该列组合了lat和long 我使用了我发现的以下代码: ALTER TABLE hospitals_healthcenters_jointed_to_evacuationzones ADD shape Point ; UPDATE hospitals_he

我有一个表
hospitals\u healthcenters\u joint\u to\u vaculation zones
,具有以下属性:

  • lat
    纬度
  • 经度
我试过的 我正在尝试创建一个几何数据类型列
Point
,该列组合了
lat
long

我使用了我发现的以下代码:

ALTER TABLE hospitals_healthcenters_jointed_to_evacuationzones
  ADD       shape Point
  ;

UPDATE  hospitals_healthcenters_jointed_to_evacuationzones
  SET   shape = Point("long_", "lat")
我犯了一个错误 但我得到了以下错误:

ERROR:  function point(character varying, numeric) does not exist
LINE 4: SET     shape = Point("long_", "lat");
                        ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
SQL state: 42883
Character: 157

假设您使用的是PostgreSQL

使用PostGIS扩展 安装了扩展名后,就有了纬度和经度点的
地理数据类型

要添加列,请执行以下操作:

ALTER TABLE hospitals_healthcenters_jointed_to_evacuationzones
  ADD COLUMN geo_point GEOGRAPHY(POINT,4326);
ALTER TABLE hospitals_healthcenters_jointed_to_evacuationzones
  ADD COLUMN geo_point POINT;
要为每条记录更新列
geo\u点
(基于列
long
lat\u点
)中的现有坐标,请执行以下操作:

的数据值以文本形式给出,请参见以下示例和说明:

'SRID=
4326
;点(
-71.104 42.315
)'

  • 空间参考系统ID(SRID)指定为的
    4326
    (与GPS使用的相同,请参阅)
  • 地理坐标被指定为
    -71.104 42.315
    描述的类型点,顺序如下:经度,后跟空格作为分隔符,后跟纬度
使用本机数据类型 如果未安装PostGIS,您仍然具有几何类型。 此类型的值使用几何转换函数
点(双精度,双精度)
构造

要添加列,请执行以下操作:

ALTER TABLE hospitals_healthcenters_jointed_to_evacuationzones
  ADD COLUMN geo_point GEOGRAPHY(POINT,4326);
ALTER TABLE hospitals_healthcenters_jointed_to_evacuationzones
  ADD COLUMN geo_point POINT;
要更新每条记录的点(基于
double
键入列
long
lat\u
)中的现有坐标,请执行以下操作:


如果安装并应使用PostGIS,此(本机)几何点可以稍后转换为地理点。

嗨,Alex,欢迎使用SO!请提及你的代码来源的博客(链接)!这有助于我们分析您的问题。提示:使用倒勾(`)或CTRL+K格式化代码。简单的引号(')不起作用。顺便说一句:关于SQL的每个问题还应该提到数据库/使用的数据库,因为函数甚至SQL语法可能会有所不同。这可以通过标记来完成,例如,或,等等。看起来您正在使用。您是否搜索了错误消息或SQL状态?找到这个了。如果我能帮忙,我很高兴。如果解决方案有效,请告诉我(例如接受答案)。我非常感谢。这是我用过的帖子,没有用过[链接]()。不幸的是,我仍然得到一个错误的指令提供<代码>更改表格医院\健康中心\疏散区添加列点地理位置(点,26918)错误:地理中仅支持lon/lat坐标系。第2行:添加列点地理位置(点,26918);^SQL状态:22023字符:72您指定SRS的原因是什么?如错误所述:由于不使用lon/lat坐标,因此类型
地理信息
不支持此操作。
UPDATE hospitals_healthcenters_jointed_to_evacuationzones
  SET geo_point = point(long, lat_);