Suʻesuʻega & SuʻegaCRM ma Faʻamaumauga tulagaMeafaigaluega Maketiga

Fa'atatau pe Su'esu'e le Li'o Tele le Va o Fa'ailoga o le Latitu ma le Longitude Fa'aaogāina le Fua Fa'atatau Haversine (PHP, JavaScript, Java, Python, MySQL, MSSQL Fa'ata'ita'iga)

O le masina lenei, sa ou fa'apolokalameina ile PHP ma MySQL mo le GIS. A o ou suʻesuʻeina le autu, sa faigata ona ou mauaina fa'atatauga fa'afanua e suʻe le mamao i le va o nofoaga e lua, o lea na ou manaʻo ai e faʻasoa iinei.

Faʻafanua Faʻafanua Europe Ma Sili Liʻo Mamao

O le auala faigofie e faʻatatau ai se mamao i le va o ni itu se lua, o le faʻaaogaina lea o le Pythagorean form e fuafua ai le hypotenuse o se tafatolu (A + + B² = C²). O lenei ua taʻua o le Euclidean mamao.

Ose amataga manaia, ae e le fa'atatau ile fa'afanua talu ai o le mamao i le va o laina o le latitu ma le longitude e. e le tutusa le va. A'o e latalata atu i le ekueta, o laina o latitu e faasolo mamao atu. Afai e te fa'aogaina se fa'atusatusaga tafatolu faigofie, e mafai ona fua sa'o le mamao i le tasi nofoaga ae sese i le isi ona o le pi'o o le Lalolagi.

Mamao Liʻo Sili

O ala na uia mamao i le lalolagi e taʻua o le Great Circle Distance. O lona uiga… o le mamao pito sili ona puupuu i le va o togi e lua i luga o se polo e ese mai mata o se faafanua mafolafola. Fa'atasi ma le mea moni e le tutusa le mamao o laina latitu ma longitude… ma e faigata lau fa'atatauga.

Lenei o se manaia vitio faʻamatalaina pe faʻafefea ona galue le Great Circles.

Le Fuafua Haversine

O le mamao e faʻaaoga ai le curvature o le Lalolagi o loʻo tuʻufaʻatasia i le Haversine formula, lea e faʻaogaina ai le trigonometry e faʻatagaina ai le curvature o le Lalolagi. A e su'eina le mamao i le va o nofoaga e 2 i luga o le lalolagi (a'o lele le matuu), o le laina sa'o o le arc.

E fa'atatau lea i le va'alele - pe na e va'ava'ai i le fa'afanua moni o va'alele ma mātauina o lo'o faaofuofu? E mafua ona o le lele i se faaofuofu i le va o itu e lua e puupuu atu nai lo le tuusao i le nofoaga.

PHP: Fuafua le Mamao i le va o le 2 Manatu Latitu ma le Longitude

O le fua fa'atatau a le PHP mo le fa'atatauina o le mamao i le va o 'ai e lua (fa'atasi ai ma le Mile vs. Kilomita liliu) fa'ata'amilomilo ile lua tesimale.

function getDistanceBetweenPointsNew($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'miles') {
  $theta = $longitude1 - $longitude2; 
  $distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta))); 
  $distance = acos($distance); 
  $distance = rad2deg($distance); 
  $distance = $distance * 60 * 1.1515; 
  switch($unit) { 
    case 'miles': 
      break; 
    case 'kilometers' : 
      $distance = $distance * 1.609344; 
  } 
  return (round($distance,2)); 
}

O fesuiaiga o:

  • $Latitu1 – o se fesuiaiga mo le latitu o lou nofoaga muamua.
  • $ Longitude1 – se fesuiaiga mo lou tulaga muamua longitude
  • $Latitu2 – o se fesuiaiga mo le latitu lona lua nofoaga.
  • $ Longitude2 – se fesuiaiga mo lou tulaga lona lua longitude.
  • $iunite – o le tagata e le masani ai afe. E mafai ona fa'afouina pe pasia e pei o kilomita.

Java: Fa'atatau le mamao i le va o le 2 maka o le Latitu ma le Longitude

public static double getDistanceBetweenPointsNew(double latitude1, double longitude1, double latitude2, double longitude2, String unit) {
    double theta = longitude1 - longitude2;
    double distance = 60 * 1.1515 * (180/Math.PI) * Math.acos(
        Math.sin(latitude1 * (Math.PI/180)) * Math.sin(latitude2 * (Math.PI/180)) + 
        Math.cos(latitude1 * (Math.PI/180)) * Math.cos(latitude2 * (Math.PI/180)) * Math.cos(theta * (Math.PI/180))
    );
    if (unit.equals("miles")) {
        return Math.round(distance, 2);
    } else if (unit.equals("kilometers")) {
        return Math.round(distance * 1.609344, 2);
    } else {
        return 0;
    }
}

