Jul*_*0sS 6 sql postgresql postgis function geolocation
问题就在这里,
我现在刚刚安装了 PostgreSQL 并尝试构建一个 geoloc 数据库。为此,我安装了 PostGIS 扩展和 PostGIS_Topology。
在我的 pgAdmin UI 中,我可以看到我的模型,我的架构是“Geo”,我可以在下面的函数列表中看到可用的 postGis 函数(大约 1000 个,请参见屏幕截图)
问题是,当我尝试在数据库中插入新记录时,示例:
INSERT INTO "Geo".points(point, lat, lng) VALUES (ST_GeomFromText('POINT(42.555 32.222)'),'42.555','32.222');
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
ERROR : function st_geomfromtext(unknown) does not exist
SQL state : 42883
Character : 51
Run Code Online (Sandbox Code Playgroud)
认为问题来自扩展可能未启用,但看起来没问题,函数列表在数据库模型信息中可见......
还尝试从数据库名称调用该函数,但不起作用......
..."Geo".ST_GeomFromText('...')...
Run Code Online (Sandbox Code Playgroud)
另一个奇怪的事情是,当我尝试这个命令时:
SELECT "Geo".ST_GeomFromText('POINT(42.222 32.555)')
Run Code Online (Sandbox Code Playgroud)
有用...
这是一个屏幕截图:

我是 PostgreSQL 的新手,所以也许这是一个愚蠢的问题...但我查看了堆栈和文档,没有找到任何与我的问题相匹配的内容...
感谢您的阅读/帮助
[编辑]
测试你的解决方案后@mlinth我仍然面临同样的问题......
当尝试时
INSERT INTO "Geo".points(point, lat, lng)
SELECT "Geo".ST_GeomFromText('POINT(32.222 42.555)'),'42.555','32.222';
or
INSERT INTO "Geo".points(point, lat, lng)
SELECT "Geo".ST_point(32.222,42.555 ),'42.555','32.222';
Run Code Online (Sandbox Code Playgroud)
我遇到错误,SQL状态:42804字符51(“Geo”有下划线)删除“Geo”会导致类似“函数ST_GeomFromText(或ST_POINT)(未知)不存在”的错误...
[编辑2]
这个功能似乎有效:
SELECT "Geo".ST_GeomFromText('POINT(42.222 35.555)')
Run Code Online (Sandbox Code Playgroud)
它返回
st_geomfromtext "Geo".geometry
1 : "010100000023DBF97E6A1C4540D7A3703D0AC74140"
Run Code Online (Sandbox Code Playgroud)
创建语句:
CREATE TABLE "Geo".points
(
id serial NOT NULL,
point point NOT NULL,
lat text,
lng text,
CONSTRAINT points_pkey PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
ALTER TABLE "Geo".points
OWNER TO postgres;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20954 次 |
| 最近记录: |