我如何在 geodjango 中使用小数字段?

How can i use decimal field in geodjango?

根据https://docs.djangoproject.com/en/dev/ref/contrib/gis/tutorial/#defining-a-geographic-model,纬度和经度信息存储在 geodjango 中的 floatfield。

  1. 我想知道如果经纬度存储在floatfield中,用来表示坐标的有效数字是多少?

  2. 有没有办法改变geodjango中floatfield的位数?

  3. 我可以在 geodjango 中使用 decimalfield 而不是 floatfield 吗?那我该怎么做呢?

因为我正在构建一个需要很多距离计算依赖于坐标的服务,所以我需要减少计算量。

感谢阅读我拙劣的英文写作。

According to https://docs.djangoproject.com/en/dev/ref/contrib/gis/tutorial/#defining-a-geographic-model, lat and lon information is stored at floatfield in geodjango.

不正确的引用和推理。你正在看的是一个教程,它展示了如何将 World Borders Shapefile 导入到 django 中。 lat 和 long 在这里真的是无关紧要的领域。重要的是 mpoly。这可能就是为什么 lat 和 lng 在这里存储为浮点数。但是他们可以通过不使用 lat,lng 作为单独的字段来避免混淆。

真正的 geodjango 存储点的方法是使用 PointField 它允许您存储有关位置的附加信息,例如 SRID。确切的内部表示因 RDBMS 而异。

如果您需要距离计算,唯一的方法是使用 GeometryField 或其子项之一 类(其中 PointField 是一个),因此您问题中的子主题 1、2、3不是很相关。