Kule nyanga bengihlela kancane ku-PHP naku-MySQL maqondana ne-GIS. Ngisnokosa inetha, empeleni ngibe nobunzima bokuthola ezinye ze- Izibalo ze-Geographic ukuthola ibanga eliphakathi kwezindawo ezimbili ngakho-ke bengifuna ukuwabelana lapha.

Indlela elula yokubala ibanga phakathi kwamaphoyinti amabili usebenzisa ifomula yePythagorean ukubala i-hypotenuse kanxantathu (A² + B² = C²). Lokhu kwaziwa njenge Ibanga le-Euclidean.
Lokho kuyisiqalo esithandekayo kepha akusebenzi ngeJografi ngoba ibanga phakathi kwemigqa yobude nobude amabanga alinganayo ngaphandle. Njengoba usondela enkabazwe, imigqa yobubanzi iya ngokuya ngokuhlukana. Uma usebenzisa uhlobo oluthile lwesibalo esingunxantathu esilula, lingalinganisa ibanga ngokunembile endaweni eyodwa futhi libi kabi kwenye, ngenxa yokugobeka koMhlaba.
Ibanga Lomjikelezo Omkhulu
Imizila ehanjwa amabanga amade emhlabeni wonke yaziwa ngokuthi yi- Ibanga Lomjikelezo Omkhulu. Okungukuthi… ibanga elifushane kakhulu phakathi kwamaphoyinti amabili endaweni lihlukile kunamaphuzu akumephu eyisicaba. Hlanganisa lokho neqiniso lokuthi imigqa ye-latitude ne-longitude ayilingani… futhi unesibalo esinzima.
Nayi incazelo yevidiyo emnandi yokuthi amaGreat Circles asebenza kanjani.
I-Haversine Formula
Ibanga lokusebenzisa i-curvature yoMhlaba lifakiwe ku- Ifomula ye-Haversine, esebenzisa i-trigonometry ukuvumela ukugobeka komhlaba. Lapho uthola ibanga eliphakathi kwezindawo ezi-2 emhlabeni (njengoba igwababa lihamba), umugqa oqondile uyi-arc ngempela.
Lokhu kusebenza endizeni yezindiza - wake wabheka ebalazweni langempela lezindiza waqaphela ukuthi zi-arched? Lokho kungenxa yokuthi imfishane ukundiza ku-arch phakathi kwamaphoyinti amabili kunokuya ngqo endaweni.
I-PHP: Bala Ibanga Phakathi kwamaphoyinti ama-2 weLatitude ne-Longitude
Nansi ifomula ye-PHP yokubala ibanga phakathi kwamaphoyinti amabili (kanye nokuguqulwa kwe-Mile vs. Kilometer) okuzungezwe ezindaweni ezimbili zedesimali.
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));
}
Okuguquguqukayo yizi:
- $Latitude1 – okuguquguqukayo kwelathithudi yendawo yakho yokuqala.
- $Longitude1 – okuguquguqukayo kwe-longitude yendawo yakho yokuqala
- $Latitude2 – okuguquguqukayo kwelathithudi yendawo yakho yesibili.
- $Longitude2 – okuguquguqukayo kwe-longitude yendawo yakho yesibili.
- Iyunithi ye-$ – okuzenzakalelayo miles. Lokhu kungabuyekezwa noma kudluliswe njenge amakhilomitha.
I-Python: Bala Ibanga Phakathi Kwamaphuzu angu-2 we-Latitude kanye ne-Longitude
Noma kunjalo, nayi ifomula yePython yokubala ibanga phakathi kwamaphoyinti amabili (kanye nokuguqulwa kwe-Mile vs. Kilometer) okuzungezwe ezindaweni ezimbili zamadesimali. Ikhredithi endodaneni yami, uBill Karr oyiDatha Scientist VulaINSIGHTS, ngekhodi.
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)
Okuguquguqukayo yizi:
- i-latitude1 – okuguquguqukayo kwendawo yakho yokuqala i-latitude.
- ubude1 – okuguquguqukayo kwendawo yakho yokuqala ubude
- i-latitude2 – okuguquguqukayo kwendawo yakho yesibili i-latitude.
- ubude2 – okuguquguqukayo kwendawo yakho yesibili ubude.
- Iyunithi – okuzenzakalelayo miles. Lokhu kungabuyekezwa noma kudluliswe njenge amakhilomitha.
I-MySQL: Ukubuyisa Wonke Amarekhodi Ngaphakathi Kwebanga Ngokubala Ibanga Ngamamayela Usebenzisa I-Latitude ne-Longitude
Kungenzeka futhi ukuthi usebenzise i-SQL ukwenza ukubala ukuthola wonke amarekhodi ebangeni elithile. Kulesi sibonelo, ngizobuza i-MyTable ku-MySQL ukuthola wonke amarekhodi angaphansi noma alingana nokuhlukahluka kwe- $ distance (ku-Miles) endaweni yami ku- $ latitude ne- $ longitude:
Umbuzo wokuthola wonke amarekhodi ngaphakathi kokucacisiwe ibanga ngokubala ibanga ngamamayela phakathi kwamaphoyinti amabili obude nobude yile:
$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."
Uzodinga ukwenza lokhu ngokwezifiso:
- $ longitude - lokhu kuguquguquka kwe-PHP lapho ngidlulisa khona ubude bephuzu.
- $ latitude - lokhu kuguquguquka kwe-PHP lapho ngidlulisa khona ubude bephuzu.
- $ ibanga - leli ibanga ongathanda ukuthola wonke amarekhodi abe mancane noma alingane nalo.
- ithebula - Leli yithebula… uzofuna ukufaka okunye esikhundleni salo ngegama lakho letafula.
- i-latitude - lena yinkambu yobubanzi bakho.
- ubude - lena yinkambu ye-longitude yakho.
I-MySQL: Ukubuyisa Wonke Amarekhodi Ngaphakathi Kwebanga Ngokubala Ibanga Ngamakhilomitha Usebenzisa I-Latitude kanye ne-Longitude
Nanku umbuzo we-SQL usebenzisa amakhilomitha ku-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."
Uzodinga ukwenza lokhu ngokwezifiso:
- $ longitude - lokhu kuguquguquka kwe-PHP lapho ngidlulisa khona ubude bephuzu.
- $ latitude - lokhu kuguquguquka kwe-PHP lapho ngidlulisa khona ubude bephuzu.
- $ ibanga - leli ibanga ongathanda ukuthola wonke amarekhodi abe mancane noma alingane nalo.
- ithebula - Leli yithebula… uzofuna ukufaka okunye esikhundleni salo ngegama lakho letafula.
- i-latitude - lena yinkambu yobubanzi bakho.
- ubude - lena yinkambu ye-longitude yakho.
Ngisebenzise le khodi epulatifomu yemephu yebhizinisi esiyisebenzisele isitolo esinezindawo ezingaphezu kwe-1,000 XNUMX eNyakatho Melika futhi isebenze kahle.
I-Microsoft SQL Server Geographic Distance: STDistance
Uma usebenzisa iMicrosoft SQL Server, banikela ngomsebenzi wabo, I-STDistance ngokubala ibanga phakathi kwamaphoyinti amabili kusetshenziswa uhlobo lwedatha yeJografi.
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);
Ithiphu yesigqoko ku-Manash Sahoo, i-VP kanye ne-Architect ye Highbridge.
Ngiyabonga kakhulu ngokwabelana. Lo bekungumsebenzi wokukopisha nokunamathisela okulula futhi usebenza kahle. Ungisindise isikhathi esiningi.
I-FYI yanoma ngubani othumela ku-C:
ama-deg2rad (ama-deg amabili) {Return deg * (3.14159265358979323846 / 180.0); }
Ucezu oluhle kakhulu lokuposa - lusebenze kahle kakhulu - bekufanele ngiguqule kuphela igama letafula eliphethe i-lat-long. Isebenza ngokushesha okukhulu ku- .. Nginenani elincane elincane lama-lat-longs (<400) kepha ngicabanga ukuthi lokhu kuzokala kahle. Nesayithi enhle - ngisanda kuyifaka ku-akhawunti yami ye- del.icio.us futhi ngizobheka njalo.
Ngiyabonga kakhulu uPeter noKerry! Uma uthanda ukusebenza kumaphrojekthi we-GIS, ngincoma:
Ngiyabonga kakhulu… 😀
Ngiseshe usuku lonke ukuthola izibalo zebanga futhi ngathola i-harversine algorithm, ngiyabonga ngokunikeza isibonelo sendlela yokuyibeka esitatimendeni se-sql. Ngiyabonga futhi ngiyabingelela, Daniel
Ngijabule ukusiza, ujantshi mngani!
Manje sengifunana nomsebenzi we-'Polygon 'PHP ozothatha uxhaxha lwama-latitude we-latitude ne-longitude bese uthola ukuthi ngabe elinye iphuzu lingaphakathi noma ngaphandle kwepoligoni.
Ngitfole i-equation ukuthola ukuthi ngabe iphuzu ku-polygon!
ngicabanga ukuthi i-SQL yakho idinga isitatimende.
esikhundleni se-WHERE ibanga <= $ ibanga ongalidinga
sebenzisa ibanga le-HAVING <= $ distance
ngaphandle kwalokho ngiyabonga ngokungisindisa inqwaba yesikhathi namandla.
Sawubona David,
Uma wenza noma yiluphi uhlobo lwesitatimende se-GROUP BY, uzodinga UKUBA. Angikwenzi lokho kusibonelo esingenhla.
Doug
Ngokuya nge-MySQL 5.x, awukwazi ukusebenzisa i-alias kusigatshana esithi LAPHO http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html
Sebenzisa i-HAVING esikhundleni se-WHERE kule mibuzo engenhla
Ngibona kakhulu. Wenze umsebenzi omuhle Yilokho engikufunayo empeleni. Ngibonga kakhulu.
Ngiyabonga kakhulu ngokwabelana ngale khodi. Kungisindise isikhathi esiningi sokuthuthuka. Futhi, sibonga abafundi bakho ngokukhomba ukuthi isitatimende se-HAVING siyadingeka ku-MySQL 5.x. Kusiza kakhulu.
Ngibusisekile ngokuba nabafundi abahlakaniphe kakhulu kunami!
🙂
Le fomula engenhla ingongela isikhathi esiningi. Ngibona kakhulu.
Kufanele futhi ngiguqule phakathi kwefomethi ye-NMEA namaDegrees. Ngithole ifomula kule URL ezansi kwekhasi. http://www.errorforum.com/knowledge-base/16273-converting-nmea-sentence-latitude-longitude-decimal-degrees.html
Ngabe ukhona owaziyo ukuthi angakuqinisekisa kanjani lokhu?
Ngiyabonga!
Harry
Sawubona,
Omunye umbuzo. Ingabe ikhona ifomula yezintambo ze-NMEA njengale engezansi?
1342.7500, N, 10052.2287, E
$GPRMC,032731.000,A,1342.7500,N,10052.2287,E,0.40,106.01,101106,,*0B
Siyabonga,
Harry
Ngithole nokuthi i-WHERE ayingisebenzelanga. Ishintshelwe ku-HAVING futhi yonke into isebenza kahle. Ekuqaleni angizange ngiwafunde amazwana futhi ngawabhala kabusha ngisebenzisa ukukhetha okuhlanganisiwe. Kokubili kuzosebenza kahle.
Ngiyabonga kakhulu i-mouch ngombhalo obhalwe ku-mysql, bekufanele ngenze izinguquko ezimbalwa (HAVING)
Umsebenzi we-Gret
Kuyasiza ngendlela emangalisayo, ngiyabonga kakhulu! Benginenkinga nge "HAVING" entsha, kunokuba ngithi "KUPHI", kepha lapho sengifunde imibono lapha (ngemuva kwesigamu sehora lokugaya amazinyo ami ngokukhungatheka = P), ngakusebenza kahle. Ngiyabonga ^ _ ^
ngiyabonga okuningi kusebenza kahle
Khumbula ukuthi isitatimende esikhethiwe njengaleso sizoba namandla kakhulu ngekhompiyutha futhi ngalokho sihambe kancane. Uma unemibuzo eminingi, ingabamba izinto phansi ngokushesha okukhulu.
Indlela eqine kakhulu ukusebenzisa okokuqala (ongahluziwe) ukukhetha usebenzisa indawo ye-SQUARE echazwe ibanga elibaliwe okusho ukuthi "khetha * kusuka ku-tablename lapho latitude phakathi kwe-lat1 ne-lat2 nobude obuphakathi kwe-lon1 ne-lon2". lat1 = targetlatitude - latdiff, lat2 = targetlatitude + latdiff, efanayo ne-lon. i-latdiff ~ = ibanga / i-111 (ye-km), noma ibanga / i-69 ngamamayela kusukela ku-1 degree of latitude ingama- ~ 111 km (ukuhluka okuncane ngoba umhlaba u-oval kancane, kodwa wenele le njongo). i-londiff = ibanga / (i-abs (cos (deg2rad (latitude)) * 111)) - noma i-69 ngamamayela (ungathatha isikwele esikhudlwana ukuze ulandele ukuhlukahluka). Ngemuva kwalokho thatha imiphumela yalokho bese uyiphakela kukhetho olusabalalayo. Vele ungakhohlwa ukuphendula ngezixhumanisi ezingaphandle kwemingcele - okusho ukuthi ububanzi be-longitude eyamukelekayo ngu -180 kuya ku-+180 kanye nobubanzi be-latitude eyamukelekayo ngu -90 kuya ku-90 - uma kwenzeka i-latdiff yakho noma i-londiff isebenza ngaphandle kwalolu hlu . Qaphela ukuthi ezimweni eziningi lokhu kungenzeka kungasebenzi ngoba kuthinta kuphela ukubalwa ngaphezulu komugqa odabula ulwandle lwe-pacific kusuka esigxotsheni kuya esigxotsheni, yize kuhlangana ingxenye yechukotka nengxenye ye-alaska.
Esikufezayo ngalokhu ukwehliswa okukhulu kwenani lamaphoyinti owenza lokhu kubalwa. Uma unamaphuzu ayisigidi embulungeni yonke asatshalaliswe ngokulinganayo futhi ufuna ukusesha ngaphakathi kwe-100 km, ukusesha kwakho kokuqala (okusheshayo) kusendaweni eyi-10000 sq km futhi kungahle kuveze imiphumela engaba ngu-20 (kususelwa ekusatshalalisweni okungaphezulu kwe- indawo engaba ngu-500M sq km), okusho ukuthi usebenzisa ibanga eliyinkimbinkimbi ukubala izikhathi ezingama-20 zalo mbuzo esikhundleni sezikhathi eziyisigidi.
Iphutha elincane esibonelweni… lokho kungaba ngamakhilomitha angama-50 (hhayi ali-100) njengoba sibheke “indawo” yesikwele sethu….
Iseluleko esihle! Empeleni ngisebenze nonjiniyela obhale umsebenzi odonse isikwele sangaphakathi bese kuba umsebenzi ophindayo owenza 'izikwele' ezungeze ipherimitha ukufaka nokukhipha amaphuzu asele. Umphumela waba umphumela oshesha ngokumangazayo - wayengakwazi ukuhlola izigidi zamaphoyinti kuma-microseconds.
Indlela yami engenhla 'ayilungile' kepha inamandla. Ngiyabona futhi!
UDoug,
Bengizama ukusebenzisa i-mysql ne-php ukuhlola ukuthi ngabe iphuzu elide le-lat lingaphakathi kwepoligoni. Uyazi ukuthi umngani wakho kanjiniyela ushicilele noma iziphi izibonelo zendlela yokwenza lo msebenzi. Noma wazi ezinye izibonelo ezinhle. Ngiyabonga kusengaphambili.
Sanibonani nonke lesi yisitatimende sami se-SQL sokuhlola:
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
futhi uMysql ungitshela ukuthi lelo banga, alikho njengekholamu, ngingasebenzisa i-oda ngalo, ngingalwenza ngaphandle kokuthi KUPHI, futhi kuyasebenza, kepha hhayi ngalo…
Faka endaweni ethi "LAPHO ibanga" ufake "ibanga eline-HAVING".
Isebenza njengentelezi, ngiyabonga, Douglas!
Lokhu kuhle, kepha kunjengoba nje izinyoni zindiza. Kungakuhle ukuzama ukufaka i-google maps API kulokhu ngandlela thile (mhlawumbe usebenzisa imigwaqo njll.) Ukunikeza umbono usebenzisa indlela ehlukile yokuhamba. Kusamele ngenze umsebenzi wokulingisa wokulingisa ku-PHP ozokwazi ukunikeza isisombululo esisebenzayo enkingeni yomthengisi ojikelezayo. Kepha ngicabanga ukuthi ngingakwazi ukusebenzisa enye ikhodi yakho ukwenza njalo.
Sawubona Douglas,
ngiyabonga kakhulu ngale ndatshana - ungisindise isikhathi esiningi.
uzinakekele,
Nomrod @ Israyeli
I-athikili enhle! Ngithole izindatshana eziningi ezichaza ukuthi ungalilinganisa kanjani ibanga phakathi kwamaphoyinti amabili kepha bengifuna isifinyezo se-SQL.
Ngiyabonga kusebenza okuningi okuhle
Ngiyabonga kakhulu ngale ndlela. Iphucile isikhathi esithile kuphrojekthi yendawo yesitolo ebingidla kimi.
Ngiyabonga inqwaba. Lo mugqa omncane wekhodi ungisindise isikhathi esithile kuphrojekthi yendawo yesitolo!
# 1054 - Ikholomu engaziwa 'ibanga' ku 'lapho isigatshana'
vumela
Nokufanayo lapha! Yini inkinga: - /? ungaxazulula kanjani "ibanga" - Inkinga yekholamu? Ngicela usisize !! 🙂
Zama ukusebenzisa i-HAVING esikhundleni se-WHERE
Izinsuku ezi-2 zocwaningo ukuthola ekugcineni leli khasi elixazulula inkinga yami. Kubukeka sengathi kungcono ngikhiphe i-WolframAlpha yami bese ngixubha izibalo zami. Ushintsho olusuka ku-WHERE luye ku-HAVING lunombhalo wami ngokusebenza. NGIYABONGA
esikhundleni SOKUSETSHENZISWA kwesigaba:
UKUBA nebanga <50
Ngiyabonga uGeorgi. Bengilokhu ngithola 'ibanga' lekholomu lingatholakali. Lapho sengishintshe i-WHERE ukuya KUSEBENZA njengentelezi!
Ngifisa sengathi ngabe leli bekuyikhasi lokuqala engilitholile kulokhu. Ngemuva kokuzama imiyalo eminingi ehlukene le bekungukuphela kwayo ezosebenza kahle, futhi ngoshintsho oluncane oludingekayo ukulingana ne-database yami.
Ngibonga kakhulu!
Ngifisa sengathi ngabe leli bekuyikhasi lokuqala engilitholile kulokhu. Ngemuva kokuzama imiyalo eminingi ehlukene le bekungukuphela kwayo ezosebenza kahle, futhi ngoshintsho oluncane oludingekayo ukulingana ne-database yami.
Ngibonga kakhulu!
Ngibonga kakhulu!
Ngibonga kakhulu!
Angicabangi ukuthi ikhodi isabonakala. Mhlawumbe yi-firefox?
Ngisanda kuvivinya kokubili kuFirefox nakuChannel futhi kuyavela. Zama futhi?
Sawubona. Ngibonga kakhulu. Lokhu kusebenza njengentelezi.
Ngiyabonga kakhulu uDouglas. Lokhu kusebenza kahle.
Ngiyazi ukuthi le fomula iyasebenza, kepha angiboni ukuthi irediyasi yomhlaba icatshangelwa kuphi. Ngicela, ukhona ongikhanyisele?
UTim, ukuthola incazelo ephelele yefomula yeHaversine (leyo akuyona ikhodi), bheka i-athikili ye-Wikipedia: http://en.wikipedia.org/wiki/Haversine_formula
Kuhle! Lokhu kungisizile kakhulu!
Izinto ezinhle uDouglas. Ngabe uke wazama ukuthola iphoyinti lokuhlangana unikezwe i-Long / Lat / Bearing yamaphoyinti amabili?
Awukakwenzi lokho okwamanje, Khanh!
Ngiyabonga uDouglas, Umbuzo we-SQL yilokho kanye ebengikudinga, futhi ngicabange ukuthi kuzofanele ngizibhalele mina. Ungisindisile kusuka emahoreni wokufunda we-latitude longitude!
Ngilokhu ngithola i-Errormessage: Ikholomu engaziwa 'Ibanga' ku 'lapho isigatshana' embuzweni we-MySQL.
Peter, ngicela ufunde eminye imibono. Kubukeka sengathi abanye abantu bekufanele basebenzise i-syntax ehlukile yokuthi WHERE / HAVING.
Ngiyabonga ngale ndatshana enhle! Vele ngivivinye ikhodi ku-DB yami futhi ngasebenza kahle!
UDouglas, ngiyabonga ngale khodi emangalisayo. Bengifohloza ikhanda lami ukuthi ngikwenza kanjani lokhu engosini yami yomphakathi we-GPS. Ungisindise amahora.
Kuhle ukuzwa, Ash!
ngiyabonga ngokuthumela lo mbhalo osizayo,
kepha ngasizathu simbe ngithanda ukubuza
Ungalithola kanjani ibanga phakathi kwamakhokho ngaphakathi kwe-mysql db namakhodi afakwe ku-php ngumsebenzisi?
ngokuchaza ngokusobala:
1.user kufanele afake i- [id] yokukhetha idatha ecacisiwe kusuka ku-db nakumakhokho womsebenzisi uqobo
Ifayela le-php lithola idatha (yamakhosi) ekhonjiwe isebenzisa i- [id] bese ibala ibanga phakathi kwephoyinti lomsebenzisi nelokukhomba
noma ungavele nje uthole ibanga ukusuka kwikhodi engezansi?
$ qry = “KHETHA *, (((acos (sin ((“. $ latitude. ”* pi () / 180)) * isono ((` Latitude` * pi () / 180)) + cos ((“. $ latitude. ”* pi () / 180)) * cos ((` Latitude` * pi () / 180)) * cos (((“. $ longitude.” - `Longitude`) * pi () / 180) ))) * 180 / pi ()) * 60 * 1.1515 * 1.609344) njengebanga KUSUKA `KU-MyTable` LAPHO ibanga> =“. $ Distance. ” >>>> Ngingakwazi "ukukhipha" ibanga ukusuka lapha?
ngiyabona futhi,
UTimmy S
ungakhathali, ngithole ukuthi "umsebenzi" usebenza kanjani ku-php
$ dis = getDistanceBetweenPointsNew ($ userLati, $ userLongi, $ lati, $ longi, $ unit = 'Km')
Ngibonga kakhulu!!
kulungile, yonke into engizamile ayisebenzi. Ngisho, enginakho kuyasebenza, kepha amabanga akude kakhulu.
Ngabe kukhona umuntu ongabona okungahambi kahle ngale khodi?
uma (isset ($ _ POST ['submitted'])) {$ z = $ _POST ['zipcode']; $ r = $ _POST ['irediyasi']; nanela "Imiphumela ye -". $ z; $ sql = mysql_query (“KHETHA UQOQO m.zipcode, m.MktName, m.LocAddSt, m.LocAddCity, m.LocAddState, m.x1, m.y1, m.verified, z1.lat, z2.lon, z1. city, z1.state FROM mrk m, zip z1, zip z2 WHERE m.zipcode = z1.zipcode AND z2.zipcode = $ z AND (3963 * acos (truncate (sin (z2.lat / 57.2958) * sin (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 ") noma afe (mysql_error ()); ngenkathi ($ row = mysql_fetch_array ($ sql)) {$ store1 = $ row ['MktName']. "”; Isitolo se- $ = $ row ['LocAddSt']. ””; $ store. = $ row ['LocAddCity']. ”,". $ row ['LocAddState']. ” “. $ Irowu ['zipcode']; $ latitude1 = $ irowu ['lat']; $ longitude1 = $ irowu ['lon']; $ latitude2 = $ irowu ['y1']; $ longitude2 = $ irowu ['x1']; $ idolobha = $ irowu ['idolobha']; $ state = $ irowu ['state']; $ dis = getnew ($ latitude1, $ longitude1, $ latitude2, $ longitude2, $ unit = 'Mi'); // $ dis = ibanga ($ lat1, $ lon1, $ lat2, $ lon2); $ verified = $ row ['verified']; uma ($ verified == '1') {echo “”; echo "". $ isitolo. ""; qamba $ dis. ”[Amamayela] kude”; nanela “”; } okunye {echo "". $ store. ""; qamba $ dis. ”[Amamayela] kude”; nanela “”; }}}
ikhodi yami yemisebenzi.php
umsebenzi getnew ($ latitude1, $ longitude1, $ latitude2, $ longitude2, $ unit = 'Mi') {$ theta = $ longitude1 - $ longitude2; $ distance = (isono (deg2rad ($ latitude1)) * isono (deg2rad ($ latitude2))) + (cos (deg2rad ($ latitude1)) * cos (deg2rad ($ latitude2)) * cos (deg2rad ($ theta)) ); $ ibanga = ama-acos (ibanga lama- $); $ ibanga = rad2deg ($ ibanga); $ ibanga = $ ibanga * 60 * 1.1515; shintsha ($ unit) {case 'Mi': break; icala 'Km': $ distance = $ distance * 1.609344; } buyela (nxazonke ($ ibanga, 2)); }
Ngikubonga kusengaphambili
Ngiyabonga ngale ndatshana. Ukusebenza kahle ngekhodi yami. 🙂
Sawubona Douglas, indatshana enhle. Ngithole incazelo yakho yemiqondo yendawo kanye nekhodi ithakazelisa ngempela. Isiphakamiso sami kuphela kungaba isikhala nokuhlehlisa ikhodi yokubonisa (njengeStackoverflow, ngokwesibonelo). Ngiyakuqonda ukuthi ufuna ukonga isikhala, kepha ukuhlukaniswa kwamakhodi okujwayelekile / ukuhlehlisa kungenza kube lula kakhulu kimi, njengohlelo, ukufunda nokusabalalisa. Noma kunjalo, kuyinto encane leyo. Qhubeka nomsebenzi omkhulu.
Ngiyabonga! Ngikushintshe okuthunyelwe kancane… kepha izibalo zithatha indawo eningi kakhulu futhi zinde kangangoba angiqiniseki ukuthi zisiza kakhulu.
Ngibonga kakhulu.
lapha ngenkathi sisebenzisa nomsebenzi sithola uhlobo olulodwa lwebanga..lapho sisebenzisa umbuzo ngokuza kolunye uhlobo lwebanga
Angizukubala ibanga phakathi kwamazwe amabili
Funda kabanzi Kuzomele ufake lolu hlelo lokusebenza ngaphambi kokuthumela isibuyekezo.
Lokhu kusebenza okuhle kwe-cosinus. Angizazi izibalo, kodwa ngiyabonga!
Umsebenzi omuhle… (y)
kubonakala kushesha (mysql 5.9) ukusebenzisa ifomula kabili kokukhethiwe nalapho:
$ formula = “(((acos (sin ((“. $ latitude. ”* pi () / 180)) * isono ((` Latitude` * pi () / 180)) + cos ((“. $ latitude. ”* Pi () / 180)) * cos ((` Latitude` * pi () / 180)) * cos (((“. $ Longitude.” - `Longitude`) * pi () / 180))))) * 180 / pi ()) * 60 * 1.1515 * 1.609344) ”;
$ sql = 'KHETHA *,'. $ ifomula. ' njengebanga KUSUKA etafuleni LAPHO '.. $ formula.' <= '. $ ibanga;
ngiyabonga…
ayisebenzi uma
“LAPHO ibanga”
ukusebenza uma
"UKUBA nebanga"
Ngiyabonga kakhulu ngokugunda le ndatshana.iyasiza kakhulu.
I-PHP yaqale yadalwa njengepulatifomu elula yokubhala ebizwa ngokuthi "Ikhasi Lasekhaya Lakho". Namuhla i-PHP (okufishane kwe-Hypertext Preprocessor) kungenye yezobuchwepheshe beMicrosoft's Active Server Pages (ASP) technology.
I-PHP ulimi lomthombo ovulekile lomthombo osetshenziselwa ukudala amakhasi wewebhu ashukumisayo. Ingashumekwa ku-HTML. I-PHP ivame ukusetshenziswa ngokuhlangana ne-database ye-MySQL kumaseva wewebhu we-Linux / UNIX. Cishe ilulimi lokubhala oluthandwa kakhulu.
Ngithole isixazululo esingenhla singasebenzi kahle.
Ngidinga ukushintshela ku:
$ qqq = “KHETHA *, (((acos (sin ((“. $ latitude. ”* pi () / 180)) * isono ((` latt` * pi () / 180)) + cos ((”. $ latitude. “* pi () / 180)) * cos ((` latt` * pi () / 180)) * cos (((”. $ longitude.“ - `longt`) * pi () / 180) ))) * 180 / pi ()) * 60 * 1.1515) njengebanga KUSUKA `kwirejista` `;
Ngiyabonga Kupendra!
ngiyabonga mnumzane ugoqa ngokuphelele .. kepha nginombuzo owodwa uma ngifuna ukukhipha ngaphandle kwephuzu ledesimali yini engingayenza ..?
Ngiyabonga kusengaphambili.
Sawubona, ngicela ngidinga usizo lwakho kulokhu.
Ngenze isicelo sokuthola i-web-server yami http://localhost:8000/users/findusers/53.47792/-2.23389/20/
I-53.47792 = $ latitude
-2.23389 = $ longitude
futhi 20 = ibanga engifuna ukulibuyisa
Noma kunjalo usebenzisa ifomula yakho, ibuyisa yonke imigqa ku-db yami
$ results = DB :: select (DB :: raw (“SELECT *, (((acos (sin ((“. $ latitude. ”* pi () / 180)) * isono ((lat * pi () / 180) )) + cos ((“. $ latitude.” * pi () / 180)) * cos ((lat * pi () / 180)) * cos ((((“. $ longitude.” - lng) * pi ( ) / 180)))) * 180 / pi ()) * 60 * 1.1515 * 1.609344) njengebanga KUSUKELA kumaka UKUBA nebanga> = “. $ Distance));
[{“Id”: 1, ”name”: ”Frankie Johnnie & Luigo Too”, ”ikheli”: ”939 W El Camino Real, Mountain View, CA”, ”lat”: 37.386337280273, ”lng”: - 122.08582305908, ”Distance”: 16079.294719663}, {“id”: 2, ”name”: ”Amici's East Coast Pizzeria”, ”ikheli”: ”790 Castro St, Mountain View, CA”, ”lat”: 37.387138366699, ”lng”: -122.08323669434, ”ibanga”: 16079.175940152}, {“id”: 3, ”name”: ”Kapp's Pizza Bar & Grill”, ”ikheli”: ”191 Castro St, Mountain View, CA”, ”lat”: 37.393886566162, ”Lng”: - 122.07891845703, ”ibanga”: 16078.381373826}, {“id”: 4, ”igama”: ”Round Table Pizza: Mountain View”, ”ikheli”: ”570 N Shoreline Blvd, Mountain View, CA”, ”Lat”: 37.402652740479, ”lng”: - 122.07935333252, ”ibanga”: 16077.420540582}, {“id”: 5, ”name”: ”Tony & Alba's Pizza & Pasta”, ”ikheli”: ”619 Escuela Ave, Mountain Buka, CA ”,” lat ”: 37.394012451172,” lng ”: - 122.09552764893,” ibanga ”: 16078.563225154}, {“ id ”: 6,” igama ”:” I-Wood-Fired Pizza ka-Oregano, ”ikheli”: ”4546 El Camino Real, Los Altos, CA ”,” lat ”: 37.401725769043,” lng ”: - 122.11464691162,” ibanga ”: 16077.937560795}, {“ id ”: 7,” name ”:“ The bar and grills ”,” ikheli ”:” 24 Whiteley Street, Manchester ”,” lat ”: 53.485118865967,” lng ”: - 2.1828699111938,” ibanga ”: 8038.7620112314}]
Ngifuna ukubuyisa imigqa enamamayela angama-20 kepha iletha yonke imigqa. Ngiyacela ngenzeni
Ngifuna umbuzo ofanayo kepha nginyuse kancane - ngamafuphi lokhu ukuqoqa wonke ama-coordinates ngaphakathi kwamamayela ama-2 wokuxhumanisa ngakunye bese ubala ukuthi zingaki izixhumanisi eqenjini ngalinye bese ukhipha iqembu elilodwa kuphela elinezixhumanisi eziningi - noma uneqembu elingaphezu kwelilodwa phakathi kwamaqembu anenani elikhulu lezixhumanisi - mane ukhiphe iqembu elingahleliwe emaqenjini anenombolo efanayo enkulu -