PHP가 원래 코딩 되었기 때문에 Django의 백엔드를 움직이고 있습니다. 어쨌든 지구와 화성에서 가장 큰 혼란이 있습니다 ... 어쨌든 .. PHP와 Python을 복사했습니다. 그것을 아래에 베끼는 것을 생각해 냈다. 둘 다 IDENTICAL 값을 반환하지만, 어떤 이유로 Django/Python은 쿼리에서 아무 것도 반환하지 않습니다.경도/위도 SQL 쿼리로 고생 PHP에서 새로운 Python 백엔드로 복사했습니다. 몇 초의 의견이 필요합니다
나는 GeoDjango를 설치하는 방법을 제안했지만, 그렇게하지 않아도 될 것으로 기대하고있었습니다.
PHP :
$lat = $myrow['latitude'];
$lon = $myrow['longitude'];
// get the min/max latitudes and longitudes for the radius search
$lat_range = $miles/69.172;
$lon_range = abs($miles/(cos($lon) * 69.172));
$min_lat = $lat - $lat_range;
$max_lat = $lat + $lat_range;
$min_lon = $lon - $lon_range;
$max_lon = $lon + $lon_range;
$sql = "SELECT * FROM zipcodes WHERE
(latitude >= $min_lat AND latitude <= $max_lat AND
longitude >= $min_lon AND longitude <= $max_lon)";
파이썬 :
distance = float(distance)
orderloc = Zipcodes.objects.get(zip=order.zip)
orderloc.longitude = float(orderloc.longitude)
orderloc.latitude = float(orderloc.latitude)
latrange = distance/69.172
lonrange = math.fabs(distance/(math.cos(orderloc.longitude) * 69.172))
minlat = orderloc.latitude - latrange
maxlat = orderloc.latitude + latrange
minlon = orderloc.longitude - lonrange
maxlon = orderloc.longitude + lonrange
distanceresults = Zipcodes.objects.all().filter(longitude__gte=minlon,
longitude__lte=maxlon,latitude__gte=minlat,latitude__lte=maxlat)
추신 : 그래서 여기
코드입니다 이 장고 반환하는 쿼리 ...
SELECT (a ton of stuff here) FROM `zipcodes` WHERE (`zipcodes`.`longitude` <= -74.489601513 AND `zipcodes`.`longitude` >= -75.957598487 AND `zipcodes`.`latitude` >= 39.8528641705 AND `zipcodes`.`latitude` <= 41.2985358295)
쉘에서 실행하고 Zipcodes 필터로 "재생"해 보셨습니까? 파이썬 manage.py 셸 – Jesse
껍질에서하지 않았지만 .. 코드와 함께 놀았어요 .. 예를 들면 : : : 나는 각각의 minlat, maxlat, etc 값에 100을 더했습니다. ll은 (아마 모든) 결과를 반환 할 것입니다. 그래서 나는 값이 어떻게 든 망쳐 놓은 것 같아요. 나는 또한 변수가 아닌 정확한 값을 입력하려고 시도했다. 아무것도 수행하지 못했다. – Chris
PS가 질문 인 경우 파이썬의 마지막 두 줄은 "SELECT (여기에있는 물건 중 하나)에서 우편 번호"라는 쿼리입니다 ... – jcfollower