Advertisement
Guest User

Untitled

a guest
Dec 16th, 2017
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var poisSCAMI2 = function(lat,long,radius,callback){
  2.     var tretas = {};
  3. QueryOverpass('way[~"^(amenity|maxspeed|shop|leisure|highway)$"~"."](around:'+ radius + ',' +lat+','+long+');(._;>;);out;',function(err,data1){
  4.     var features = [];
  5.  
  6.     if(data1.features != undefined) features = features.concat(data1.features);
  7.     QueryOverpass('node[~"^(amenity|shop|leisure|maxspeed|highway)$"~"."](around:'+ radius + ',' +lat+','+long+');out;',function(err,data){
  8.         var amenities = {};
  9.         if(err){
  10.             console.log("ERROR");
  11.             return callback(err,amenities);
  12.         }
  13.         features = features.concat(data.features);
  14.        
  15.         //for(var i = 0; i < features.length; i++){
  16.             console.log(features.length);
  17.         var forCycle = function(features,i){
  18.            
  19.             if(i < features.length){
  20.                 var feature = features[i];
  21.                 var amenity = feature.properties.tags.amenity;
  22.                 var shop = feature.properties.tags.shop;
  23.                 var leisure = feature.properties.tags.leisure;
  24.                 var maxspeed = feature.properties.tags.maxspeed;
  25.                 var highway = feature.properties.tags.highway;
  26.                 /*
  27.                 if(shop != undefined) console.log("THIS IS A SHOP");
  28.                 if(amenity != undefined) console.log("THIS IS AN AMENITY");
  29.                 if(leisure != undefined) console.log("THIS IS A LEISURE");
  30.                 if(maxspeed != undefined) console.log("THIS IS A MAXSPEED");
  31.                 if(highway != undefined) console.log("THIS IS A HIGHWAY TO HELL");
  32.                 console.log("-----------------------------------------");*/
  33.                 var indicador = null;
  34.                 var indicadores = [];
  35.  
  36.             if(amenity != undefined){
  37.                 switch(amenity){
  38.                 // I1 - CRECHE OU JARDIM DE INFANCIA
  39.                     case 'kindergarten':
  40.                     case 'prep_school':
  41.                     case 'preschool':
  42.                     case 'childcare':
  43.                         indicador = 'i1';
  44.                         break;
  45.                 //I2 - ESCOLA ENSINO BASICO
  46.                     case 'school_primary_education':
  47.                         indicador = 'i2';
  48.                         break;
  49.                 //I3 - ESCOLA SECUNDARIA
  50.                     case 'high_school':
  51.                     case 'school':
  52.                         indicador = 'i3';
  53.                         break;
  54.                 //I4 - ENSINO SUPERIOR
  55.                     case 'college':
  56.                     case 'university':
  57.                         indicador = 'i4';
  58.                         break;
  59.                 //I5 - CENTRO SAUDE
  60.                     case 'health_center':
  61.                     case 'health-center':
  62.                     case 'clinic':
  63.                     case 'doctors':
  64.                         indicador = 'i5';
  65.                         break;
  66.  
  67.                 //I6 - HOSPITAL
  68.                     case 'hospital':
  69.                     case 'district_hospital':
  70.                         indicador = 'i6';
  71.                         break;
  72.  
  73.                 //I7 - MATERNIDADE
  74.  
  75.                     case 'maternity':
  76.                     case 'maternity_care':
  77.                     case 'maternity_hospital':
  78.                     case 'maternity_clinic':
  79.                         indicador = 'i7';
  80.                         break;
  81.  
  82.                 //I8 - FARMACIA
  83.  
  84.                     case 'pharmacy':
  85.                     case 'pharmacy_hospital':
  86.                         indicador = 'i8';
  87.                         break;
  88.  
  89.                 //I9 - GINASIO, HEALTHCLUB, FISIOTERAPIA
  90.  
  91.                     case 'gym':
  92.                     case 'gymnasium':
  93.                     case 'fitness_club':
  94.                     case 'health_club':
  95.                     case 'outdoor_gym':
  96.                     case 'fitness_center':
  97.                     case 'fitness-center':
  98.                     case 'clinic':
  99.                         indicador = 'i9';
  100.                         break;
  101.  
  102.                 //I10 - EMERGENCIA MEDICA
  103.  
  104.                     case 'emergency_service':
  105.                     case 'emergency_station':
  106.                         indicador = 'i10';
  107.                         break;
  108.                 //I11 - PARQUE INFANTIL
  109.  
  110.                     case 'playground':
  111.                     case 'school_playground':
  112.                         indicador = 'i11';
  113.                         break;
  114.  
  115.                 //I12 - ESPAÇOS VERDES
  116.  
  117.                     case 'greenfield':
  118.                     case 'open_green_area':
  119.                     case 'social_centre':
  120.                         indicador = 'i12';
  121.                         break;
  122.  
  123.                 //I13 - TEATRO OU CINEMA
  124.  
  125.                     case 'cinema':
  126.                     case 'theatre':
  127.                     case 'theatre_stage':
  128.                         indicador = 'i13';
  129.                         break;
  130.  
  131.                 //I14 - BAR OU DISCO
  132.  
  133.                     case 'bar':
  134.                     case 'pub':
  135.                     case 'stripclub': //uiui
  136.                     case 'wine_bar':
  137.                     case 'nightclub':
  138.                         indicador = 'i14';
  139.                         break;
  140.  
  141.                 //I15 - CAFE , PADARIA OU PASTELARIA
  142.                     case 'cafe':
  143.                     case 'bakery':
  144.                     case 'cafeteria':
  145.                         indicador = 'i15';
  146.                         break;
  147.  
  148.                 //I16 - MINI MERCADO / SUPER MERCADO
  149.  
  150.                     case 'marketplace':
  151.                     case 'supermarket':
  152.                     case 'market':
  153.                         indicador = 'i16';
  154.                         break;
  155.  
  156.                 //I17 - RESTAURANTE / TAKEAWAY
  157.  
  158.                     case 'restaurant':
  159.                     case 'fast_food':
  160.                         indicador = 'i17';
  161.                         break;
  162.  
  163.                 //I18 - SHOPPING
  164.  
  165.                     case 'shopping':
  166.                     case 'shopping_centre':
  167.                         indicador = 'i18';
  168.                         break;
  169.  
  170.                 //I19 - PAPELARIA / TABACARIA
  171.  
  172.                     case 'stationary_shop':
  173.                         indicador = 'i19';
  174.                         break;
  175.  
  176.                 //I20 - BANCO / MB
  177.  
  178.                     case 'bank':
  179.                     case 'atm':
  180.                     case 'money_transfer':
  181.                         indicador = 'i20';
  182.                         break;
  183.  
  184.                 //I21 - CTT
  185.  
  186.                     case 'post_office':
  187.                     case 'post_box':
  188.                         indicador = 'i21';
  189.                         break;
  190.  
  191.  
  192.                 //I22 - LOJA CIDADAO / SEVIÇOS PUBLICOS
  193.  
  194.                     case 'payment_centre':
  195.                     case 'townhall':
  196.                     case 'courthouse':
  197.                         indicador = 'i22';
  198.                         break;
  199.  
  200.                 //I23 - PROTECÇAO CIVIL
  201.  
  202.                     case 'fire_station':
  203.                     case 'police':
  204.                     case 'police_station':
  205.                         indicador = 'i23';
  206.                         break;
  207.  
  208.                 //I25 - BICICLETA
  209.  
  210.                     case 'bicycle_rental':
  211.                     case 'bicycle_parking':
  212.                         indicador = 'i25';
  213.                         break;
  214.  
  215.                 //I27 - CARRO
  216.  
  217.                     case 'fuel':
  218.                     case 'parking':
  219.                     case 'parking_entrance':
  220.                     case 'car_sharing':
  221.                         indicador = 'i27';
  222.                         break;
  223.                 //I28 - PONTO CARREGAMENTO ELETRICO
  224.  
  225.                     case 'charging_station':
  226.                         indicador = 'i28';
  227.                         break;
  228.  
  229.                 //I29 - ESTAÇAO FERROVIARIA
  230.  
  231.                     case 'train_station':
  232.                         indicador = 'i29';
  233.                         break;
  234.  
  235.                 //I30 - AEROPORTO
  236.  
  237.                     case 'airport':
  238.                         indicador = 'i30';
  239.                         break;
  240.  
  241.  
  242.  
  243.                
  244.                 }//END OF SWITCH
  245.                 if(indicador != null) indicadores.push(indicador);
  246.                 else console.log("AMENITY - " + amenity);
  247.  
  248.             }//END OF IF
  249.  
  250.             if(shop != undefined){
  251.                 indicador = null;
  252.                     switch(shop){
  253.                
  254.                
  255.  
  256.                 //I8 - FARMACIA
  257.  
  258.                     case 'medical_supply':
  259.                    
  260.                         indicador = 'i8';
  261.                         break;
  262.  
  263.  
  264.                
  265.  
  266.  
  267.                 //I15 - CAFE , PADARIA OU PASTELARIA
  268.                    
  269.                     case 'bakery':
  270.                     case 'confectionery':
  271.                     case 'pastry':
  272.                         indicador = 'i15';
  273.                         break;
  274.  
  275.                 //I16 - MINI MERCADO / SUPER MERCADO
  276.  
  277.                     case 'deli':
  278.                     case 'variety_store':
  279.                     case 'supermarket':
  280.                    
  281.                     case 'general':
  282.                     case 'department_store':
  283.                     case 'convenience':
  284.  
  285.                         indicador = 'i16';
  286.                         break;
  287.  
  288.                
  289.  
  290.                 //I18 - SHOPPING
  291.                     case 'mall':
  292.                     case 'boutique':
  293.                     case 'clothes':
  294.                     case 'fashion':
  295.                     case 'shoes':
  296.                    
  297.                         indicador = 'i18';
  298.                         break;
  299.  
  300.                 //I19 - PAPELARIA / TABACARIA
  301.  
  302.                     case 'kiosk':
  303.                     case 'stationery':
  304.                     case 'newsagent':
  305.                     case 'lottery':
  306.                     case 'tobacco':
  307.  
  308.                         indicador = 'i19';
  309.                         break;
  310.  
  311.                
  312.  
  313.  
  314.                
  315.                 }//END OF SWITCH
  316.                 if(indicador != null) indicadores.push(indicador);
  317.                 else console.log("SHOP - " + shop);
  318.             }
  319.             if(leisure != undefined ){
  320.                 indicador = null;
  321.                 switch(leisure){
  322.                     //I9 - GINASIO, HEALTHCLUB, FISIOTERAPIA
  323.  
  324.                     case 'fitness_centre':
  325.  
  326.                         indicador = 'i9';
  327.                         break;
  328.                 //I11 - PARQUE INFANTIL
  329.  
  330.                     case 'playground':
  331.  
  332.                         indicador = 'i11';
  333.                         break;
  334.  
  335.                 //I12 - ESPAÇOS VERDES
  336.  
  337.                 case 'bird_hide':
  338.                 case 'dog_park':
  339.                 case 'firepit':
  340.                 case 'fishing':
  341.                 case 'garden':
  342.                 case 'nature_reserve':
  343.                 case 'park':
  344.                 case 'picnic_table':
  345.                 case 'summer_camp':
  346.                 case 'wildlife_hide':
  347.  
  348.                         indicador = 'i12';
  349.                         break;
  350.  
  351.                
  352.  
  353.                 //I14 - BAR OU DISCO
  354.  
  355.                     case 'dance':
  356.                     case 'bandstand':
  357.  
  358.                         indicador = 'i14';
  359.                         break;
  360.                     }//END OF SWITCH
  361.                     if(indicador != null) indicadores.push(indicador);
  362.                     else console.log("LEISURE - " + leisure);
  363.             }//END OF ELSE IF
  364.             if(maxspeed != undefined ){
  365.                 indicador = null;
  366.                 switch(maxspeed){
  367.                 case '50':
  368.                 case '20':
  369.                 case '30':
  370.                
  371.                     indicador = 'i25';
  372.                     break;
  373.                 case '100':
  374.                 case '120':
  375.                 case '110':
  376.                    
  377.                     indicador = 'i27';
  378.                     break;
  379.                 }
  380.                 if(indicador != null) indicadores.push(indicador);
  381.                 else console.log("MAXSPEED - " + maxspeed);
  382.             }
  383.  
  384.             if(highway != undefined ){
  385.                 indicador = null;
  386.                 switch(highway){
  387.                     case 'cycleway':
  388.                        
  389.                         indicador = 'i25';
  390.                         break;
  391.                 }
  392.                 if(indicador != null) indicadores.push(indicador);
  393.                 else console.log("HIGHWAY - " + highway);
  394.             }
  395.  
  396.  
  397.  
  398.             /*
  399.             if(indicador != null){
  400.                 if(tretas[indicador] == undefined) tretas[indicador] = 1;
  401.                 else tretas[indicador] += 1;
  402.             }
  403.             else{
  404.                 //console.log(amenity);
  405.                 //console.log(shop);
  406.                 //console.log('------------');
  407.             }
  408.  
  409.             */
  410.  
  411.  
  412.             if(indicadores.length == 0){
  413.                
  414.                 forCycle(features,i+1);
  415.             }
  416.             else{
  417.        
  418.             var coordinates = null;
  419.             if(feature.properties.type == 'way'){
  420.                 if(feature.geometry.type == 'LineString')
  421.                     coordinates = feature.geometry.coordinates[0];
  422.                 else coordinates = feature.geometry.coordinates[0][0];
  423.             }
  424.             else coordinates = feature.geometry.coordinates;
  425.  
  426.             Distance.get(
  427.                 {
  428.                 origin: lat + "," + long,
  429.                 destination: coordinates[1] + "," + coordinates[0],
  430.                 mode: 'walking',
  431.                 units: 'metric'
  432.                 }, function(err,data){
  433.                     if(err){
  434.  
  435.                         console.log("ERROR " + err);
  436.                         console.log(coordinates);
  437.                         console.log(feature);
  438.                         forCycle(features,i+1);
  439.                     }
  440.                     else{
  441.                     feature.distPe = data.distanceValue;
  442.                     for(var j = 0; j < indicadores.length; j++){
  443.                         var indicador = indicadores[j];
  444.                     if(indicador == 'i25'){
  445.                         if(feature.properties.tags.amenity == 'bicycle_rental' ){// && feature.distPe <= 400){
  446.                             if(amenities[indicador] == undefined){
  447.                                 amenities[indicador] = {
  448.                                     "bikesharing": 1
  449.                                 }
  450.                             }else if(amenities[indicador]["bikesharing"] == undefined){
  451.                                 amenities[indicador]["bikesharing"] = 1;
  452.                             }
  453.                         } else if(feature.properties.tags.highway == "cycleway" ){ //&& feature.distPe <= 400){
  454.                             if(amenities[indicador] == undefined){
  455.                                 amenities[indicador] = {
  456.                                     "ciclovia": 1
  457.                                 }
  458.                             }else if(amenities[indicador]["ciclovia"] == undefined){
  459.                                 amenities[indicador]["ciclovia"] = 1;
  460.                             }
  461.                         } else if(feature.properties.tags.amenity == 'bicycle_parking') {// && feature.distPe <= 180){
  462.                             if(amenities[indicador] == undefined){
  463.                                 amenities[indicador] = {
  464.                                     "parking": 1
  465.                                 }
  466.                             }else if(amenities[indicador]["parking"] == undefined){
  467.                                 amenities[indicador]["parking"] = 1;
  468.                             }
  469.                         } else if("20,10,30,40,50".indexOf(feature.properties.tags.maxspeed) != 1 ) { //&& feature.distPe <= 800){
  470.                             if(amenities[indicador] == undefined){
  471.                                 amenities[indicador] = {
  472.                                     "50": 1
  473.                                 }
  474.                             }else if(amenities[indicador]["50"] == undefined){
  475.                                 amenities[indicador]["50"] = 1;
  476.                             }
  477.                         }
  478.                        
  479.  
  480.                     }
  481.                     else if(indicador == 'i27'){
  482.                         if(feature.properties.tags.amenity == "car_sharing") { // && feature.distPe <= 800){
  483.                             if(amenities[indicador] == undefined){
  484.                                 amenities[indicador] = {
  485.                                     "carsharing": 1
  486.                                 }
  487.                             }else if(amenities[indicador]["carsharing"] == undefined){
  488.                                 amenities[indicador]["carsharing"] = 1;
  489.                             }
  490.                         } else if ("parking,parking_entrance".indexOf(feature.properties.tags.amenity) != -1 ){//&& feature.distPe <= 100){
  491.                             if(amenities[indicador] == undefined){
  492.                                 amenities[indicador] = {
  493.                                     "parking": 1
  494.                                 }
  495.                             }else if(amenities[indicador]["parking"] == undefined){
  496.                                 amenities[indicador]["parking"] = 1;
  497.                             }
  498.                         } else if(feature.properties.tags.amenity == "fuel"){
  499.                             if(amenities[indicador] == undefined){
  500.                                 amenities[indicador] = {
  501.                                     "fuel": 1
  502.                                 }
  503.                             }else if(amenities[indicador]["fuel"] == undefined){
  504.                                 amenities[indicador]["fuel"] = 1;
  505.                             }
  506.                         } else if("100,110,120".indexOf(feature.properties.tags.maxspeed) != -1){
  507.                             if(amenities[indicador] == undefined){
  508.                                 amenities[indicador] = {
  509.                                     "100": 1
  510.                                 }
  511.                             }else if(amenities[indicador]["100"] == undefined){
  512.                                 amenities[indicador]["100"] = 1;
  513.                             }
  514.                         }
  515.                     }
  516.  
  517.  
  518.  
  519.                     else{
  520.                         if(amenities[indicador] == undefined){
  521.                             amenities[indicador] = [feature];
  522.                         }
  523.                         else{
  524.                             amenities[indicador].push(feature);
  525.                             }
  526.                         }
  527.                     }
  528.                     forCycle(features,i+1);
  529.                     }
  530.                 });
  531.             };
  532.            
  533.  
  534.         }else{
  535.             callback(null,amenities);
  536.         }
  537.        
  538.        
  539.  
  540.  
  541.        
  542.  
  543.             }
  544.  
  545.             forCycle(features,0);
  546.            
  547.  
  548.  
  549.  
  550.            
  551.            
  552.  
  553.        
  554.  
  555.  
  556. });
  557. });
  558.  
  559.  
  560. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement