postgreSQL 9.1, postGIS 2.0, nodejs 0.10.12 및 노드의 pg 모듈의 최신 버전을 사용하여 I, m.postGIS와 node.js의 가장 가까운 이웃
서버 측에서 웹 소켓을 사용합니다. 두 가지 기능이 있습니다. 데이터에 따라 적절한 기능을 호출하는 사용자가 왔습니다.
첫 번째 기능은 간단한 SELECT
입니다. 잘 작동합니다.
두 번째 시도는 주어진 지오메트리의 5 개의 가장 가까운 이웃을 찾습니다 (점 또는 선 또는 다각형 일 수 있음). 작동하지 않습니다. 내가 가장 가까운 이웃 쿼리와 아직 아무것도 다른 구문을 시도.
무엇이 잘못 될 수 있습니까? 쿼리? 아마도 pg 모듈이 ST_DWithin
기능을 지원하지 않을 수도 있습니다. 여기
function checkMapIn(je){
var conString = "pg://username:[email protected]:5432/myDB";
var client = new pg.Client(conString);
client.connect();
//je came from client, is a geometry he just inserted in the map
var query = client.query('SELECT pins.p_name FROM pins ORDER BY pins.p_geom <-> '+je+' LIMIT 5')
//alternative syntax I tried
//SELECT pins.p_name FROM pins INNER JOIN pins ON ST_DWithin('+je+', pins.p_geom, 1000) LIMIT 5
//SELECT pins.p_name FROM pins WHERE ST_DWithin('+je+', pins.p_geom, 1000) LIMIT 5
query.on("row", function (row, result) {
result.addRow(row);});
query.on("end", function (result) {
console.log(JSON.stringify(result.rows, null, " "));
for (var i=0; i<result.rows.length; i++){
connection.send(result.rows[i].p_name+'</br>')
}
client.end();
});
}
의 코드 그리고 이것은 내가 쿼리
events.js:72
throw er; // Unhandled 'error' event
^
error: syntax error at or near "["
at Connection.parsE (C:\Program Files (x86)\nodejs\node_modules\pg\lib\connection.js:526:11)
at Connection.parseMessage (C:\Program Files (x86)\nodejs\node_modules\pg\lib\connection.js:371:17)
at Socket.(anonymous) (C:\Program Files (x86)\nodejs\node_modules\pg\lib\connection.js:86:20)
at Socket.EventEmitter.emit (events.js:95:17)
at Socket.(anonymous) (_stream_readable.js:736:14)
at Socket.EventEmitter.emit (events.js:92:17)
at emitReadable_ (_stream_readable.js:408:10)
at emitReadable (_stream_readable.js:404:5)
at readableAddChunk (_stream_readable.js:156:9)
at Spcket.Readable.push (_stream_readable.js:127:10)
어떤 조언의 synatx을 편집하는 방법에 상관없이, 내가 오류입니까? 힌트? 미리
슬레븐
EDIT 여기
'JE'변수의 예시적인 값은에
감사 "badsyntax"이 질문한다. [object Object]
connection.send('</br>'+je+'</br>')
으로 설정하면됩니다.
또한 클라이언트 측의 openlayers에서 얻은 결과이며 서버에 보내는 내용입니다. POINT(2332239.3475 4729773.7440625)
이상한 점 ... 클라이언트 측에서 저는 openlayers를 사용하여 방금 맵에 삽입 된 지형지 물의 지오메트리를 가져옵니다.
'je'변수에 예제 값을 게시 할 수 있습니까? – badsyntax
@badsyntax 방금 질문을 편집했습니다.Thanks – slevin
postGIS에 대해서는 아무 것도 모르지만 cli에서 psql을 통해 postgres에서 해당 쿼리를 실행 해 보았습니까? 그런 식으로 디버깅하는 것이 더 쉬울 수도 있습니다 ... – badsyntax