2013-07-20 17 views
8

Tôi rất mới với không gian. Tôi đang chạy trên Max OS Mountain Lion và tôi đã cài đặt SQLite phiên bản 3.7.17 và libspatialite 4.1.1 (sử dụng homebrew)không thể tạo cột với không gian -> bố cục siêu dữ liệu không mong muốn

tôi có thể tải mà không có lỗi các libspatialite mở rộng trong SQLite:

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

tôi có thể tạo ra một bảng đơn giản:

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

nhưng khi tôi thêm một cột hình với spatialite tôi nhận được thông báo sau:

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

Tôi không có ý định khắc phục sự cố này. Ai đó có thể giúp?

+0

Tôi đang phải đối mặt với thách thức tương tự ngay bây giờ, tôi không thể thêm cột Polygon, nó mang lại cho ra các lỗi tương tự, bất cứ ai có thể giúp về vấn đề này? –

Trả lời

3

Vấn đề này xảy ra vì không có siêu dữ liệu (spatial_ref_sys bảng) trong cơ sở dữ liệu đó sẽ xảy ra khi bạn tạo cơ sở dữ liệu với sqlite3.exe hơn spatialite.exe.

Ví dụ; nếu bạn tạo hai cơ sở dữ liệu, một với sqlite3 và một với spatialite và chạy .table bạn sẽ thấy rằng db được tạo ra bởi spatialite có một bộ các bảng khác bao gồm một spatial_ref_sys. Các hàm không gian yêu cầu các bảng tham chiếu này để hoạt động.

Giải pháp: Đã tạo db không gian và nhập db cũ vào đó hoặc tải tất cả bảng cần thiết vào cơ sở dữ liệu cũ. Hoặc là thực sự dễ dàng với .dump.

17

Điều này xảy ra khi bạn đang sử dụng SQLite với phần mở rộng Spatialite. Trong trường hợp đó, bạn cần phải khởi tạo bảng siêu dữ liệu không gian (làm điều này đúng sau khi tạo cơ sở dữ liệu):

SELECT InitSpatialMetaData();

Một lựa chọn khác sẽ được chạy Spatialite khi tạo cơ sở dữ liệu. Điều đó sau đó sẽ tự động tạo các bảng siêu dữ liệu.

Tài liệu: http://www.gaia-gis.it/gaia-sins/spatialite-cookbook/html/metadata.html

+0

bạn đã lưu quyết định của tôi bằng cách sử dụng spatialDB cho phát triển Di động, khác tôi không biết .. – magid

+0

tại sao nó mất quá nhiều thời gian để kích hoạt .. bất kỳ tuỳ chỉnh? – magid