Ríomh nó Ceistigh Fad Ciorcail Mór idir Pointí Domhanleithead agus Domhanfhad ag Úsáid Foirmle Haversine (shamplaí PHP, Python, MySQL, MSSQL)

Foirmle Haversine - Fad Ciorcal Mór - PHP, Python, MySQL

An mhí seo bhí mé ag clárú go leor i PHP agus MySQL maidir le GIS. Ag sní timpeall an líontáin, bhí am crua agam i ndáiríre ag fáil cuid de na Ríomhaireachtaí geografacha chun an fad idir dhá shuíomh a fháil agus mar sin theastaigh uaim iad a roinnt anseo.

Léarscáil Eitilte Eoraip le Fad Mór Ciorcail

Is é an bealach simplí chun fad idir dhá phointe a ríomh ná an fhoirmle Pythagorean a úsáid chun hipiteiripe triantáin a ríomh (A² + B² = C²). Tugtar an Fad Euclidean.

Tús suimiúil é sin ach ní bhaineann sé le Tíreolaíocht ós rud é go bhfuil an fad idir línte domhanleithead agus domhanfhad ní achair chomhionann óna chéile. De réir mar a théann tú níos gaire don mheánchiorcal, éiríonn línte domhanleithead níos faide óna chéile. Má úsáideann tú cothromóid triantánach shimplí de chineál éigin, féadfaidh sé an fad a thomhas go cruinn in aon áit amháin agus an-mícheart san áit eile, mar gheall ar chuaire an Domhain.

Fad Ciorcal Mór

Tugtar na bealaí a thaistealaítear achair fhada timpeall an Domhain Fad Ciorcal Mór. Is é sin ... tá an fad is giorra idir dhá phointe ar sféar difriúil ná na pointí ar léarscáil réidh. Déan é sin a chomhcheangal leis an bhfíric nach bhfuil na línte domhanleithead agus domhanfhad ar comhfhad ... agus tá ríomh deacair agat.

Seo míniú físe iontach ar an gcaoi a n-oibríonn Great Circles.

Foirmle Haversine

Tá an fad a úsáideann cuaire an Domhain ionchorpraithe sa Foirmle Haversine, a úsáideann triantánacht chun cuaire an domhain a cheadú. Nuair a bhíonn an fad idir 2 áit ar domhan á fháil agat (de réir mar a bhíonn an beanna ag eitilt), is líne dhíreach stua i ndáiríre.

Tá sé seo infheidhmithe maidir le heitilt aeir - ar fhéach tú riamh ar mhapa iarbhír na n-eitiltí agus ar thug tú faoi deara go bhfuil siad droimneach? Sin toisc go bhfuil sé níos giorra eitilt i áirse idir dhá phointe ná go díreach chuig an áit.

PHP: Ríomh an Fad idir 2 Phointe Domhanleithead agus Domhanfhad

Seo é an fhoirmle PHP chun an fad idir dhá phointe a ríomh (mar aon le tiontú Mile vs. Ciliméadar) slánaithe go dtí dhá ionad dheachúlacha.

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

Is iad na hathróga:

  • $Domhanleithead1 – athróg do dhomhanleithead do chéad suíomh.
  • $ domhanfhad 1 – athróg do dhomhanfhad do chéad suíomh
  • $Domhanleithead2 – athróg do dhomhanleithead do dhara suíomh.
  • $ domhanfhad 2 – athróg do dhomhanfhad do dhara suíomh.
  • $aonad – an réamhshocrú a bheith míle. Is féidir é seo a nuashonrú nó a rith mar ciliméadair.

Python: Ríomh an Fad idir 2 Pointe Domhanleithead agus Domhanfhad

Ar aon nós, seo é an fhoirmle Python chun an fad idir dhá phointe a ríomh (mar aon le tiontú Mile vs. Ciliméadar) arna shlánú go dtí dhá ionad dheachúlacha. Creidmheas do mo mhac, Bill Karr atá ina Eolaí Sonraí le haghaidh OpenINSIGHTS, don chód.

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)

Is iad na hathróga:

  • domhanleithead1 – athróg do do chéad láithreacha domhanleithead.
  • domhanfhad1 – athróg do do chéad láithreacha domhanfhad
  • domhanleithead2 – athróg do do dhara suímh domhanleithead.
  • domhanfhad2 – athróg do do dhara suímh domhanfhad.
  • aonad – an réamhshocrú a bheith míle. Is féidir é seo a nuashonrú nó a rith mar ciliméadair.

