[gdal-dev] "Regular" SQLite DB Format

Even Rouault even.rouault at spatialys.com
Fri Oct 25 14:46:52 PDT 2024


Le 25/10/2024 à 23:40, Patrick Young via gdal-dev a écrit :
> Hello,
>
> I noticed in the docs 
> https://gdal.org/en/latest/drivers/vector/sqlite.html#regular-sqlite-databases 
> that there is some support for treating a plain sqlite db as a vector 
> format.
>
> I've been dumping some vector data into a table with a geometry column 
> full of WKB plus some properties, but I can't seem to get OGR to 
> recognize the geometry column for what it is (just treated as 
> binary).  Is this possible or does one need to shape the data to 
> something more in line with https://trac.osgeo.org/fdo/wiki/FDORfc16 ?

Yes, you need to create the geometry_columns and spatial_ref_sys special 
tables:

$ ogr2ogr poly.db autotest/ogr/data/poly.shp -lco FORMAT=WKB

$ echo .dump | sqlite3 poly.db
CREATE TABLE geometry_columns (     f_table_name VARCHAR, 
f_geometry_column VARCHAR,      geometry_type INTEGER, coord_dimension 
INTEGER,      srid INTEGER,     geometry_format VARCHAR );
INSERT INTO geometry_columns VALUES('poly','GEOMETRY',3,2,27700,'WKB');
CREATE TABLE spatial_ref_sys        (     srid INTEGER UNIQUE, auth_name 
TEXT,     auth_srid TEXT,     srtext TEXT);
INSERT INTO spatial_ref_sys VALUES(27700,'EPSG','27700','PROJCS["OSGB36 
/ British National 
Grid",GEOGCS["OSGB36",DATUM["Ordnance_Survey_of_Great_Britain_1936",SPHEROID["Airy 
1830",6377563.396,299.3249646,AUTHORITY["EPSG","7001"]],AUTHORITY["EPSG","6277"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4277"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",49],PARAMETER["central_meridian",-2],PARAMETER["scale_factor",0.9996012717],PARAMETER["false_easting",400000],PARAMETER["false_northing",-100000],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","27700"]]');
CREATE TABLE IF NOT EXISTS 'poly' ( "ogc_fid" INTEGER PRIMARY KEY 
AUTOINCREMENT, 'GEOMETRY' BLOB, 'area' FLOAT, 'eas_id' BIGINT, 'prfedea' 
VARCHAR(16));
INSERT INTO poly 
VALUES(1,X'01030000000100000014000000000000602f491d41000000207f2d5241000000c028471d41000000e0922d5241000000007c461d4100000060ae2d524100000080c9471d4100000020b62d5241000000209c4c1d41000000e0d82d5241000000608d4c1d41000000a0dd2d5241000000207f4e1d41000000a0ea2d524100000020294f1d4100000080ca2d524100000000b4511d41000000e0552d5241000000c016521d4100000080452d5241000000e0174e1d41000000202e2d524100000020414d1d41000000e04c2d5241000000e04b4d1d41000000605e2d524100000040634d1d41000000e0742d5241000000a0ef4c1d41000000e08d2d5241000000e04e4c1d41000000e0a12d5241000000e0b04b1d4100000060b82d524100000080974a1d4100000080ae2d524100000080cf491d4100000080952d5241000000602f491d41000000207f2d5241',215229.26600000000325,168,'35043411');
[ ... snip ... ]

Even

-- 
http://www.spatialys.com
My software is free, but my time generally not.
Butcher of all kinds of standards, open or closed formats. At the end, this is just about bytes.



More information about the gdal-dev mailing list