Search in sources :

Example 1 with Layer

use of org.gdal.ogr.Layer in project com.revolsys.open by revolsys.

the class OgrRecordStore method newLayerRecordDefinition.

private RecordDefinition newLayerRecordDefinition(final DataSource dataSource, final RecordDefinition sourceRecordDefinition) {
    final PathName typePath = sourceRecordDefinition.getPathName();
    final String name = typePath.getName();
    final PathName parentPath = typePath.getParent();
    final RecordStoreSchema schema = getSchema(parentPath);
    Layer layer;
    if (sourceRecordDefinition.hasGeometryField()) {
        final GeometryFactory geometryFactory = sourceRecordDefinition.getGeometryFactory();
        final FieldDefinition geometryField = sourceRecordDefinition.getGeometryField();
        final int geometryFieldType = getGeometryFieldType(geometryFactory, geometryField);
        final SpatialReference spatialReference = Gdal.getSpatialReference(geometryFactory);
        layer = dataSource.CreateLayer(typePath.getPath(), spatialReference, geometryFieldType);
    } else {
        layer = dataSource.CreateLayer(name);
    }
    if (dataSource.TestCapability(ogrConstants.ODsCCreateLayer) == false) {
        System.err.println("CreateLayer not supported by driver.");
    }
    return newLayerRecordDefinition(schema, layer);
}
Also used : RecordStoreSchema(com.revolsys.record.schema.RecordStoreSchema) GeometryFactory(com.revolsys.geometry.model.GeometryFactory) FieldDefinition(com.revolsys.record.schema.FieldDefinition) SpatialReference(org.gdal.osr.SpatialReference) PathName(com.revolsys.io.PathName) Layer(org.gdal.ogr.Layer)

Example 2 with Layer

use of org.gdal.ogr.Layer in project com.revolsys.open by revolsys.

the class OgrRecordWriter method getLayer.

protected Layer getLayer(final RecordDefinition recordDefinition) {
    final String typePath = recordDefinition.getPath();
    final String layerName = this.recordStore.getLayerName(typePath);
    final Layer layer = this.dataSource.GetLayer(layerName);
    return layer;
}
Also used : LineString(com.revolsys.geometry.model.LineString) Layer(org.gdal.ogr.Layer)

Example 3 with Layer

use of org.gdal.ogr.Layer in project com.revolsys.open by revolsys.

the class OgrRecordWriter method delete.

private void delete(final Record record) {
    final RecordDefinition recordDefinition = record.getRecordDefinition();
    final Layer layer = getLayer(recordDefinition);
    final String driverName = this.recordStore.getDriverName();
    if (OgrRecordStore.SQLITE.equals(driverName) || OgrRecordStore.GEO_PAKCAGE.equals(driverName)) {
        final Integer fid = record.getInteger(OgrRecordStore.ROWID);
        if (fid != null) {
            layer.DeleteFeature(fid);
        }
    }
}
Also used : LineString(com.revolsys.geometry.model.LineString) Layer(org.gdal.ogr.Layer) RecordDefinition(com.revolsys.record.schema.RecordDefinition)

Example 4 with Layer

use of org.gdal.ogr.Layer in project com.revolsys.open by revolsys.

the class OgrRecordStore method refreshSchemaElements.

@Override
protected synchronized Map<PathName, ? extends RecordStoreSchemaElement> refreshSchemaElements(final RecordStoreSchema schema) {
    final Map<PathName, RecordStoreSchemaElement> elementsByPath = new TreeMap<>();
    if (!isClosed()) {
        final DataSource dataSource = getDataSource();
        if (dataSource != null) {
            for (int layerIndex = 0; layerIndex < dataSource.GetLayerCount(); layerIndex++) {
                final Layer layer = dataSource.GetLayer(layerIndex);
                if (layer != null) {
                    try {
                        final RecordDefinitionImpl recordDefinition = newLayerRecordDefinition(schema, layer);
                        final PathName typePath = recordDefinition.getPathName();
                        final String layerName = layer.GetName();
                        this.layerNameToPathMap.put(layerName.toUpperCase(), typePath);
                        this.pathToLayerNameMap.put(typePath, layerName);
                        elementsByPath.put(typePath, recordDefinition);
                    } finally {
                        layer.delete();
                    }
                }
            }
        }
    }
    return elementsByPath;
}
Also used : RecordDefinitionImpl(com.revolsys.record.schema.RecordDefinitionImpl) PathName(com.revolsys.io.PathName) TreeMap(java.util.TreeMap) Layer(org.gdal.ogr.Layer) RecordStoreSchemaElement(com.revolsys.record.schema.RecordStoreSchemaElement) DataSource(org.gdal.ogr.DataSource)

Example 5 with Layer

use of org.gdal.ogr.Layer in project com.revolsys.open by revolsys.

the class OgrRecordStore method closeDo.

public void closeDo() {
    synchronized (this) {
        if (!isClosed()) {
            if (this.dataSource != null) {
                try {
                    for (final Layer layer : this.layersToClose) {
                        this.dataSource.ReleaseResultSet(layer);
                    }
                    this.layersToClose.clear();
                    this.dataSource.delete();
                } finally {
                    this.dataSource = null;
                    super.close();
                }
            }
        }
    }
}
Also used : Layer(org.gdal.ogr.Layer)

Aggregations

Layer (org.gdal.ogr.Layer)8 LineString (com.revolsys.geometry.model.LineString)4 RecordDefinition (com.revolsys.record.schema.RecordDefinition)4 Feature (org.gdal.ogr.Feature)3 PathName (com.revolsys.io.PathName)2 FieldDefinition (com.revolsys.record.schema.FieldDefinition)2 DataSource (org.gdal.ogr.DataSource)2 FeatureDefn (org.gdal.ogr.FeatureDefn)2 GeometryFactory (com.revolsys.geometry.model.GeometryFactory)1 RecordDefinitionImpl (com.revolsys.record.schema.RecordDefinitionImpl)1 RecordStoreSchema (com.revolsys.record.schema.RecordStoreSchema)1 RecordStoreSchemaElement (com.revolsys.record.schema.RecordStoreSchemaElement)1 TreeMap (java.util.TreeMap)1 SpatialReference (org.gdal.osr.SpatialReference)1