def test_geofeature_from_raster_returns_a_valid_feature(raster, request): raster = request.getfixturevalue(raster) properties = OrderedDict([('prop1', 1), ('prop2', '2'), ('prop3', datetime(2018, 4, 25, 11, 18))]) feature = GeoFeature.from_raster(raster, properties=properties) assert feature.properties == properties assert feature.raster() == raster assert feature.raster().footprint() == feature.geometry
def test_geofeature_with_raster_copy_with(request): raster = request.getfixturevalue("test_raster_with_url") properties = OrderedDict([('prop1', 1), ('prop2', '2'), ('prop3', datetime(2018, 4, 25, 11, 18))]) feature = GeoFeature.from_raster(raster, properties=properties) feature_copy = feature.copy_with() assert feature == feature_copy assert id(feature.raster()) != id(feature_copy.raster()) assert id(feature.properties) != id(feature_copy.properties)
def test_geofeature_from_raster_to_record_should_not_have___object( raster, request): raster = request.getfixturevalue(raster) properties = OrderedDict([('prop1', 1), ('prop2', '2'), ('prop3', datetime(2018, 4, 25, 11, 18))]) feature = GeoFeature.from_raster(raster, properties=properties) feature_record = feature.to_record(feature.crs) for _, asset in feature_record['assets'].items(): assert '__object' not in asset
def test_geofeature_with_raster_copy_with_updates_properties(request): raster = request.getfixturevalue("test_raster_with_url") properties = OrderedDict([('prop1', 1), ('prop2', '2')]) feature = GeoFeature.from_raster(raster, properties=properties) new_properties = OrderedDict([('prop2', 1), ('prop3', '2')]) feature_copy = feature.copy_with(properties=new_properties) assert feature != feature_copy assert feature.raster() == feature_copy.raster() assert id(feature.raster()) != id(feature_copy.raster()) assert feature_copy.properties == {'prop1': 1, 'prop2': 1, 'prop3': '2'}
def test_geofeature_from_multi_rasters_returns_a_valid_feature(request): rasters = [ request.getfixturevalue("test_raster_with_url"), request.getfixturevalue("test_raster_with_url") ] raster = GeoMultiRaster(rasters) properties = OrderedDict([('prop1', 1), ('prop2', '2'), ('prop3', datetime(2018, 4, 25, 11, 18))]) feature = GeoFeature.from_raster(raster, properties=properties) assert feature.properties == properties assert feature.raster() == raster assert feature.raster() == GeoRaster2.from_rasters(rasters)
def test_geofeature_from_record_for_a_record_with_raster(raster, request): raster = request.getfixturevalue(raster) properties = OrderedDict([('prop1', 1), ('prop2', '2'), ('prop3', datetime(2018, 4, 25, 11, 18))]) feature = GeoFeature.from_raster(raster, properties=properties) feature2 = GeoFeature.from_record(feature.to_record(feature.crs), feature.crs) assert feature.raster() == feature2.raster() assert feature.geometry == feature2.geometry assert feature2.to_record(feature2.crs)['properties'] == feature.to_record( feature.crs)['properties'] assert feature2.crs == feature2.raster().crs
def test_geofeature_from_raster_serializes_with_assets(raster, request): raster = request.getfixturevalue(raster) properties = OrderedDict([('prop1', 1), ('prop2', '2'), ('prop3', datetime(2018, 4, 25, 11, 18))]) feature = GeoFeature.from_raster(raster, properties=properties) assert mapping(feature)["assets"] == { '0': { 'href': raster._filename, 'bands': raster.band_names, 'type': RASTER_TYPE, 'product': 'visual' } }
def from_georasters(cls, georasters): """Builds new FeatureCollection from a sequence of :py:class:`~telluric.georaster.GeoRaster2` objects.""" return cls( [GeoFeature.from_raster(raster, {}) for raster in georasters])