SpatiaLite¶
SpatiaLite spatially enables the file-based SQLite database. For more information see the SpatiaLite description page.
File listing¶
Similar to other database formats, the .sqlite file (.db is another common file extension for this) consists of several tables. The geometry is held in a BLOB table column.
Data Access / Connection Method¶
Spatialite access is available through OGR. See the OGR driver page for specific driver information. The driver is available in GDAL/OGR version 1.7.0 or later.
OGR uses the names of spatial tables within the SpatiaLite database (tables with a geometry column that are registered in the geometry_columns table) as layers.
The CONNECTION parameter must include the sqlite extension, and the DATA parameter should be the name of the spatial table (or OGR layer).
CONNECTIONTYPE OGR
CONNECTION "spatialite_db.sqlite"
DATA "layername"
OGRINFO Examples¶
First you should make sure that your GDAL/OGR build contains the spatialite «SQLite» driver, by using the “–formats” command:
>ogrinfo --formats
Loaded OGR Format Drivers:
...
-> "GMT" (read/write)
-> "SQLite" (read/write)
-> "ODBC" (read/write)
...
If you don’t have the driver, you might want to try the MS4W or OSGeo4W packages, which include the driver.
Once you have confirmed that you have the SQLite driver you are ready to try an ogrinfo command on your database to get a list of spatial tables:
>ogrinfo counties.sqlite
INFO: Open of `counties.sqlite'
using driver `SQLite' successful.
1: mn_counties (Polygon)
Now use ogrinfo to get information on the structure of the spatial table:
>ogrinfo counties.sqlite county -summary
INFO: Open of `counties.sqlite'
using driver `SQLite' successful.
Layer name: mn_counties
Geometry: Polygon
Feature Count: 87
Extent: (189783.560000, 4816309.330000) - (761653.524114, 5472346.500000)
Layer SRS WKT:
PROJCS["NAD83 / UTM zone 15N",
GEOGCS["NAD83",
DATUM["North_American_Datum_1983",
SPHEROID["GRS 1980",6378137,298.257222101,
AUTHORITY["EPSG","7019"]],
TOWGS84[0,0,0,0,0,0,0],
AUTHORITY["EPSG","6269"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.0174532925199433,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4269"]],
UNIT["metre",1,
AUTHORITY["EPSG","9001"]],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",-93],
PARAMETER["scale_factor",0.9996],
PARAMETER["false_easting",500000],
PARAMETER["false_northing",0],
AUTHORITY["EPSG","26915"],
AXIS["Easting",EAST],
AXIS["Northing",NORTH]]
FID Column = PK_UID
Geometry Column = Geometry
AREA: Real (0.0)
PERIMETER: Real (0.0)
COUNTY_ID: Integer (0.0)
FIPS: String (0.0)
...
Mapfile Example¶
Standard connection¶
LAYER
NAME "my_counties_layer"
TYPE POLYGON
CONNECTIONTYPE ogr
CONNECTION "counties.sqlite"
DATA "mn_counties"
EXTENT 189783.560000 4816309.330000 761653.524114 5472346.500000 # for maximum performance
PROCESSING "CLOSE_CONNECTION=DEFER" # for maximum performance
STATUS ON
CLASS
NAME "mncounties"
STYLE
COLOR 255 255 120
END
END
END
Connection utilizing SQL syntax¶
LAYER
NAME "my_counties_layer"
TYPE POLYGON
CONNECTIONTYPE OGR
CONNECTION "counties.sqlite"
DATA "select geometry from mn_counties"
PROCESSING "CLOSE_CONNECTION=DEFER" # for maximum performance
STATUS ON
CLASS
NAME "mncounties"
STYLE
COLOR 255 255 120
END
END
END
Connection utilizing joined table for additional attributes¶
LAYER
NAME "my_counties_layer"
TYPE POLYGON
CONNECTIONTYPE OGR
CONNECTION "counties.sqlite"
DATA "SELECT mn.geometry, c.fips FROM mn_counties mn inner
join county_data c on mn.county_id = c.county_id'
PROCESSING "CLOSE_CONNECTION=DEFER" # for maximum performance
STATUS ON
CLASS
NAME "mncounties"
STYLE
COLOR 255 255 120
END
END
END
Standard Connection with a filter¶
LAYER
NAME "my_counties_layer"
TYPE POLYGON
CONNECTIONTYPE OGR
CONNECTION "counties.sqlite"
DATA "mn_counties"
FILTER ('[fips]' = '27031')
PROCESSING "CLOSE_CONNECTION=DEFER" # for maximum performance
STATUS ON
CLASS
NAME "mncounties"
STYLE
COLOR 255 255 120
END
END
END
Filter utilizing SQL syntax¶
LAYER
NAME "my_counties_layer"
TYPE POLYGON
CONNECTIONTYPE OGR
CONNECTION "counties.sqlite"
DATA "select geometry from mn_counties where fips = '27031"
PROCESSING "CLOSE_CONNECTION=DEFER" # for maximum performance
STATUS ON
CLASS
NAME "mncounties"
STYLE
COLOR 255 255 120
END
END
END