11

私はspatialiteで非常に新しいです。私は Max OS Mountain lion で実行しており、SQLite バージョン 3.7.17 と libspatialite 4.1.1 (homebrew を使用) をインストールしました。

SQLite の拡張子 libspatialite をエラーなしでロードできます。

SELECT load_extension('/usr/local/Cellar/libspatialite/4.1.1/lib/libspatialite.dylib');

簡単なテーブルを作成できます:

sqlite> CREATE TABLE test_geom (
   ...>   id INTEGER NOT NULL
   ...>     PRIMARY KEY AUTOINCREMENT,
   ...>   name TEXT NOT NULL,
   ...>   measured_value DOUBLE NOT NULL);

しかし、spatialite を使用して Geometry 列を追加すると、次のメッセージが表示されます。

sqlite> SELECT AddGeometryColumn('test_geom', 'the_geom',4326, 'POINT');
AddGeometryColumn() error: unexpected metadata layout
0

この問題を解決する方法がわかりません。誰か助けてくれませんか?

4

2 に答える 2

3

この問題は、データベース内にメタデータ (spatial_ref_sys テーブル) がないために発生します。これは、 spatialite.exeではなくsqlite3.exeを使用してデータベースを作成するときに発生します。

例えば; 2 つのデータベースを作成し、1 つは sqlite3 を使用し、もう 1 つは Spatialite を使用して実行すると、spatialite.tableによって作成されたデータベースに、spatial_ref_sys を含む他のテーブルのスイートがあることがわかります。空間関数が機能するには、これらの参照テーブルが必要です。

解決策: Spatialite db を作成し、そこに古い db をインポートするか、必要なすべてのテーブルを古いデータベースにロードします。または を使用すると、非常に簡単.dumpです。

于 2013-09-10T22:39:20.363 に答える