相关疑难解决方法(0)

在SQL数据库中存储纬度和经度数据时要使用的数据类型是什么?

在ANSI SQL兼容数据库中存储纬度或经度数据时,哪种数据类型最合适?应该float使用,或decimal,或......?

我知道Oracle,MySql和SQL Server已经添加了一些专门用于处理地理数据的特殊数据类型,但我对如何将信息存储在"普通的"SQL数据库中感兴趣.

sql database geocoding latitude-longitude

293
推荐指数
2
解决办法
21万
查看次数

什么MySQL数据类型应该用于纬度/经度8位小数?

我正在使用地图数据,并Latitude/Longitude扩展到8位小数.例如:

Latitude 40.71727401
Longitude -74.00898606
Run Code Online (Sandbox Code Playgroud)

我在Google文档中看到 它使用:

lat FLOAT( 10, 6 ) NOT NULL,  
lng FLOAT( 10, 6 ) NOT NULL
Run Code Online (Sandbox Code Playgroud)

但是,它们的小数位只有6个.
我应该使用FLOAT(10, 8)还是有另一种方法来考虑存储这些数据,这样才能准确.它将与地图计算一起使用.谢谢!

mysql floating-point types

227
推荐指数
8
解决办法
16万
查看次数

我应该准确存储纬度和经度吗?

我在这里读到这个问题:

在SQL数据库中存储纬度和经度数据时要使用的数据类型是什么?

似乎普遍的共识是使用Decimal(9,6)是要走的路.对我来说,问题是,我真的需要这么准确吗?

例如,Google的API会返回如下结果:

"lat": 37.4219720,
"lng": -122.0841430
Run Code Online (Sandbox Code Playgroud)

超出-122.0841430,我需要多少位数?我已经阅读了几本指南,但我无法从中得到足够的理解来解决这个问题.

更确切地说,在我的问题中:如果我想在精确位置50英尺范围内准确,我需要存储多少小数点?

也许一个更好的问题实际上是一个非编程问题,但它会是:每个小数点给你多少准确?

这很简单吗?

  1. 项目清单
  2. x00 = 6000英里
  3. xx0 = 600英里
  4. xxx = 60英里
  5. xxx.x = 6英里
  6. xxx.xx = .6英里
  7. 等等?

mysql geolocation

93
推荐指数
5
解决办法
6万
查看次数

正确的纬度和经度数据类型?(在activerecord中)

我应该将纬度和经度存储为字符串或浮点数(或其他内容)吗?

(我在轨道上使用activerecord/ruby​​,如果这很重要的话).

activerecord types ruby-on-rails

72
推荐指数
3
解决办法
3万
查看次数

Database/SQL:如何存储经度/纬度数据?

表现问题......

我有一个拥有地理定位数据(经度和纬度)的房屋数据库.

我想要做的是找到使用InnoDB数据库引擎将位置数据存储在我的MySQL(v5.0.24a)中的最佳方法,以便我可以执行大量查询,其中我将返回所有之间的所有主记录x1和x2 latitude以及y1和y2 longitude.

现在,我的数据库架构是

---------------------
Homes   
---------------------
geolat - Float (10,6)
geolng - Float (10,6)
---------------------
Run Code Online (Sandbox Code Playgroud)

我的疑问是:

SELECT ... 
WHERE geolat BETWEEN x1 AND x2
AND geolng BETWEEN y1 AND y2
Run Code Online (Sandbox Code Playgroud)
  • 我上面描述的是使用Float(10,6)存储纬度和经度数据并分离出经度/纬度的最佳方法吗?如果不是,那是什么?存在Float,Decimal甚至Spatial作为数据类型.
  • 这是从性能角度执行SQL的最佳方法吗?如果不是,那是什么?
  • 使用不同的MySQL数据库引擎是否有意义?

更新:仍然没有答案

我在下面有3个不同的答案.一个人说要用Float.一个人说要使用INT.一个人说要使用Spatial.

所以我使用MySQL"EXPLAIN"语句来衡量SQL的执行速度.如果使用INTFLOAT用于经度和纬度数据类型,似乎绝对没有SQL执行(结果集提取)的差异.

使用" BETWEEN"语句似乎比使用" >"或" <"SQL语句要快得多.使用" BETWEEN"比使用" >"和" <"语句快近3倍.

话虽如此,我仍然不知道如果使用Spatial会对性能产生什么影响,因为我不清楚它是否支持我运行的MySQL版本(v5.0.24)......以及我如何支持它如果支持.

任何帮助都会受到极大的欢迎

