Tauhokohoko & WhakamatauCRM me nga Papa RaupatuUtauta hokohoko

Tatauhia, Uiui ranei te Tawhiti Porowhita Nui i waenga i nga Piro o te ahopae me te ahopou ma te whakamahi i te tauira Haversine (PHP, JavaScript, Java, Python, MySQL, MSSQL Tauira)

I tenei marama, kua whakamaori ahau ki te PHP me MySQL mo GIS. I a au e rangahau ana i te kaupapa, i uaua ahau ki te kimi tātai matawhenua ki te kimi i te tawhiti i waenga i nga waahi e rua, no reira i hiahia ahau ki te whakapuaki i a raatau ki konei.

Mahere Rererangi a Europi me te Porowhita Maama

Ko te huarahi ngawari ki te tatau i te tawhiti i waenga i nga tohu e rua, ko te whakamahi i te ture Pythagorean ki te tatau i te hypotenuse o te tapatoru (A + + B² = C²). E mohiotia ana tenei ko te Te tawhiti o Euclidean.

He timatanga pai tena, engari karekau e pa ki te matawhenua i te mea ko te tawhiti i waenga i nga rarangi ahopae me te ahopou he e kore e rite nga tawhitinga wehe. I a koe e tata atu ana ki te equator, ka wehe ke atu nga rarangi ahopae. Mēnā ka whakamahi koe i te whārite tapatoru māmā, tērā pea ka ine tika i te tawhiti ki tētahi wāhi, ā, ka hē ki tērā atu nā te kōpiko o Papatūānuku.

Tawhiti Porowhita Nui

Ko nga huarahi i haere i tawhiti huri noa i te Ao e mohiotia ana ko te Tawhiti Porowhita Nui. Ko… te tawhiti poto rawa i waenga i nga tohu e rua i runga i te porowhita he rereke ki nga tohu o te mapi papatahi. Whakakotahitia tena me te mea ko nga rarangi ahopae me nga raina ahopou kaore i te rite te tawhiti… he uaua hoki to tatauranga.

Anei tetahi whakamarama ataata pai mo te mahinga o nga Porowhita Nui.

Te Tātai Haversine

Ko te tawhiti e whakamahi ana i te kopiko o Papa kua whakauruhia ki roto i te tauira Haversine, e whakamahi ana i te pakoko kia taea ai te kopikopiko o Papa. Ina kitea e koe te tawhiti i waenga i nga waahi e 2 o te whenua (i te mea e rere ana te kakao), he tino pewa te raina tika.

E tika ana tenei mo te rerenga rererangi - kua titiro koe ki te mapi o nga rerenga rererangi ka kite koe kei te kikorangi? Ko te mea he poto ake te rere i roto i te kikorangi i waenga i nga waahi e rua i te tika ki te waahi.

PHP: Tatau Taa tawhiti I waenga i te 2 Tohu Latitude me te Longitude

Anei te tātai PHP mō te tātai i te tawhiti i waenga i ngā pūwāhi e rua (me te Maero ki te Kiromita te hurihanga) kua whakaawhiwhia ki te rua ira.

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)); 
}

Ko nga taurangi ko:

  • $Latitude1 – he taurangi mo te ahopae o to waahi tuatahi.
  • $Longitude1 – he taurangi mo te roa o to waahi tuatahi
  • $Latitude2 – he taurangi mo te ahopae tuarua o to waahi.
  • $Longitude2 – he taurangi mo te roa o to waahi tuarua.
  • $wae – te tangata taunoa kilomita. Ka taea te whakahou, te tuku ranei hei kiromita.

Java: Tātaihia te Tawhiti i waenga i nga Pira e 2 o te ahopae me te ahopou

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;
    }
}

Ko nga taurangi ko:

  • ahopae1 – he taurangi mo te ahopae o to waahi tuatahi.
  • ahopou1 – he taurangi mo te roa o to waahi tuatahi
  • ahopae2 – he taurangi mo te ahopae tuarua o to waahi.
  • ahopou2 – he taurangi mo te roa o to waahi tuarua.
  • kōwae – te tangata taunoa kilomita. Ka taea te whakahou, te tuku ranei hei kiromita.

JavaScript: Tatauhia te Tawhiti i waenganui i nga Pira 2 o te ahopae me te ahopou

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);
    }
}

Ko nga taurangi ko:

  • ahopae1 – he taurangi mo te ahopae o to waahi tuatahi.
  • ahopou1 – he taurangi mo te roa o to waahi tuatahi
  • ahopae2 – he taurangi mo te ahopae tuarua o to waahi.
  • ahopou2 – he taurangi mo te roa o to waahi tuarua.
  • kōwae – te tangata taunoa kilomita. Ka taea te whakahou, te tuku ranei hei kiromita.

Python: Tatauhia te Tawhiti i waenganui i nga Pira 2 o te ahopae me te ahopou

Anei te tātai Python mō te tātai i te tawhiti i waenga i ngā pūwāhi e rua (me te Maero ki te Kiromita te hurihanga) kua whakaawhiwhia ki te rua ira. He mihi ki taku tama, a Bill Karr, he Kairangataiao Raraunga mo OpenINSIGHTS, mo te waehere.

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)

