您的位置:

解决方案:django TypeError('Invalid SRS type "%s"' % srs_type)

  发布时间:2023-03-01 13:29:51
报错的原因这个错误通常是由于在调用 Django 的函数时传入了无效的参数导致的。例如解决办法就是确保传入的坐标系类型是有效的。你可以在[GDAL 官方文档中查看支持的坐标系类型。这是一个使用函数创建 WGS84 坐标系的例子使用整数创建坐标系使用字符串创建坐标系使用 from_epsg 静态方法创建坐标系这是一个使用函数创建 Web Mercator 坐标系的例子使用整数创建坐标系使用字符串创建坐标系使用 from_epsg 静态方法创建坐标系你可以在[GDAL 官方文档中查看支持的坐标系类型。

报错的原因

这个错误通常是由于在调用 Django 的 `SpatialReference` 函数时传入了无效的参数导致的。

举个例子,如果你在调用 `SpatialReference` 函数时传入了一个不支持的坐标系类型,就会看到这个错误。

例如:


from django.contrib.gis.gdal import SpatialReference

srs = SpatialReference('invalid_srs')

解决办法就是确保传入的坐标系类型是有效的。你可以在[GDAL 官方文档](https://gdal.org/user/supported_rasters.html)中查看支持的坐标系类型。

如何解决

要解决这个问题,你需要确保在调用 `SpatialReference` 函数时传入的参数是有效的坐标系类型。

例如,如果你想使用 WGS84 坐标系,你可以这样做:


from django.contrib.gis.gdal import SpatialReference

srs = SpatialReference(4326)

或者,你也可以使用字符串来指定坐标系类型:


from django.contrib.gis.gdal import SpatialReference

srs = SpatialReference('EPSG:4326')

另外,你还可以使用 `SpatialReference` 类的 `from_epsg` 静态方法来创建坐标系类型:


from django.contrib.gis.gdal import SpatialReference

srs = SpatialReference.from_epsg(4326)

你可以在[GDAL 官方文档](https://gdal.org/user/supported_rasters.html)中查看支持的坐标系类型。

使用例子

当然有!这是一个使用 `SpatialReference` 函数创建 WGS84 坐标系的例子:


from django.contrib.gis.gdal import SpatialReference

# 使用整数创建坐标系
srs = SpatialReference(4326)
print(srs)  # Output: EPSG:4326

# 使用字符串创建坐标系
srs = SpatialReference('EPSG:4326')
print(srs)  # Output: EPSG:4326

# 使用 from_epsg 静态方法创建坐标系
srs = SpatialReference.from_epsg(4326)
print(srs)  # Output: EPSG:4326

这是一个使用 `SpatialReference` 函数创建 Web Mercator 坐标系的例子:


from django.contrib.gis.gdal import SpatialReference

# 使用整数创建坐标系
srs = SpatialReference(3857)
print(srs)  # Output: EPSG:3857

# 使用字符串创建坐标系
srs = SpatialReference('EPSG:3857')
print(srs)  # Output: EPSG:3857

# 使用 from_epsg 静态方法创建坐标系
srs = SpatialReference.from_epsg(3857)
print(srs)  # Output: EPSG:3857

你可以在[GDAL 官方文档](https://gdal.org/user/supported_rasters.html)中查看支持的坐标系类型。