تحلیل او ازمونهCRM او د معلوماتو پلیټونهد بازار موندنې وسیلې

د Haversine فورمول (PHP، JavaScript، Java، Python، MySQL، MSSQL مثالونو) په کارولو سره د عرض البلد او عرض البلد نقطو ترمنځ د لوی دایرې فاصله محاسبه کړئ یا پوښتنه وکړئ

پدې میاشت کې ، زه یو څه لږ څه پروګرام کوم پی ایچ پی او مای لپاره GIS. د موضوع د څیړلو پرمهال، ما د ځینو موندلو سخت وخت درلود جغرافیه محاسبه د دې لپاره چې د دوو ځایونو ترمنځ فاصله ومومئ، نو ما غوښتل چې دلته یې شریک کړم.

د الوتنې نقشه اروپا د لوی سرکل واټن سره

د دوه ټکو ترمینځ د فاصلو محاسبه کولو ساده لاره د مثلث اټکل کولو محاسبه کولو لپاره د پایټاګورین فورمول کارول (A² + B² = C²). دا د د یوکلیډین فاصله.

دا یو په زړه پورې پیل دی، مګر دا په جغرافیه کې نه پلي کیږي ځکه چې د عرض البلد او عرض البلد کرښې ترمنځ فاصله ده. نه مساوي فاصلې جلا. لکه څنګه چې تاسو استوا ته نږدې کیږئ، د عرض البلد کرښې نور هم جلا کیږي. که تاسو د ساده مثلث مساوات وکاروئ، دا ممکن د ځمکې د منحل کیدو له امله په یو ځای کې دقیق او په بل ځای کې غلط فاصله اندازه کړي.

لوی سرکل واټن

هغه لارې چې د ځمکې شاوخوا اوږد واټن سفر کوي د لوی حلقې فاصلې په نوم پیژندل کیږي. دا په یوه کره کې د دوو نقطو تر منځ ترټولو لنډه فاصله د فلیټ نقشې له نقطو څخه توپیر لري. دا د دې حقیقت سره یوځای کړئ چې عرض البلد او عرض البلد کرښې مساوي ندي… او تاسو یو ستونزمن محاسبه لرئ.

دلته د عالي حلقو کار کولو څرنګوالي په زړه پورې ویډیو توضیحي ده.

د هیوریسین فورمول

هغه فاصله چې د ځمکې د منحل کولو په کارولو سره د هاورسین فارمول کې شامله شوې ده، کوم چې د ځمکې د منحل کیدو لپاره د مثلثاتو څخه کار اخلي. کله چې تاسو په ځمکه کې د 2 ځایونو ترمنځ فاصله ومومئ (لکه څنګه چې کاا پرواز کوي)، مستقیم کرښه په حقیقت کې یو قوس دی.

دا په هوایی الوتنو کې د تطبیق وړ دی - ایا تاسو کله هم د الوتنې ریښتینې نقشه لیدلې او لیدلي چې دوی آرشیف دي؟ دا ځکه چې د دوو نقطو ترمنځ په یوه محراب کې الوتنه د مستقیم موقعیت په پرتله لنډه ده.

پی ایچ پی: د عرض البلد او عرض البلد د 2 نقطو ترمنځ واټن محاسبه کړئ

دلته د دوو نقطو ترمنځ فاصله محاسبه کولو لپاره د PHP فورمول دی (د مایل په مقابل کې کیلومیټر تبادله سره) دوه لسیزو ځایونو ته ګرد شوی.

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

متغیرونه دا دي:

  • $Latitude1 - ستاسو د لومړي ځای عرض البلد لپاره یو متغیر.
  • $Longitude1 - ستاسو د لومړي ځای طول البلد لپاره یو متغیر
  • $Latitude2 - ستاسو د دوهم موقعیت عرض البلد لپاره یو متغیر.
  • $Longitude2 - ستاسو د دویم ځای د عرض البلد لپاره یو متغیر.
  • $یونټ - اصلي وجود ميلونه. دا کیدای شي تازه شي یا پاس شي کیلومتره.

