MySQL PHP posta kodu karşılaştırması özellikle mesafe

1 Cevap php

Ben (200 zip kodları şu anda yaklaşık orada bir zip (kullanıcı sağlar) kodu ve diğer zip kodları bir sürü arasındaki mesafeyi karşılaştırmak için (zaman yük açısından) en verimli olacağını anlamaya çalışıyorum ama onun konu) zamanla artırmak. Ben sadece topu parkta kesin bir şey gerekmez.

Ben ABD'nin tüm bir posta kodu csv dosyasını indirdim ve ben iki posta kodları arasındaki mesafeyi üreten bir işlevi var (ben inanıyorum radyan.) Ben sadece sıralamak için gereken mesafeyi göstermek gerekmez yakın sonuçlarının ilk olmanın 200 zip kodları.

Ben bir mysql tabloya csv yüklenen dosya. Ben tüm 200 zip kodları ile elimden döngüsü düşünme ve mesafeyi içeren her biri için bir alanı güncelleştirmek edildi. Sonra ORDER BY kullanarak, uzak yakın onları sıralamak.

Herkes bunu yapmak için daha etkili bir yol biliyor mu? Bu yolu zip kodları tüm db bir arama sorgusu çalıştırdığınızda her zaman güncelleme gerektirir. Şimdi sadece 200 zip kodları onun değil büyük bir anlaşma ile, ama ben db oluşturur gibi yüklenme süresini yavaşlatır düşünün. Teşekkürler öncesinde herhangi bir tavsiye için, onun çok takdir!

1 Cevap

Javascript:

var R = 6371; // km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad(); 
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
        Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) * 
        Math.sin(dLon/2) * Math.sin(dLon/2); 
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
var d = R * c;

İki nokta arasındaki burada d = mesafe

Bu Haversine formüldür.