Package org.geotools.geopkg
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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
GeoPackage.DataType
-
Field Summary
Fields Modifier and Type Field Description static String
DATA_COLUMN
Add this among a AttributeType user data, in order to force a particularDataColumn
description for it.static String
DATA_COLUMN_CONSTRAINTS
static String
DATA_COLUMNS
static String
EXTENSIONS
protected static int
GENERIC_GEOGRAPHIC_SRID
protected static int
GENERIC_PROJECTED_SRID
static String
GEOMETRY_COLUMNS
static String
GEOPACKAGE_CONTENTS
static String
METADATA
static String
METADATA_REFERENCE
static String
SCHEMA
static String
SKIP_REGISTRATION
Adding this key into aPropertyType.getUserData()
with a value of true will allow creating tables without registering them as feature entries in the GeoPackage.static String
SPATIAL_INDEX
static String
SPATIAL_REF_SYS
static String
TILE_MATRIX_METADATA
static String
TILE_MATRIX_SET
protected GeoPkgGeomWriter.Configuration
writerConfig
-
Constructor Summary
Constructors Constructor Description GeoPackage()
Creates a new empty GeoPackage, generating a new file.GeoPackage(File file)
Creates a GeoPackage from an existing file.GeoPackage(File file, String user, String passwd)
Creates a GeoPackage from an existing file specifying database credentials.GeoPackage(File file, String user, String passwd, boolean readOnly)
Creates a GeoPackage from an existing file specifying database credentials.GeoPackage(File file, SQLiteConfig config, Map<String,Object> storeParams)
GeoPackage(JDBCDataStore dataStore)
Builds a GeoPackage from the given store (that has supposedly been created by the {@link GeoPkgDataStoreFactory)}.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(FeatureEntry entry, SimpleFeatureSource source, Filter filter)
Adds a new feature dataset to the geopackage.void
add(FeatureEntry entry, SimpleFeatureCollection collection)
Adds a new feature dataset to the geopackage.void
add(TileEntry entry, Tile tile)
Adds a tile to the geopackage.void
addCRS(int srid)
Adds an epsg crs to the geopackage, registering it in the spatial_ref_sys table.static void
addCRS(Connection cx, int srid, String srsName, String organization, int organizationCoordSysId, String definition, String description)
void
addCRS(CoordinateReferenceSystem crs, String auth, int srid)
Adds a crs to the geopackage, registering it in the spatial_ref_sys table.protected static void
addDefaultSpatialReferences(Connection cx)
void
addRange(String attribute, Integer low, Integer high, List<String> q)
void
close()
Closes the geopackage database connection.List<Entry>
contents()
Returns list of contents of the geopackage.void
create(FeatureEntry entry, SimpleFeatureType schema)
Creates a new feature entry in the geopackage.void
create(TileEntry entry)
Creates a new tile entry in the geopackage.void
createSpatialIndex(FeatureEntry e)
Create a spatial indexFeatureEntry
feature(String name)
Looks up a feature entry by name.protected FeatureEntry
feature(String name, Connection cx)
List<FeatureEntry>
features()
Lists all the feature entries in the geopackage.static int
findSRID(Connection cx, CoordinateReferenceSystem crs)
DataSource
getDataSource()
The database data source.static SimpleDateFormat
getDateFormat()
Returns a new instance of SimpleDateFormat with the default GeoPackage ISO formatting<T extends GeoPkgExtension>
TgetExtension(Class<T> extensionClass)
Returns the extension by class, or null if the extension is not supported by this implementationGeoPkgExtension
getExtension(String name)
Returns the extension by name, or null if the extension is not supported by this implementationFile
getFile()
The underlying database file.protected String
getSpatialIndexName(FeatureEntry entry)
int
getTileBound(TileEntry entry, int zoom, boolean isMax, boolean isRow)
Retrieve tile boundaries (min row, max row, min column and max column) for a particular zoom level, available in the actual dataGeoPkgGeomWriter.Configuration
getWriterConfiguration()
boolean
hasSpatialIndex(FeatureEntry entry)
Verifies if a spatial index is presentvoid
init()
Initializes the geopackage database.SimpleFeatureReader
reader(FeatureEntry entry, Filter filter, Transaction tx)
Returns a reader for the contents of a feature dataset.TileReader
reader(TileEntry entry, Integer lowZoom, Integer highZoom, Integer lowCol, Integer highCol, Integer lowRow, Integer highRow)
Retrieve tiles within certain zooms and column/row boundaries.Set<Identifier>
searchSpatialIndex(FeatureEntry entry, Double minX, Double minY, Double maxX, Double maxY)
Searches a spatial index.TileEntry
tile(String name)
Looks up a tile entry by name.List<TileEntry>
tiles()
Lists all the tile entries in the geopackage.SimpleFeatureWriter
writer(FeatureEntry entry, boolean append, Filter filter, Transaction tx)
Returns a writer used to modify or add to the contents of a feature dataset.
-
-
-
Field Detail
-
GEOPACKAGE_CONTENTS
public static final String GEOPACKAGE_CONTENTS
- See Also:
- Constant Field Values
-
GEOMETRY_COLUMNS
public static final String GEOMETRY_COLUMNS
- See Also:
- Constant Field Values
-
SPATIAL_REF_SYS
public static final String SPATIAL_REF_SYS
- See Also:
- Constant Field Values
-
DATA_COLUMNS
public static final String DATA_COLUMNS
- See Also:
- Constant Field Values
-
TILE_MATRIX_METADATA
public static final String TILE_MATRIX_METADATA
- See Also:
- Constant Field Values
-
METADATA
public static final String METADATA
- See Also:
- Constant Field Values
-
METADATA_REFERENCE
public static final String METADATA_REFERENCE
- See Also:
- Constant Field Values
-
TILE_MATRIX_SET
public static final String TILE_MATRIX_SET
- See Also:
- Constant Field Values
-
DATA_COLUMN_CONSTRAINTS
public static final String DATA_COLUMN_CONSTRAINTS
- See Also:
- Constant Field Values
-
EXTENSIONS
public static final String EXTENSIONS
- See Also:
- Constant Field Values
-
SPATIAL_INDEX
public static final String SPATIAL_INDEX
- See Also:
- Constant Field Values
-
SCHEMA
public static final String SCHEMA
- See Also:
- Constant Field Values
-
SKIP_REGISTRATION
public static final String SKIP_REGISTRATION
Adding this key into aPropertyType.getUserData()
with a value of true will allow creating tables without registering them as feature entries in the GeoPackage. Used by extensions to create extra feature tables that should be visible only by clients aware of the specific extension intent and usage.- See Also:
- Constant Field Values
-
DATA_COLUMN
public static final String DATA_COLUMN
Add this among a AttributeType user data, in order to force a particularDataColumn
description for it. It can be required to add more metadata, to force a mime type, or have fine grained control over its constraints- See Also:
- Constant Field Values
-
GENERIC_GEOGRAPHIC_SRID
protected static final int GENERIC_GEOGRAPHIC_SRID
- See Also:
- Constant Field Values
-
GENERIC_PROJECTED_SRID
protected static final int GENERIC_PROJECTED_SRID
- See Also:
- Constant Field Values
-
writerConfig
protected GeoPkgGeomWriter.Configuration writerConfig
-
-
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
-
-
GeoPackage
public GeoPackage(File file, SQLiteConfig config, Map<String,Object> storeParams) throws IOException
- Throws:
IOException
-
-
Method Detail
-
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 interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
-
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: epsgsrid
- The spatial reference system id.- Throws:
IOException
-
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 benull
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 benull
to specify no filter.tx
- Transaction object, may benull
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 benull
to specify no filter.tx
- Transaction object, may benull
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 entrylowZoom
- low zoom boundaryhighZoom
- high zoom boundarylowCol
- low column boundaryhighCol
- high column boundarylowRow
- low row boundaryhighRow
- high row boundary- Throws:
IOException
-
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 entryzoom
- the zoom levelisMax
- true for max boundary, false for min boundaryisRow
- 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
-
-