postGIS:ST_MakeEnvelope() 为什么只有一个类似的查询有效?
postGIS: ST_MakeEnvelope() why does only one of those similar queries work?
为什么这些类似的查询之一有效?
我正在尝试创建一个 BBOX 多边形并将其保存到几何列中。
然而只有一种方法有效,但我无法插入不同的值。
这个查询没有问题:
res <- DBI::dbExecute(con,
"INSERT INTO graphs (
left_xmin,
bottom_ymin,
right_xmax,
top_ymax,
filename,
BBOX_Diagonale,
file, bbox) VALUES (,, , ,, ,,ST_GeomFromText(ST_AsText(ST_MakeEnvelope(11.29589921, 47.5205857, 12.21999367, 48.14282422, 4326) )));",
list(round(bbox_dimensions[[1]],digits=8),
round(bbox_dimensions[[2]],digits=8),
round(bbox_dimensions[[3]],digits=8),
round(bbox_dimensions[[4]],digits=8),
filename_save,
bbox_diagonale,
paste0( "\x",paste(data, collapse = ""))))
但他的没有。
res <- DBI::dbExecute(con,
"INSERT INTO graphs (
left_xmin,
bottom_ymin,
right_xmax,
top_ymax,
filename,
BBOX_Diagonale,
file, bbox) VALUES (,, , ,, ,,);",
list(round(bbox_dimensions[[1]],digits=8),
round(bbox_dimensions[[2]],digits=8),
round(bbox_dimensions[[3]],digits=8),
round(bbox_dimensions[[4]],digits=8),
filename_save,
bbox_diagonale,
paste0( "\x",paste(data, collapse = "")),
paste0("ST_GeomFromText(ST_AsText(ST_MakeEnvelope(11.29589921, 47.5205857, 12.21999367, 48.14282422, 4326) )))")))
我希望能够用 bbox 对象替换值 „11.29589921, 47.5205857, 12.21999367…“
。
为此,我想我会使用 paste0
函数来创建 string
。
然而我得到这个错误:
Error: Failed to fetch row: ERROR: parse error - invalid geometry
HINT: "ST" <-- parse error at position 2 within geometry
bbox 列创建于:
SELECT AddGeometryColumn('graphs', 'bbox', 4326, 'POLYGON', 2 );
如果正确理解查询,尤其是带有 bbox 多边形的部分..
它会生成地理数据,所以它应该可以工作......但它没有:)
我现在是这样做的:
res <- DBI::dbExecute(con,
paste("INSERT INTO graphs (
left_xmin,
bottom_ymin,
right_xmax,
top_ymax,
filename,
BBOX_Diagonale,
file, bbox) VALUES (,, , ,, ,,ST_GeomFromText(ST_AsText(ST_MakeEnvelope(",
round(bbox_dimensions[[1]],digits=8),",",
round(bbox_dimensions[[2]],digits=8),",",
round(bbox_dimensions[[3]],digits=8),",",
round(bbox_dimensions[[3]],digits=8),
", 4326) )));"),
list(round(bbox_dimensions[[1]],digits=8),
round(bbox_dimensions[[2]],digits=8),
round(bbox_dimensions[[3]],digits=8),
round(bbox_dimensions[[4]],digits=8),
filename_save,
bbox_diagonale,
paste0( "\x",paste(data, collapse = ""))))
为什么这些类似的查询之一有效?
我正在尝试创建一个 BBOX 多边形并将其保存到几何列中。
然而只有一种方法有效,但我无法插入不同的值。
这个查询没有问题:
res <- DBI::dbExecute(con,
"INSERT INTO graphs (
left_xmin,
bottom_ymin,
right_xmax,
top_ymax,
filename,
BBOX_Diagonale,
file, bbox) VALUES (,, , ,, ,,ST_GeomFromText(ST_AsText(ST_MakeEnvelope(11.29589921, 47.5205857, 12.21999367, 48.14282422, 4326) )));",
list(round(bbox_dimensions[[1]],digits=8),
round(bbox_dimensions[[2]],digits=8),
round(bbox_dimensions[[3]],digits=8),
round(bbox_dimensions[[4]],digits=8),
filename_save,
bbox_diagonale,
paste0( "\x",paste(data, collapse = ""))))
但他的没有。
res <- DBI::dbExecute(con,
"INSERT INTO graphs (
left_xmin,
bottom_ymin,
right_xmax,
top_ymax,
filename,
BBOX_Diagonale,
file, bbox) VALUES (,, , ,, ,,);",
list(round(bbox_dimensions[[1]],digits=8),
round(bbox_dimensions[[2]],digits=8),
round(bbox_dimensions[[3]],digits=8),
round(bbox_dimensions[[4]],digits=8),
filename_save,
bbox_diagonale,
paste0( "\x",paste(data, collapse = "")),
paste0("ST_GeomFromText(ST_AsText(ST_MakeEnvelope(11.29589921, 47.5205857, 12.21999367, 48.14282422, 4326) )))")))
我希望能够用 bbox 对象替换值 „11.29589921, 47.5205857, 12.21999367…“
。
为此,我想我会使用 paste0
函数来创建 string
。
然而我得到这个错误:
Error: Failed to fetch row: ERROR: parse error - invalid geometry
HINT: "ST" <-- parse error at position 2 within geometry
bbox 列创建于:
SELECT AddGeometryColumn('graphs', 'bbox', 4326, 'POLYGON', 2 );
如果正确理解查询,尤其是带有 bbox 多边形的部分.. 它会生成地理数据,所以它应该可以工作......但它没有:)
我现在是这样做的:
res <- DBI::dbExecute(con,
paste("INSERT INTO graphs (
left_xmin,
bottom_ymin,
right_xmax,
top_ymax,
filename,
BBOX_Diagonale,
file, bbox) VALUES (,, , ,, ,,ST_GeomFromText(ST_AsText(ST_MakeEnvelope(",
round(bbox_dimensions[[1]],digits=8),",",
round(bbox_dimensions[[2]],digits=8),",",
round(bbox_dimensions[[3]],digits=8),",",
round(bbox_dimensions[[3]],digits=8),
", 4326) )));"),
list(round(bbox_dimensions[[1]],digits=8),
round(bbox_dimensions[[2]],digits=8),
round(bbox_dimensions[[3]],digits=8),
round(bbox_dimensions[[4]],digits=8),
filename_save,
bbox_diagonale,
paste0( "\x",paste(data, collapse = ""))))