Google maps 如何将EPSG 900913添加到geodjango spatialite数据库?

Google maps 如何将EPSG 900913添加到geodjango spatialite数据库?,google-maps,geodjango,bitnami,spatialite,epsg,Google Maps,Geodjango,Bitnami,Spatialite,Epsg,我正在尝试在Linux系统(目前在VMWare Player中的Bitnami django堆栈上本地运行)的管理界面中包含一个Google Maps小部件 地图进行渲染,但我的数据库中的点要素(任何真正的要素)没有显示在地图上,当尝试通过地图界面注册点时,我收到一个错误: An error occurred when transforming the geometry to the SRID of the geometry form field. 我从中了解到,初始化spatialite/s

我正在尝试在Linux系统(目前在VMWare Player中的Bitnami django堆栈上本地运行)的管理界面中包含一个Google Maps小部件

地图进行渲染,但我的数据库中的点要素(任何真正的要素)没有显示在地图上,当尝试通过地图界面注册点时,我收到一个错误:

An error occurred when transforming the geometry to the SRID of the geometry form field.
我从中了解到,初始化spatialite/sqlite数据库时不包括谷歌空间参考系统,解决方案应该是发出以下命令,以添加SRS:

$ python manage shell
>>> from django.contrib.gis.utils import add_srs_entry
>>> add_srs_entry(900913)
但是,当我从项目目录执行此操作时,我会得到:

ERROR 6: EPSG PCS/GCS code 900913 not found in EPSG support files.  Is this a valid
EPSG coordinate system?
我已经确认安装了GDAL、GEOS和PROJ4,并且已经将环境变量GDAL_DATA和PROJ_LIB添加到我的.profile中。我检查了/usr/local/share/gdal/gcs.csv文件,该文件似乎没有900913的条目(我在谷歌上搜索了其他版本的gcs.csv,但似乎没有包含900913)。我认为这是导致错误的原因。但是,同一目录中的cubewerx_extra.wkt确实有900913的wkt条目

我的问题是:如何使添加srs\u条目找到正确的srs表示,以便将其添加到我的数据库中?或者是否有解决办法,例如,以某种方式转换WKT表示并将其手动插入gcs.csv

谢谢你的帮助

编辑: 我找到了一种将EPSG900913手动插入spatialite数据库的方法。该解决方案的灵感来自http://trac.osgeo.org/openlayers/wiki/SphericalMercator(对不起,我没有足够的声誉来发布更多链接)上的sql语句,并使用原始sql(如https://docs.djangoproject.com/en/dev/topics/db/sql/#直接执行自定义sql)发布到数据库后端:

我已经确认该条目现在位于spatial_ref_sys表中。但是我在尝试在管理界面中添加点时仍然会遇到相同的错误。可以将点添加到地图中,但在尝试保存该功能时,出现以下错误:

An error occurred when transforming the geometry to the SRID of the geometry form field.
上面的sql语句正确吗?它是否足够,或者add_srs_条目是否也可以做其他事情


最后,这可能是我的应用程序中的一个编码问题,我将处理一个最小的测试示例并发布它…

好的,我找到了主要问题的答案,正如编辑帖子中所示

以下是如何将Google球形投影添加到spatialite数据库(必须已启用空间)的方法,以供将来参考:

1) 创建包含以下内容的文本文件:

开始

将值(900913,'EPSG',900913,'Google Maps Global Mercator','+proj=merc+a=6378137+b=6378137+lat_ts=0.0+lon_0=0.0+y_0=0+k=1.0+units=m+nadgrids=@null+no_defs')插入空间参考系统(srid,认证名称,认证名称,参考系统名称,proj4text)

承诺

2) 将名为init_EPSG900913.sql的文件保存在保存spatialite数据库的目录中

3) 发出以下命令以在数据库上执行SQL语句:

spatialite some_database.sqlite 替代方法-来自django脚本内部或“python manage.py shell”:


使用这两种方法之一,您的数据库将注册Google Maps reference系统。

事实证明,缺少的EPSG定义只是问题的一部分。 另一部分与应用程序在bitnami ubuntu django堆栈上运行有关

当遵循bitnami ubuntu django堆栈上geodjango文档中的安装指南时,所有额外的python包和空间库都安装在系统文件夹/user/local/.something中。。不在自包含的bitnami环境中

为了便于将来参考,请确保在安装其他python包之前发出以下语句:

$ sudo su
$ /opt/bitnami/use_djangostack
然后将在bitnami环境中安装软件包

此外,当使用./configure命令配置不同空间库的构建时,必须添加额外的选项以将共享文件放置在bitnami环境中。 我通常会使用以下内容:

$ ./configure --prefix=/opt/bitnami/common
可能必须按照geodjango文档中的描述传递其他参数,但必须更改这些参数中指定的路径,以指向/opt/bitnami/…的适当子目录

$ sudo su
$ /opt/bitnami/use_djangostack
$ ./configure --prefix=/opt/bitnami/common