Skip to content

Commit

Permalink
fix(deps): update geopackage to v6
Browse files Browse the repository at this point in the history
  • Loading branch information
renovate[bot] authored and stempler committed Dec 5, 2024
1 parent 5e777ae commit f0d3823
Show file tree
Hide file tree
Showing 9 changed files with 56 additions and 40 deletions.
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ apache-http-client = "4.5.14"
ehcache = "2.6.11"
castor = "1.4.1"
flexmark = "0.64.8"
geopackage = "3.5.0"
geopackage = "6.6.5"
deegree = "3.5.8"
jackson = "2.18.0"
poi = "5.3.0"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@
import eu.esdihumboldt.hale.common.schema.model.constraint.type.MappingRelevantFlag;
import eu.esdihumboldt.hale.io.geopackage.internal.GeopackageFeatureCollection;
import mil.nga.geopackage.GeoPackage;
import mil.nga.geopackage.GeoPackageManager;
import mil.nga.geopackage.attributes.AttributesDao;
import mil.nga.geopackage.features.columns.GeometryColumns;
import mil.nga.geopackage.features.user.FeatureDao;
import mil.nga.geopackage.manager.GeoPackageManager;

/**
* Instance reader for {@link GeoPackage} files.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,7 @@
import java.text.MessageFormat;
import java.time.Instant;
import java.time.LocalDate;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;

import javax.xml.namespace.QName;
Expand Down Expand Up @@ -70,22 +66,18 @@
import eu.esdihumboldt.hale.common.schema.model.constraint.type.PrimaryKey;
import mil.nga.geopackage.BoundingBox;
import mil.nga.geopackage.GeoPackage;
import mil.nga.geopackage.attributes.AttributesColumn;
import mil.nga.geopackage.attributes.AttributesDao;
import mil.nga.geopackage.attributes.AttributesRow;
import mil.nga.geopackage.core.srs.SpatialReferenceSystem;
import mil.nga.geopackage.core.srs.SpatialReferenceSystemDao;
import mil.nga.geopackage.GeoPackageManager;
import mil.nga.geopackage.attributes.*;
import mil.nga.geopackage.db.GeoPackageDataType;
import mil.nga.geopackage.extension.index.FeatureTableIndex;
import mil.nga.geopackage.db.TableColumnKey;
import mil.nga.geopackage.extension.nga.index.FeatureTableIndex;
import mil.nga.geopackage.features.columns.GeometryColumns;
import mil.nga.geopackage.features.index.FeatureIndexManager;
import mil.nga.geopackage.features.index.FeatureIndexType;
import mil.nga.geopackage.features.user.FeatureColumn;
import mil.nga.geopackage.features.user.FeatureDao;
import mil.nga.geopackage.features.user.FeatureRow;
import mil.nga.geopackage.features.user.*;
import mil.nga.geopackage.geom.GeoPackageGeometryData;
import mil.nga.geopackage.manager.GeoPackageManager;
import mil.nga.geopackage.schema.TableColumnKey;
import mil.nga.geopackage.srs.SpatialReferenceSystem;
import mil.nga.geopackage.srs.SpatialReferenceSystemDao;
import mil.nga.geopackage.user.UserColumn;
import mil.nga.geopackage.user.UserCoreRow;
import mil.nga.sf.util.ByteReader;
Expand Down Expand Up @@ -352,7 +344,12 @@ else if (someGeom instanceof Geometry) {
// differs from the column SrsId?

byte[] wkb = new WKBWriter().write(targetGeometry);
mil.nga.sf.Geometry geometry = GeometryReader.readGeometry(new ByteReader(wkb));
mil.nga.sf.Geometry geometry = null;
try {
geometry = GeometryReader.readGeometry(new ByteReader(wkb));
} catch (IOException e) {
throw new RuntimeException(e);
}

geometryData.setGeometry(geometry);
}
Expand Down Expand Up @@ -439,7 +436,7 @@ private GeopackageTableType createTableIfNecessary(GeoPackage geoPackage, String
// AugmentedValue
return p.getPropertyType().getConstraint(HasValueFlag.class).isEnabled() || p
.getPropertyType().getConstraint(AugmentedValueFlag.class).isEnabled();
}).collect(Collectors.toList());
}).toList();

Optional<? extends PropertyDefinition> geometryProperty = allProperties.stream()
.filter(property -> {
Expand All @@ -455,6 +452,15 @@ private GeopackageTableType createTableIfNecessary(GeoPackage geoPackage, String
else {
primaryKeyColumn = null;
}
final var fPrimaryKeyColumn = primaryKeyColumn;

Collection<? extends PropertyDefinition> additionalProperties = allProperties.stream()
// exclude primary key
.filter(p -> !p.getName().getLocalPart().equals(fPrimaryKeyColumn))
// exclude selected geometry property
.filter(p -> !geometryProperty.map(gp -> gp.getName().equals(p.getName()))
.orElse(false))
.toList();

GeopackageTableType tableType;
if (geometryProperty.isPresent()) {
Expand All @@ -469,20 +475,24 @@ private GeopackageTableType createTableIfNecessary(GeoPackage geoPackage, String
geometryColumns.setGeometryType(convertGeometryType(
geomProp.getPropertyType().getConstraint(GeometryType.class).getBinding()));

BoundingBox boundingBox = null; // not known at that point
// determine SRS from GeometryMetadata or sample instance
long srsId = determineSrsId(geoPackage, geomProp, instance, log);
List<FeatureColumn> columns = allProperties.stream()
.map(p -> createFeatureColumn(p, primaryKeyColumn))
geometryColumns.setSrsId(srsId);

BoundingBox boundingBox = null; // not known at that point

// additional columns = columns w/o geometry column + id column
List<FeatureColumn> additionalColumns = additionalProperties.stream()
.map(p -> createFeatureColumn(p, fPrimaryKeyColumn))
.collect(Collectors.toList());

if (primaryKeyColumn == null) {
// primary key column seems to be always needed (without there
// were errors reading the data)
columns.add(FeatureColumn.createPrimaryKeyColumn(findIdName(columns)));
// name for ID column
primaryKeyColumn = findIdName(additionalColumns);
}

geoPackage.createFeatureTableWithMetadata(geometryColumns, boundingBox, srsId, columns);
geoPackage.createFeatureTable(FeatureTableMetadata.create(geometryColumns,
primaryKeyColumn, true, additionalColumns, boundingBox));

FeatureDao featureDao = geoPackage.getFeatureDao(tableName);
String spatialIndexType = getParameter(PARAM_SPATIAL_INDEX_TYPE).as(String.class,
Expand All @@ -506,17 +516,18 @@ private GeopackageTableType createTableIfNecessary(GeoPackage geoPackage, String
// create attributes table
tableType = GeopackageTableType.ATTRIBUTE;

List<AttributesColumn> columns = allProperties.stream()
.map(p -> createAttributeColumn(p, primaryKeyColumn))
// additional columns = columns w/o geometry column + id column
List<AttributesColumn> additionalColumns = additionalProperties.stream()
.map(p -> createAttributeColumn(p, fPrimaryKeyColumn))
.collect(Collectors.toList());

if (primaryKeyColumn == null) {
// primary key column seems to be always needed (without there
// were errors reading the data)
columns.add(AttributesColumn.createPrimaryKeyColumn(findIdName(columns)));
// name for ID column
primaryKeyColumn = findIdName(additionalColumns);
}

geoPackage.createAttributesTable(tableName, columns);
geoPackage.createAttributesTable(AttributesTableMetadata.create(tableName,
primaryKeyColumn, true, additionalColumns));
}

return tableType;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,11 @@
import eu.esdihumboldt.hale.common.schema.model.impl.DefaultTypeDefinition;
import mil.nga.geopackage.GeoPackage;
import mil.nga.geopackage.attributes.AttributesDao;
import mil.nga.geopackage.core.srs.SpatialReferenceSystem;
import mil.nga.geopackage.db.GeoPackageDataType;
import mil.nga.geopackage.features.columns.GeometryColumns;
import mil.nga.geopackage.features.user.FeatureColumn;
import mil.nga.geopackage.features.user.FeatureDao;
import mil.nga.geopackage.srs.SpatialReferenceSystem;
import mil.nga.geopackage.user.UserColumn;
import mil.nga.geopackage.user.UserDao;
import mil.nga.geopackage.user.UserTable;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import eu.esdihumboldt.hale.common.schema.model.Schema;
import eu.esdihumboldt.hale.common.schema.persist.AbstractCachedSchemaReader;
import mil.nga.geopackage.GeoPackage;
import mil.nga.geopackage.manager.GeoPackageManager;
import mil.nga.geopackage.GeoPackageManager;

/**
* Reader for geopackage schema.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@ import eu.esdihumboldt.hale.common.schema.model.constraint.property.Cardinality
import eu.esdihumboldt.hale.common.schema.model.constraint.property.NillableFlag
import eu.esdihumboldt.hale.common.schema.model.constraint.type.GeometryMetadata
import eu.esdihumboldt.hale.io.geopackage.GeopackageSchemaBuilder
import mil.nga.geopackage.core.srs.SpatialReferenceSystem
import mil.nga.geopackage.features.columns.GeometryColumns
import mil.nga.geopackage.features.user.FeatureResultSet
import mil.nga.geopackage.srs.SpatialReferenceSystem
import mil.nga.geopackage.user.UserResultSet


Expand Down Expand Up @@ -175,7 +175,7 @@ class TableInstanceBuilder {
def geomData = ((FeatureResultSet) row).geometry

// read JTS geometry from WKB
def jtsGeom = wkbReader.read(geomData.wkbBytes)
def jtsGeom = wkbReader.read(geomData.wkb)

CRSDefinition crsDef = null

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@
import org.junit.Test;

import mil.nga.geopackage.GeoPackage;
import mil.nga.geopackage.GeoPackageManager;
import mil.nga.geopackage.features.user.FeatureDao;
import mil.nga.geopackage.manager.GeoPackageManager;

/**
* Tests using the Geopackage API. These are mostly intended to verify that the
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import javax.xml.namespace.QName

import org.junit.Test
import org.locationtech.jts.geom.Geometry
import org.locationtech.jts.geom.Point

import eu.esdihumboldt.hale.common.core.io.impl.LogProgressIndicator
import eu.esdihumboldt.hale.common.core.io.report.IOReport
Expand Down Expand Up @@ -132,7 +133,11 @@ class GeopackageInstanceReaderTest extends AbstractPlatformTest {
assert testInstance.p.fid.value() == 2701
assert testInstance.p.item_id.value() == '67983-MONI0000000001'
assert testInstance.p.descriptio.value() == 'Franconia Township 1 (J1-1442)'
//TODO test geometry

def geom = testInstance.p.geom.value()
assert geom instanceof GeometryProperty
assert geom.CRSDefinition != null
assert geom.geometry instanceof Point
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ import eu.esdihumboldt.hale.common.schema.model.constraint.type.Binding
import eu.esdihumboldt.hale.common.schema.model.constraint.type.PrimaryKey
import eu.esdihumboldt.hale.common.schema.model.impl.DefaultSchemaSpace
import eu.esdihumboldt.util.test.AbstractPlatformTest
import mil.nga.geopackage.manager.GeoPackageManager
import mil.nga.geopackage.GeoPackageManager

/**
* Tests for writing instances to GeoPackage.
Expand Down

0 comments on commit f0d3823

Please sign in to comment.