MySQL: Gach Taifead Laistigh de Raon A Aisghabháil Trí Fad Mílte a Ríomh Ag Úsáid Domhanleithead agus Domhanfhad

Is féidir freisin SQL a úsáid chun ríomh a dhéanamh chun na taifid go léir a fháil laistigh d’achar ar leith. Sa sampla seo, táim chun MyTable a cheistiú i MySQL chun na taifid go léir atá níos lú ná nó cothrom le fad athraitheach $ (i Míle) a fháil go dtí mo shuíomh ag $ domhanleithead agus $ domhanfhad:

An cheist maidir leis na taifid go léir a aisghabháil laistigh de shonra achar tríd an bhfad i mílte idir dhá phointe domhanleithead agus domhanfhad a ríomh tá:

$query = "SELECT *, (((acos(sin((".$latitude."*pi()/180)) * sin((`latitude`*pi()/180)) + cos((".$latitude."*pi()/180)) * cos((`latitude`*pi()/180)) * cos(((".$longitude."- `longitude`)*pi()/180)))) * 180/pi()) * 60 * 1.1515) as distance FROM `table` WHERE distance <= ".$distance."

Beidh ort é seo a shaincheapadh:

  • $ domhanfhad - athróg PHP é seo agus mé ag dul thar domhanfhad an phointe.
  • $ domhanleithead - athróg PHP é seo agus mé ag dul thar domhanfhad an phointe.
  • $ achar - is é seo an fad ar mhaith leat na taifid go léir a fháil níos lú nó cothrom leo.
  • tábla - seo an tábla ... beidh tú ag iarraidh d'ainm tábla a chur ina ionad.
  • domhanleithead - seo réimse do domhanleithead.
  • domhanfhad - seo réimse do dhomhanfhad.

MySQL: Gach Taifead Laistigh de Raon A Fháil Trí Fad i gCiliméadar a Ríomh Ag Úsáid Domhanleithead agus Domhanfhad

Agus seo an cheist SQL ag úsáid ciliméadar i MySQL:

$query = "SELECT *, (((acos(sin((".$latitude."*pi()/180)) * sin((`latitude`*pi()/180)) + cos((".$latitude."*pi()/180)) * cos((`latitude`*pi()/180)) * cos(((".$longitude."- `longitude`) * pi()/180)))) * 180/pi()) * 60 * 1.1515 * 1.609344) as distance FROM `table` WHERE distance <= ".$distance."

Beidh ort é seo a shaincheapadh:

  • $ domhanfhad - athróg PHP é seo agus mé ag dul thar domhanfhad an phointe.
  • $ domhanleithead - athróg PHP é seo agus mé ag dul thar domhanfhad an phointe.
  • $ achar - is é seo an fad ar mhaith leat na taifid go léir a fháil níos lú nó cothrom leo.
  • tábla - seo an tábla ... beidh tú ag iarraidh d'ainm tábla a chur ina ionad.
  • domhanleithead - seo réimse do domhanleithead.
  • domhanfhad - seo réimse do dhomhanfhad.

D'úsáid mé an cód seo in ardán mapála fiontar a d'úsáidamar le haghaidh siopa miondíola le níos mó ná 1,000 áit ar fud Mheiriceá Thuaidh agus d'oibrigh sé go hálainn.

Fad Geografach Microsoft SQL Server: STDistance

Má tá Microsoft SQL Server á úsáid agat, cuireann siad a bhfeidhm féin ar fáil, STDistance chun an fad idir dhá phointe a ríomh ag baint úsáide as an gcineál sonraí Tíreolaíochta.

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

Leid hata do Manash Sahoo, VP agus Ailtire de Highbridge.

