SpatiaLite

空间上启用基于文件的sqlite数据库。有关详细信息,请参见空间网站 description page .

文件列表

与其他数据库格式类似, .sqlite 文件( .db 是另一个常见的文件扩展名)由几个表组成。几何图形保存在BLOB表列中。

数据访问/连接方法

通过OGR可以访问空间网站。看OGR driver page 有关特定的驱动程序信息。驱动程序在GDAL/OGR版本1.7.0或更高版本中可用。

OGR使用空间站点数据库中空间表的名称(几何体列在几何体列表中注册的表)作为层。

连接参数必须包含sqlite扩展名,数据参数应该是空间表(或ogr层)的名称。

CONNECTIONTYPE OGR
CONNECTION "spatialite_db.sqlite"
DATA "layername"

Ogrinfo示例

首先,您应该使用“--formats”命令确保GDAL/OGR构建包含空间站点“sqlite”驱动程序:

>ogrinfo --formats

   Loaded OGR Format Drivers:
   ...
   -> "GMT" (read/write)
   -> "SQLite" (read/write)
   -> "ODBC" (read/write)
   ...

如果你没有司机,你可能想试试 MS4WOSGeo4W 包,其中包括驱动程序。

一旦确认您拥有sqlite驱动程序,就可以在数据库上尝试ogrinfo命令以获取空间表列表:

>ogrinfo counties.sqlite

   INFO: Open of `counties.sqlite'
   using driver `SQLite' successful.
   1: mn_counties (Polygon)

现在使用ogrinfo获取有关空间表结构的信息:

>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 示例

标准连接

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

使用SQL语法的连接

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

使用联接表进行连接以获取其他属性

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

带过滤器的标准连接

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

使用SQL语法筛选

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