def test_delete_features(self, vector_client, delete_job): fc = FeatureCollection("foo", vector_client=vector_client) geometry = mock.MagicMock() fc = fc.filter(geometry=geometry) exp = (p.foo > 0) fc = fc.filter(properties=exp) fc.delete_features() vector_client.delete_features_from_query.assert_called_once_with( product_id="foo", geometry=geometry, query_expr=exp)
def test_copy_deprecated(self, vector_client): attributes = dict(name='name', title='title', description='description', owners=['owners'], readers=['readers'], writers=None) fc = FeatureCollection('foo', vector_client=vector_client) geometry = mock.MagicMock() filtered = fc.filter(geometry=geometry) exp = (p.foo > 0) filtered = filtered.filter(properties=exp) filtered.copy(**attributes) vector_client.create_product_from_query.assert_called_once_with( description='description', new_product_id='name', owners=['owners'], readers=['readers'], title='title', writers=None, product_id="foo", geometry=mock.ANY, query_expr=mock.ANY, query_limit=None, )
def test_copy_deprecated(self, vector_client): attributes = dict( name="name", title="title", description="description", owners=["owners"], readers=["readers"], writers=None, ) fc = FeatureCollection("foo", vector_client=vector_client) geometry = mock.MagicMock() filtered = fc.filter(geometry=geometry) exp = p.foo > 0 filtered = filtered.filter(properties=exp) filtered.copy(**attributes) vector_client.create_product_from_query.assert_called_once_with( description="description", new_product_id="name", owners=["owners"], readers=["readers"], title="title", writers=None, product_id="foo", geometry=mock.ANY, query_expr=mock.ANY, query_limit=None, )
def test_filter_geometry_twice(self, vector_client): vector_client.search_features = mock.Mock(return_value=iter([])) fc = FeatureCollection("foo", vector_client=vector_client) geometry = mock.MagicMock() filtered = fc.filter(geometry=geometry) with pytest.raises(InvalidQueryException): filtered = filtered.filter(geometry=geometry)
def test_filter_geometry(self, vector_client): fc = FeatureCollection('foo', vector_client=vector_client) geometry = mock.MagicMock() filtered = fc.filter(geometry=geometry) self.assertEqual(fc._query_geometry, None) self.assertEqual(fc._query_property_expression, None) self.assertEqual(filtered._query_geometry, geometry) self.assertEqual(list(filtered.features()), []) vector_client.search_features.assert_called_once_with( geometry=geometry, query_limit=None, product_id='foo', query_expr=None)
def test_filter_properties(self, vector_client): fc = FeatureCollection('foo', vector_client=vector_client) exp = (p.foo > 0) exp2 = (p.bar >= 0) filtered = fc.filter(properties=exp) self.assertEqual(filtered._query_property_expression, exp) self.assertEqual(fc._query_property_expression, None) filtered = filtered.filter(properties=exp2) self.assertEqual(list(filtered.features()), []) vector_client.search_features.assert_called_once_with( geometry=None, query_limit=None, product_id='foo', query_expr=mock.ANY)
def test_filter_geometry(self, vector_client): vector_client.search_features = mock.Mock(return_value=iter([])) fc = FeatureCollection("foo", vector_client=vector_client) geometry = mock.MagicMock() filtered = fc.filter(geometry=geometry) assert fc._query_geometry is None assert fc._query_property_expression is None assert filtered._query_geometry == geometry assert list(filtered.features()) == [] vector_client.search_features.assert_called_once_with( geometry=geometry, query_limit=None, product_id="foo", query_expr=None)
def test_filter_properties(self, vector_client): vector_client.search_features = mock.Mock(return_value=iter([])) fc = FeatureCollection("foo", vector_client=vector_client) exp = p.foo > 0 exp2 = p.bar >= 0 filtered = fc.filter(properties=exp) assert filtered._query_property_expression == exp assert fc._query_property_expression is None filtered = filtered.filter(properties=exp2) assert list(filtered.features()) == [] vector_client.search_features.assert_called_once_with( geometry=None, query_limit=None, product_id="foo", query_expr=mock.ANY)
# and :meth:`FeatureCollection.features <descarteslabs.vectors.featurecollection.FeatureCollection.features>`. aoi = { "type": "Polygon", "coordinates": [ [ [-105.194091796875, 36.88181755936464], [-104.765625, 36.88181755936464], [-104.765625, 37.13404537126446], [-105.194091796875, 37.13404537126446], [-105.194091796875, 36.88181755936464], ] ], } fc = fc.filter(geometry=aoi) print(list(fc.features())) # this returns an iterator ################################################ # Search for :class:`Feature <descarteslabs.vectors.feature.Feature>` in this # :class:`FeatureCollection <descarteslabs.vectors.featurecollection.FeatureCollection>` # intersecting the aoi where ``foo=bar``. print(list(fc.filter(properties=(p.foo == "bar")).features())) ################################################ # Search for :class:`Feature <descarteslabs.vectors.feature.Feature>` where property ``foo=foo``. # There should be no results. print(list(fc.filter(properties=(p.foo == "foo")).features())) ################################################