Class 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
    • Constructor Detail

      • 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 -
    • Method Detail

      • 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
      • 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.
      • 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
      • 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
      • 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
      • 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