mysql sql database performance sqlperformance

69
推荐指数
6
解决办法
8万
查看次数

用于存储纬度和经度的适当/最佳类型

在像C,C++或D这样的系统级编程语言中,用于存储纬度和经度的最佳类型/编码是什么?

我看到的选项是:

  • IEEE-754 FP为度或弧度
  • 度或弧度存储为32或64位int中的固定点值
  • 将整数范围映射到度数范围: - > deg = (360/2^32)*val
  • 度,点,秒和小数秒存储为int中的位字段
  • 某种结构.

简易解决方案(FP)具有主要的缺点,它具有非常均匀的分辨率(在英格兰的某个地方,它可以以微米为单位测量,在日本测量,它不能).这也有FP比较等所有问题.其他选项需要在数据生命周期的不同部分进行额外的努力.(代,演示,计算等)

一个有趣的选择是浮动精度类型,其中随着纬度增加它获得更多位并且经度变得更少(当它们朝向极点靠近时).

相关问题并不完全涵盖这一点:


顺便说一句:32位在赤道上提供大约0.3英寸的E/W分辨率.这接近于高等级GPS设置可以工作的规模(IIRC,它们在某些模式下可以降至约0.5英寸).

OTOH如果32位均匀分布在地球表面,你可以在一边为大约344m的正方形,5 Bytes给21m,6B-> 1.3m和8B-> 5mm.

我现在没有特定的用途,但之前已经使用过这种东西,并且在某些时候再次期待.

encoding types latitude-longitude

63
推荐指数
8
解决办法
5万
查看次数

我应该在数据库中存储多少有效数字用于GPS坐标?

我在我的MySQL数据库中有经度和纬度坐标(GPS数据).

它目前存储为:

column     type
------------------------
geolat     decimal(10,6)
geolng     decimal(10,6)
Run Code Online (Sandbox Code Playgroud)

问题: 我是否真的需要一个decimal(10,6)与正确存储坐标数据一样大的数据类型?

由于我在经度和纬度上有一个综合索引,因此这个索引大小很大.如果我可以在不牺牲任何东西的情况下缩小它,那就太好了.

mysql database gps rdbms database-design

40
推荐指数
2
解决办法
2万
查看次数

如何使用Core Data(iPhone)存储CLLocation?

我正在尝试使用Core Location,MapKit和Core Data框架保存位置并在地图上检索位置.

我所做的是我刚刚创建了名为POI的实体并添加了诸如纬度(双重类型),经度(双重类型)等属性.

简单地说,我的应用程序使用两个NSNumber保存POI.(lat和long)但我觉得必须有一个更聪明的方法来存储CLLocation.

干杯.

iphone store core-data save cllocation

34
推荐指数
3
解决办法
2万
查看次数

问题在MySQL数据库中存储纬度和经度值

我想将从Google Maps GeoCoding API获取的纬度和经度值存储在MySQL数据库中.值为浮点格式.

12.9274529

77.5905970

当我想将它存储在数据库(数据类型为float)时,它会向上舍入浮动并以下列格式存储它:

12.9275

77.5906

我使用了错误的数据类型吗?如果是,那么我应该使用什么数据类型来存储纬度和经度值?

更新:

这是Allin要求的CREATE TABLE

CREATE TABLE `properties` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(100) NOT NULL,
  `description` text,
  `latitude` float DEFAULT NULL,
  `longitude` float DEFAULT NULL,
  `landmark` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `serial` (`serial`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
Run Code Online (Sandbox Code Playgroud)

php mysql floating-point types

17
推荐指数
3
解决办法
3万
查看次数

寻找'X'公里(或英里)内的城市

这可能会也可能不会很清楚,如果我不在基础上,或者您需要更多信息,请给我留言.也许有一个解决方案已经在我想要的PHP中.

我正在寻找一个函数,它将增加或减去经度OR纬度值的距离.

原因:我有一个包含所有纬度和经度的数据库,并希望形成一个查询来提取X公里(或英里)内的所有城市.我的查询看起来像这样......

Select * From Cities Where (Longitude > X1 and Longitude < X2) And (Latitude > Y1 and Latitude < Y2)

 Where X1 = Longitude - (distance)
 Where X2 = Longitude + (distance)

 Where Y1 = Latitude - (distance)
 Where Y2 = Latitude + (distance)
Run Code Online (Sandbox Code Playgroud)

我在PHP中工作,使用MySql数据库.

也欢迎任何建议!:)

mysql gis distance coordinates coordinate-systems

12
推荐指数
1
解决办法
1万
查看次数