コード例 #1
0
ファイル: test_route.py プロジェクト: sriks123/v6_api
    def test_simplify(self):
        geom = wkbelement_from_geojson(
            json.loads(
                '{"type": "LineString", "coordinates": ' +
                '[[635900, 5723600], [635902, 5723600], [635905, 5723600]]}'),
            3857)
        route = Route(activities=['hiking'],
                      geometry=DocumentGeometry(geom=None, geom_detail=geom))
        self.session.add(route)
        self.session.flush()

        # check that the line was simplified on insertion
        simplified_geom = route.geometry
        self.session.refresh(simplified_geom)
        geojson = json.loads(
            geojson_from_wkbelement(simplified_geom.geom_detail))
        self.assertEqual(len(geojson['coordinates']), 2)

        # check that the line was simplified after an update
        route.geometry.geom_detail = wkbelement_from_geojson(
            json.loads(
                '{"type": "LineString", "coordinates": ' +
                '[[635901, 5723600], [635902, 5723600], [635905, 5723600]]}'),
            3857)

        self.session.flush()
        simplified_geom = route.geometry
        self.session.refresh(simplified_geom)
        geojson = json.loads(
            geojson_from_wkbelement(simplified_geom.geom_detail))
        self.assertEqual(len(geojson['coordinates']), 2)
        self.assertCoodinateEquals([635901, 5723600],
                                   geojson['coordinates'][0])
コード例 #2
0
ファイル: test_route.py プロジェクト: c2corg/v6_api
    def test_simplify(self):
        geom = wkbelement_from_geojson(
            '{"type": "LineString", "coordinates": ' +
            '[[635900, 5723600], [635902, 5723600], [635905, 5723600]]}', 3857)
        route = Route(
            activities=['hiking'],
            geometry=DocumentGeometry(geom=None, geom_detail=geom))
        self.session.add(route)
        self.session.flush()

        # check that the line was simplified on insertion
        simplified_geom = route.geometry
        self.session.refresh(simplified_geom)
        geojson = json.loads(
            geojson_from_wkbelement(simplified_geom.geom_detail))
        self.assertEqual(len(geojson['coordinates']), 2)

        # check that the line was simplified after an update
        route.geometry.geom_detail = wkbelement_from_geojson(
            '{"type": "LineString", "coordinates": ' +
            '[[635901, 5723600], [635902, 5723600], [635905, 5723600]]}', 3857)

        self.session.flush()
        simplified_geom = route.geometry
        self.session.refresh(simplified_geom)
        geojson = json.loads(
            geojson_from_wkbelement(simplified_geom.geom_detail))
        self.assertEqual(len(geojson['coordinates']), 2)
        self.assertCoodinateEquals(
            [635901, 5723600], geojson['coordinates'][0])
コード例 #3
0
ファイル: test_route.py プロジェクト: c2corg/v6_api
    def test_geometry_update(self):
        """ Check that geometries are only compared in 2D when updating a
        document.
        """
        geom1 = wkbelement_from_geojson(
            '{"type": "LineString", "coordinates": ' +
            '[[635956, 5723604, 1200], [635966, 5723644, 1210]]}', 3857)
        route_db = Route(
            document_id=1, activities=['hiking'],
            geometry=DocumentGeometry(
                document_id=1, geom=None, geom_detail=geom1)
        )

        geom2 = wkbelement_from_geojson(
            '{"type": "LineString", "coordinates": ' +
            '[[635956, 5723604, 9999], [635966, 5723644, 9999]]}', 3857)
        route_in = Route(
            document_id=1, activities=['hiking'],
            geometry=DocumentGeometry(
                geom=None, geom_detail=geom2)
        )
        route_db.update(route_in)
        self.assertIs(route_db.geometry.geom_detail, geom1)

        geom3 = wkbelement_from_geojson(
            '{"type": "LineString", "coordinates": ' +
            '[[635956, 5723608, 1200], [635966, 5723644, 1210]]}', 3857)
        route_in = Route(
            document_id=1, activities=['hiking'],
            geometry=DocumentGeometry(
                geom=None, geom_detail=geom3)
        )
        route_db.update(route_in)
        self.assertIsNot(route_db.geometry.geom_detail, geom1)
        self.assertIs(route_db.geometry.geom_detail, geom3)
コード例 #4
0
ファイル: test_utils.py プロジェクト: sriks123/v6_api
 def test_wkb_to_shape_point(self):
     wkb = wkbelement_from_geojson(json.loads(
         '{"type": "Point", "coordinates": [1.0, 2.0, 3.0, 4.0]}'), 3857)
     point = wkb_to_shape(wkb)
     self.assertFalse(point.has_z)
     self.assertAlmostEquals(point.x, 1.0)
     self.assertAlmostEquals(point.y, 2.0)
コード例 #5
0
ファイル: test_utils.py プロジェクト: sriks123/v6_api
    def test_wkb_to_shape_multipolygon(self):
        wkb = wkbelement_from_geojson(json.loads(
            '{"type": "MultiPolygon", "coordinates": ' +
            '[[[[100.0, 0.0, 1200], [101.0, 0.0, 1200], [101.0, 1.0, 1200], '
            '[100.0, 1.0, 1200], [100.0, 0.0, 1200]]]]}'), 3857)
        multi_polygon = wkb_to_shape(wkb)
        self.assertFalse(multi_polygon.has_z)

        self.assertEqual(len(multi_polygon.geoms[0].exterior.coords), 5)
        self.assertEqual(len(multi_polygon.geoms[0].exterior.coords[0]), 2)