جاوا: د عرض البلد او عرض البلد د 2 نقطو ترمنځ فاصله محاسبه کړئ

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

متغیرونه دا دي:

  • عرض البلد ۱ - ستاسو د لومړي ځای عرض البلد لپاره یو متغیر.
  • عرض البلد ۱ - ستاسو د لومړي ځای طول البلد لپاره یو متغیر
  • عرض البلد ۱ - ستاسو د دوهم موقعیت عرض البلد لپاره یو متغیر.
  • عرض البلد ۱ - ستاسو د دویم ځای د عرض البلد لپاره یو متغیر.
  • واحد - اصلي وجود ميلونه. دا کیدای شي تازه شي یا پاس شي کیلومتره.

جاواسکریپټ: د عرض البلد او عرض البلد د 2 نقطو ترمنځ فاصله محاسبه کړئ

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

متغیرونه دا دي:

  • عرض البلد ۱ - ستاسو د لومړي ځای عرض البلد لپاره یو متغیر.
  • عرض البلد ۱ - ستاسو د لومړي ځای طول البلد لپاره یو متغیر
  • عرض البلد ۱ - ستاسو د دوهم موقعیت عرض البلد لپاره یو متغیر.
  • عرض البلد ۱ - ستاسو د دویم ځای د عرض البلد لپاره یو متغیر.
  • واحد - اصلي وجود ميلونه. دا کیدای شي تازه شي یا پاس شي کیلومتره.

Python: د عرض البلد او عرض البلد د 2 نقطو ترمنځ فاصله محاسبه کړئ

دلته د دوو نقطو ترمنځ فاصله محاسبه کولو لپاره د Python فورمول دی (د مایل په مقابل کې کیلومیټر تبادله سره) د دوه لسیزو ځایونو ته ګرد شوی. زما زوی ، بل کار ته کریډیټ ، د ډیټا ساینس پوه لپاره OpenINSIGHTSد کوډ لپاره.

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)

متغیرونه دا دي:

  • عرض البلد ۱ - ستاسو د لومړي ځای لپاره یو متغیر طریقت.
  • عرض البلد ۱ - ستاسو د لومړي ځای لپاره یو متغیر عرض البلد
  • عرض البلد ۱ - ستاسو د دوهم ځای لپاره یو متغیر طریقت.
  • عرض البلد ۱ - ستاسو د دوهم ځای لپاره یو متغیر عرض البلد.
  • واحد - اصلي وجود ميلونه. دا کیدای شي تازه شي یا پاس شي کیلومتره.

MySQL: د عرض البلد او عرض البلد په کارولو سره په مایلونو کې د فاصلې محاسبه کولو سره د یوې لړۍ دننه ټول ریکارډونه ترلاسه کول

په MySQL کې د ځایي ډیټا ډولونو کارول د جغرافیایی ډیټا سره کار کولو لپاره خورا مؤثره او اسانه لاره ده ، پشمول د نقطو ترمینځ فاصله محاسبه کول. MySQL د ځایي ډیټا ډولونو ملاتړ کوي لکه POINT, LINESTRING، او POLYGONد ځایی دندو سره سره لکه ST_Distance.

کله چې تاسو وکاروئ ST_Distance په MySQL کې فعالیت د جغرافیایي معلوماتو سره چې په توګه یې استازیتوب کیږي POINT همغږي کوي، دا د ځمکې د سطحې curvature په پام کې نیسي. د کروی ماډل لخوا کارول کیږي ST_Distance د Haversine فورمول کاروي. دا اټکل د ډیری عملي موخو لپاره مناسب دی مګر ممکن د ډیرو اوږد واټنونو لپاره لږ غلطۍ معرفي کړي.

دلته دی چې تاسو څنګه کولی شئ د ځایی ډیټا ډولونو په کارولو سره د دوه ټکو ترمینځ فاصله محاسبه کړئ:

  1. د ځایی ډیټا ډول سره جدول جوړ کړئ: لومړی، د a سره یو میز جوړ کړئ POINT کالم د جغرافیایي نقطو ذخیره کولو لپاره. د مثال په ډول:
