seb*_*ien 10 sqlite macos spatialite
我对spaceite非常新.我在Max OS Mountain lion上运行,我安装了SQLite版本3.7.17和libspatialite 4.1.1(使用自制程序)
我可以在SQLite中加载没有错误的扩展libspatialite:
SELECT load_extension('/usr/local/Cellar/libspatialite/4.1.1/lib/libspatialite.dylib');
Run Code Online (Sandbox Code Playgroud)
我可以创建一个简单的表:
sqlite> CREATE TABLE test_geom (
...> id INTEGER NOT NULL
...> PRIMARY KEY AUTOINCREMENT,
...> name TEXT NOT NULL,
...> measured_value DOUBLE NOT NULL);
Run Code Online (Sandbox Code Playgroud)
但是当我添加带有spatialite的Geometry列时,我收到以下消息:
sqlite> SELECT AddGeometryColumn('test_geom', 'the_geom',4326, 'POINT');
AddGeometryColumn() error: unexpected metadata layout
0
Run Code Online (Sandbox Code Playgroud)
我不知道解决这个问题.有人可以帮忙吗?
Sim*_* A. 22
当您使用带有Spatialite扩展的SQLite时会发生这种情况.在这种情况下,您需要初始化空间元数据表(在创建数据库后立即执行此操作):
SELECT InitSpatialMetaData();
另一种选择是在创建数据库时运行Spatialite.然后,这将自动创建元数据表.
文档:http://www.gaia-gis.it/gaia-sins/spatialite-cookbook/html/metadata.html
出现此问题的原因是数据库中没有元数据(spatial_ref_sys 表),当您使用sqlite3.exe而不是Spatialite.exe创建数据库时会发生这种情况。
例如; 如果您创建两个数据库,一个使用sqlite3,另一个使用spatialite并运行,.table您将看到spatialite创建的数据库有一组其他表,包括spatial_ref_sys。空间函数需要这些参考表才能工作。
解决方案:创建一个spatialite 数据库并将旧数据库导入其中或将所有必要的表加载到旧数据库中。要么 or 确实很容易使用.dump.
| 归档时间: |
|
| 查看次数: |
1989 次 |
| 最近记录: |