我正在运行一个 django 应用程序,并且我正在为我的数据库使用 PostGis 扩展。我试图更好地理解当我发送坐标时会发生什么,特别是因为我正在使用不同的坐标系,这些坐标系转换为不同的 SRID。我的问题有三个:
- 在数据库中创建点或多边形时,django/postgis 是否处理转换。
- 我可以使用不同的 SRID 查询它吗
- 是否建议使用默认的 SRID=4326
假设我有一个这样的模型(注意我正在设置标准 SRID=4326):
class MyModel(models.Model):
name = models.CharField(
max_length=120,
)
point = models.PointField(
srid=4326,
)
polygon = models.PolygonField(
srid=4326,
)
- 现在我正在发送具有不同 SRIDS 的不同坐标和多边形。
我在 django 文档中读到:
此外,如果 GEOSGeometry 位于与字段不同的坐标系中(具有不同的 SRID 值),则使用空间数据库的转换过程将其隐式转换为模型字段的 SRID
因此,如果我理解正确,这意味着当我发送这样的 API 请求时:
data = {
"name": "name"
"point": "SRID=2345;POLYGON ((12.223242267 280.123144553))"
"polygon": "SRID=5432;POLYGON ((133.2345662 214.1429138285, 123.324244572 173.755820912250072))"
}
response = requests.request("post", url=url, data=data)
多边形和点都将正确转换为 SRID=4326??
编辑:
当我发送一个点时,SRID=25832;POINT (11.061859 49.460983)
我'SRID=4326;POINT (11.061859 49.460983)'
从数据库中得到。当我发送一个多边形时,我从数据库中'SRID=25832;POLYGON ((123.2796155732267 284.1831980485285, ' '127.9249715130572 273.7782091450072, 142.2351651215613 ' '280.3825718937042, 137.558146278483 290.279508688337, ' '123.2796155732267 284.1831980485285))'
得到一个多边形'SRID=4326;POLYGON ((4.512360573651161 0.002563158966576373, ' '4.512402191765552 0.002469312460126783, 4.512530396754145 ' '0.002528880231016955, 4.512488494972807 0.00261814442892858, ' '4.512360573651161 0.002563158966576373))'
- 我可以使用不同的 SRID 查询它吗
不幸的是,我还没有找到将相同点查询回其原始 SRID 的方法。这甚至可能吗?
- 最后,我主要使用欧洲的坐标,但我也可能不得不包括来自世界各地的零星坐标。是
SRID=4326
一个好的标准吗?
非常感谢您提前提供的所有帮助。非常感谢。