
Verenga kana Kubvunza Great Circle Distance Pakati pePoints of Latitude neLongitude Uchishandisa The Haversine Formula (PHP, JavaScript, Java, Python, MySQL, MSSQL Examples)
Mwedzi uno ndanga ndichironga zvishoma muPHP uye MySQL zvine ruremekedzo GIS. Kuongorora mambure, ndakave nenguva yakaoma kuwana zvimwe zve Geographic kuverenga kuti ndiwane chinhambwe pakati penzvimbo mbiri saka ndaida kugovana apa

Nzira yakapusa yekuverenga chinhambwe pakati pemapoinzi maviri iri kushandisa fomati yePythagorean kuverenga fungidziro yetriangle (A² + B² = C²). Izvi zvinozivikanwa se Euclidean chinhambwe.
Aya matangiro anonakidza asi haashande kuGeography sezvo chinhambwe chiri pakati pemitsara yelatitude nelongitudo zvisina kuenzana nhambwe dzakaparadzana. Paunoswedera pedyo neequator, mitsetse yelatitude inoparadzana. Kana ukashandisa equation iri nyore yetriangulation, inogona kuyera nhambwe nenzira kwayo mune imwe nzvimbo uye isiriyo mune imwe, nekuda kwekukombama kweNyika.
Yakakura Denderedzwa Kure
Nzira dzakafamba nzendo refu dzakatenderedza Pasi dzinozivikanwa seGreat Circle Distance. Ndiko… chinhambwe chipfupi pakati pemapoinzi maviri padenderedzwa chinosiyana kubva pazvibodzwa pamepu yakati sandara. Sanganisa izvozvo nenyaya yekuti mitsara yelatitude nerengitudi haina kuenzana… uye une chiverengero chakaoma.
Heino yakanakisa vhidhiyo tsananguro yemabatirwo eGreat Circles.
Iyo Haversine Fomula
Chinhambwe chinoshandisa kukombama kwePasi chinosanganiswa muchimiro cheHaversine, chinoshandisa trigonometry kubvumira kukombama kwepasi. Paunenge uchiwana chinhambwe pakati penzvimbo mbiri pasi (sekubhururuka kwegunguwo), mutsara wakatwasuka unotova arc.
Izvi zvinoshanda mukubhururuka nendege - wakambotarisa pamepu chaiyo yendege ukaona dzakaiswa arched? Imhaka yekuti kubhururuka muarch pakati pemapoinzi maviri ipfupi pane yakananga kunzvimbo.
PHP: Verenga Daro Pakati Pakati pe2 Pfungwa dzeLatitude uye Longitude
Heinoi PHP formula yekuverenga chinhambwe pakati pemapoinzi maviri (pamwe neMile vs. Kilomita shanduko) yakatenderedzwa kunzvimbo mbiri dzedesimali.
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));
}
Izvo zvakasiyana ndezvi:
- $Latitude1 - shanduko yelatitude yenzvimbo yako yekutanga.
- $Longitude1 - musiyano welongitude yenzvimbo yako yekutanga
- $Latitude2 - shanduko yelatitude yenzvimbo yako yechipiri.
- $Longitude2 - shanduko yelongitude yenzvimbo yako yechipiri.
- $unit - the default kuva zviuru. Izvi zvinogona kuvandudzwa kana kupfuudzwa se makiromita.
Java: Verenga chinhambwe chiripakati pemapoinzi maviri eLatitude neLongitude
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;
}
}
Izvo zvakasiyana ndezvi:
- latitude1 - shanduko yelatitude yenzvimbo yako yekutanga.
- longitudo1 - musiyano welongitude yenzvimbo yako yekutanga
- latitude2 - shanduko yelatitude yenzvimbo yako yechipiri.
- longitudo2 - shanduko yelongitude yenzvimbo yako yechipiri.
- chikwata - the default kuva zviuru. Izvi zvinogona kuvandudzwa kana kupfuudzwa se makiromita.
Javascript: Verenga chinhambwe chiri pakati pemapoinzi maviri eLatitude neLongitude
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);
}
}
Izvo zvakasiyana ndezvi:
- latitude1 - shanduko yelatitude yenzvimbo yako yekutanga.
- longitudo1 - musiyano welongitude yenzvimbo yako yekutanga
- latitude2 - shanduko yelatitude yenzvimbo yako yechipiri.
- longitudo2 - shanduko yelongitude yenzvimbo yako yechipiri.
- chikwata - the default kuva zviuru. Izvi zvinogona kuvandudzwa kana kupfuudzwa se makiromita.
Python: Verenga Chinhambwe Pakati peMapoinzi maviri eLatitude neLongitude
Zvakadaro, heino fomula yePython yekuverenga chinhambwe chiri pakati pemapoinzi maviri (pamwe neMile vs. Kilomita shanduko) yakatenderedzwa kunzvimbo mbiri dzedesimali. Chikwereti kumwanakomana wangu, Bill Karr anova Data Scientist we OpenINSIGHTS, yekodhi.
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)
Izvo zvakasiyana ndezvi:
- latitude1 - shanduko yenzvimbo yako yekutanga latitude.
- longitudo1 - shanduko yenzvimbo yako yekutanga kureba
- latitude2 - shanduko yenzvimbo yako yechipiri latitude.
- longitudo2 - shanduko yenzvimbo yako yechipiri kureba.
- chikwata - the default kuva zviuru. Izvi zvinogona kuvandudzwa kana kupfuudzwa se makiromita.
MySQL: Kutora Marekodhi Ese Mukati meRange Nekuverenga Chinhambwe MuMaira Uchishandisa Latitude neLongitude.
Zvinogonekawo kushandisa SQL kuverenga marekodhi ese mukati mechimwe chinhambwe. Mumuenzaniso uyu, ndichabvunza MyTable muMySQL kuti ndiwane marekodhi ese ari pasi kana akaenzana nekusiyana $distance (muMaira) kunzvimbo yangu pa$latitude uye $longitude:
Mubvunzo wekutora ese marekodhi mukati meimwe yakatarwa mufambo nekuverenga chinhambwe mumakiromita pakati pemapoinzi maviri ehurefu uye kureba ndeiyi:
$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."
Iwe unofanirwa kugadzirisa izvi:
- $ longitude - uku ndiko kusiyaniswa kwePHP uko ini ndiri kupfuudza iyo longitude yeiyo poindi.
- $ latitude - uku ndiko kusiyaniswa kwePHP uko ini ndiri kupfuudza iyo longitude yeiyo poindi.
- $ chinhambwe - iyi ndiyo nhanho iwe yaungade kuti uwane zvese zvinyorwa zvishoma kana zvakaenzana nazvo.
- tafura - iyi ndiyo tafura… iwe uchazoda kutsiva izvo nezita rako retafura.
- latitude - uyu ndiwo munda wenharaunda yako.
- kureba - uyu ndiwo munda wekureba kwako.
MySQL: Kutora Marekodhi Ese Mukati meRange Nekuverenga Chinhambwe MuMakiromita Uchishandisa Latitude neLongitude.
Uye heino mubvunzo weSQL uchishandisa makiromita muMySQL:
$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."
Iwe unofanirwa kugadzirisa izvi:
- $ longitude - uku ndiko kusiyaniswa kwePHP uko ini ndiri kupfuudza iyo longitude yeiyo poindi.
- $ latitude - uku ndiko kusiyaniswa kwePHP uko ini ndiri kupfuudza iyo longitude yeiyo poindi.
- $ chinhambwe - iyi ndiyo nhanho iwe yaungade kuti uwane zvese zvinyorwa zvishoma kana zvakaenzana nazvo.
- tafura - iyi ndiyo tafura… iwe uchazoda kutsiva izvo nezita rako retafura.
- latitude - uyu ndiwo munda wenharaunda yako.
- kureba - uyu ndiwo munda wekureba kwako.
Ini ndaishandisa kodhi iyi mune yepamabhizimusi mepu chikuva chatakashandisa kuchitoro chekutengesa chine nzvimbo dzinopfuura chiuru kuNorth America uye chakashanda zvakaomarara.
Microsoft SQL Server Geographic Distance: STDistance
Kana iwe uri kushandisa Microsoft SQL Server, ivo vanopa yavo basa, STDistance yekuverenga nhambwe pakati pemapoinzi maviri uchishandisa iyo Geography data type.
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 kuna Manash Sahoo, VP uye Architect we Highbridge.
Ndinokutendai zvikuru nekugovera. Iri raive nyore kopi uye kunama basa uye rinoshanda zvakanaka. Makandiponesa nguva yakawanda.
FYI kune chero munhu anotakura kuC:
kaviri deg2rad(double deg) { return deg*(3.14159265358979323846/180.0); }
Yakanaka kwazvo chidimbu chekutumira - chakashanda zvakanaka kwazvo - ini ndaingofanira kushandura zita retafura rakabata lat-refu. Inoshanda nekukasira ku.. Ndine nhamba diki inonzwisisika yelat-refu (<400) asi ndinofunga kuti izvi zvingakwira zvakanaka. Yakanaka saiti zvakare - ndangoiwedzera kune yangu del.icio.us account uye ndichadzoka nguva nenguva.
Ndinotenda zvikuru Peter naKerry! Kana iwe uchida kushanda pamapurojekiti eGIS, ndingakurudzira:
Ndatenda zvikuru… 😀
Ndakatsvaga zuva rese kuverenga kwechinhambwe ndikawana iyo harversine algorithm, ndinokutendai nekupa muenzaniso wekuti unoiisa sei mune sql statement. Ndatenda nekukwazisa, Danieri
Ndinofara kubatsira, njanji shamwari!
Ikozvino ndiri kutsvaga 'muPolygon' PHP basa rinotora akatevedzana akatevedzana latitude uye longitude coordinates ndoona kana imwe poindi iri mukati kana kunze kweporigoni.
Ndakawana iyo equation kuona kana poindi iri paporigoni!
Ndinofunga SQL yako inoda chirevo.
pachinzvimbo chekuti WHERE chinhambwe <= $distance iwe ungangoda
shandisa HAVING chinhambwe <= $distance
kana zvisina kudaro ndinokutendai nekundichengetera nguva yakawanda nesimba.
Mhoroi David,
Kana uri kuita chero mhando yeGROUP BY statement, unozoda HAVING. Ini handisi kuita izvo mumuenzaniso uri pamusoro.
Doug
Kubva paMySQL 5.x, haugone kushandisa zita rekuti WHERE clause ona http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html
Shandisa HAVING pachinzvimbo chekuti WAPI mumibvunzo iri pamusoro
Ndokutenda zvikuru. Waita basa guru Ndicho chinhu chandinoda chaizvo. Ndotenda zvikuru.
Ndatenda zvikuru nekugovera iyi kodhi. Zvakandichengetedza nguva yakawanda yebudiriro. Zvakare, tinotenda kuvaverengi vako nekutaura kuti HAVING statement inodiwa paMySQL 5.x. Kubatsira kwazvo.
Ndakakomborerwa kuva nevaverengi vakangwara kundipfuura!
🙂
Formula iri pamusoro iri kundichengetera nguva yakawanda. Ndokutenda zvikuru.
Ini zvakare ndinofanira kuchinja pakati peiyo NMEA fomati uye maDegree. Ndakawana fomula pane iyi URL pazasi pepeji. http://www.errorforum.com/knowledge-base/16273-converting-nmea-sentence-latitude-longitude-decimal-degrees.html
Pane anoziva nzira yekusimbisa izvi?
Ndatenda!
Harry
Mhoro,
Mumwe mubvunzo. Pane formula yeNMEA tambo senge iri pazasi?
1342.7500,N,10052.2287,E
$GPRMC,032731.000,A,1342.7500,N,10052.2287,E,0.40,106.01,101106,,*0B
Ndatenda,
Harry
Ndakaonawo kuti WHERE haina kundiitira. Yakachinja kuita HAVING uye zvese zvinoshanda zvakakwana. Pakutanga handina kuverenga zvakataurwa uye ndakazvinyora zvakare ndichishandisa nested yakasarudzwa. Zvose zvichashanda zvakanaka.
Ndinokutendai zvikuru nokuda kwechinyorwa chakanyorwa mumysql, ndaifanira kungogadzirisa zvishoma (KUVA) 🙂
Gret basa
Zvinobatsira zvinoshamisa, ndinokutendai zvikuru! Ndakanga ndiine mamwe matambudziko ne "KUVA" itsva, pane "KUPI", asi pandakangoverenga zvinyorwa pano (mushure mehafu yeawa yekugeda mazino angu mukushungurudzika = P), ndakaiwana ichishanda zvakanaka. Ndatenda ^_^
thanks a lot anoshanda zvakanaka
Ramba uchifunga kuti chirevo chakasarudzwa chakadaro chinenge chakanyanya computationally uye saka chinononoka. Kana iwe uine yakawanda yemibvunzo iyoyo, inogona kukanganisa zvinhu nekukurumidza.
Imwe nzira isina kunyanya kusimba ndeyekumhanyisa yekutanga (yakashata) sarudza uchishandisa SQUARE nzvimbo inotsanangurwa nenhambwe yakaverengerwa kureva "select * kubva patablename apo latitude iri pakati pelat1 nelat2 uye longitude pakati pelon1 nelon2". lat1 = targetlatitude - latdiff, lat2 = targetlatitude + latdiff, yakafanana nelon. latdiff ~= chinhambwe / 111 (yemakiromita), kana chinhambwe/ 69 mamaira sezvo 1 dhigirii relatitude iri ~ 111 km (musiyano mudiki sezvo pasi riine ovha zvishoma, asi rinokwana chinangwa ichi). londiff = chinhambwe / (abs(cos(deg2rad(latitude))*111)) — kana 69 mamaira (unogona kutora sikweya yakati kurei kuitira kuti uzvidavirire pakusiyana). Wobva watora mhedzisiro yacho uye woidyisa muradial yakasarudzwa. Usakanganwe kuzvidavirira kune kunze-kwe-makodhati - kureva kuti huwandu hwelongitude inogamuchirwa i -180 kusvika +180 uye huwandu hwelatitude inogamuchirika ndeye -90 kusvika +90 - kana latdiff yako kana londiff ikamhanya kunze kwerudzi urwu. . Ziva kuti kazhinji kacho izvi zvinogona kusashanda nekuti zvinongokanganisa maverengero pamusoro pemutsara kuburikidza negungwa rePacific kubva padanda kuenda kune rimwe danda, nyangwe ichipesanisa chikamu che chukotka uye chikamu cheAlaska.
Zvatinoita neizvi kudzikiswa kwakakosha kwehuwandu hwemapoinzi aunoita kuverenga uku. Kana uine miriyoni yepasi rose mapoinzi mudhatabhesi yakagovaniswa zvakaenzana uye uchida kutsvaga mukati me100 km, ipapo kutsvaga kwako kwekutanga (nekukurumidza) ndekwenzvimbo 10000 sq km uye kungangoburitsa mhedzisiro makumi maviri (zvichienderana nekugoverwa kwega kwega. pamusoro penzvimbo inosvika 20M sq km), zvinoreva kuti unomhanyisa kuverenga kwakaoma kureba ka500 pamubvunzo uyu pachinzvimbo chemirioni.
Kakanganiso kadiki mumuenzaniso… ingave iri mukati memakiromita makumi mashanu (kwete zana) sezvo tiri kutarisa “nzvimbo” ye… square.
Fantastic advice! Ini ndakanyatso shanda nemugadziri akanyora basa raidhonza mukati meskweya uyezve basa rekudzokorodza rakagadzira 'mativi' akatenderedza perimeter kusanganisa uye kusabvisa mapoinzi asara. Mhedzisiro yacho yaive mhedzisiro inokurumidza - aikwanisa kuongorora mamirioni emapoinzi mumamicroseconds.
Maitiro angu ari pamusoro ane chokwadi 'akashata' asi anokwanisa. Ndatenda zvakare!
imbwa,
Ndanga ndichiedza kushandisa mysql uye php kuti ndiongorore kana iyo lat refu poindi iri mukati mepolygon. Unoziva here kana shamwari yako yekuvandudza yakaburitsa chero mienzaniso pamaitirwo ebasa iri. Kana kuti unoziva mimwe mienzaniso yakanaka here. Kutenda mberi.
Mhoroi mose ichi ndicho chirevo changu cheSQL chirevo:
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
uye Mysql iri kundiudza chinhambwe ichocho, hachipo sekoramu, ndinogona kushandisa kurongeka, ndinogona kuzviita pasina IKO, uye inoshanda, asi kwete nayo…
Tsiva "WHERE chinhambwe" ne "KUVA nechinhambwe".
Inoshanda sedumwa, ndatenda, Douglas!
Izvi zvakanakisa, zvisinei zvinongoita sekubhururuka kunoita shiri. Zvingava zvakanaka kuedza nekubatanidza google maps API kune iyi neimwe nzira (zvichida kushandisa migwagwa nezvimwewo) Kungopa pfungwa uchishandisa nzira yakasiyana yekufambisa. Ndichiri kugadzira rakateedzerwa annealing basa muPHP rinokwanisa kupa mhinduro inoshanda kune dambudziko rekufamba mutengesi. Asi ndinofunga kuti ndingangokwanisa kushandisazve imwe kodhi yako kuita kudaro.
Hi Douglas,
ndinokutendai zvikuru nokuda kwechinyorwa ichi - iwe wakangondiponesa nguva yakawanda.
Zvichengetedze,
nimrod @Israel
Chinyorwa chakanaka! Ndakawana zvakawanda zvinyorwa zvinotsanangura nzira yekuenzanisa kureba pakati pemapoinzi maviri asi ini ndainyatsotsvaga iyo SQL snippet.
Thanks a lot anoshanda zvakanaka
Ndinokutendai zvikuru neformula iyi. Yakaveura imwe nguva pane imwe nzvimbo yechitoro chirongwa chaindidya.
Thanks a bundle. Iyi mutsara mudiki wekodhi yakandichengetera imwe nguva yakati wandei muchitoro chenzvimbo purojekiti!
#1054 - Koramu isingazivikanwe 'kure' mu 'kupi chirevo'
bvuma
Kunyange pano! Dambudziko nderei :-/? nzira yekugadzirisa iyo "kure" - Column dambudziko? Tibatsireiwo ndapota!! 🙂
Edza kushandisa HAVING pane kuti WAPI
2 mazuva ekutsvagisa kuti pakupedzisira ndiwane peji rino rinogadzirisa dambudziko rangu. Zvinoita sekunge ndibvise WolframAlpha yangu uye ndigadzirise masvomhu angu. Shanduko kubva KUPI kuenda KUVANHU ine chinyorwa changu chiri kushanda. WAZVIITA
pachinzvimbo cheWHERE shandisa clause :
KUVE chinhambwe <50
Thanks Georgi. Ndakaramba ndichiwana column 'distance' isingawanikwe. Kana ndangoshandura iyo KUTI KUVA nayo yakashanda sedumwa!
Ndinoshuva kuti iri raive peji rekutanga randakawana pane ino. Mushure mekuedza mirairo yakawanda yakasiyana iyi ndiyo yega yekushanda nemazvo, uye nekuchinja kushoma kunodiwa kukwana yangu dhatabhesi.
Kutenda kwazvo!
Ndinoshuva kuti iri raive peji rekutanga randakawana pane ino. Mushure mekuedza mirairo yakawanda yakasiyana iyi ndiyo yega yekushanda nemazvo, uye nekuchinja kushoma kunodiwa kukwana yangu dhatabhesi.
Kutenda kwazvo!
Ndotenda zvikuru!
Ndotenda zvikuru!
Ini handifunge kuti kodhi iri kuratidza zvakare. Zvimwe ndeye firefox?
Ini ndichangoyedza zvese muFirefox neChrome uye zviri kuoneka. Edza zvakare?
Mhoro. Ndotenda zvikuru. Izvi zvinoshanda sedumwa.
Thanks zvikuru Douglas. Izvi zviri kushanda zvakakwana.
Ndinoziva fomula iyi inoshanda, asi handisi kuona kuti radius yepasi inotariswa kupi. Pane anogona kundijekesera ndapota?
Tim, kune tsananguro izere yeHaversine formula (iyo haisi kodhi), tarisa chinyorwa cheWikipedia: http://en.wikipedia.org/wiki/Haversine_formula
Runako! Izvi zvakandibatsira zvikuru!
Zvinhu zvakanaka Douglas. Wakamboedza kuwana mharadzano poindi yakapihwa iyo Yakareba / Lat / Kutakura yemapoinzi maviri?
Hausati waita izvozvo, Khanh!
Ndatenda Douglas, iyo SQL Query ndizvo chaizvo zvandaida, uye ndakafunga kuti ndaizozvinyora ini. Makandiponesa kubva kumaawa angangove e latitude longitude yekudzidza curve!
Ini ndinoramba ndichiwana Errormessage: Isingazivikanwe koramu 'Kureba' mu 'kupi clause' pane iyo MySQL Query.
Peter, ndapota verenga kuburikidza nemamwe mazwi. Zvinoita sekuti vamwe vanhu vaifanira kushandisa imwe syntax yekuti WHERE/HAVING.
Ndinokutendai nokuda kwechinyorwa ichi chikuru! Ingoyedza kodhi paDB yangu uye yakashanda zvakanaka!
Douglas, ndinokutendai neiyi kodhi inoshamisa. Ndanga ndichitsenya musoro wangu kuti ndoita sei izvi pane yangu GPS nharaunda portal. Makandichengeta maawa.
Zvakanaka kunzwa, Ash!
ndatenda nekutumira chinyorwa ichi chinobatsira,
asi nokuda kwechimwe chikonzero ndinoda kubvunza
nzira yekuwana chinhambwe pakati pemakodha mukati memysql db uye coords akaiswa kuphp nemushandisi?
kuti utsanangure zvakajeka:
1.user anofanirwa kuisa [id] pakusarudza data rakatsanangurwa kubva kudb uye mushandisi pachayo coords.
2.the php faira tora data yarinonangwa (coords) uchishandisa [id] wobva waverenga chinhambwe pakati pemushandisi nenzvimbo yechinangwa.
kana kuti unogona kungowana chinhambwe kubva kukodhi iri pazasi?
$qry = “SARUDZA *,(((acos(chivi((“.$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) sechinhambwe KUBVA `MyTable` HERE chinhambwe >= “.$distance.” >>>>ndinogona "kutora" chinhambwe kubva pano?
ndatenda zvakare,
Timmy S
zvisinei, ndaona kuti "basa" rinoshanda sei muphp
$dis=getDistanceBetweenPointsNew($userLati, $userLongi, $lati, $longi, $unit = 'Km')
ndotenda zvikuru!!
ok, zvese zvandaedza hazvisi kushanda. Ndinoreva, zvandinazvo zvinoshanda, asi madaro ari kure.
Pane angave achiona chii chisina kunaka nekodhi iyi?
kana(isset($_POST['submitted'])){ $z = $_POST['zipcode']; $r = $_POST['radius']; echo “Zvibairo zve“.$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. city,z1.state KUBVA mrk m, zip z1, zip z2 PAPI m.zipcode = z1.zipcode UYE z2.zipcode = $z UYE (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 ") kana kufa (mysql_error()); nepo($row = mysql_fetch_array($sql)) {$store1 = $row['MktName']."”; $store = $row['LocAddSt'].””; $store .= $row['LocAddCity'].”, “.$row['LocAddState']." “.$row['zipcode']; $latitude1 = $mutsara['lat']; $ longitude1 = $ mutsara['lon']; $latitude2 = $mutsara['y1']; $longitude2 = $mutsara['x1']; $guta = $mutsara['guta']; $state = $row['state']; $dis = getnew($latitude1, $longitude1, $latitude2, $longitude2,$unit ='Mi'); // $dis = chinhambwe($lat1, $lon1, $lat2, $lon2); $verified = $row['verified']; kana($verified == '1'){ echo “”; maungira "".$store.""; echo $dis . ” mamaira (ma) kure”; maungira ""; } zvimwe { echo “”.$store.””; echo $dis . ” mamaira (ma) kure”; maungira ""; }}}
mabasa angu.php code
function getnew($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'Mi') {$theta = $longitude1 – $longitude2; $distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta)) ); $distance = acos($ chinhambwe); $ chinhambwe = rad2deg($ kureba); $ kureba = $ kureba * 60 * 1.1515; chinja ($ unit) {kesi 'Mi': kuputsa; nyaya 'Km' : $distance = $distance * 1.609344; } kudzoka (kutenderera($distance,2)); }
Ndinokutendai mberi
Ndinokutendai nechinyorwa ichi. Kushanda zvakanaka nekodhi yangu. 🙂
Hei Douglas, chinyorwa chikuru. Ini ndawana tsananguro yako yeiyo geographical concepts uye iyo kodhi inonakidza chaizvo. Mazano angu chete angave ekuisa nzvimbo uye indent iyo kodhi yekuratidzira (seStackoverflow, semuenzaniso). Ini ndinonzwisisa kuti iwe unoda kuchengetedza nzvimbo, asi yakajairika kodhi spacing / indentation yaizoita kuti zvive nyore kwandiri, semugadziri wepurogiramu, kuverenga nekutsemura. Zvisinei, chinhu chidiki. Ramba wakadaro.
Ndatenda! Ndagadzirisa posvo zvishoma… asi maequation anotora nzvimbo yakawandisa uye akareba zvekuti handina chokwadi chekuti inobatsira zvakanyanya.
Ndokutenda zvikuru.
apa tichishandisa with function we are getting one type of distance..apo tichishandisa query its coming other type of distance
I wont count distance between two state
Muchas gracias por tan hermoso codigo…
Thisd i yakanaka cosinus mabasa. Handizive masvomhu, asi ndatenda!
Basa Rakanaka… 🙂 (y)
inoita seyakakurumidza (mysql 5.9) kushandisa kaviri fomura mukusarudza uye kupi:
$formula = “(((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 = 'SARUDZA *, '.$formula.' sechinhambwe KUBVA patafura PAPI '..$formula.' <= '.$distance;
ndatenda…
kusashanda kana
“WHERE chinhambwe”
kushanda kana
“KUVA nedaro”
Ndinotenda zvikuru nekuveura chinyorwa ichi.chinobatsira zvikuru.
PHP yakatanga kugadzirwa seyakareruka scripting platform inonzi "Personal Home Peji". Mazuva ano PHP (iyo pfupi yeHypertext Preprocessor) ndeimwe nzira yeMicrosoft's Active Server Mapeji (ASP) tekinoroji.
PHP ndeye yakavhurika sosi server-padivi mutauro uyo unoshandiswa kugadzira ane simba mapeji ewebhu. Inogona kuiswa muHTML. PHP inowanzo shandiswa pamwe chete neMySQL dhatabhesi paLinux/UNIX web server. Zvichida ndiwo mutauro wemanyorero unonyanya kufarirwa.
Ndakawana mhinduro iri pamusoro isingashande nemazvo.
Ndinofanira kuchinja kuti:
$qqq = “SARUDZA *,(((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) sechinhambwe KUBVA `register` “;
Kutenda Kupendra!
thank you sir wroking perfect.. asi ndine mubvunzo mumwechete kana ndichida kubuda ndisina decimal point ndoita sei..?
Kutenda mberi.
Mhoro, ndapota ndichada rubatsiro rwako pane izvi.
Ndakaita chikumbiro kuwebhu-server yangu
53.47792 = $ latitude
-2.23389 = $ longitude
uye 20 = chinhambwe chandinoda kutora
Nekudaro uchishandisa iwe formula, inotora mitsara yese mudb yangu
$zvabuda = DB::sarudza(DB::raw(“SARUDZA *,((acos(chivi((“.$latitude).pi()/180)) * chivi((latpi()/180))+cos((“.$latitude.”pi()/180)) * cos((latpi()/180)) * cos(((“.$longitude.”- lng)pi()/180)))180/pi())601.1515*1.609344) sechinhambwe KUBVA mamakisi VAVE chinhambwe >= “.$distance ));
[{“id”:1,”zita”:”Frankie Johnnie & Luigo Too”,”address”:”939 W El Camino Real, Mountain View, CA”,”lat”:37.386337280273,”lng”:-122.08582305908, ”distance”:16079.294719663},{“id”:2,”zita”:”Amici's East Coast Pizzeria”,address”:”790 Castro St, Mountain View, CA”,”lat”:37.387138366699,”lng”: -122.08323669434,”distance”:16079.175940152},{“id”:3,”zita”:”Kapp's Pizza Bar & Grill”,”address”:”191 Castro St, Mountain View, CA”,”lat”:37.393886566162 ”lng”:-122.07891845703,”distance”:16078.381373826},{“id”:4,”zita”:”Round Table Pizza: Mountain View”,address”:”570 N Shoreline Blvd, Mountain View, CA”, ”lat”:37.402652740479,”lng”:-122.07935333252,”distance”:16077.420540582},{“id”:5,”zita”:”Tony & Alba's Pizza & Pasta”,”619kero, Mountain Ecuela”:”37.394012451172 Ona, CA”,”lat”:122.09552764893,”lng”:-16078.563225154,”distance”:6},{“id”:4546,”zita”:”Oregano's Wood-Fired Pizza”37.401725769043 El Camino Real, Los Altos, CA”,”lat”:122.11464691162,”lng”:-16077.937560795,”distance”:7},{“ id":24,"zita":"Mabhawa nemagrill","address":"53.485118865967 Whiteley Street, Manchester","lat":2.1828699111938,"lng":-8038.7620112314,"chinhambwe":XNUMX}]
Ndinoda kutora mitsara chete nemakiromita makumi maviri asi inounza mitsetse yose. Veduwe ndiri kutadza nei
Ndiri kutsvaga mubvunzo wakafanana asi ndakawedzera zvishoma - muchidimbu uku kuunganidza zvese zvinorongeka mukati memamaira maviri ega ega coordinate uyezve kuverenga kuti macoordinate mangani muboka rega rega uye kubuda boka rimwe chete rine akanyanya kurongeka - kunyangwe kana Une boka rinopfuura rimwechete pakati pemapoka ane nhamba yakawanda yevanoronga - ingoburitsa boka rakangoitika kubva mumapoka ane nhamba huru dzakakura -
Ndinokutendai zvikuru nekugovana.