Ko nga taurangi ko:

  • ahopae1 – he taurangi mo to waahi tuatahi Tuhinga.
  • ahopou1 – he taurangi mo to waahi tuatahi whakarihariha
  • ahopae2 – he taurangi mo to waahi tuarua Tuhinga.
  • ahopou2 – he taurangi mo to waahi tuarua whakarihariha.
  • kōwae – te tangata taunoa kilomita. Ka taea te whakahou, te tuku ranei hei kiromita.

MySQL: Te Tiki Rekooti Katoa I Roto I Te Awhe Ma te Tatau i te Tawhiti i Maero Ma te Whakamahi i te Latitu me te Longitude

Ko te whakamahi i nga Momo Raraunga Mokowā i MySQL he huarahi pai ake, he watea hoki ki te mahi me nga raraunga matawhenua, tae atu ki te tatau i nga tawhiti i waenga i nga tohu. Kei te tautoko a MySQL i nga Momo Raraunga Mokowhiti penei POINT, LINESTRING, a POLYGON, me nga mahi mokowā rite ST_Distance.

Ka whakamahi koe i te ST_Distance mahi i MySQL me nga raraunga matawhenua e tohuhia ana hei POINT taunga, ka whai whakaaro ki te kopikopiko o te mata o Papa. Ko te tauira porohita e whakamahia ana e ST_Distance ka whakamahi i te tauira Haversine. He pai tenei tata mo te nuinga o nga kaupapa mahi engari ka whakaurua etahi hapa iti mo nga tawhiti roa.

Anei me pehea e tatau ai koe i nga tawhiti i waenga i nga tohu e rua ma te whakamahi i nga Momo Raraunga Mokowā:

  1. Waihangahia he Ripanga me te Momo Raraunga Mokowā: Tuatahi, hanga he ripanga me te POINT tīwae hei rokiroki i ngā tohu matawhenua. Hei tauira:
CREATE TABLE locations (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    coordinates POINT
);

Whakauruhia o tohu matawhenua ki tenei ripanga ma te whakamahi i te POINT kaihanga:

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. Tātai Tawhiti Ma te ST_Tawhiti: Ka taea e koe te tatau i te tawhiti i waenga i nga tohu e rua ma te whakamahi i te ST_Distance mahi. Anei he tauira patai hei tatau i te tawhiti i waenga i nga tohu e rua:
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;

Whakakapi 1 a 2 me nga ID o nga tohu e rua e hiahia ana koe ki te tatau i te tawhiti i waenga.

  1. hua: Ka whakahokia e te patai te tawhiti i waenga i nga waahi e rua i te maero.

Te whakamahi Momo Raraunga Mokowā me te ST_Distance Ka whakaratohia e te mahi he huarahi pai ake me te tika ki te mahi me nga raraunga matawhenua i MySQL. Ka whakangwarihia hoki te tatau i nga tawhiti i waenga i nga tohu, ka ngawari ake te whakahaere me te uiui i o raraunga.

MySQL: Tiki Rekooti Katoa I Roto I Te Awhe Ma te Tatau i te Tawhiti i Kiromita Ma te Whakamahi i te Paepae me te Longitude

Na taunoa ST_Distance ka whakahoki i te tawhiti i roto i nga mita, no reira me whakahou noa te patai mo nga kiromita:

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;

Tawhiti Matawhenua Microsoft SQL Server: STDistance

Mena kei te whakamahi koe i te Microsoft SQL Server, ka tukuna e raatau a raatau ake mahi, STTawhiti mo te tatau i te tawhiti i waenga i nga tohu e rua ma te whakamahi i te momo raraunga 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);  

He pito potae ki a Manash Sahoo, te kaiwhakarewa me te kaihoahoa matua i Iona Tuatoru.

Douglas Karr

Douglas Karr he CMO o OpenINSIGHTS me te kaiwhakarewa o te Martech Zone. Kua awhina a Douglas i te tini o nga tiimatanga angitu a MarTech, kua awhina i te whakapau kaha ki te neke atu i te $5 piriona i roto i nga hokonga me nga haumitanga a Martech, me te awhina tonu i nga kamupene ki te whakatinana me te whakaaunoa i a raatau rautaki hoko me te hokohoko. Ko Douglas he huringa matihiko e mohiotia ana i te ao, he tohunga me te kaikorero a MarTech. Ko Douglas hoki te kaituhi i whakaputaina mo te aratohu a Dummie me te pukapuka kaiarahi pakihi.

Tefito pā

Hoki ki te pihi papa
Katia

Kua kitea te Adblock

Martech Zone Ka taea e ia te whakarato ki a koe i enei mea kaore he utu na te mea ka whakawhiwhihia e matou to maatau papaanga ma te whiwhinga moni panui, hononga hononga, me nga kaitautoko. Ka maioha matou ki te tangohia e koe to aukati panui i a koe e tiro ana i to maatau papaanga.