CREATE TABLE locations (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    coordinates POINT
);

خپل جغرافيايي ټکي په دې جدول کې دننه کړئ POINT جوړونکی:

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. د ST_Distance په کارولو سره فاصله محاسبه کړئ: تاسو کولی شئ په کارولو سره د دوو ټکو تر مینځ فاصله محاسبه کړئ ST_Distance فعالیت دلته د دوو ټکو تر منځ د واټن محاسبه کولو لپاره یوه بیلګه پوښتنه ده:
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;

بدل کړئ 1 او 2 د دوو نقطو IDs سره تاسو غواړئ تر مینځ فاصله محاسبه کړئ.

  1. د پايلو: پوښتنه به د دوو نقطو ترمنځ فاصله په میلونو کې بیرته راولي.

د ځایی ډیټا ډولونو کارول او د ST_Distance فنکشن په MySQL کې د جغرافیایي معلوماتو سره د کار کولو لپاره خورا اغیزمنه او سمه لار وړاندې کوي. دا د نقطو تر مینځ د فاصلو محاسبه هم اسانه کوي ، ستاسو د معلوماتو اداره کول او پوښتنې کول اسانه کوي.

MySQL: د عرض البلد او عرض البلد په کارولو سره په کیلو مترو کې د فاصلې محاسبه کولو سره د یوې لړۍ دننه ټول ریکارډونه ترلاسه کول

په تلواله ST_Distance فاصله په مترو کې بیرته راګرځوي، نو تاسو په ساده ډول د کیلو مترو لپاره پوښتنې تازه کولو ته اړتیا لرئ:

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;

د مایکروسافټ SQL سرور جغرافيائی فاصله: STD فاصله

که تاسو د مایکروسافټ SQL سرور کاروئ، دوی خپل فعالیت وړاندې کوي، STDance د جغرافیه ډیټا ډول په کارولو سره د دوه ټکو ترمینځ فاصله محاسبه کولو لپاره.

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

منش ساهو، VP او معمار ته د خولۍ لارښوونه Highbridge.

Douglas Karr

Douglas Karr د Martech Zone او د ډیجیټل بدلون په اړه پیژندل شوی ماهر. ډګلاس د مارټیک ډیری بریالي پیل پیل کولو کې مرسته کړې ، د مارټیک استملاک او پانګوونې کې یې د 5 ملیارد ډالرو څخه ډیر لګښت کې مرسته کړې ، او د خپل پلیټ فارمونو او خدماتو پیل کولو ته دوام ورکوي. هغه د یو شریک بنسټ ایښودونکی دی Highbridge، د ډیجیټل بدلون مشورتي شرکت. ډګلس د ډمي لارښود او د سوداګرۍ مشرتابه کتاب یو خپور شوی لیکوال هم دی.

اړونده بیشتر

