A wannan watan na kasance ina ɗan shirye-shirye kaɗan a cikin PHP da MySQL dangane da GIS. Tsugunawa kusa da gidan yanar gizo, hakika na sami wahalar samun wasu Lissafin kasa don neman nisa tsakanin wurare biyu don haka ina so in raba su a nan.

Hanya mafi sauki ta kirga tazara tsakanin maki biyu shine amfani da tsarin Pythagorean don kirga yanayin alwatika (A² + B² = C²). Wannan an san shi da Distance Euclidean.
Wannan farawa ne mai ban sha'awa amma bai dace da Geography ba tunda nisan tsakanin layukan latitude da longitude suna nisa ba daidai ba baya. Yayin da kuka kusanci kusa da masarautar, layukan latitude suna ta kara nisa. Idan kayi amfani da wani nau'ikan lissafin triangulation mai sauki, yana iya auna nisan daidai a wuri daya kuma yayi mummunan kuskure a dayan, saboda karkatarwar Duniya.
Babban Dace
Hanyoyin da ake yin tafiya mai nisa a duniya an san su da Babban Dace. Wato… mafi ƙarancin tazarar da ke tsakanin maki biyu akan fage ya bambanta da maki akan taswira mai faɗi. Haɗa hakan tare da gaskiyar cewa layin latitude da longitude ba su daidaita ba… kuma kuna da lissafi mai wahala.
Anan akwai kyakkyawar bayanin bidiyo na yadda Manyan Da'ira ke aiki.
Tsarin Haversine
Nesa ta amfani da lanƙwasa na Duniya an haɗa shi a cikin Tsarin haversine, wanda ke amfani da trigonometry don bayar da izinin lanƙwasawar duniya. Lokacin da kake gano tazara tsakanin wurare 2 a duniya (yayin da hankaka ke tashi), madaidaiciya layi abin gaske baka ne.
Wannan yana aiki a cikin jirgin sama - shin kun taɓa kallon ainihin taswirar jiragen sama kuma kun lura cewa suna kan hanya? Wancan ne saboda ya fi guntu don tashi a cikin baka tsakanin maki biyu fiye da kai tsaye zuwa wurin.
PHP: Lissafa Nisa tsakanin Maki 2 na Latitude da Longitude
Anan ga tsarin PHP don ƙididdige nisa tsakanin maki biyu (tare da jujjuyawar Mile vs. Kilometer) an zagaye zuwa wurare goma sha biyu.
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));
}
Matsalolin sune:
- $Latitude1 – m don farkon wuri ta latitudes.
- $ Longitude1 – m ga farkon wurin longitude
- $Latitude2 – madaidaicin madaidaicin wuri na biyu.
- $ Longitude2 – m ga na biyu wurin longitude.
- $ raka'a – tsoho kasancewa mil. Ana iya sabunta wannan ko wuce kamar yadda kilomita.
Python: Ƙididdige Tazara Tsakanin maki 2 na Latitude da Longitude
Ko ta yaya, ga tsarin Python don ƙididdige nisa tsakanin maki biyu (tare da jujjuyawar Mile vs. Kilometer) zuwa wurare biyu na ƙididdigewa. Credit zuwa dana, Bill Karr wanda masanin kimiyyar bayanai ne don Bude INSIGHTS, don kodi.
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)
Matsalolin sune:
- latitude 1 - mai canzawa don wurin farko latitude.
- longitude1 - mai canzawa don wurin farko tsayi
- latitude 2 – m don wurin ku na biyu latitude.
- longitude2 – m don wurin ku na biyu tsayi.
- naúrar – tsoho kasancewa mil. Ana iya sabunta wannan ko wuce kamar yadda kilomita.
MySQL: Maido Duk Rubuce-rubucen Cikin Kewaye Ta Ƙididdigar Nisa A Miles Amfani da Latitude da Longitude
Zai yiwu kuma a yi amfani da SQL don yin lissafi don nemo duk bayanan a cikin takamaiman tazara. A cikin wannan misalin, zan nemi MyTable a cikin MySQL don nemo duk bayanan da suke ƙasa da ko daidai da canjin $ nesa (a Miles) zuwa wurina a $ latitude da $ longitude:
Tambayar don dawo da duk bayanan a cikin takamaiman distance ta hanyar kirga tazara a cikin mil tsakanin maki biyu na latitude da longitude sune:
$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."
Kuna buƙatar siffanta wannan:
- $ longitude - wannan canjin PHP ne inda nake wucewa zuwa tsayin lokacin.
- $ latitude - wannan canjin PHP ne inda nake wucewa zuwa tsayin lokacin.
- $ nesa - wannan shine nisan da kuke son samun duk bayanan da suka rage ko suka daidaita.
- tebur - wannan shine tebur… kuna son maye gurbin hakan da sunan tebur.
- latitude - wannan filin filinku ne.
- tsayi - wannan shine filin ku na longitude.
MySQL: Maido Duk Rubuce-rubuce A Cikin Kewaye Ta Ƙididdiga Tazara A cikin Kilomita Amfani da Latitude da Longitude
Kuma ga tambayar SQL ta amfani da kilomita a cikin 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."
Kuna buƙatar siffanta wannan:
- $ longitude - wannan canjin PHP ne inda nake wucewa zuwa tsayin lokacin.
- $ latitude - wannan canjin PHP ne inda nake wucewa zuwa tsayin lokacin.
- $ nesa - wannan shine nisan da kuke son samun duk bayanan da suka rage ko suka daidaita.
- tebur - wannan shine tebur… kuna son maye gurbin hakan da sunan tebur.
- latitude - wannan filin filinku ne.
- tsayi - wannan shine filin ku na longitude.
Na yi amfani da wannan lambar a cikin tsarin taswirar kasuwancin da muka yi amfani dashi don kantin sayar da kaya tare da wurare sama da 1,000 a duk Arewacin Amurka kuma yayi aiki da kyau.
Distance Geographic Geographic Microsoft SQL Server: STDistance
Idan kana amfani da Microsoft SQL Server, suna ba da aikin nasu, STDstance don ƙididdige nisa tsakanin maki biyu ta amfani da nau'in bayanan 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);
Hat tip zuwa Manash Sahoo, VP da Architect na Highbridge.
Na gode sosai da rabawa. Wannan aikin kwafi ne mai sauƙi da liƙa kuma yana aiki mai girma. Ka adana ni lokaci mai yawa.
FYI ga duk wanda ke tashar zuwa C:
biyu deg2rad (digbi biyu) {dawowar * (3.14159265358979323846 / 180.0); }
Matsayi mai kyau sosai - yayi kyau sosai - kawai sai na canza sunan tebur mai riƙe da lat-dogon. Yana aiki da sauri zuwa .. Ina da ƙarancin ƙananan adadin lat-longs (<400) amma ina tsammanin wannan zai yi daidai sosai. Nice site ma - yanzunnan na kara shi a account dina.kuma zan duba akai akai.
Na gode sosai Peter da Kerry! Idan kuna son yin aiki akan ayyukan GIS, Ina bada shawara:
Na gode sosai… 😀
Na bincika duk ranar don lissafin nesa kuma na sami madaidaicin algorithm, na gode da ku da kuka ba da misali kan yadda ake saka shi a cikin bayanin sql. Godiya da gaisuwa, Daniyel
Murna don taimakawa, rails aboki!
Yanzu ina neman 'a cikin Polygon' PHP aiki wanda zai dauki jerin abubuwan da aka tsara latitude da longitude tsarawa da kuma gano idan wani ma'ana yana cikin ko a waje da polygon.
Na samo lissafi don gano idan aya a cikin polygon!
Ina tsammanin SQL ɗin ku yana buƙatar samun bayani.
maimakon INA nesa <= $ nesa za ka iya buƙata
yi amfani da NESA nesa <= $ nesa
in ba haka ba godiya don ceton ni tarin lokaci da kuzari.
Barka da Dauda,
Idan kuna yin kowane nau'in GROUP BY sanarwa, kuna buƙatar HAVING. Ba na yin hakan a cikin misalin da ke sama.
Doug
Kamar na MySQL 5.x, baza ku iya amfani da laƙabi a kan WHERE magana duba ba http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html
Yi amfani da HAVING maimakon INA a cikin tambayoyin da ke sama
Na gode sosai. Kun yi babban aiki Wannan shine ainihin abin da nake so. Godiya mai yawa.
Godiya sosai ga raba wannan lambar. Ya kiyaye min lokaci mai yawa na cigaba. Hakanan, godiya ga masu karatun ku saboda nuna cewa bayanin HAVING ya zama dole don MySQL 5.x. Taimaka sosai.
Na yi farin ciki da samun masu karatu fiye da ni!
🙂
Tsarin da ke sama yana adana ni lokaci mai yawa. Na gode sosai.
Dole ne kuma in canza tsakanin tsarin NMEA da Digiri. Na sami dabara a wannan adireshin a ƙasan shafin. http://www.errorforum.com/knowledge-base/16273-converting-nmea-sentence-latitude-longitude-decimal-degrees.html
Shin akwai wanda yasan yadda za'a tabbatar da hakan?
Na gode!
Harry
Hello,
Wata tambaya. Shin akwai wata dabara don kirtani na NMEA kamar na ƙasa?
1342.7500, N, 10052.2287, E
$GPRMC,032731.000,A,1342.7500,N,10052.2287,E,0.40,106.01,101106,,*0B
Mun gode,
Harry
Na kuma gano cewa INDA ba tayi min aiki ba. Canza shi zuwa KASANCEWA kuma komai yana aiki daidai. Da farko ban karanta maganganun ba kuma na sake rubuta su ta amfani da gurbi mai zaɓi. Dukansu zasuyi aiki daidai.
Na gode da yawa don rubutun da aka rubuta a cikin MySQL, kawai ya yi 'yan kananan gyare-gyare (HAVING) 🙂
Aiki mara daɗi
Kwarai da gaske taimako, na gode sosai! Ina fama da wasu matsaloli game da sabon "HAVING", maimakon "INA", amma da zarar na karanta tsokaci anan (bayan kimanin rabin sa'a na nika haƙora na cikin takaici = P), na samu yana aiki da kyau. Na gode ^ _ ^
godiya mai yawa yana aiki mai girma
Ka tuna cewa zaɓin bayani kamar haka zai kasance mai ƙididdigar lissafi sosai saboda haka jinkiri. Idan kuna da yawancin waɗannan tambayoyin, zai iya ɓata abubuwa ƙasa da sauri.
Hanya mafi ƙarancin ƙarfi ita ce gudanar da zaɓi na farko (ɗanye) ta amfani da yankin SQUARE wanda aka bayyana ta hanyar tazara mai nisa watau “zaɓi * daga sunan suna inda latitude tsakanin lat1 da lat2 da longitude tsakanin lon1 da lon2”. lat1 = targetlatitude - latdiff, lat2 = maƙasudin + latdiff, kama da lon. latdiff ~ = nesa / 111 (na kilomita), ko kuma nisa / 69 na mil mil tun da digiri 1 na latitude shine ~ 111 km (ɗan bambanci kaɗan tunda ƙasa ɗan iska ce, amma ta wadatar da wannan). londiff = nesa / (abs (cos (deg2rad (latitude)) * 111)) - ko 69 na mil (a zahiri za ku iya ɗaukar murabba'in da ya fi girma kaɗan don lissafin bambancin). Sannan ɗauki sakamakon wannan kuma ciyar dashi cikin zaɓin radial. Kawai kar a manta da yin lissafin abubuwan da aka tsara daga waje - watau kewayawan karbuwa mai lamba -180 zuwa +180 kuma zangon karɓaɓɓe latitude ya kasance -90 zuwa + 90 - idan landarka ko londiff ɗinku ya gudana a wajen wannan zangon . Lura cewa a mafi yawan lokuta wannan bazai iya amfani dashi ba tunda kawai yana shafar lissafi ne akan layi ta hanyar tekun pacific daga sanda zuwa iyakacin duniya, kodayake yana tsallake wani ɓangare na chukotka da wani ɓangare na alaska.
Abinda muka cika da wannan shine raguwa mai yawa a cikin adadin maki waɗanda kuke yin wannan lissafin akan su. Idan kana da miliyoyin maki na duniya a cikin rumbun adanawar da aka rarraba kusan daidai kuma kana son bincika tsakanin kilomita 100, to bincikenka na farko (mai sauri) na yanki ne 10000 sq km kuma tabbas zai samar da sakamako 20 (bisa la'akari da rarraba har akan Yankin ƙasa kusan 500M sq km), wanda ke nufin cewa kuna tafiyar da ƙididdigar tazarar tazara sau 20 don wannan tambayar maimakon sau miliyan.
Mistakearamin kuskure a misalin… wanda zai kasance tsakanin kilomita 50 (ba 100 ba) tunda muna kallon "radius" na mu… square.
Shawara mai ban sha'awa! A zahiri na yi aiki tare da mai haɓaka wanda ya rubuta wani aiki wanda ya ja faɗin ciki sannan kuma aikin sake dawowa wanda ya sanya 'murabba'ai' a kewayen kewaye don haɗawa da keɓance sauran maki. Sakamakon ya kasance sakamako mai saurin wucewa - yana iya kimanta miliyoyin maki a cikin microseconds.
Hanyar da nake bi a sama tabbas 'maras kyau' ce amma tana da iko. Godiya sake!
Daga,
Na kasance ina ƙoƙarin amfani da mysql da php don kimanta ko wani ɗan gajeren lokaci yana cikin polygon. Shin kun san idan aboki mai haɓaka ku ya buga wasu misalai akan yadda ake yin wannan aikin. Ko kuwa kun san wasu misalai masu kyau. Godiya a gaba.
Barka dai jama'a wannan shine bayanin SQL na na gwaji:
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
kuma Mysql yana gaya min wannan tazara, babu ita a matsayin shafi, zan iya amfani da tsari ta, zan iya yin sa ba tare da INA, kuma yana aiki, amma ba tare da shi ba…
Sauya "INA nesa" da "NESA nesa".
Yana aiki kamar fara'a, godiya, Douglas!
Wannan yana da kyau, duk da haka kamar yadda tsuntsayen suke tashi. Zai zama da kyau a gwada kuma a haɗa google maps API ɗin ta wannan ko yaya (wataƙila ta amfani da hanyoyi da dai sauransu) Don kawai a ba da ra'ayi ta amfani da wani nau'in sufuri. Har yanzu ban sami yin aikin haɗin gwiwa ba a cikin PHP wanda zai iya ba da ingantacciyar hanyar magance matsalar dillalin mai tafiya. Amma ina tsammanin zan iya sake amfani da wasu lambarku don yin hakan.
Sannu Douglas,
Na gode sosai da wannan labarin - kawai ka cece ni lokaci mai yawa.
kula,
nimrod @Isra'ila
Labari mai kyau! Na sami labarai da yawa da ke bayanin yadda ake lissafa tazara tsakanin maki biyu amma da gaske ina neman tsarin SQL.
Godiya mai yawa yana aiki mai kyau
Na gode sosai da wannan dabara. Ya aske wani lokaci a kan aikin wurin shagon da ke ci a kaina.
Godiya mai tarin. Wannan ƙaramin layin lambar ya cece ni wani ɗan lokaci a cikin aikin wurin shagon!
# 1054 - Gurbin sanannu 'nesa' a cikin 'inda magana'
amince da
Haka nan! Menene matsalar: - /? yadda za a warware "nesa" - Matsalar shafi? Taimaka mana, don Allah !! 🙂
Gwada amfani da HAVING maimakon INA
Bincike na kwanaki 2 don neman wannan shafin wanda ke magance matsalata. Yayi kama da na fi dacewa da fitar da WolframAlpha dina in goge maths. Canji daga INA zuwa HAVING yana da rubutuna cikin tsari mai aiki. NA GODE
maimakon INA amfani da magana:
KASADA nesa <50
Godiya Georgi. Na ci gaba da samun shafi 'nesa' ba a samo ba. Da zarar na canza WHERE to HAVING yayi aiki kamar fara'a!
Ina fata wannan shi ne shafin farko da na samo akan wannan. Bayan gwada umarni daban-daban wannan shine kadai wanda yayi aiki daidai, kuma tare da ƙananan canje-canje da ake buƙata don dacewa da bayanan kaina.
Godiya mai yawa!
Ina fata wannan shi ne shafin farko da na samo akan wannan. Bayan gwada umarni daban-daban wannan shine kadai wanda yayi aiki daidai, kuma tare da ƙananan canje-canje da ake buƙata don dacewa da bayanan kaina.
Godiya mai yawa!
Godiya mai yawa!
Godiya mai yawa!
Ba na tsammanin lambar ta sake bayyana. Wata kila yana da Firefox?
Na dai gwada duka a Firefox da Chrome kuma yana bayyana. Gwada kuma?
Barka dai. Godiya mai yawa. Wannan yana aiki kamar fara'a.
Godiya mai yawa Douglas. Wannan yana aiki cikakke.
Na san wannan tsarin yana aiki, amma ban ga inda ake la'akari da radius na duniya ba. Shin wani zai iya fadakar da ni, don Allah?
Tim, don cikakken bayani game da tsarin Haversine (wannan ba lamba bane), bincika labarin Wikipedia: http://en.wikipedia.org/wiki/Haversine_formula
Kyakkyawa! Wannan ya taimaka min sosai!
Babban kaya Douglas. Shin kun gwada samun mahaɗan mahaɗa da aka ba Dogon / Lat / ofauke da maki biyu?
Ba a yi haka ba tukuna, Khanh!
Na gode Douglas, Tambayar SQL daidai abin da nake buƙata, kuma ina tsammanin zan rubuta shi da kaina. Ka cece ni daga yuwuwar yiwuwar koyon latitude latitude!
Ina ci gaba da samun Kuskuren bayani: Ginin da ba a sani ba 'Distance' a cikin 'inda magana' akan tambayar MySQL.
Peter, don Allah karanta ta sauran maganganun. Ya bayyana cewa wasu masu goyon baya dole suyi amfani da rubutun daban don INA / SAMU.
Na gode da wannan babban labarin! Kawai gwada lambar a kan DB kuma na yi aiki sosai!
Douglas, na gode da wannan lambar ban mamaki. Ya kasance yana kan kaina kan yadda ake yin wannan a tashar tashar GPS ta. Ka cece ni sa'o'i.
Babban ji, Ash!
godiya don buga wannan labarin mai amfani,
amma saboda wasu dalilai Ina so in tambaya
yadda ake samun tazara tsakanin ka'idoji a cikin MySQL db da kuma abubuwan da mai amfani ya sanya su a php?
don ƙarin bayyana a sarari:
1. mai amfani dole ne ya sanya [id] don zaɓar bayanan da aka ƙayyade daga db da lambobin mai amfani da kanta
2.the php file samun manufa data (coords) ta amfani da [id] sannan kuma lissafa tazara tsakanin mai amfani da manufa
ko kuma kawai kawai samun tazara daga lambar da ke ƙasa?
$ qry = “Zabi *, (((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) a matsayin nesa DAGA '' MyTable 'WHERE distance> = ". $ Nisa." >>>> Shin zan iya "cire" nesa daga nan?
na sake godiya,
Timmy S
ba damuwa, Na gano yadda “aikin” ke aiki a cikin php
$ dis = getDistanceBetweenPointsNew ($ mai amfaniLati, $ userLongi, $ lati, $ longi, $ unit = 'Km')
godiya mai yawa !!
ok, duk abin da na gwada baya aiki. Ina nufin, abin da nake da shi yana aiki, amma nesa suna kan hanya.
Shin wani zai iya ganin abin da ba daidai ba game da wannan lambar?
idan (an daidaita ($ _ POST ['an gabatar'])) {$ z = $ _POST ['zipcode']; $ r = $ _POST ['radius']; amsa kuwwa "Sakamako na". $ z; $ sql = mysql_query (“ZABA BANGASKIYA m.zipcode, m.MktName, m.LocAddSt, m.LocAddCity, m.LocAddState, m.x1, m.y1, m.verified, z1.lat, z2.lon, z1. birni, z1.state DAGA mrk m, zip z1, zip z2 INDA m.zipcode = z1.zipcode DA z2.zipcode = $ z DA (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 ") ko mutu (mysql_error ()); yayin da ($ jere = mysql_fetch_array ($ sql)) {$ store1 = $ jere ['MktName']. ""; $ store = $ jere ['LocAddSt']. ””; $ store. = $ jere ['LocAddCity']. ”,“. $ jere ['LocAddState']. ” “. $ Jere ['zipcode']; $ latitude1 = $ jere ['lat']; $ longitude1 = $ jere ['lon']; $ latitude2 = $ jere ['y1']; $ longitude2 = $ jere ['x1']; $ birni = $ jere ['birni']; $ jihar = $ jere ['jiha']; $ dis = sabon aiki ($ latitude1, $ longitude1, $ latitude2, $ longitude2, $ unit = 'Mi'); // $ dis = nesa ($ lat1, $ lon1, $ lat2, $ lon2); $ veified = $ jere ['an tabbatar']; idan ($ an tabbatar == '1') {amsa kuwwa “”; amsa kuwwa “”. $ shagon. ””; amsa kuwwa $ dis. ”Mil (nesa)”; amsa kuwwa “”; } kuma {amsa kuwwa "". $ store. ""; amsa kuwwa $ dis. ”Mil (nesa)”; amsa kuwwa “”; }}}
lambar ayyuka.php
sabon aiki ($ latitude1, $ longitude1, $ latitude2, $ longitude2, $ unit = 'Mi') {$ theta = $ longitude1 - $ longitude2; $ nesa = (zunubi (deg2rad ($ latitude1)) * sin (deg2rad ($ latitude2))) + (cos (deg2rad ($ latitude1)) * cos (deg2rad ($ latitude2)) * cos (deg2rad ($ theta)) ); $ nesa = acos ($ nesa); $ nesa = rad2deg ($ nesa); $ nisa = $ nisa * 60 * 1.1515; sauya ($ naúrar) {harka 'Mi': fashe; shari'ar 'Km': $ nisa = $ nisa * 1.609344; } dawo (zagaye ($ nisa, 2)); }
Na gode a gaba
Na gode da wannan labarin. Yin aiki lafiya tare da lambar. 🙂
Hey Douglas, babban labarin. Na sami bayanin ku game da abubuwan da ke cikin ƙasa da lambar da ke da ban sha'awa sosai. Shawarata kawai zata kasance a sarari da shigar da lambar don nuni (kamar Stackoverflow, misali). Na fahimci cewa kuna son adana sarari, amma tazarar lambar ta zamani / ingewa zai sauƙaƙa min sauƙi, a matsayina na mai tsara shirye-shirye, don karantawa da rarrabawa. Ko ta yaya, wannan ƙaramin abu ne. Ci gaba da babban aiki.
Godiya! Na dan gyara post din kadan… amma lissafin ya dauki daki sosai kuma suna da tsayi sosai ban tabbata cewa yana taimakawa da yawa ba.
Na gode sosai.
a nan yayin amfani da aiki muna samun tazara iri ɗaya .. yayin amfani da tambaya ta zuwa wani nau'in tazara mai zuwa
Ba na lissafa tazara tsakanin jihohi biyu
Muchas gracias de tan hermoso codigo…
Wannan yana da kyau a aikin cosinus. Ban sani ba lissafi, amma godiya!
Babban Aiki… 🙂 (y)
da alama yana da sauri (MySQL 5.9) don amfani da ninki biyu a cikin zaɓin kuma inda:
$ dabara = "(((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) ”;
$ sql = 'Zabi *,'. $ dabara. ' azaman nesa DA tebur INA '.. $ dabara.' <= '. $ nesa;
godiya…
baya aiki idan
“INA nesa”
aiki idan
"NUNA nesa"
Godiya mai yawa don karyar wannan labarin. Yana da matukar taimako.
An ƙirƙiri PHP da farko azaman dandamali mai sauƙi wanda ake kira "Shafin Gida na Kai". Awannan zamanin PHP (gajere ne ga Mai Gabatar da Hanya) shine madadin fasahar Fasaha ta Shafukan Sadarwar Microsoft (ASP).
PHP harshe ne na tushen sabar tushen uwar garke wanda ake amfani dashi don ƙirƙirar ɗakunan yanar gizo masu ƙarfi. Ana iya saka shi cikin HTML. PHP yawanci ana amfani dashi tare tare da MySQL database akan sabar yanar gizo Linux / UNIX. Tabbas shine mafi shahararren harshen rubutu.
Na sami sama bayani baya aiki yadda yakamata.
Ina bukatan canzawa zuwa:
$ qqq = “Zabi *, (((acos (sin ((.. $ latitude. * * pi () / 180)) * sin ((` `latt` * pi () / 180)) + cos ((".) $ latitude. “* pi () / 180)) * cos ((` `latt` * pi () / 180)) * cos ((('' $ Longitude. '' -` `longt`) * pi () / 180) ))) * 180 / pi ()) * 60 * 1.1515) a matsayin nesa DAGA 'rijista``;
Na gode Kupendra!
Na gode yallabai yadda yake murzawa daidai .. amma ina da tambaya guda daya idan ina son fitar da ita ba tare da naki goma ba to me zan iya yi ..?
Thanks a gaba.
Barka dai, don Allah ina matukar bukatar taimakon ku kan wannan.
Nayi nema ga sabar yanar gizo na http://localhost:8000/users/findusers/53.47792/-2.23389/20/
53.47792 = $ latitude
-2.23389 = $ tsawo
kuma 20 = nisan da nake son dawo dashi
Duk da haka ta amfani da dabara, zai dawo da dukkan layuka a cikin db
sakamakon $ = DB :: zaɓi (DB :: raw ("Zabi *, (((acos (sin ((. $ latitude." * pi () / 180)) * sin ((lat * pi () / 180) )) + cos ((“. $ latitude.” * pi () / 180)) * cos ((lat * pi () / 180)) * cos (((“. $ Longitude.” - lng) * pi ( ) / 180)))) * 180 / pi ()) * 60 * 1.1515 * 1.609344) a matsayin nesa DAGA alamomi KASAN nesa> = ".. Nesa $));
[{"Id": 1, "suna": "Frankie Johnnie & Luigo Too", "address": "939 W El Camino Real, Mountain View, CA", "lat": 37.386337280273, "lng": - 122.08582305908, ”Nesa”: 16079.294719663}, {“id”: 2, ”name”: ”Amici ta East Coast Pizzeria”, ”address”: “790 Castro St, Mountain View, CA”, ”lat”: 37.387138366699, ”lng”: -122.08323669434, ”nesa”: 16079.175940152}, {“id”: 3, ”suna”: “Kapp's Pizza Bar & Grill”, ”address”: “191 Castro St, Mountain View, CA”, “lat”: 37.393886566162, ”Lng”: - 122.07891845703, ”distance”: 16078.381373826}, {“id”: 4, ”name”: “Round Table Pizza: Mountain View”, ”address”: “570 N Shoreline Blvd, Mountain View, CA”, ”Lat”: 37.402652740479, ”lng”: - 122.07935333252, ”distance”: 16077.420540582}, {“id”: 5, ”name”: “Tony & Alba's Pizza & Pasta”, ”address”: ”619 Escuela Ave, Mountain Duba, CA ”,” lat ”: 37.394012451172,” lng ”: - 122.09552764893,” nesa ”: 16078.563225154}, {“ id ”: 6,” name ”:” Oregano's Wood-Fired Pizza ”,” address ”:” 4546 El Camino Real, Los Altos, CA ”,” lat ”: 37.401725769043,” lng ”: - 122.11464691162,” nesa ”: 16077.937560795}, {“ id ": 7," name ":" The bars and grills "," address ":" 24 Whiteley Street, Manchester "," lat ": 53.485118865967," lng ": - 2.1828699111938," distance ": 8038.7620112314}]
Ina so in dawo da layuka kawai tare da mil 20 amma yana kawo dukkan layuka. Don Allah menene na yi ba daidai ba
Ina neman irin wannan tambayar amma na ɗan ɗage - a takaice wannan shine don haɗa duk haɗin gwiwa tsakanin mil 2 na kowane daidaitawa sannan a ƙidaya yawan haɗin gwiwa a cikin kowane rukuni kuma a fitar da ƙungiya ɗaya kawai wacce ke da mafi yawan haɗin gwiwa - koda kuwa kuna da ƙungiya fiye da ɗaya tsakanin ƙungiyoyi waɗanda ke da mafi yawan adadin haɗin gwiwa - kawai fitar da ƙungiyar bazuwar daga ƙungiyoyin da ke da adadi mafi yawa -