77 Comments

  1. 1

    Go raibh míle maith agat as a roinnt. Ba phost éasca é seo a chóipeáil agus a ghreamú agus oibríonn sé go hiontach. Shábháil tú go leor ama dom.
    FYI do dhuine ar bith a sheolann chuig C:
    deg2rad dúbailte (deg dúbailte) { filleadh deg * (3.14159265358979323846/180.0); }

  2. 2

    Píosa postála an-deas – d’oibrigh sé an-deas – ní raibh orm ach ainm an bhoird a bhfuil an fad déanach a athrú. Oibríonn sé go tapa go leor chun .. Tá líon réasúnta beag de lat-longs (< 400) agam ach sílim go mbeadh sé seo scála nicely. Suíomh deas freisin - tá mé díreach tar éis é a chur le mo chuntas del.icio.us agus seiceálfaidh mé ar ais go rialta é.

  3. 4
  4. 5

    Chuardaigh mé an lá ar fad le haghaidh ríomhanna achair agus fuair mé an algartam harversine, a bhuíochas sin duit as an sampla a thabhairt ar conas é a chur i ráiteas sql. Go raibh maith agat agus beannacht, Daniel

  5. 8

    I mo thuairimse, do SQL gá a bhfuil ráiteas.
    in ionad WHERE distance <= $distance b'fhéidir go mbeadh ort
    úsáid achar HAVING <= $distance

    murach sin buíochas as ucht go leor ama agus fuinnimh a shábháil dom.

  6. 10
  7. 11
  8. 12

    Go raibh míle maith agat as an gcód seo a roinnt. Shábháil sé go leor ama forbartha dom. Chomh maith leis sin, buíochas le do léitheoirí as a chur in iúl go bhfuil gá le ráiteas TAR ÉIS do MySQL 5.x. An-chabhrach.

  9. 14
  10. 15

    Dia duit,

    Ceist eile. An bhfuil foirmle ann le haghaidh teaghráin NMEA cosúil leis an gceann thíos?

    1342.7500,N,10052.2287,E

    $GPRMC,032731.000,A,1342.7500,N,10052.2287,E,0.40,106.01,101106,,*0B

    Go raibh maith agat,
    Harry

  11. 16

    Fuair ​​​​mé amach freisin nach raibh WHERE ag obair dom. D'athraigh sé go HAVING agus oibríonn gach rud foirfe. Ar dtús níor léigh mé na tuairimí agus athscríobh mé é ag baint úsáide as rogha neadaithe. Oibreoidh an dá rud go breá.

  12. 17
  13. 18

    Iontach cabhrach, go raibh míle maith agat! Bhí roinnt fadhbanna agam leis an “HAVING” nua, seachas “ÁIT”, ach nuair a léigh mé na tuairimí anseo (tar éis thart ar leath uair an chloig de mo chuid fiacla a mheilt le frustrachas =P), d’oibrigh mé go deas é. Go raibh maith agat ^_^

  14. 19
  15. 20

    Coinnigh i gcuimhne go mbeidh ráiteas roghnaithe mar sin an-dian ar an ríomhaireacht agus dá bhrí sin mall. Má tá go leor de na ceisteanna sin agat, féadfaidh sé rudaí a laghdú go tapa.

    Cur chuige nach bhfuil chomh dian céanna is ea an chéad rogha (amh) a rith ag úsáid achar Cearnógach arna shainiú ag fad ríofa .i. “roghnaigh * ón ainm tábla áit a bhfuil domhanleithead idir lat1 agus lat2 agus domhanfhad idir lon1 agus lon2”. lat1 = spriocdhleithead – latdiff, lat2 = spriocdhleithead + ladiff, cosúil le lon. latdiff ~= fad / 111 (do km), nó fad/69 ar feadh míle ós rud é go bhfuil 1 chéim domhanleithead ~ 111 km (athrú beag toisc go bhfuil an domhan beagán ubhchruthach, ach is leor chun na críche sin). londain = achar / (abs(cos(deg2rad(domhanleithead))*111)) — nó 69 ar feadh míle (is féidir leat cearnóg atá beagán níos mó a ghlacadh chun athruithe a chur san áireamh). Ansin tóg an toradh air sin agus cuir isteach sa roghnú gathach é. Ná déan dearmad cuntas a thabhairt ar chomhordanáidí seach-theorainneacha – .i. is é -180 go +180 an raon domhanfhad inghlactha agus is é -90 go +90 an raon domhanleithead inghlactha — ar eagla go ritheann do ladiff nó londiff lasmuigh den raon seo. . Tabhair faoi deara go bhféadfadh sé nach mbeadh sé seo infheidhme i bhformhór na gcásanna toisc nach ndéanann sé difear ach do ríomhaireachtaí thar líne tríd an Aigéan Ciúin ó chuaille go cuaille, cé go dtrasnaíonn sé cuid de chukotka agus cuid de Alasca.

    Is é an rud a bhainimid amach leis seo ná laghdú suntasach ar líon na bpointí a ndéanann tú an ríomh seo ina n-aghaidh. Má tá milliún pointe domhanda sa bhunachar sonraí atá scaipthe go cothrom agus go dteastaíonn uait cuardach a dhéanamh laistigh de 100 km, ansin is é do chéad chuardach (tapa) ar achar 10000 km cearnach agus is dócha go bhfaighidh tú thart ar 20 toradh (bunaithe ar dháileadh cothrom thar achar 500 km cearnach). achar dromchla de thart ar 20M km cearnach), rud a chiallaíonn go ritheann tú an t-achar casta a ríomh XNUMX uair don cheist seo in ionad milliún uair.

    • 21

      Miondearmad sa sampla… a bheadh ​​taobh istigh de 50 km (ní 100) ós rud é go bhfuilimid ag féachaint ar “ga” ár… cearnach.

      • 22

        Comhairle iontach! D'oibrigh mé i ndáiríre le forbróir a scríobh feidhm a tharraing an chearnóg taobh istigh agus ansin feidhm athfhillteach a rinne 'cearnóga' timpeall an imlíne chun na pointí a bhí fágtha a áireamh agus a eisiamh. Toradh thar a bheith gasta a bhí ann – d’fhéadfadh sé na milliúin pointí a mheas i micrishoicindí.

        Is cinnte go bhfuil mo chur chuige thuas ‘amh’ ach cumasach. Go raibh maith agat arís!

        • 23

          Doug,

          Bhí mé ag iarraidh mysql agus php a úsáid chun a mheas an bhfuil pointe fada lat laistigh de pholagán. An bhfuil a fhios agat ar fhoilsigh do chara forbróra aon samplaí ar conas an tasc seo a chur i gcrích. Nó an bhfuil aon dea-shamplaí ar eolas agat. Go raibh maith agat roimh ré.

  16. 24

    Dia duit gach duine seo é mo ráiteas tástála 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

    agus tá Mysql ag insint dom an t-achar sin, níl sé ann mar cholún, is féidir liom ordú a úsáid, is féidir liom é a dhéanamh gan ÁIT, agus oibríonn sé, ach ní leis…

  17. 26

    Tá sé seo go hiontach, ach tá sé díreach mar a eitilt na héin. Bheadh ​​sé iontach iarracht a dhéanamh an API léarscáileanna google a ionchorprú leis seo ar bhealach éigin (b’fhéidir ag baint úsáide as bóithre srl.) Chun smaoineamh a thabhairt ag baint úsáide as cineál eile iompair. Tá feidhm análaithe insamhladh fós le déanamh agam i PHP a bheadh ​​in ann réiteach éifeachtach a thairiscint ar fhadhb an díoltóra taistil. Ach is dóigh liom go mb’fhéidir go mbeinn in ann cuid de do chód a athúsáid chun é sin a dhéanamh.

  18. 27
  19. 28

    Alt maith! Fuair ​​​​mé a lán alt ag cur síos ar conas an fad idir dhá phointe a ríomh ach bhí mé ag lorg an bhlúire SQL i ndáiríre.

  20. 29
  21. 30
  22. 31
  23. 32
  24. 36

    2 lá de thaighde chun teacht ar deireadh an leathanach seo a réitíonn mo fhadhb. Tá an chuma ar an scéal gur fearr liom mo WolframAlpha a scriosadh agus mo chuid matamaitice a fheabhsú. Tá mo script in ord oibre leis an athrú ó WHERE go HAVING. GO RAIBH MAITH AGAT

  25. 37
  26. 39

    Ba mhian liom gurbh é seo an chéad leathanach a d’aimsigh mé air seo. Tar éis go leor orduithe éagsúla a thriail ba é seo an t-aon cheann amháin a d’oibrigh i gceart, agus le mionathruithe is gá a d’oirfeadh do mo bhunachar sonraí féin.
    Go raibh maith agat a lán!

  27. 40

    Ba mhian liom gurbh é seo an chéad leathanach a d’aimsigh mé air seo. Tar éis go leor orduithe éagsúla a thriail ba é seo an t-aon cheann amháin a d’oibrigh i gceart, agus le mionathruithe is gá a d’oirfeadh do mo bhunachar sonraí féin.
    Go raibh maith agat a lán!

  28. 41
  29. 42
  30. 43
  31. 45
  32. 46
  33. 47

    Tá a fhios agam go n-oibríonn an fhoirmle seo, ach ní fheicim cá háit a gcuirtear ga an domhain san áireamh. An féidir le haon duine mé a shoiléiriú, le do thoil?

  34. 49
  35. 50
  36. 52

    Go raibh maith agat Douglas, is é an Ceist SQL go díreach a theastaigh uaim, agus shíl mé go mbeadh orm é a scríobh mé féin. Shábháil tú mé ó uaireanta b'fhéidir de chuar foghlama domhanleithead!

  37. 53
  38. 55
  39. 56

    Douglas, go raibh maith agat as an gcód iontach seo. Bhí mé ag cnagadh mo chloigeann maidir le conas é seo a dhéanamh ar mo thairseach pobail GPS. Tá tú tar éis uaireanta a shábháil dom.

  40. 58

    go raibh maith agat as an alt cabhrach seo a phostáil,  
    ach ar chúis éigin ba mhaith liom a iarraidh
    conas an fad idir na coords taobh istigh de mysql db agus na coords a chuir an t-úsáideoir isteach i php a fháil?
    le cur síos níos soiléire ar:
    Caithfidh 1.user [id] a chur isteach chun sonraí sonraithe a roghnú ó db agus ó chomhordaí an úsáideora féin
    2.an comhad php faigh na sonraí sprice (coords) ag úsáid [id] agus ansin ríomh an fad idir an t-úsáideoir agus an spriocphointe

    nó an féidir achar a fháil ón gcód thíos?

    $qry = “SELECT *,((acos(sin((“.$ domhanleithead."*pi()/180)) * sin((`Domhanleithead`*pi()/180))+cos(“. $ domhanleithead.”* pi()/180)) * cos((`Domhanleithead`*pi()/180)) * cos(((“.$ domhanfhad." - `domhanfhad`) *pi()/180) )))*180/pi())*60*1.1515*1.609344) mar achar Ó `MyTable` ÁIT achar >= ".$achar." >>>>an féidir liom “a thógáil amach” an t-achar uaidh seo?
    Go raibh maith agat arís,
    Timmy S

    • 59

      Ná miste, tá mé figiúr amach conas a oibríonn an “fheidhm” i php
      $dis=getDistanceBetweenPointsNew($userLati, $userLongi, $lati, $longi, $unit = 'Km')
      go raibh míle maith agat!! 

  41. 60

    ceart go leor, níl gach rud a rinne mé iarracht ag obair. Ciallaíonn mé, oibríonn an méid atá agam, ach tá na hachair i bhfad uainn.

    An bhféadfadh aon duine a fheiceáil cad atá cearr leis an gcód seo?

    if(isset($_POST['curtha isteach'])){ $z = $_POST['zipcode']; $r = $_POST['ga']; macalla “Torthaí le haghaidh “.$z; $sql = mysql_query(“SELECT DISTINCT m.zipcode, m.MktName,m.LocAddSt,m.LocAddCity,m.LocAddState,m.x1,m.y1,m.verified,z1.lat,z2.lon,z1. cathrach,z1.state Ó mrk m, zip z1, zip z2 ÁIT m.zipcode = z1.zipcode AGUS z2.zipcode = $z AGUS (3963 * acos( teasctha( sin( z2.lat / 57.2958 )) * pheaca( m. y1 / 57.2958 ) + cos( z2.lat / 57.2958 ) * cos( m.y1 / 57.2958 ) * cos( m.x1 / 57.2958 – z2.lon / 57.2958 ), 8 ) ) ) <= $r ") nó bás (mysql_error()); while($ row = mysql_fetch_array($sql )) { $store1 = $row['MktName'].""; $store = $row['LocAddSt'].””; $store .= $row['LocAddCity'].", ".$row['LocAddState']." “.$row['cód zip']; $latitude1 = $row['lat']; $longitude1 = $row['lon']; $latitude2 = $row[ 'y1']; $longitude2 = $row[ 'x1']; $city = $row['cathair']; $state = $row['state']; $dis = getnew($domhanleithead1, $longitude1, $domhanleithead2, $longitude2, $unit = 'Mi'); // $dis = achar($lat1, $lon1, $lat2, $lon2); $verified = $row['fíoraithe']; má tá($ fíoraithe == '1'){ macalla “”; macalla “”.$siopa.””; macalla $dis . “míle nó míle ar shiúl”; macalla “”; } eile { macalla “”.$store.””; macalla $dis . “míle nó míle ar shiúl”; macalla “”; } }}

    mo chód functions.php
    feidhm getnew($ domhanleithead1, $longitude1, $latitude2, $longitude2, $unit = 'Mi') { $theta = $longitude1 – $longitude2; $distance = (sin(deg2rad($ domhanleithead1)) * sin(deg2rad($ domhanleithead2))) + (cos(deg2rad($domhanleithead1)) * cos(deg2rad($domhanleithead2)) * cos(deg2rad($theta))) ); $distance = acos($distance); $distance = rad2deg($fad); $distance = $distance * 60 * 1.1515; lasc($unit) { cás 'Mi': briseadh; cás 'Km' : $distance = $distance * 1.609344; } tuairisceán (babhta($distance,2)); }

    Go raibh maith agat roimh ré

  42. 61
  43. 62

    Hey Douglas, alt iontach. Fuair ​​​​mé do mhíniú ar na coincheapa tíreolaíocha agus an cód thar a bheith suimiúil. An t-aon mholadh a bheadh ​​agam ná an cód a spásáil agus a fhleasc lena thaispeáint (cosúil le Stackoverflow, mar shampla). Tuigim go dteastaíonn uait spás a chaomhnú, ach d’fhágfadh gnáth-spásáil / eangú cód é i bhfad níos éasca domsa, mar ríomhchláraitheoir, é a léamh agus a dhíscriosadh. Ar aon nós, sin rud beag. Leanaigí ar aghaidh leis an obair iontach.

    • 63

      Go raibh maith agat! Tá an post athraithe agam beagán… ach tógann na cothromóidí an oiread sin spáis agus bíonn siad chomh fada sin nach bhfuilim cinnte go gcuidíonn sé an iomarca.

  44. 64
  45. 65

    anseo agus sinn ag úsáid le feidhm táimid ag fáil cineál amháin achair .. agus fiosrúchán á úsáid ag an gcineál fad eile atá ag teacht

  46. 66
  47. 67
  48. 68
  49. 69
  50. 70

    is cosúil go bhfuil sé níos tapúla (mysql 5.9) dhá oiread na foirmle a úsáid sa roghnú agus cén áit:
    $formula = “(((acos(peaca(“.$ domhanleithead."*pi()/180)) * sin((`Domhanleithead`*pi()/180))+cos((“.$domhanleithead. ” * pi()/180)) * cos((`Domhanleithead` * pi()/180)) * cos(((“. $ domhanfhad." - ` domhanfhad`) * pi()/180)))) *180/pi())*60*1.1515*1.609344)”;
    $sql = 'SELECT *, '.$formula.' mar achar Ó thábla ÁIT '..$formula.' <= '.$achar;

  51. 71
  52. 72

    Go raibh míle maith agat as an alt seo a lomadh. tá sé an-chabhrach.
    Cruthaíodh PHP ar dtús mar ardán scriptithe simplí ar a dtugtar “Leathanach Baile Pearsanta”. Sa lá atá inniu ann is rogha eile é PHP (an gearr le haghaidh Réamhphróiseálaí Hipirtéacs) ar theicneolaíocht Microsoft's Active Server Pages (ASP).

    Is teanga foinse oscailte ar thaobh an fhreastalaí é PHP a úsáidtear chun leathanaigh ghréasáin dhinimiciúla a chruthú. Is féidir é a neadú i HTML. Úsáidtear PHP de ghnáth i gcomhar le bunachar sonraí MySQL ar fhreastalaithe gréasáin Linux/UNIX. Is dócha gurb í an teanga scriptithe is coitianta í.

  53. 73

    Fuair ​​​​mé amach nach raibh an réiteach thuas ag obair i gceart.
    Caithfidh mé athrú go :

    $qqq = “SELECT *,((acos(peac((“.$ domhanleithead."*pi()/180)) * sin((`latt`*pi()/180))+cos((”. $ domhanleithead . “*pi()/180)) * cos((`latt`*pi()/180)) * cos(((” . $ domhanfhad . “ - `longt`)*pi()/180) )))*180/pi())*60*1.1515) mar achar Ó `clár` “;

  54. 75

    go raibh maith agat a dhuine uasail ag obair go foirfe.. ach tá ceist amháin agam más mian liom aschur gan pointe deachúil, cad is féidir liom a dhéanamh..?

    Go raibh maith agat roimh ré.

  55. 76

    Dia duit, le do thoil beidh do chabhair ag teastáil uaim i ndáiríre.

    Rinne mé iarratas faigh chuig mo fhreastalaí gréasáin http://localhost:8000/users/findusers/53.47792/-2.23389/20/
    53.47792 = $domhanleithead
    -2.23389 = $ domhanfhad
    agus 20 = an fad is mian liom a fháil

    Ach úsáid á baint agat as an bhfoirmle seo, aisghabhann sé gach sraith i mo db

    $results = DB::roghnaigh( DB::raw("SELECT*, ((acos(sin((“. $ domhanleithead."*pi()/180)) * sin((lat*pi()/180 )) + cos((“. $ domhanleithead.”* pi()/180)) * cos((lat* pi()/180)) * cos(((“.$ domhanfhad.”- lng)*pi( )/180))))*180/pi())*60*1.1515*1.609344) mar achar Ó mharcóirí ATÁ Achar >= “.$achar ));

    [{“id”:1, ”ainm”: ”Frankie Johnnie & Luigo Too”,”seoladh”: ”939 W El Camino Real, Mountain View, CA”,”lat”: 37.386337280273, ”lng”:-122.08582305908, “fad”: 16079.294719663},{“id”:2, “ainm”: “Amici’s East Coast Pizzeria”,”seoladh”:”790 Castro St, Mountain View, CA”,”lat”:37.387138366699, ”lng”: -122.08323669434, “fad”: 16079.175940152},{“id”:3, ”ainm”: “Kapp's Pizza Bar & Grill”,”seoladh”:”191 Castro St, Mountain View, CA”,,”lat”: 37.393886566162, “lng”:-122.07891845703, “fad”: 16078.381373826},{“id”:4, “ainm”:”Pizza Bord Babhta: Mountain View”, “seoladh”: ”570 N Shoreline Blvd, Mountain View, CA”, “lat”: 37.402652740479, “lng”:-122.07935333252, “fad”: 16077.420540582}, {“id”:5, ”ainm”: “Pizza & Pasta Tony & Alba”,”seoladh”:”619 Escuela Ave Amharc, CA ”,”lat”: 37.394012451172, ”lng”:-122.09552764893, “fad”: 16078.563225154}, {“id”: 6, ”ainm”: “Pizza Oregano's Wood-Fired”, “seoladh”:”4546:” El Camino Real, Los Altos, CA ”,”lat”: 37.401725769043, “lng”: -122.11464691162, “fad”: 16077.937560795},{" id”:7, “ainm”: “Na barraí agus na greillí”,”seoladh”:”24 Whiteley Street, Manchain”,”lat”: 53.485118865967,”lng”:-2.1828699111938, “fad”: 8038.7620112314}]

    Ba mhaith liom sraitheanna 20 míle a fháil ach tugann sé na sraitheanna go léir. Le do thoil cad tá mé ag déanamh mícheart

  56. 77

    Tá ceist chomhchosúil á lorg agam ach mhéadaigh mé beagán – i mbeagán focal is é seo na comhordanáidí go léir a ghrúpáil laistigh de 2 mhíle ó gach comhordanáid agus ansin líon na gcomhordanáidí i ngach grúpa a chomhaireamh agus gan ach grúpa amháin a bhfuil na comhordanáidí is mó acu a aschur – fiú má tá níos mó ná grúpa amháin agat i measc na ngrúpaí a bhfuil an líon is mó comhordanáidí acu – níl le déanamh ach an grúpa randamach a aschur ó na grúpaí leis an líon céanna is mó –

Cad é do bharúil?

Úsáideann an suíomh seo Akismet chun spam a laghdú. Foghlaim conas a dhéantar próiseáil ar do chuid tráchta.