【发布时间】:2020-05-06 12:16:45
【问题描述】:
我在尝试保存已格式化为 GeoJSON 的多边形时遇到问题,问题是我将多边形作为坐标数组的数组,但 postgres 多边形字段需要一个元组数组,但 javascript 没有'不支持元组,因此我不知道如何将数据插入 Postgres。
postgres 如何获取数据的示例:
INSERT INTO table VALUES(default, '[(x,y), (x,y)]');
我拥有的数据示例:
"coordinates": [
[
[
49.5703125,
59.5343180010956
],
[
54.84375,
54.77534585936447
],
[
63.28125,
59.5343180010956
],
[
54.84375,
61.77312286453146
],
[
49.5703125,
60.930432202923335
],
[
49.5703125,
59.5343180010956
]
]
]
尝试将数组保存到 postgres 时遇到的错误:
{
"message": "invalid input syntax for type polygon: \"{{\"-64.1892249612655\",\"-31.4212119274207\"},{\"-64.1896863245919\",\"-31.4223122073094\"},{\"-64.1900957427429\",\"-31.423283040535\"},{\"-64.1901970936061\",\"-31.4235231632172\"},{\"-64.190677427225\",\"-31.4246610035708\"},{\"-64.1892249612655\",\"-31.4212119274207\"}}\"",
"name": "QueryFailedError",
"length": 353,
"severity": "ERROR",
"code": "22P02",
"file": "float.c",
"line": "542",
"routine": "float8in_internal",
"query": "INSERT INTO \"zones\"(\"title\", \"boundary_points\", \"created_at\", \"updated_at\", \"iconFileId\", \"backgroundFileId\") VALUES ($1, $2, DEFAULT, DEFAULT, $3, $4) RETURNING \"id\", \"created_at\", \"updated_at\"",
"parameters": [
"BAJO GENERAL PAZ",
[
[
-64.1892249612655,
-31.4212119274207
],
[
-64.1896863245919,
-31.4223122073094
],
[
-64.1900957427429,
-31.423283040535
],
[
-64.1901970936061,
-31.4235231632172
],
[
-64.190677427225,
-31.4246610035708
],
[
-64.1892249612655,
-31.4212119274207
]
],
null,
null
]
}
【问题讨论】:
-
这个数组的每个点都应该成为你表中的一条记录?
-
不,这只是一条记录,有一个我称之为'boundary_points'的字段,它是多边形类型,为了在postgres中定义一个多边形,你需要传递一个元组数组(x ,y) 的坐标。
标签: javascript postgresql geometry postgis typeorm