2010-11-08 3 views
5

तो यदि मेरे पास एक सामान्य जीपीएस लेट/एलएनजी बिंदु है, तो क्या यह कहना संभव होगा, हाँ यह बिंदु एक इमारत में है, या यह बिंदु एक सड़क पर है जिस पर एक कार यात्रा कर सकती है?Google मानचित्र में किसी सड़क से इमारत को अलग करने का कोई तरीका?

उत्तर

4

मुझे नहीं लगता कि आप यह निर्धारित कर सकते हैं कि कोई बिंदु सड़क या इमारत Google मानचित्र डेटा के साथ पूरी तरह से है या नहीं। ऐसा करने के लिए मुझे लगता है कि आपको कुछ अतिरिक्त डेटा स्रोत की आवश्यकता होगी।

हालांकि, आप यह निर्धारित करने में सक्षम हो सकते हैं कि Snap point to street तकनीक का उपयोग करके कोई बिंदु सड़क है या नहीं।

मैंने Google मानचित्र API v3 का उपयोग करने के लिए तकनीक को फिर से लिखा है और मूल क्लिक किए गए बिंदु और निकटतम सड़क के संबंधित बिंदु के बीच दूरी (किमी में) को बताने के लिए हावरसिन फ़ंक्शन जोड़ा है।

<!DOCTYPE html> 
<html> 
<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
<title>Google Maps JavaScript API v3 Example: Directions Simple</title> 
<link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css" rel="stylesheet" type="text/css" /> 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript"> 

rad = function(x) {return x*Math.PI/180;} 

distHaversine = function(p1, p2) { 
    var R = 6371; // earth's mean radius in km 
    var dLat = rad(p2.lat() - p1.lat()); 
    var dLong = rad(p2.lng() - p1.lng()); 

    var a = Math.sin(dLat/2) * Math.sin(dLat/2) + 
      Math.cos(rad(p1.lat())) * Math.cos(rad(p2.lat())) * Math.sin(dLong/2) * Math.sin(dLong/2); 
    var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
    var d = R * c; 

    return d.toFixed(3); 
} 

    var dirn = new google.maps.DirectionsService(); 
    var map; 

    function initialize() { 
    var center = new google.maps.LatLng(53.7877, -2.9832); 
    var myOptions = { 
     zoom:15, 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
     center: center 
    } 
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 

    google.maps.event.addListener(map, "click", function(event) { 
     // == When the user clicks on a the map, get directiobns from that point to itself == 
     var request = { 
      origin: event.latLng, 
      destination: event.latLng, 
      travelMode: google.maps.DirectionsTravelMode.DRIVING 
     }; 
     dirn.route(request, function(response, status) { 
      if (status == google.maps.DirectionsStatus.OK) { 
       if(response.routes && response.routes.length > 0){ 
        route = response.routes[0]; 
        if(route.overview_path && route.overview_path.length > 0){ 
         pos = route.overview_path[0]; 
         new google.maps.Marker({ 
           position: pos, 
           map: map 
         }); 
         alert(distHaversine(request.origin, pos)); 
        } 
       } 
      } 
     }); 
    }); 
    } 




</script> 
</head> 
<body onload="initialize()"> 
<div id="map_canvas"></div> 
</body> 
</html> 

मुझे आशा है कि यह सहायक होगा।

+0

मुझे लगता है कि यह निर्धारित करने के लिए इसका उपयोग किया जा सकता है कि कोई बिंदु सड़क से दूर है या नहीं। मैंने OpenStreetMap से जीपीएस अंक का एक टन आयात किया जो कि मैंने निर्दिष्ट एक खंड की सड़कों पर थे, लेकिन मुझे पता है कि पूरे संग्रह के खिलाफ एक बिंदु की जांच करना सबसे अच्छा तरीका नहीं होगा। – Stevus

2

पूछने के लिए सबसे अच्छी जगह https://gis.stackexchange.com/ है। क्या परत से सड़क के स्थान को समझना संभव नहीं है जिसमें सड़कों हैं? आपको सभी सड़क नोड्स का लेट-लांग दिया जाएगा। जब तक यह एक घुमावदार रेखा न हो, आप पाते हैं कि आपका अक्षांश बिंदु lies on the road line है या नहीं। lat-long to cartesian को परिवर्तित करने के लिए, लिंक का पालन करें।

+0

मैंने ऐसा कुछ किया है, लेकिन यह जीपीएस बिंदु दिए गए निकटतम सड़क खंड को निर्धारित करना है। मैं यह बताने का एक तरीका निर्धारित करने की कोशिश कर रहा हूं कि क्या एक कार सड़क से विचलित हो गई है और एक इमारत/परिदृश्य/किसी न किसी इलाके में मारा होगा। – Stevus

+0

AFAIK, इसे समझने का एकमात्र तरीका एक परत है जहां भवनों को इमारतों (या समान बाध्य वेक्टर) के रूप में चिह्नित किया जाता है। इलाके के लिए, नक्शे बाध्य वेक्टर प्रदान करते हैं जो समोच्चों और विभिन्न अन्य इलाके को दर्शाते हैं। यदि आप अपने काम को आउटसोर्स कर सकते हैं, तो आप ऑटोकैड (इस तरह के नक्शे कैसे बनाए जाते हैं) का उपयोग करके मैन्युअल रूप से परत बनाने और सभी इमारतों को चिह्नित करने के लिए प्राप्त कर सकते हैं या उन स्रोतों से मानचित्र या परत खरीद सकते हैं जिन्होंने पहले से ही इमारतों को चिह्नित किया है। – Nav

+0

कोई विचार जहां जीपीएस मानचित्र डेटा के सेट डाउनलोड/खरीदना है? मैं बहुत सारे OpenStreetMap का उपयोग करता हूं, लेकिन मुझे यह जानकर उत्सुकता है कि Google अपने मानचित्र दृश्य कैसे बना रहा है। उन्हें कहीं से भी अपना डेटा प्राप्त करना होगा। – Stevus

संबंधित मुद्दे

 संबंधित मुद्दे