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

dth*_*her 293 sql database geocoding latitude-longitude

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

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

dot*_*joe 423

Decimal(9,6)

如果你不习惯精度和比例参数,这里有一个格式字符串visual:

###.######

  • 纬度为(8,6),经度为(9,6) (72认同)
  • +1:使用固定的小数位数避免舍入错误怪异. (27认同)
  • 为了他们的目的,维基百科建议:"避免过度精确(0.0001°<11 m,1''<31 m)." http://en.wikipedia.org/wiki/Wikipedia:Obtaining_geographic_coordinates为了使我的字段更精确,我还决定使用小数点右边的六位数,左边三位数.我很高兴这个答案证实这是一个很好的决定. (13认同)
  • @Makito latititude从-90到90度...所以只需要小数点左边2个位置... (12认同)
  • 此外,如果您不打算使用数字,请考虑将它们存储为字符串.使用`varchar(20)`会非常精确,而且存储空间也很便宜. (9认同)
  • 为什么纬度(8,6)和经度(9.6)......?,任何原因?,为什么不同时(9.6)? (3认同)
  • @Throoze 你能解释一下建议“varchar(20)”背后的原因吗?除了将坐标发送到 Google Maps API 之外,我不会执行任何操作,因此我对使用“VARCHAR(20)”而不是“DECIMAL(9,6)”的好处感到好奇。谢谢你! (2认同)
  • @Shiva井地理定位数据类型仅在您使用任何GIS驱动程序或应用程序进行操作时才有用.但是如果你只打算存储它们,那么字符串就足够了.无论如何,如果您需要对存储的值进行一些奇特的操作,请查看[本文](http://groups.google.com/group/google-maps-api/browse_thread/thread/b928b5fbc5351821)详细说明精度并在javascript应用程序中使用这些值.我猜这真的取决于你.请记住,Google Maps API使用Json对象,因此对于它们来说,一切都是字符串. (2认同)
  • 这是一个非常小众的案例,但澳大利亚统计局提供的精确度为小数点后 8 位,所以我使用 Dec 11,8 (2认同)

Kei*_*ith 5

我们使用float,但任何带有6位小数的数字风格也应该有效.

  • 计算可能会引入额外的数字,这只是噪音.此外,十进制到二进制的转换将使最后的小数位可疑并且可能是错误的.某些目的很好.糟糕的导航. (36认同)

归档时间:

查看次数:

206413 次

最近记录:

10 年,5 月 前