diff options
Diffstat (limited to 'src/nodejs/main.js')
-rw-r--r-- | src/nodejs/main.js | 67 |
1 files changed, 32 insertions, 35 deletions
diff --git a/src/nodejs/main.js b/src/nodejs/main.js index 80bd051..5006dbc 100644 --- a/src/nodejs/main.js +++ b/src/nodejs/main.js @@ -43,21 +43,18 @@ function rowToNode(row){ 'lat' : row.lat, 'lon' : row.lon }; - - if(row.tags != '{}') { - node.tags = []; - temp = row.tags.replace("{","").replace("}","").split(","); - for(var x=0;x<temp.length;x=x+2){ + node.tags = [] + if(row.tags.length != 0) { + for(var i=0;i<row.tags.length;i=i+2) { node.tags.push({ - 'key' : temp[x], - 'value' : temp[x+1] - }); + 'key' : row.tags[i], + 'value' : row.tags[i+1] + }) } } return node; } -//FIXME: parsing of ways is meesed up function rowToWay(row){ var way = { 'id' : row.id, @@ -65,17 +62,16 @@ function rowToWay(row){ 'version' : row.version, 'changeset' : row.changeset_id }; - if(row.tags != '{}') { - way.tags = []; - // FIXME: something doesnt work at all - temp = row.tags.replace("{","").replace("}","").split(","); - for(var x=0;x<temp.length;x=x+2){ + way.tags = [] + if(row.tags.length != 0) { + for(var i=0;i<row.tags.length;i=i+2) { way.tags.push({ - 'k' : temp[x], - 'v' : temp[x+1] - }); + 'key' : row.tags[i], + 'value' : row.tags[i+1] + }) } } + //TODO return nodes of way return way; } @@ -93,7 +89,7 @@ var options = [ // { // object = node/way/relation/* , // bbox = { left : 1.0 , right : 1.0 , top : 1.0, bottom : 1.0 } -// tag = { key : [ ], value [ ] } +// tag = { key : [ ], value [ ] } // } @@ -101,14 +97,14 @@ function buildMainQuery(reqJso){ var id = 1; var replacements = Array(); - + var selectMap = { - 'node' : 'id,user_id,tstamp,version,changeset_id,hstore_to_array(tags) as tags, ' + + 'node' : 'id,user_id,tstamp,version,changeset_id,hstore_to_array(tags) as tags, ' + 'X(geom) as lat, Y(geom) as lon', 'way' : 'id,tstamp,version,changeset_id,nodes,user_id,hstore_to_array(tags) as tags ', 'relation' : '' //FIXME: plz - } - + } + // FIXME: help me i am not side effect free function buildTagsQuery(map){ @@ -125,7 +121,7 @@ function buildMainQuery(reqJso){ // FIXME: help me i am not side effect free function buildBbox(object,bbox){ - + var colName = { node : 'geom', way : 'linestring', @@ -136,7 +132,7 @@ function buildMainQuery(reqJso){ ' st_setsrid(st_makepoint($' + id++ + ', $' + id++ + '), 4326), ' + ' st_setsrid(st_makepoint($' + id++ + ', $' + id++ + '), 4326) ' + ' ), 4326) '; - + for( direction in bbox ) { replacements.push(bbox[direction]); } @@ -153,15 +149,15 @@ function buildMainQuery(reqJso){ } return map; } - + query = "SELECT " + selectMap[reqJso.object] + " FROM " + reqJso.object + "s"; - + whereClauses = Array(); if(reqJso.bbox != undefined){ whereClauses.push(buildBbox(reqJso.object,reqJso.bbox)); } - + // FIXME: rename tag to tags key to keys value to values if(reqJso.tag != undefined){ tags = explodeTags(reqJso.tag.key,reqJso.tag.value); @@ -175,9 +171,10 @@ function buildMainQuery(reqJso){ query += ';' return { - text:query, - values:replacements, - name: query + text : query, + values : replacements, + name : query, + binary : true }; } @@ -278,11 +275,11 @@ function myFunction(req,res){ res.writeHead(200); var reqObj = parser.urlToXpathObj(req.url); - + var queryDict = buildMainQuery(reqObj); - + var resXml = osmRes.mkXmlRes(res); - + console.log(JSON.stringify(queryDict)); console.log("??????????????????????????????"); @@ -296,12 +293,12 @@ function myFunction(req,res){ }); query.on('end', function() { - console.log(" EEEND "); + console.log(" EEEND "); res.atEnd(); }); query.on('row', function(row) { - //console.log(JSON.stringify(row)); + //console.log(JSON.stringify(row)); if(reqObj.object == "node") { var pojo = rowToNode(row); res.putNode(pojo); |