O fesuiaiga o:

  • latitu1 – o se fesuiaiga mo le latitu o lou nofoaga muamua.
  • longitude1 – se fesuiaiga mo lou tulaga muamua longitude
  • latitu2 – o se fesuiaiga mo le latitu lona lua nofoaga.
  • longitude2 – se fesuiaiga mo lou tulaga lona lua longitude.
  • iunite – o le tagata e le masani ai afe. E mafai ona fa'afouina pe pasia e pei o kilomita.

Javascript: Fa'atatau le mamao i le va o 2 mata o le Latitu ma le Longitude

function getDistanceBetweenPoints(latitude1, longitude1, latitude2, longitude2, unit = 'miles') {
    let theta = longitude1 - longitude2;
    let distance = 60 * 1.1515 * (180/Math.PI) * Math.acos(
        Math.sin(latitude1 * (Math.PI/180)) * Math.sin(latitude2 * (Math.PI/180)) + 
        Math.cos(latitude1 * (Math.PI/180)) * Math.cos(latitude2 * (Math.PI/180)) * Math.cos(theta * (Math.PI/180))
    );
    if (unit == 'miles') {
        return Math.round(distance, 2);
    } else if (unit == 'kilometers') {
        return Math.round(distance * 1.609344, 2);
    }
}

O fesuiaiga o:

  • latitu1 – o se fesuiaiga mo le latitu o lou nofoaga muamua.
  • longitude1 – se fesuiaiga mo lou tulaga muamua longitude
  • latitu2 – o se fesuiaiga mo le latitu lona lua nofoaga.
  • longitude2 – se fesuiaiga mo lou tulaga lona lua longitude.
  • iunite – o le tagata e le masani ai afe. E mafai ona fa'afouina pe pasia e pei o kilomita.

Python: Fa'atatau le mamao i le va o togi e 2 o le Latitu ma le Longitude

O le fua fa'atatau lea a le Python mo le fa'atatauina o le mamao i le va o 'ai se lua (fa'atasi ai ma le suiga o le Mile vs. Kilomita) fa'ata'amilomilo i nofoaga tesimale e lua. Fa'afetai i la'u tama, Bill Karr, o se Saienitisi Fa'amatalaga mo OpenINSIGHTS, mo le code.

from numpy import sin, cos, arccos, pi, round

def rad2deg(radians):
    degrees = radians * 180 / pi
    return degrees

def deg2rad(degrees):
    radians = degrees * pi / 180
    return radians

def getDistanceBetweenPointsNew(latitude1, longitude1, latitude2, longitude2, unit = 'miles'):
    
    theta = longitude1 - longitude2
    
    distance = 60 * 1.1515 * rad2deg(
        arccos(
            (sin(deg2rad(latitude1)) * sin(deg2rad(latitude2))) + 
            (cos(deg2rad(latitude1)) * cos(deg2rad(latitude2)) * cos(deg2rad(theta)))
        )
    )
    
    if unit == 'miles':
        return round(distance, 2)
    if unit == 'kilometers':
        return round(distance * 1.609344, 2)

O fesuiaiga o:

  • latitu1 – se fesuiaiga mo lou nofoaga muamua latitu.
  • longitude1 – se fesuiaiga mo lou nofoaga muamua longitude
  • latitu2 – se fesuiaiga mo lou nofoaga lona lua latitu.
  • longitude2 – se fesuiaiga mo lou nofoaga lona lua longitude.
  • iunite – o le tagata e le masani ai afe. E mafai ona fa'afouina pe pasia e pei o kilomita.

MySQL: Toe aumai uma fa'amaumauga i totonu o se va'aiga e ala i le fa'atatauina o le mamao i maila e fa'aaoga ai le Latitu ma le Longitude

O le faʻaaogaina o Faʻamatalaga Faʻafanua ile MySQL o se auala sili atu ona lelei ma faigofie e galue ai ma faʻamatalaga faʻafanua, e aofia ai le fuafuaina o mamao i le va o togi. E lagolagoina e MySQL Ituaiga Fa'amatalaga Fa'afanua e pei ole POINT, LINESTRING, ma POLYGON, fa'atasi ai ma galuega fa'apitoa fa'apitoa e pei o ST_Distance.

A e faʻaaogaina le ST_Distance galuega i MySQL ma faʻamatalaga faʻafanua faʻatusalia e pei o POINT fa'amaopoopo, e amana'ia le curvature o le fogāeleele. Le fa'ata'ita'iga lapotopoto fa'aaogaina e ST_Distance fa'aaogaina le fua fa'atatau Haversine. O lenei fa'atusatusaga e talafeagai mo le tele o fa'amoemoega fa'atino ae e ono fa'ailoa mai ai ni nai fa'aletonu mo mamao mamao.