78 ها

  1. د پوسټ کولو خورا ښکلې ټوټه - خورا ښه کار کاوه - ما یوازې د میز اوږد ځای ساتلو نوم بدل کړی و. دا کار خورا ګړندی کار کوي .. زه د لیت لینګز (<400) معقول حد اقل کوچنۍ شمیره لرم مګر زما په اند دا به په ښه توګه اندازه شي. ښه سایټ هم - ما دا یوازې زما په ډیل.آس.ای حساب کې اضافه کړی او په منظم ډول به یې وګورو.

  2. پورته فورمول زما ډیر وخت خوندي کوي. ډیره مننه له تاسو سره.
    زه باید د NMEA فارمیټ او درجو ترمینځ تیر کړم. ما د پاڼې په پای کې په دې URL کې یو فارمول وموندل. http://www.errorforum.com/knowledge-base/16273-converting-nmea-sentence-latitude-longitude-decimal-degrees.html

    ایا څوک پوهیږي چې دا څنګه تصدیق کړي؟

    مننه!
    هاري

  3. ما دا هم وموندله چې WHERE زما لپاره کار نه دی کړی. په HAVING کې یې بدل کړ او هرڅه سم کار کوي. په لومړي سر کې ما نظرونه ونه لوستل او د ځړول شوي انتخاب په کارولو سره یې بیا لیکل. دواړه به سم کار وکړي.

  4. په یاد ولرئ چې د دې په څیر یو غوره بیان به خورا په کمپیوټري لحاظ شدید وي او له همدې امله به ورو وي. که تاسو د دې پوښتنو ډیری لرئ ، نو دا کولی شي شیان په چټکۍ سره راټیټ کړي.

    یو ډیر لږ شدید چلند د محاسبې فاصلې لخوا تعریف شوی د مربع ساحې په کارولو سره د لومړي (کروډ) انتخاب چلول دي لکه "د میز له نوم څخه * انتخاب کړئ چیرې چې عرض البلد د lat1 او lat2 تر منځ او عرض البلد د 1 او lon2 ترمنځ وي". lat1 = هدف عرض البلد – latdiff، lat2 = targetlatitude + latdiff، د لون سره ورته. latdiff ~= فاصله / 111 (کیلومتره لپاره)، یا فاصله/69 د میلونو لپاره د 1 درجې عرض البلد څخه ~ 111 کیلومتره ده (لږ توپیر ځکه چې ځمکه یو څه بیضوي ده، مګر د دې هدف لپاره کافي ده). londiff = فاصله / (abs(cos(deg2rad(latitude))*111)) - یا 69 د مایل لپاره (تاسو کولی شئ په حقیقت کې د بدلونونو حساب کولو لپاره یو څه لوی مربع واخلئ). بیا د هغې پایله واخلئ او په ریډیل انتخاب کې یې تغذیه کړئ. یوازې د حد څخه بهر همغږي حساب کول مه هیروئ - د بیلګې په توګه د منلو وړ عرض البلد سلسله -180 څخه +180 او د منلو وړ عرض البلد حد -90 څخه +90 دی - په هغه صورت کې چې ستاسو latdiff یا londiff د دې حد څخه بهر تیریږي. . په یاد ولرئ چې په ډیری حاالتو کې دا ممکن د تطبیق وړ نه وي ځکه چې دا یوازې د قطب څخه قطب ته د آرام سمندر له لارې د یوې کرښې په محاسبه اغیزه کوي، که څه هم دا د چکوتکا یوه برخه او د الاسکا برخه سره نښلوي.

    هغه څه چې موږ یې په واسطه ترسره کوو د هغه ټکو په شمیر کې د پام وړ کموالی دی چې مقابل کې یې تاسو محاسبه کوئ. که تاسو په ډیټابیس کې یو ملیون نړیوال ټکي لرئ په مساوي ډول توزیع شوي او تاسو غواړئ په 100 کیلو میتر کې دننه لټون وکړئ ، نو ستاسو لومړی (ګړندی) لټون د 10000 مربع کیلومتره ساحه کې دی او شاید نږدې 20 پایلې ترلاسه کړي (حتی د توزیع پر بنسټ به د یو د شاوخوا 500M مربع کیلومتره ساحه ساحه) ، پدې معنی چې تاسو د دې پوښتنې لپاره د یو ملیون ځلو پرځای 20 ځله پیچلي فاصله محاسبه کوئ.

      1. په زړه پوری مشوره! ما واقعیا د یو پرمخ وړونکي سره کار کړی چې یو فنکشن یې لیکلی چې دننه مربع راښکته کوي او بیا یو تکراري فنکشن چې د احاطې شاوخوا 'مربع' رامینځته کوي ترڅو پاتې ټکي شامل او خارج کړي. پایله یوه په زړه پورې ګړندۍ پایله وه - هغه کولی شي په مایکرو ثانیو کې ملیونونه ټکي ارزونه وکړي.

        زما پورته طریقه خامخا خامه ده مګر وړ ده. مننه یوځل بیا!

        1. ډګ ،

          زه هڅه کوم چې د mysql او php وکاروم ترڅو دا ارزونه وکړم چې ایا د لیټ اوږد ټکی په پولیګون کې دی. ایا تاسو پوهیږئ که ستاسو پراختیا کونکي ملګري د دې دندې سرته رسولو څرنګوالي په اړه کوم مثالونه خپاره کړي. یا تاسو کوم ښه مثالونه پیژنئ. مخکې له مخکې مننه.

  5. ټولو ته سلام دا زما د ازموینې SQL بیان دی:

    SELECT DISTINCT area_id, (
    (
    (
    acos( sin( ( 13.65 * pi( ) /180 ) ) * sin( (
    `lat_dec` * pi( ) /180 ) ) + cos( ( 13.65 * pi( ) /180 ) ) * cos( (
    `lat_dec` * pi( ) /180 )
    ) * cos( (
    ( 51.02 - `lon_dec` ) * pi( ) /180 )
    )
    )
    ) *180 / pi( )
    ) *60 * 1.1515 * 1.609344
    ) AS distance
    FROM `post_codes` WHERE distance <= 50

    او مایسوکل ما ته وویل چې فاصله ، د کالم په توګه شتون نلري ، زه د دې له لارې امر کارولی شم ، زه دا د هرڅه پرته کولی شم ، او دا کار کوي ، مګر دا ورسره نه…

  6. دا عالي دی ، په هرصورت دا ورته دی لکه مرغۍ چې الوتنه کوي. دا به ښه وي چې هڅه وکړئ او پدې کې د google نقشې API شامل کړئ (ممکن د سړکونو کارول وغيره) یوازې د ټرانسپورټ مختلف ډوله کارولو سره نظر ورکړئ. زه لاهم لاهم په پی ایچ پی کې د انیلینګ انلاین کولو فعالیت ترسره کوم چې به د دې وړ وي چې د سفر پلورونکي ستونزې ستونزې مؤثره حل وړاندې کړي. مګر زه فکر کوم چې ممکن زه ستاسو د کوډ ځینې بیا د دې کولو لپاره وکاروم.

  7. په پای کې د دې پا findې موندلو لپاره 2 ورځې څیړنه چې زما ستونزه حل کوي. داسې ښکاري چې زه زما د وولفرما الفا غوره ټوټه ټوټه کوم او زما په ریاضیاتو کې برش کول. له WHERE څخه HAVING ته بدلون زما په کاري ترتیب کې سکریپټ لري. له تاسو مننه

  8. کاش چې دا لومړی پا wasه وه چې ما پدې کې وموندله. د ډیری بیلابیل قوماندې هڅه کولو وروسته دا یوازینی یو و چې سم کار یې وکړ ، او زما د ډیټابیس فټ کولو لپاره لږترلږه بدلونونو سره اړین و.
    ډیره مننه!

  9. کاش چې دا لومړی پا wasه وه چې ما پدې کې وموندله. د ډیری بیلابیل قوماندې هڅه کولو وروسته دا یوازینی یو و چې سم کار یې وکړ ، او زما د ډیټابیس فټ کولو لپاره لږترلږه بدلونونو سره اړین و.
    ډیره مننه!

  10. د دې ګټورې مقالې پوسټ کولو لپاره مننه ،  
    مګر د یو دلیل لپاره زه غواړم پوښتنه وکړم
    څنګه د mysql db دننه د کورډرونو تر مینځ فاصله ترلاسه کړئ او د کارونکي لخوا پی ایچ پی ته داخل شوي کوارډونو ته؟
    د لا روښانه وضاحت لپاره:
    1. کارونکي باید د ډی بی او د کارونکي پخپلو کورډونو څخه مشخص شوي ډاټا غوره کولو لپاره [id] داخل کړي
    2. د پی ایچ پی فایل د [ID] په کارولو سره د هدف ډاټا (کورډونه) ترلاسه کوي او بیا د کارونکي او هدف ځای ترمنځ فاصله محاسبه کوي

    یا یوازې د لاندې کوډ څخه فاصله ترلاسه کولی شئ؟

    $ قری = "انتخاب * ، ((اکووس (ګناه ((... د عرض البلد." * pi () / 180))) ګناه ((`عرض البلد * pi () / 180)) + کوس ((" $ عرض البلد. "* pi () / 180)) * کاس ((` عرض البلد * pi () / 180)) * کاس (((“. $ देशांतर.” - `देशांतर)) * pi () / 180) ))) * 180 / pi ()) * 60 * 1.1515 * 1.609344) لکه د فاصلې څخه `MyTable` چیرې فاصله> =". $ فاصله. " >>>> ایا زه کولی شم له دې ځای څخه فاصله واخلم؟
    مننه یوځل بیا،
    ټیمي ایس

  11. سمه ده ، هرڅه چې ما هڅه کړي کار نه کوي. زما مطلب دی ، هغه څه چې زه کار لرم ، مګر لیرې پرتې دي.

    ایا یو څوک ممکن وکتل شي چې پدې کوډ کې څه غلط دي؟

    که (isset ($ _ پوسټ ['وسپارل شو'])) {$ z = $ _POST ['زپ کوډ']؛ $ r = $ _POST ['رادېس']؛ د ". $ z" لپاره پایلې $ sql = mysql_query ("د DISTINCT m.zipcode ، m.MktName ، m.LocAddSt ، m.LocAddCity ، m.LocAddState ، m.x1 ، m.y1 ، m.verified ، z1.lat ، z2.lon ، z1 غوره کړئ.) ښار ، z1.state له FrM mrk m ، zip z1 ، zip z2 WHME WH.E zipcode = z1.zipcode او z2.zipcode = $ z AND (3963 * acos (ټرنکیټ (z2.lat / 57.2958)) ګناه (م. y1 / 57.2958) + کاس (z2.lat / 57.2958) * کاس (m.y1 / 57.2958) * کاس (m.x1 / 57.2958 - z2.lon / 57.2958)، 8)) <= $ r ") یا مړ (mysql_error ()) while پداسې حال کې چې ($ قطار = mysql_fetch_array ($ sql)) {$ store1 = $ قطار ['MktName']. ""؛ $ پلورنځی = $ قطار ['LocAddSt']. ""؛ $ پلورنځی. ". $ قطار ['زپ کوډ']؛ $ عرض البلد = $ قطار ['لیټ']؛ $ طول البلد = $ قطار ['اوږد']؛ $ عرض البلد = $ قطار ['y1']؛ $ طول البلد 1 = $ قطار ['x2']؛ $ ښار = $ قطار ['ښار']؛ $ حالت = $ قطار ['حالت']؛ $ dis = getnew ($ عرض البلد 1، $ طول البلد 2، $ عرض البلد 1، $ طول البلد 1، $ واحد = 'Mi')؛ // $ ډیس = فاصله ($ لیټ 1 ، $ لون 2 ، $ لیټ 2 ، $ لون 1)؛ $ تایید شوی = $ قطار ['تصدیق شوی']؛ که ($ تایید شوی == '1') cho ایکو ""؛ د "". $ پلورنځی. "" د نانوايي "میل (s) لرې"؛ ګونګه ""؛ } بل {ګونګه "". $ پلورنځی. ""؛ د نانوايي "میل (s) لرې"؛ ګونګه ""؛ }}}

    زما د فن.پی پی پی کوډ
    فعالیت getnew ($ عرض البلد 1،، عرض البلد 1، $ عرض البلد 2، $ عرض البلد 2، $ واحد = 'Mi') {ta theta = $ عرض البلد 1 - itude طول البلد 2؛ $ فاصله = (ګناه (deg2rad ($ عرض البلد 1)) * ګناه (deg2rad ($ عرض البلد 2)) + + کاس (deg2rad ($ عرض البلد 1)) * کاس (deg2rad ($ عرض البلد 2)) کاس (deg2rad (ta theta)) )؛ $ فاصله = اکسوس ($ فاصله)؛ $ فاصله = Rad2deg ($ فاصله)؛ $ فاصله = $ فاصله * 60 * 1.1515؛ سویچ ($ واحد) {قضیه 'Mi': وقفه؛ قضیه 'کلومیټر': $ فاصله = $ فاصله * 1.609344؛ } راستنول (ګرد ((فاصله ،)))؛ }

    له تاسو څخه مننه

  12. اې دوګلاس ، عالي مقاله. ما ستاسو د جغرافیائی تصوراتو وضاحت او د کوډ واقعیا په زړه پوری وموند. زما یوازینۍ وړاندیز به ځای ته وي او د ښودنې لپاره کوډ داخلول (لکه د مثال په توګه سټیک اوفلو). زه پوهیږم چې تاسو د ځای محافظت کول غواړئ ، مګر د دودیز کوډ فاصله / انډینټینشن به دا زما لپاره خورا اسانه کړي ، د یو برنامه په توګه ، لوستل او تحلیل. په هرصورت ، دا یو کوچنی شی دی. لوی کار ته دوام ورکړئ.

  13. دا په ګړندۍ بریښي (mysql 5.9) په انتخاب کې د دوه ځله فارمول کارولو لپاره او چیرې:
    $ فورمول = "(((اکووس (ګناه ((... अक्षांश." * pi () / 180)) * ګناه ((`عرض البلد * pi () / 180)) + کوس ((". $ عرض البلد. " "* pi () / 180)) * کاس ((` عرض البلد * pi () / 180)) * کوس (((“. $ देशांतर.” - `देशांतर) * pi () / 180)))) * 180 / pi ()) * 60 * 1.1515 * 1.609344) "؛
    $ sql = 'انتخاب * ،'. $ فورمول. ' لکه څنګه چې د فاصلې څخه د میز فاصله '..' فورمول. ' <= '. $ واټن؛

  14. د دې مقالې د ویښتو لپاره ډیره مننه. دا خورا ګټور دی.
    پی ایچ پی لومړی په لومړي سر کې د ساده سکریپټ کولو پلیټ فارم په توګه رامینځته شوی و چې "شخصي کور پا ”ه" نومیږي. نن ورځ پی ایچ پی (د هایپرټیکټ پریس پروسیسر لپاره لنډ) د مایکروسافټ د فعال سرور پا Pagesو (ASP) ټیکنالوژۍ بدیل دی.

    پی ایچ پی د خلاص سرچینې سرور اړخ ژبه ده چې د متحرک ویب پا pagesو رامینځته کولو لپاره کارول کیږي. دا په HTML کې ځای کیدلی شي. پی ایچ پی معمولا د لینکس / UNIX ویب سرورونو کې د مای ایس کیو ایل ډیټابیس سره په ترکیب کې کارول کیږي. دا شاید د سکریپینګ ترټولو مشهوره ژبه وي.

  15. ما پورته حل وموند چې سم کار نه کوي.
    زه اړتیا لرم چې لاندې ته بدلون ورکړم:

    $ کیوق = "انتخاب * ، (((اکسوس (ګناه ((.... अक्षांश." * pi () / 180)))) ګناه ((`لاټ` * pi () / 180)) + کاس ((". $ عرض البلد. "* pi () / 180)) * کوس ((` لاټي * pi () / 180)) * کاس (((". $ देशांतर." - `longt`) * pi () / 180) ))) * 180 / pi ()) * 60 * 1.1515) لکه د FROM څخه ثبت `ثبت کړئ`؛

  16. سلام ، مهرباني وکړئ زه به پدې برخه کې واقعیا ستاسو مرستې ته اړتیا ولرم.

    ما خپل ویب سرور ته د ترلاسه کولو غوښتنه وکړه
    53.47792 = itude عرض البلد
    -2.23389 = itude طول عرض
    او 20 = هغه فاصله چې زه یې غواړم بیرته ترلاسه کړم

    په هرصورت تاسو د فارمول په کارولو سره ، دا زما په ډی بی کې ټولې قطارونه راوباسي

    $ پایلې = DB:: انتخاب( DB::raw("SELECT *، (((acos(sin((".$ latitude))pi()/180)) * ګناه((latpi()/180))+cos((".$ عرض البلد."pi()/180)) * cos((latpi()/180)) * cos(((".$ عرض البلد."- lng)pi()/180))))180/pi())601.1515*1.609344) د فاصلې په توګه له مارکرونو څخه فاصله لري >= “.$ فاصله));

    [{"id": 1 ، "نوم": "فرینکي جاني او Luigo Too" ، "پته": "939 W ال کیمینو رییل ، ​​د غره لید ، CA" ، "لیټ": 37.386337280273 ، "lng": - 122.08582305908 ، "فاصله": 16079.294719663} ، {"id": 2 ، "نوم": "د امیسي ختیځ ساحل پیزریا" ، "پته": "790 کاسټرو سټ ، ماونټین ویو ، CA" ، "لیټ": 37.387138366699 ، "لینګ": -122.08323669434 ، "فاصله": 16079.175940152} ، {"id": 3 ، "نوم": "کاپز پیزا بار او گرل" ، "پته": "191 کاسټرو سټ ، ماونټین ویو ، CA" ، "لیټ": 37.393886566162 ، "lng": - 122.07891845703 ، "فاصله": 16078.381373826} ، {"id": 4 ، "نوم": "ګردي میز پیزا: د غره لید" ، "پته": "570 N Shoreline Blvd ، د ماین لید ، CA" ، "لیټ": 37.402652740479 ، "lng": - 122.07935333252 ، "فاصله": 16077.420540582} ، {"id": 5 ، "نوم": "ټوني او البا پیزا او پاستا" ، "پته": "619 یسکیلا اوی ، غر وګورئ ، CA "،" لات ": 37.394012451172 ،" lng ": - 122.09552764893 ،" فاصله ": 16078.563225154} ، {" id ": 6 ،" نوم ":" اوریګانو د لرګي رنګه پیزا "،" پته ":" 4546 ایل کیمینو ریال ، لاس آلټوس ، سي ای "،" لات ": 37.401725769043 ،" لینګ ": - 122.11464691162 ،" فاصله ": 16077.937560795} ، {" id ": 7 ،" نوم ":" بارونه او گرزونه "،" پته ":" 24 واټلی سړک ، مانچسټر "،" لات ": 53.485118865967 ،" لینګ ": - 2.1828699111938 ،" فاصله ": 8038.7620112314}]

    زه غواړم یوازې د 20 مایلونو سره قطارونه ترلاسه کړم مګر دا ټول قطارونه راوړي. مهرباني وکړئ زه څه کوم

  17. زه د ورته پوښتنې په لټه کې یم مګر یو څه ګړندی شوی یم - په لنډه توګه دا د هر همغږۍ په 2 مایل کې ټول همغږي ګروپ کول دي او بیا محاسبه کړئ چې په هر ګروپ کې څومره همغږي او یوازې یوه ډله تولید کړئ چې خورا همغږي لري - حتی که تاسو د ډلو ترمینځ له یوې څخه ډیرې ډلې لرئ چې ډیری همغږي لري - په ساده ډول د ورته لوی شمیر سره ګروپونو څخه تصادفي ډله تولید کړئ -

ته څه فکر کوی؟

دا سایټ د سپیم کمولو لپاره Akismet کاروي. زده کړئ چې ستاسو د تبصرې ډاټا پراساس پروسس کیږي.

نژدې

اډ بلاک کشف شو

Martech Zone د دې وړتیا لري چې تاسو ته دا مینځپانګه په هیڅ لګښت چمتو کړي ځکه چې موږ د اعلاناتو عاید ، وابسته لینکونو ، او سپانسرشپونو له لارې زموږ سایټ منیټ کوو. موږ به ستاینه وکړو که تاسو زموږ د سایټ لیدو سره سم خپل د اعلاناتو بلاکر لرې کړئ.