Class GeoPackage

Object
GeoPackage
All Implemented Interfaces:
Closeable, AutoCloseable

public class GeoPackage extends Object implements Closeable
Provides access to a GeoPackage database.
Author:
Justin Deoliveira, OpenGeo, Niels Charlier
  • Field Details

  • Constructor Details

    • GeoPackage

      public GeoPackage() throws IOException
      Creates a new empty GeoPackage, generating a new file.
      Throws:
      IOException
    • GeoPackage

      public GeoPackage(File file) throws IOException
      Creates a GeoPackage from an existing file.

      This constructor assumes no credentials are required to connect to the database.

      Throws:
      IOException
    • GeoPackage

      public GeoPackage(File file, String user, String passwd) throws IOException
      Creates a GeoPackage from an existing file specifying database credentials.
      Throws:
      IOException
    • GeoPackage

      public GeoPackage(File file, String user, String passwd, boolean readOnly) throws IOException
      Creates a GeoPackage from an existing file specifying database credentials.
      Throws:
      IOException
    • GeoPackage

      public GeoPackage(JDBCDataStore dataStore)
      Builds a GeoPackage from the given store (that has supposedly been created by the {@link GeoPkgDataStoreFactory)}. Used to get access to lower level methods and internals of the GeoPackage.
      Parameters:
      dataStore -
    • GeoPackage

      public GeoPackage(File file, SQLiteConfig config, Map<String,Object> storeParams) throws IOException
      Throws:
      IOException
  • Method Details

    • getWriterConfiguration

      public GeoPkgGeomWriter.Configuration getWriterConfiguration()
    • getFile

      public File getFile()
      The underlying database file.

      Note: this value may be null depending on how the geopackage was initialized.

    • getDataSource

      public DataSource getDataSource()
      The database data source.
    • init

      public void init() throws IOException
      Initializes the geopackage database.

      This method creates all the necessary metadata tables.

      Throws:
      IOException
    • close

      public void close()
      Closes the geopackage database connection.

      The application should always call this method when done with a geopackage to prevent connection leakage.

      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
    • addCRS

      public void addCRS(int srid) throws IOException
      Adds an epsg crs to the geopackage, registering it in the spatial_ref_sys table.

      This method will look up the srid in the local epsg database. Use #addCRS(CoordinateReferenceSystem, int) to specify an explicit CRS, authority, code entry.

      Throws:
      IOException
    • addDefaultSpatialReferences

      protected static void addDefaultSpatialReferences(Connection cx) throws SQLException
      Throws:
      SQLException
    • addCRS

      public static void addCRS(Connection cx, int srid, String srsName, String organization, int organizationCoordSysId, String definition, String description) throws IOException
      Throws:
      IOException
    • addCRS

      public void addCRS(CoordinateReferenceSystem crs, String auth, int srid) throws IOException
      Adds a crs to the geopackage, registering it in the spatial_ref_sys table.
      Parameters:
      crs - The crs to add.
      auth - The authority code, example: epsg
      srid - The spatial reference system id.
      Throws:
      IOException
    • contents

      public List<Entry> contents()
      Returns list of contents of the geopackage.
    • features

      public List<FeatureEntry> features() throws IOException
      Lists all the feature entries in the geopackage.
      Throws:
      IOException
    • feature

      public FeatureEntry feature(String name) throws IOException
      Looks up a feature entry by name.
      Parameters:
      name - THe name of the feature entry.
      Returns:
      The entry, or null if no such entry exists.
      Throws:
      IOException
    • feature

      protected FeatureEntry feature(String name, Connection cx) throws SQLException, IOException
      Throws:
      SQLException
      IOException
    • getExtension

      public GeoPkgExtension getExtension(String name)
      Returns the extension by name, or null if the extension is not supported by this implementation
    • getExtension

      public <T extends GeoPkgExtension> T getExtension(Class<T> extensionClass)
      Returns the extension by class, or null if the extension is not supported by this implementation
    • create

      public void create(FeatureEntry entry, SimpleFeatureType schema) throws IOException
      Creates a new feature entry in the geopackage.

      The resulting feature dataset will be empty. The #writer(FeatureEntry, boolean, Transaction) method returns a writer object that can be used to populate the dataset.

      Parameters:
      entry - Contains metadata about the feature entry.
      schema - The schema of the feature dataset.
      Throws:
      IOException - Any errors occurring while creating the new feature entry.
    • add

      public void add(FeatureEntry entry, SimpleFeatureCollection collection) throws IOException
      Adds a new feature dataset to the geopackage.
      Parameters:
      entry - Contains metadata about the feature entry.
      collection - The simple feature collection to add to the geopackage.
      Throws:
      IOException - Any errors occurring while adding the new feature dataset.
    • add

      public void add(FeatureEntry entry, SimpleFeatureSource source, Filter filter) throws IOException
      Adds a new feature dataset to the geopackage.
      Parameters:
      entry - Contains metadata about the feature entry.
      source - The dataset to add to the geopackage.
      filter - Filter specifying what subset of feature dataset to include, may be null to specify no filter.
      Throws:
      IOException - Any errors occurring while adding the new feature dataset.
    • writer

      public SimpleFeatureWriter writer(FeatureEntry entry, boolean append, Filter filter, Transaction tx) throws IOException
      Returns a writer used to modify or add to the contents of a feature dataset.
      Parameters:
      entry - The feature entry.
      append - Flag controlling whether to modify existing contents, or append to the dataset.
      filter - Filter determining what subset of dataset to modify, only relevant when append set to false. May be null to specify no filter.
      tx - Transaction object, may be null to specify auto commit transaction.
      Throws:
      IOException
    • reader

      public SimpleFeatureReader reader(FeatureEntry entry, Filter filter, Transaction tx) throws IOException
      Returns a reader for the contents of a feature dataset.
      Parameters:
      entry - The feature entry.
      filter - Filter Filter determining what subset of dataset to return. May be null to specify no filter.
      tx - Transaction object, may be null to specify auto commit transaction.
      Throws:
      IOException
    • getDateFormat

      public static SimpleDateFormat getDateFormat()
      Returns a new instance of SimpleDateFormat with the default GeoPackage ISO formatting
    • createSpatialIndex

      public void createSpatialIndex(FeatureEntry e) throws IOException
      Create a spatial index
      Parameters:
      e - feature entry to create spatial index for
      Throws:
      IOException
    • findSRID

      public static int findSRID(Connection cx, CoordinateReferenceSystem crs)
    • tiles

      public List<TileEntry> tiles() throws IOException
      Lists all the tile entries in the geopackage.
      Throws:
      IOException
    • tile

      public TileEntry tile(String name) throws IOException
      Looks up a tile entry by name.
      Parameters:
      name - THe name of the tile entry.
      Returns:
      The entry, or null if no such entry exists.
      Throws:
      IOException
    • create

      public void create(TileEntry entry) throws IOException
      Creates a new tile entry in the geopackage.
      Parameters:
      entry - The tile entry.
      Throws:
      IOException
    • add

      public void add(TileEntry entry, Tile tile) throws IOException
      Adds a tile to the geopackage.
      Parameters:
      entry - The tile metadata entry.
      tile - The tile.
      Throws:
      IOException
    • reader

      public TileReader reader(TileEntry entry, Integer lowZoom, Integer highZoom, Integer lowCol, Integer highCol, Integer lowRow, Integer highRow) throws IOException
      Retrieve tiles within certain zooms and column/row boundaries.
      Parameters:
      entry - the tile entry
      lowZoom - low zoom boundary
      highZoom - high zoom boundary
      lowCol - low column boundary
      highCol - high column boundary
      lowRow - low row boundary
      highRow - high row boundary
      Throws:
      IOException
    • addRange

      public void addRange(String attribute, Integer low, Integer high, List<String> q)
    • getSpatialIndexName

      protected String getSpatialIndexName(FeatureEntry entry)
    • hasSpatialIndex

      public boolean hasSpatialIndex(FeatureEntry entry) throws IOException
      Verifies if a spatial index is present
      Parameters:
      entry - The feature entry.
      Returns:
      whether this feature entry has a spatial index available.
      Throws:
      IOException
    • searchSpatialIndex

      public Set<Identifier> searchSpatialIndex(FeatureEntry entry, Double minX, Double minY, Double maxX, Double maxY) throws IOException
      Searches a spatial index.
      Parameters:
      entry - The feature entry.
      minX - Optional minimum x boundary.
      minY - Optional minimum y boundary.
      maxX - Optional maximum x boundary.
      maxY - Optional maximum y boundary.
      Throws:
      IOException
    • getTileBound

      public int getTileBound(TileEntry entry, int zoom, boolean isMax, boolean isRow) throws IOException
      Retrieve tile boundaries (min row, max row, min column and max column) for a particular zoom level, available in the actual data
      Parameters:
      entry - The tile entry
      zoom - the zoom level
      isMax - true for max boundary, false for min boundary
      isRow - true for rows, false for columns
      Returns:
      the min/max column/row of the zoom level available in the data, or 0 if no matching zoom_level is present
      Throws:
      IOException