2016-06-23 11 views
2

ich bin neu in gis. Ich arbeite in JavaScript.Wie berechnet man den Standort anders als die Entfernung

angenommen, es gibt Mitte latlong. Ein anderer Punkt ist das Ziel (latlong) in n Gehrern weit vom Zentrum entfernt. Wie berechnet man diesen Ortsunterschied (Mitte - latlong) von Mitte und n in Mitre.

Jungs bitte helfen Sie mir.

betrachten wir die Erde ist richtig sphärisch.

+0

Sind Sie fragen, wie die Länge eines "gerade" Linie auf die berechnen Oberfläche einer Kugel, basierend auf lat/long Koordinaten der Endpunkte? Haben Sie Probleme mit der entsprechenden mathematischen Formel oder nur mit dem JavaScript-Teil? – nnnnnn

+0

Welchen Code hast du bisher geschrieben? Auf welchem ​​Teil wirst du feststecken? Fügen Sie der Frage, die anzeigt, wo Sie ein Problem haben, ein Code-Snippet hinzu. –

+0

Funktionsabstand (lat1, lon1, lat2, lon2) { var radius = 6371e3; // Meter var dLon = gis.toRad (LON2 - LON1), LAT1 = gis.toRad (LAT1), LAT2 = gis.toRad (LAT2), Abstand = Math.acos (Math.sin (LAT1) * Math.sin (lat2) + Math.cos (lat1) * Math.cos (lat2) * Math.cos (dLon)) * radius; Rückweg; } oben JavaScript-Funktion ist für die Berechnung der Entfernung, Funktion (lat, long, Abstand) { – roconmachine

Antwort

1
function distance(lat1, lon1, lat2, lon2) { 
    var radius = 6371e3; // meters 
    var dLon = gis.toRad(lon2 - lon1), 
     lat1 = gis.toRad(lat1), 
     lat2 = gis.toRad(lat2), 
     distance = Math.acos(Math.sin(lat1) * Math.sin(lat2) + 
      Math.cos(lat1) * Math.cos(lat2) * Math.cos(dLon)) * radius; 
    return distance; 
    } 

über JavaScript-Funktion ist für die Berechnung der Entfernung,

function(lat, long, distance){ 
    //can i calculate lat_difference, long difference 
} 
+1

Soll das deine Frage beantworten oder erklären, was du fragst? Wenn Letzteres, bitte bearbeiten Sie Ihre Frage und fügen Sie die Details dort hinzu und löschen Sie dann diese Antwort. In Bezug auf Ihren "Kann ich berechnen" -Kommentar innerhalb der (sonst) leeren Funktion, wenn Sie einen anderen Lat/Long als Funktion * Output * möchten, müssen Sie die * Richtung * sowie die Entfernung angeben. – nnnnnn

+0

Täuschen Sie in Ihrer zweiten Funktion vor, um eine neue lat lange Koordinaten zu berechnen, geben Sie eine lat lange Mitte und nur die Entfernung? Wenn dies der Fall ist, müssen Sie den Azimut zwischen den beiden Punkten kennen. –

1

hier ist der Code: -

<script> 

Math.radians = function(degrees) { 
    return degrees * Math.PI/180; 
}; 


function calculateDistance(lat,lon,lat_center,lon_center){ 

var distance = (6371 * Math.acos(Math.cos(Math.radians(lat)) * Math.cos(Math.radians(lat_center)) 
         * Math.cos(Math.radians(lon_center) - Math.radians(lon)) + Math.sin(Math.radians(lat)) * Math.sin(Math.radians(lat_center))))*1000; 
console.log(distance+" meter"); 
return distance; 
} 


var lat = '38.898556'; 
var lon = '-77.037852'; 

var lat_center = '38.897147'; 
var lon_center = '-77.043934'; 

calculateDistance(lat,lon,lat_center,lon_center);//will return 549 meter 

//for getting lat and lon from a distance from a given point 

//lat1 = latitude of start point in degrees 

//long1 = longitude of start point in degrees 

//d = distance in KM 

//angle = bearing in degrees 

function get_gps_distance(lat1,long1,d,angle) 
{ 
    //# Earth Radious in KM 
    var R = 6378.14; 

    //# Degree to Radian 
    var latitude1 = lat1 * (Math.PI/180); 
    var longitude1 = long1 * (Math.PI/180); 
    brng = angle * (Math.PI/180); 

    latitude2 = Math.asin(Math.sin(latitude1)*Math.cos(d/R) + Math.cos(latitude1)*Math.sin(d/R)*Math.cos(brng)); 
    longitude2 = longitude1 + Math.atan2(Math.sin(brng)*Math.sin(d/R)*Math.cos(latitude1),Math.cos(d/R)-Math.sin(latitude1)*Math.sin(latitude2)); 

    // # back to degrees 
    latitude2 = latitude2 * (180/Math.PI); 
    longitude2 = longitude2 * (180/Math.PI); 

    // # 6 decimal for Leaflet and other system compatibility 
    lat2 = latitude2; 
    long2 =longitude2; 
var tab = {}; 
    // Push in array and get back 
    tab[0] = lat2; 
    tab[1] = long2; 
    return tab; 
} 

get_gps_distance('38.898556','-77.037852',.549,90); 

</script> 
+0

nach obigem Beispiel ich möchte lat, lon mit gegebenen lat_center, lon_center und entfernung berechnen – roconmachine

+0

du brauchst richtung dafür, weil es viele lat lange für diese entfernung von einem bestimmten punkt geben kann. –

+0

JA du bist richtig. Kann ich 4 Lat Lng für 4 Richtung bekommen? – roconmachine

Verwandte Themen