Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在本地数据库中保存距离矩阵?_Php_Mysql_Perl_Sqlite_Google Maps - Fatal编程技术网

Php 如何在本地数据库中保存距离矩阵?

Php 如何在本地数据库中保存距离矩阵?,php,mysql,perl,sqlite,google-maps,Php,Mysql,Perl,Sqlite,Google Maps,我有一个应用程序,它通过引用距离矩阵来工作。在当前的设计中,我们从GoogleMapsV3API收集距离矩阵,将其转换为散列并保存到本地文本文件中 我的数据包括一点到另一点之间的距离;我得了5000分 我面临着与尺寸有关的问题。文件大小已经是250MB 存储此类数据的最佳方式是什么 有没有办法快速获取这么多数据 如何从这么大的列表中搜索数据 我不相信谷歌允许你存储他们的数据。见10.1.3(b): 您不得预取、缓存或存储任何内容,除非您可以存储:(i)为提高Maps API实现的性能而存储的内容

我有一个应用程序,它通过引用距离矩阵来工作。在当前的设计中,我们从GoogleMapsV3API收集距离矩阵,将其转换为散列并保存到本地文本文件中

我的数据包括一点到另一点之间的距离;我得了5000分

我面临着与尺寸有关的问题。文件大小已经是250MB

  • 存储此类数据的最佳方式是什么
  • 有没有办法快速获取这么多数据
  • 如何从这么大的列表中搜索数据
  • 我不相信谷歌允许你存储他们的数据。见10.1.3(b):

    您不得预取、缓存或存储任何内容,除非您可以存储:(i)为提高Maps API实现的性能而存储的内容数量有限,前提是您临时、安全且不允许在服务之外使用内容;以及(ii)地图API文档特别允许您存储的任何内容标识符或密钥。例如,您不能使用内容创建“地点”或其他本地列表信息的独立数据库

    “不允许使用服务之外的内容”的“临时、安全”存储基本上是浏览器缓存。它可能在浏览器中包含HTML5本地存储。它不包括任何允许数据在其他任何地方使用的外部数据库。而250MB并不是“有限的数量”

    距离矩阵文档中的任何内容都不会覆盖该子句,并且不允许存储该数据

    因此:您只能存储直线距离(前提是您不使用Google geocoder查找位置)

    我不完全清楚谷歌为什么会有这样的限制;这可能是他们自己从数据提供商那里获得许可证的结果



    因此,这并不完全是厄运和黑暗,存储距离数据将需要一个包含三列的表:
    origin
    destination
    distance
    。从5000行中选择一行会很快。

    因为您存储的数据实际上只是一些相当简单的lat/long数学的结果,所以将每个点以lat/long值存储在数据库中,并根据请求计算两个给定点之间的差值不是更好吗?是的,这会略微增加加载时间,但如果与节省数据使用量相比,我个人认为这是值得的。表中有多少记录占用了所有空间?你能发布那个表的模式吗?也许还有一个来自该表的记录示例?您的日志使用PHP、MySQL、Perl和SQLite标记了您的帖子。tihs应用中使用了哪些特定的技术组合?您是否可以使用其他技术来解决此问题,如PostgreSQL?定义距离:线性或路由。如果是线性的,请参见@DaveRandom的注释。“我的数据由一个点到另一个点的距离组成,我有5000个点……250MB”表明你已经预先计算了每个点到另一个点的距离,一定要改变这一点。