我試圖在Linux系統上使用this snippet在我的管理界面中包含Google Maps小部件(目前在VMWare Player中的Bitnami django堆棧上本地運行)。如何添加EPSG 900913到geodjango spatialite數據庫?
的地圖渲染,而是指向特性(任何功能真的)在我的數據庫都沒有出現在地圖上,並試圖通過地圖界面註冊點的時候,我得到一個錯誤:
An error occurred when transforming the geometry to the SRID of the geometry form field.
我從初始化spatialite/SQLite數據庫時,Google的空間參照系中不包含geodjango docs實現,該溶液應發出以下命令,以添加SRS:
$ python manage shell
>>> from django.contrib.gis.utils import add_srs_entry
>>> add_srs_entry(900913)
然而,當我從我的p做到這一點roject目錄,我得到:
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條目是:如何讓我add_srs_entry發現,爲了將它添加到我的數據庫正確的SRS的代表性?或者有一種解決方法,例如以某種方式轉換WKT表示並手動插入gcs.csv?
我感謝任何幫助!
編輯: 我找到了一種方法來手動將EPSG 900913插入到spatialite數據庫中。該解決方案的靈感來自http://trac.osgeo.org/openlayers/wiki/SphericalMercator上的sql語句(抱歉,我沒有足夠的信譽來發布更多鏈接),並使用raw sql發佈到數據庫後端(如在文檔描述的https:// docs.djangoproject.com/en/dev/topics/db/sql/#executing-custom-sql-directly):
from django.db import connection, transaction
cursor = connection.cursor()
sql = "INSERT into spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) values (900913 ,'EPSG',900913,'Google Maps Global Mercator','+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m [email protected] +no_defs');"
cursor.execute(sql)
transaction.commit_unless_managed()
我已經證實,條目現在位於spatial_ref_sys表中。但是在嘗試在管理界面中添加點時,我仍然遇到同樣的錯誤。積分可以被添加到地圖,而是試圖挽救該功能時,我得到的錯誤:
An error occurred when transforming the geometry to the SRID of the geometry form field.
就是上面的sql語句是否正確?這是足夠的,還是add_srs_entry也做其他事情?
最後,它可能是在我的應用程序編碼問題,我將在一個最小的測試工作,例如,並張貼...