Esempio n. 1
0
    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)
Esempio n. 2
0
    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,
        )
Esempio n. 3
0
    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,
        )
Esempio n. 4
0
    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)
Esempio n. 5
0
    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)
Esempio n. 6
0
    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)
Esempio n. 7
0
    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)
Esempio n. 8
0
    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)
Esempio n. 9
0
# 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()))

################################################