O le auala lea e mafai ai ona e fa'atatauina le mamao i le va o itu e lua e fa'aaoga ai Ituaiga Fa'amatalaga Fa'afanua:

  1. Fausia se Laulau e iai Fa'amatalaga Fa'afanua: Muamua, fai se laulau ma a POINT koluma e teu ai vaega fa'afanua. Faataitaiga:
CREATE TABLE locations (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    coordinates POINT
);

Fa'aofi au vaega fa'afanua i totonu o le laulau lenei e fa'aaoga ai le POINT faufale:

INSERT INTO locations (name, coordinates)
VALUES
    ('Point A', POINT(40.7128, -74.0060)), -- New York City
    ('Point B', POINT(34.0522, -118.2437)); -- Los Angeles
  1. Fa'atatau le mamao e fa'aaoga ai le ST_Distance: E mafai ona e fuafuaina le mamao i le va o itu e lua e faʻaaoga ai le ST_Distance galuega faatino. Ole fa'ata'ita'iga lea ole fesili e fa'atatau le mamao ile va ole lua:
SELECT
    id1,
    id2,
    (ST_Distance(coordinates1, coordinates2) / 1609.344) AS distance_in_miles
FROM (
    SELECT
        l1.id AS id1,
        l2.id AS id2,
        l1.coordinates AS coordinates1,
        l2.coordinates AS coordinates2
    FROM
        locations l1,
        locations l2
    WHERE
        l1.id = 1 AND l2.id = 2
) AS distances;

Sui 1 ma 2 fa'atasi ai ma ID o togi e lua e te mana'o e fa'atatau le mamao i le va.

  1. iʻuga: O le fesili o le a toe faafoi le mamao i le va o itu e lua i maila.

Fa'aaogaina o Tulaga Fa'amatalaga Fa'afanua ma le ST_Distance galuega e maua ai se auala sili atu ona lelei ma saʻo e galue ai ma faʻamatalaga faʻafanua i MySQL. E fa'afaigofie ai fo'i le fa'atatauina o le mamao i le va o togi, ma fa'afaigofie ai ona pulea ma fesiligia au fa'amatalaga.

MySQL: Toe aumai uma fa'amaumauga i totonu o se va'aiga e ala ile fuaina o le mamao ile kilomita ile fa'aogaina o le Latitu ma le Longitude

E ala i le le mafai ST_Distance toe fa'afo'i le mamao i mita, o lea na'o lou mana'omia e fa'afou le fesili mo kilomita:

SELECT
    id1,
    id2,
    (ST_Distance(coordinates1, coordinates2) / 1000) AS distance_in_kilometers
FROM (
    SELECT
        l1.id AS id1,
        l2.id AS id2,
        l1.coordinates AS coordinates1,
        l2.coordinates AS coordinates2
    FROM
        locations l1,
        locations l2
    WHERE
        l1.id = 1 AND l2.id = 2
) AS distances;

Microsoft SQL Server Geographic Distance: STDistance

Afai o loʻo e faʻaogaina le Microsoft SQL Server, latou te ofoina atu a latou lava galuega, STMa mamao mo le fuafuaina o le mamao i le va o itu e lua e fa'aaoga ai le ituaiga fa'amaumauga o le Geography.

DECLARE @g geography;  
DECLARE @h geography;  
SET @g = geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326);  
SET @h = geography::STGeomFromText('POINT(-122.34900 47.65100)', 4326);  
SELECT @g.STDistance(@h);  

Tu'u pulou ia Manash Sahoo, na faavaeina ma tusiata sinia i Ion Tolu.

Douglas Karr

Douglas Karr o CMO o OpenINSIGHTS ma le na faavaeina le Martech Zone. Ua fesoasoani Douglas i le tele o amataga manuia o MarTech, ua fesoasoani i le filiga tatau o le sili atu i le $ 5 piliona i le mauaina o le Martech ma tupe teufaafaigaluega, ma o loʻo faʻaauau pea ona fesoasoani i kamupani i le faʻatinoina ma le otometi a latou faʻatauga ma maketi. Douglas ose suiga fa'atekinolosi fa'avaomalo fa'avaomalo ma MarTech fa'apitoa ma failauga. O Douglas foi o se tusitala lolomi o le Dummie's guide ma se tusi taʻitaʻi pisinisi.

Faatatau Mataupu Faavae o

Toe i le pito i luga
lata

Ua maua le Adblock

Martech Zone e mafai ona tu'uina atu ia te oe lenei 'anotusi e aunoa ma se tau aua matou te fa'atupeina la matou 'upega tafa'ilagi e ala i tupe maua fa'asalalauga, so'oga fa'atasi, ma lagolago. Matou te fa'afetai pe a e aveese lau fa'asalalauga fa'asalalau a'o e va'ai i la matou saite.