English 中文(简体)
大量地缘编码和远程核对
原标题:Large volume geocoding and distance checking

我正试图写给一家公司的一份书,该公司维持一个每天更新的登记册。 用户必须使用该用户的位置,并显示该登记处所有最接近的地点。 到目前为止,我已经 app过呼吁,为我来的一位小的Plist提供地理编码信息。 然而,从扩大的角度来看......。 现在,我使用一个地理编码钥匙,而这一评估不能在现实世界中正确和迅速地运作,因为眼光每天只提供每钥匙15,000份申请,而且清单位于公司服务器上。 这是一个大名单。 上升25 000个数据点。

这些gu像“Yowza”仪或任何其他地点,是如何通过这些数据库进行搜索的,这些数据库在获取所有用户所需的地理编码信息时经常更新。 她们是否为特定地点储存铁道和长点,或者是否需要谷歌专门的东西? 他们如何迅速获取信息。 采用“质量标准”数据库是否有助于这样做? 感谢 你提前。

问题回答

如果您的所在地点是静态的,而且你刚刚需要知道用户在多大程度上来自你能够使用该氮的某个地点(担心它会造成电离层):

- (CLLocationDistance)distanceToLocation: (CLLocationCoordinate2D)theLocation
{   
    CLLocationCoordinate2D location1 = [[locationManager location] coordinate];     
    CLLocationCoordinate2D location2 = theLocation;

    typedef double KLLocationRadians;

    //////////
    const double DEGREES_TO_RADIANS = 0.0174532925;
    CLLocationDistance R = 6371;    // mean radius of the earth in km
    CLLocationDegrees dLat = (location2.latitude - location1.latitude);
    CLLocationDegrees dLon = (location2.longitude - location1.longitude);
    KLLocationRadians dLatRadians = dLat * DEGREES_TO_RADIANS;
    KLLocationRadians dLonRadians = dLon * DEGREES_TO_RADIANS;

    double sinDLatRadiansOver2Squared = sin( dLatRadians / 2.0 ) * sin( dLatRadians / 2.0 );
    double cosLocation1InRadiansTimeCosLocation2InRadians = 
    cos( location1.latitude * DEGREES_TO_RADIANS ) * cos( location2.latitude * DEGREES_TO_RADIANS );
    double sinDLonRadiansOver2Squared = (sin( dLonRadians / 2.0 ) * sin( dLonRadians / 2.0 ));

    double a = sinDLatRadiansOver2Squared + (cosLocation1InRadiansTimeCosLocation2InRadians * sinDLonRadiansOver2Squared);

    double c = 2.0 * atan2( sqrt( a ), sqrt( 1 - a ) );
    CLLocationDistance distance = R * c;
    //NSLog( @"Distance is: %.2fkm - %.2fmiles", distance, (distance * 0.621371192) );

    return (distance * 0.621371192); // return distance in miles
}

另外,你还可以制造两个CLocation物体,并使用距离去除:方法。

谷歌不知道有多少服务器。 他们能够真正迅速地这样做。

如果你的申请需要大量时间敏感的用户数据,在整个网络中都可以获得,那么我确实不知道这样做的另一种方式,只是从任何地方向你的非行服务器发送最新情况。 而如果需要施舍,则需要许多肌肉,有些是真正的cl,或者两者。

然后,如果你需要找到附近的用户,那么,我相信,你能够把属于一定纬度/长度窗口的所有用户送回。

如果选择你的数据库引擎太晚,2008年服务器的特征是允许你使用空间数据。 你可以在T-SQL进行远程计算。 关于通过2008年服务器(

您能否澄清一下你如何重新进行地理编码? 您的25k数据点是否每天都在变化,或者你是否认为你会有足够的用户每天打上15k的极限? 另外,你是否试图从地址或从纬度线的地址获得自由度和长度?

如果你在最靠近的地方展示最先进的XX,那么你就不得不从Pi做任何地理编码。 你们可以从核心位置获得目前的纬度和长度。 然后,你可以把这个地点与你的数据库相比较,以显示最接近的情况。 如果贵国的数据库支持地理信息系统/空间功能(大部分是这样),则使用这些功能。 如果不是的话,你自己就会滚动(国歌是你的朋友)。

如果你真心知道你会再次打上极限,那么就考虑打上地理编码数据。 这样,你就可以先检查一下,如果它(即“i”或“登记处所在地”)离你远的地方。 如果你能够靠近紧凑的地点(或许是1/4英里,取决于这些事情的是什么),那么就利用了附带结果。 只有当你走得太远时,才会有地缘关系。

这一服务器边表应当为所有数据点提供相对/长期坐标。 如果现在没有的话,今天就开始利用你来转换。 页: 1 然后,你就在服务器方面进行空间查询,以找到用户的所在地点,并将其放在地图上。

诚然,25k个数据点并不是说,尽管如此,你可以在当地储存这些数据,并询问新的数据点。 还有一个空间变量,即你可以用来尝试并确实装置当地空间查询。





相关问题
sqlite3 is chopping/cutting/truncating my text columns

I have values being cut off and would like to display the full values. Sqlite3 -column -header locations.dbs " select n.namelist, f.state, t.state from names n left join locations l on l.id = n.id ...

Entity Framework with File-Based Database

I am in the process of developing a desktop application that needs a database. The application is currently targeted to SQL Express 2005 and works wonderfully. However, I m not crazy about having ...

Improve INSERT-per-second performance of SQLite

Optimizing SQLite is tricky. Bulk-insert performance of a C application can vary from 85 inserts per second to over 96,000 inserts per second! Background: We are using SQLite as part of a desktop ...

Metadata for columns in SQLite v2.8 (PHP5)

How can I get metadata / constraints (primary key and "null allowed" in particular) for each column in a SQLite v2.8 table using PHP5 (like mysql_fetch_field for MySql)? sqlite_fetch_column_types (OO:...

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签