Daugiau

Efektyviai apskaičiuoja tolimiausią tašką nuo kilmės


Bandau rasti protingą/efektyvų būdą apskaičiuoti tolimiausią tašką iš kilmės, atsižvelgiant į lat, lng taškų sąrašą.

Pavyzdžiui, jei bandau rasti artimiausią tašką iš kilmės, galėčiau pritaikyti šią funkciją, kuri suranda visus netoliese esančius taškus:

def getNearby (origin_dict, geo_dict_list, radius_miles): # pritaikytas iš http://www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL # tai sukurs lat+lng kvadratą # kampų nėra techniškai teisinga, tačiau bendra mintis: # lat_1 ---> lng_1 # | | # | | # | | # lat_2 ---> lng_2 # jei geografinis taškas yra mūsų lat+lng kvadrato viduje, tada brangiai apskaičiuokite tikslų atstumą #, kad pamatytumėte, ar jis yra apskritimo spindulio viduje kvadrate (apskritimas nerodomas) # geo_dict_list = [ {'lat': 1.234, 'lng': 5.678},…] ofset = radius_miles / 69.1 lat_1 = origin_dict ['lat'] - poslinkis lat_2 = origin_dict ['lat'] + ofset offset = radius_miles / abs (math.cos (math.radians (origin_dict ['lat'])) * 69.1) lng_1 = origin_dict ['lng'] - poslinkis lng_2 = origin_dict ['lng'] + poslinkio return_indexes = [] indeksui, geo_dict sąraše (geo_dict_list): jei (geo_dict ['lat']> = lat_1) ir (geo_dict ['lat'] <= lat_2) ir (geo_dict ['lng']> = lng_1) ir (geo_dict ['lng'] <= lng_2): jei getDistance (origin_dict, geo_dict, units = "miles") <= spindulio_miles: return_indexes.append (index) return return_indexes

Ar yra panašus būdas tai rasti, ieškant tolimiausio taško nuo kilmės? O gal yra būdas susisteminti pradinį sąrašą taip, kad būtų galima sumaniai rūšiuoti?


Tai, kas yra arčiausiai kilmės, yra toliausiai nuo priešingo „kvadrato“ kampo, jei tai nėra visas Žemės rutulys, apie kurį kalbate.

Tai buvo išbandyta 10 laipsnių „kvadrate“, naudojant 100 atsitiktinių taškų:


Žiūrėti video įrašą: CS50 2015 - Week 5, continued (Spalio Mėn 2021).