コード例 #6
0
ファイル: test_utils.py プロジェクト: c2corg/v6_api
    def test_wkb_to_shape_polygon(self):
        wkb = wkbelement_from_geojson(
            '{"type": "Polygon", "coordinates": ' + "[[[100.0, 0.0, 1200], [101.0, 0.0, 1200], [101.0, 1.0, 1200], "
            "[100.0, 1.0, 1200], [100.0, 0.0, 1200]]]}",
            3857,
        )
        polygon = wkb_to_shape(wkb)
        self.assertFalse(polygon.has_z)

        self.assertEqual(len(polygon.exterior.coords), 5)
        self.assertEqual(len(polygon.exterior.coords[0]), 2)
コード例 #7
0
ファイル: test_utils.py プロジェクト: c2corg/v6_api
    def test_wkb_to_shape_linestring(self):
        wkb = wkbelement_from_geojson(
            '{"type": "LineString", "coordinates": ' + "[[635956, 5723604, 1200], [635966, 5723644, 1210]]}", 3857
        )
        line = wkb_to_shape(wkb)
        self.assertFalse(line.has_z)

        self.assertEqual(len(line.coords), 2)
        self.assertEqual(len(line.coords[0]), 2)
        self.assertCoodinateEquals(line.coords[0], [635956.0, 5723604.0])
        self.assertCoodinateEquals(line.coords[1], [635966.0, 5723644.0])
コード例 #8
0
ファイル: test_utils.py プロジェクト: c2corg/v6_api
    def test_wkb_to_shape_linestring(self):
        wkb = wkbelement_from_geojson(
            json.loads('{"type": "LineString", "coordinates": ' +
                       '[[635956, 5723604, 1200], [635966, 5723644, 1210]]}'),
            3857)
        line = wkb_to_shape(wkb)
        self.assertFalse(line.has_z)

        self.assertEqual(len(line.coords), 2)
        self.assertEqual(len(line.coords[0]), 2)
        self.assertCoodinateEquals(line.coords[0], [635956.0, 5723604.0])
        self.assertCoodinateEquals(line.coords[1], [635966.0, 5723644.0])
コード例 #9
0
ファイル: test_route.py プロジェクト: sriks123/v6_api
    def test_geometry_update(self):
        """ Check that geometries are only compared in 2D when updating a
        document.
        """
        geom1 = wkbelement_from_geojson(
            json.loads('{"type": "LineString", "coordinates": ' +
                       '[[635956, 5723604, 1200], [635966, 5723644, 1210]]}'),
            3857)
        route_db = Route(document_id=1,
                         activities=['hiking'],
                         geometry=DocumentGeometry(document_id=1,
                                                   geom=None,
                                                   geom_detail=geom1))

        geom2 = wkbelement_from_geojson(
            json.loads('{"type": "LineString", "coordinates": ' +
                       '[[635956, 5723604, 9999], [635966, 5723644, 9999]]}'),
            3857)
        route_in = Route(document_id=1,
                         activities=['hiking'],
                         geometry=DocumentGeometry(geom=None,
                                                   geom_detail=geom2))
        route_db.update(route_in)
        self.assertIs(route_db.geometry.geom_detail, geom1)

        geom3 = wkbelement_from_geojson(
            json.loads('{"type": "LineString", "coordinates": ' +
                       '[[635956, 5723608, 1200], [635966, 5723644, 1210]]}'),
            3857)
        route_in = Route(document_id=1,
                         activities=['hiking'],
                         geometry=DocumentGeometry(geom=None,
                                                   geom_detail=geom3))
        route_db.update(route_in)
        self.assertIsNot(route_db.geometry.geom_detail, geom1)
        self.assertIs(route_db.geometry.geom_detail, geom3)
コード例 #10
0
ファイル: colander_ext.py プロジェクト: c2corg/v6_api
    def test_save_and_load(self):
        fake_doc = Document()
        self.session.add(fake_doc)
        self.session.flush()

        geom = wkbelement_from_geojson(
            '{"type": "Point", "coordinates": [1.0, 2.0]}', 3857)
        geometry = DocumentGeometry(
            document_id=fake_doc.document_id, geom=geom)
        self.session.add(geometry)
        self.session.flush()
        self.session.expire(geometry)

        geom_loaded = geometry.geom
        geom_str = geojson_from_wkbelement(geom_loaded)

        geom_geojson = json.loads(geom_str)
        self.assertCoodinateEquals([1.0, 2.0], geom_geojson['coordinates'])
コード例 #11
0
    def test_save_and_load(self):
        fake_doc = Document()
        self.session.add(fake_doc)
        self.session.flush()

        geom = wkbelement_from_geojson(
            '{"type": "Point", "coordinates": [1.0, 2.0]}', 3857)
        geometry = DocumentGeometry(document_id=fake_doc.document_id,
                                    geom=geom)
        self.session.add(geometry)
        self.session.flush()
        self.session.expire(geometry)

        geom_loaded = geometry.geom
        geom_str = geojson_from_wkbelement(geom_loaded)

        geom_geojson = json.loads(geom_str)
        self.assertCoodinateEquals([1.0, 2.0], geom_geojson['coordinates'])
コード例 #12
0
ファイル: test_utils.py プロジェクト: c2corg/v6_api
 def test_wkb_to_shape_point(self):
     wkb = wkbelement_from_geojson('{"type": "Point", "coordinates": [1.0, 2.0, 3.0, 4.0]}', 3857)
     point = wkb_to_shape(wkb)
     self.assertFalse(point.has_z)
     self.assertAlmostEquals(point.x, 1.0)
     self.assertAlmostEquals(point.y, 2.0)