Geodjango 创建一个新的 SRID
Geodjango create a new SRID
大家好,我一直在尝试添加 shapefile,但遇到了一些困难,因为我所在国家/地区的坐标系不是 gdal 库的一部分。我如何创建一个新的 SRID.I 已经创建了 srs 并在 postgis 中定义了空间参考系统。
PostGIS 将空间参考系统存储在名为 spatial_ref_sys
的 table 中。 Django 有一个模型可以访问此 table 中的数据,称为 SpatialRefSys
,但未记录在案。
也没有记录实用函数 add_srs_entry()
, which takes an SpatialReference
作为第一个参数的实例,它可以从 PROJ.4 字符串中定义。
所以像这样的东西应该可以工作:
from django.contrib.gis.utils.srs import add_srs_entry
from django.contrib.gis.gdal import SpatialReference
srs = SpatialReference('''...PROJ.4 string...''')
add_srs_entry(srs)
或者,您可以使用数据库管理工具添加条目
如果 GDAL 不支持您所在国家/地区的 SRID - 或者 如果您想添加自己的参考系统 - 我可以通过在 public.spatial_ref_sys
手动:
INSERT INTO public.spatial_ref_sys (srid, proj4text) VALUES
($srid, $proj);
或通过获取 table:
使用 django
from django.db import DEFAULT_DB_ALIAS, connections
database = DEFAULT_DB_ALIAS
SpatialRefSys = connections[database].ops.spatial_ref_sys()
SpatialRefSys.objects.create(srid=$srid, proj4text=$proj)
请记住,您将无法按如下方式转换 GeosGeometry objects as this uses GDAL (which does not read spatial_ref_sys
). Instead use the database function:
model.objects.annotate(position_wgs84=Transform('position', 4326))
大家好,我一直在尝试添加 shapefile,但遇到了一些困难,因为我所在国家/地区的坐标系不是 gdal 库的一部分。我如何创建一个新的 SRID.I 已经创建了 srs 并在 postgis 中定义了空间参考系统。
PostGIS 将空间参考系统存储在名为 spatial_ref_sys
的 table 中。 Django 有一个模型可以访问此 table 中的数据,称为 SpatialRefSys
,但未记录在案。
也没有记录实用函数 add_srs_entry()
, which takes an SpatialReference
作为第一个参数的实例,它可以从 PROJ.4 字符串中定义。
所以像这样的东西应该可以工作:
from django.contrib.gis.utils.srs import add_srs_entry
from django.contrib.gis.gdal import SpatialReference
srs = SpatialReference('''...PROJ.4 string...''')
add_srs_entry(srs)
或者,您可以使用数据库管理工具添加条目
如果 GDAL 不支持您所在国家/地区的 SRID - 或者 如果您想添加自己的参考系统 - 我可以通过在 public.spatial_ref_sys
手动:
INSERT INTO public.spatial_ref_sys (srid, proj4text) VALUES
($srid, $proj);
或通过获取 table:
使用 djangofrom django.db import DEFAULT_DB_ALIAS, connections
database = DEFAULT_DB_ALIAS
SpatialRefSys = connections[database].ops.spatial_ref_sys()
SpatialRefSys.objects.create(srid=$srid, proj4text=$proj)
请记住,您将无法按如下方式转换 GeosGeometry objects as this uses GDAL (which does not read spatial_ref_sys
). Instead use the database function:
model.objects.annotate(position_wgs84=Transform('position', 4326))