我正在尝试从我的postgis db中选择位于某个边界框内的位置.我试图用这个查询来完成这个:
//latlong - latitude, longitude of a place
SELECT * FROM places WHERE St_Contains(St_GeomFromText('Polygon((:top_left_long :top_left_lat, :bottom_right_long :bottom_right_lat))'), latlong);
Run Code Online (Sandbox Code Playgroud)
首先 - 我收到以下错误:
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: :top_left_lat
Run Code Online (Sandbox Code Playgroud)
这是什么意思?第二个问题 - 我是否按顺序提供这些参数?我的意思是 - 先经度,然后是纬度?
使用类时遇到的问题NamedPipeServerStream是,对于每个传入的连接,我需要创建新对象并调用它的方法WaitForConnection.
我想要做的是创建一个NamedPipeServerStream对象,然后在while循环中重复调用上述方法,如下所示:
NamedPipeServerStream s2;
using (s2 = new NamedPipeServerStream("pipe_name", PipeDirection.InOut)) {
while(true) {
ss2.WaitForConnection();
//do something here
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,我得到了消息
流已断开连接.
有什么建议?
我的一个查询存在一个主要问题:
SELECT tpostime, gispoint
FROM mytable
WHERE idterminal = 233463
ORDER BY idpos DESC
Run Code Online (Sandbox Code Playgroud)
当'mytable'中不存在idterminal时,此查询将被永久处理,然后我会看到超时(由于用户请求'消息声明是特定的),但是当我删除order by子句时,一切似乎都很好.现在我想知道 - idpos是'mytable'的主键,因此它被索引,所以它的排序应该很快,我猜.重要的是 - 'mytable'重量为3gb.
表和索引定义:
CREATE TABLE mytable (
idpos serial NOT NULL,
tpostime timestamp(0) without time zone,
idterminal integer DEFAULT 0,
gispoint geometry,
idtracks integer,
CONSTRAINT mytable_pkey PRIMARY KEY (idpos),
CONSTRAINT qwe FOREIGN KEY (idtracks) REFERENCES qwe (idtracks)
MATCH SIMPLE ON UPDATE NO ACTION ON DELETE CASCADE,
CONSTRAINT abc FOREIGN KEY (idterminal) REFERENCES abc (idterminal)
MATCH SIMPLE ON UPDATE NO ACTION ON DELETE …Run Code Online (Sandbox Code Playgroud)