经纬度的拓展应用
前面讲的了如何分析一批gps数据一年的使用情况(所在经纬度是哪个城市);其实这个需求是前公司提给一个python数据分析的。需求蛮多,包括最大速度啊、平均速度啊、有没急刹车啊。我是负责配合数据生成报告的,但是我为了学习因此我也尝试分析了少量。
很多时候我的能力就是这样慢慢锻炼出来的,看到一些新的技术点,自己都想尝试做一下,慢慢的就变成全栈了。分析一段时间后,我发现我分析的数据准确率要超过我们的数据分析员,原来我们分析员毕竟不是开发人员,没有接口池的概念,并发问题导致接口异常产生了异常数据。分析人员的主要优势是数学分析逻辑,接口完全没有能力处理。于是后来协调,我来给他提供接口池。于是我独立开发的接口池马上派上了用场,效果非常nice。
好了,聊完了别人聊自己。一个分析程序跑n天,总感觉慢,于是我想进一步优化。而且我意识到了一个最严重的问题,还是接口调用接口池的问题。有没办法做一个本地化的接口,这样就能做一劳永逸的方法。于是我决定自己创建个数据库提供服务。思路很简单,把经纬度按照0.01的差额全部掉用接口取到放进数据库,总共有500多w条数据,1G多,数据库分表优化就足够了,甚至不需要高速缓存就能满足一般调用。
好了,努力后来有回报了,马上有一个新的功能需求,如下:
就是点击地图上某个区域,要知道是点的哪个区域同时是高亮选中区域。这个需求的难点是这个区域是不规则的,这个时候我取到的经纬度数据就派的上用场了,首先根据球形的一些公式把经纬度与我们的坐标xy之间进行转换,然后点击坐标xy我们就知道点的哪些区域了。
当然 前端的话,我们还是得进行优化。把0.01精度的按照1精度取值,这样前端需要的数据就缩小了10000倍。然后发现还不够,还得自创格式。如用“50-76”代替“50,51,52,...,76”,减少代码体积,于是得到一个优化格式的json
{"xibei":{"6":["27-30","33-34"],"7":["26-37"],"8":["26-38"],"9":["26-38"],"10":["26-41"],"11":["26-42"],"12":["26-42"],"13":["26-42"],"14":["26-40"],"15":["25-40"],"16":["25-40"],"17":["24-40"],"18":["23-40"],"19":["18-41"],"20":["18-41"],"21":["18-41"],"22":["17-41"],"23":["15-41"],"24":["15-41"],"25":["15-40"],"26":["16-40"],"27":["16-40"],"28":["13-40"],"29":["13-47"],"30":["12-48"],"31":["12-48"],"32":["13-49"],"33":["14-50"],"34":["15-50"],"35":["17-19","22-50"],"36":["22-50"],"37":["22-50"],"38":["22-52"],"39":["23-53"],"40":["24-52"],"41":["25-52"],"42":["28-50"],"43":["28-47"],"44":["29-49"],"45":["33-50"],"46":["32-51"],"47":["33-51"],"48":["35-51"],"49":["37-49"],"50":["36-49"],"51":["36-48"],"52":["36-49"],"53":["35-49"],"54":["39-51"],"55":["39-51"],"56":["36-51"],"57":["36-51"],"58":["36-37","39-51"],"59":["39-52"],"60":["39-52"],"61":["37-52"],"62":["36-53"],"63":["35-53"],"64":["35-40","42-50"],"65":["48-49"]},"huabei":{"43":["28-31"],"44":["28-33"],"45":["28-33"],"46":["28-34"],"47":["28-35"],"48":["28-37"],"49":["28-37"],"50":["29-38"],"51":["29-36"],"52":["30-39"],"53":["30-40"],"54":["30-40"],"55":["30-39"],"56":["29-39"],"57":["29-36","38-38"],"58":["29-39"],"59":["29-40"],"60":["29-40"],"61":["29-40"],"62":["28-37"],"63":["27-36","38-38","40-41","45-46"],"64":["23-47"],"65":["23-46"],"66":["23-46"],"67":["23-45"],"68":["22-45"],"69":["14-16","22-44"],"70":["11-17","21-43"],"71":["11-16","19-42"],"72":["11-16","19-42"],"73":["4-5","8-16","18-40"],"74":["3-16","18-38"],"75":["3-38"],"76":["5-35"],"77":["5-34"],"78":["6-28","32-33"],"79":["6-27"],"80":["6-14","17-19","22-26"],"81":["6-13","22-26"],"82":["7-11","22-26"]},"dongbei":{"75":["3-5"],"76":["2-5","28-31"],"77":["2-7","28-32"],"78":["2-7","15-15","18-20","27-33"],"79":["2-7","13-22","26-32"],"80":["2-6","13-22","26-30","33-35"],"81":["4-35"],"82":["5-33"],"83":["6-33"],"84":["8-32"],"85":["9-31"],"86":["9-29"],"87":["9-28"],"88":["10-27"],"89":["10-27"],"90":["12-27"],"91":["12-25"],"92":["10-24"],"93":["9-17","19-24"],"94":["9-17"],"95":["10-16"]},"xinan":{"9":["48-48"],"10":["45-49"],"11":["42-50"],"12":["41-51"],"13":["40-52"],"14":["40-52"],"15":["40-53"],"16":["40-54"],"17":["40-55"],"18":["40-56"],"19":["40-58"],"20":["41-58"],"21":["41-59"],"22":["41-59"],"23":["41-59"],"24":["40-59"],"25":["40-61"],"26":["40-61"],"27":["40-61"],"28":["40-60"],"29":["40-60"],"30":["47-60"],"31":["48-62"],"32":["48-63"],"33":["49-63"],"34":["49-63"],"35":["50-62"],"36":["50-62"],"37":["50-61"],"38":["51-61"],"39":["52-61"],"40":["52-61"],"41":["52-62","68-70"],"42":["47-62","66-70"],"43":["47-74"],"44":["47-74"],"45":["49-76"],"46":["50-76"],"47":["51-76"],"48":["50-77"],"49":["49-77"],"50":["48-73"],"51":["47-74"],"52":["48-73"],"53":["49-73"],"54":["49-73"],"55":["51-72"],"56":["50-68","70-72"],"57":["51-68","70-72"],"58":["50-68"],"59":["51-67"],"60":["52-68"],"61":["52-67"],"62":["52-55","58-66"],"63":["53-55","60-66"],"64":["54-54"]},"zhongnan":{"54":["68-70"],"55":["68-70"],"56":["68-72"],"57":["68-74"],"58":["67-75"],"59":["67-76"],"60":["67-76"],"61":["55-58","66-76"],"62":["51-51","55-64","66-76"],"63":["49-76","79-81"],"64":["46-81"],"65":["45-81"],"66":["45-76","78-79"],"67":["45-76"],"68":["44-75"],"69":["42-75"],"70":["42-74"],"71":["42-74"],"72":["42-57","64-64","67-73"],"73":["45-48","50-57","67-73"],"74":["46-48","51-57","67-72"],"75":["67-72"],"76":["67-72"],"77":["68-71"],"78":["69-70"]},"huadong":{"70":["58-58","61-62"],"71":["44-44","57-67"],"72":["40-50","57-68"],"73":["39-45","47-54","56-68"],"74":["38-68"],"75":["37-68"],"76":["37-68"],"77":["37-69"],"78":["39-70"],"79":["37-69"],"80":["37-42","45-68"],"81":["37-41","46-67"],"82":["38-39","47-64"],"83":["37-39","49-62"],"84":["50-59"],"85":["55-56"]}}
不到4kb,非常nice。