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_);