def test_update_cell_in_cell_datasets(self):
        store.dropAll()
        bds = BoundaryDataSet("id")
        boundaries = [
            'O23P12P34S56', 'P10P11P2', 'N0', 'N8O2P0', 'O6S0S1S2', 'Q'
        ]

        for boundary in boundaries:
            bds.add(Boundary(boundary_ID=BoundaryID(boundary)), Data(""))
        store.insert(bds)

        store.update_boundary_in_boundary_datasets(
            "id", (Boundary(boundary_ID=BoundaryID('O23P12P34S56'))),
            Data("test"))

        stored_bds = store.query_by_boundary_in_boundary_datasets(
            "id", (Boundary(boundary_ID=BoundaryID('O23P12P34S56'))))
        num_bds = 0
        num_boundaries = 0
        for bds in stored_bds:
            for boundary, data in bds.get_boundaries_and_data():
                assert boundaries.__contains__(boundary.AUID_to_CUIDs())
                assert data.content == Data("test").content
                num_boundaries = num_boundaries + 1
            num_bds = num_bds + 1
        self.assertEqual(num_bds, 1)
        self.assertEqual(num_boundaries, 1)
        store.dropAll()
    def test_delete_boundary_in_boundary_datasets(self):
        store.dropAll()
        bds = BoundaryDataSet("id")
        boundaries = [
            'O23P12P34S56', 'P10P11P2', 'N0', 'N8O2P0', 'O6S0S1S2', 'Q'
        ]

        for boundary in boundaries:
            bds.add(Boundary(boundary_ID=BoundaryID(boundary)), Data(""))
        store.insert(bds)

        deleted_boundaries = store.delete_boundary_in_boundary_datasets(
            "id", (Boundary(boundary_ID=BoundaryID('O23P12P34S56'))))
        self.assertEqual(deleted_boundaries, 1)

        stored_bds = store.query_by_boundary_in_boundary_datasets(
            "id", (Boundary(boundary_ID=BoundaryID('O23P12P34S56'))))
        num_bds = 0
        for bds in stored_bds:
            assert bds.get_boundaries().__len__() == 0
            num_bds = num_bds + 1
        assert num_bds == 1
        self.assertEqual(num_bds, 1)

        store.dropAll()
    def test_update_boundary_dataset(self):
        store.dropAll()
        bds = BoundaryDataSet("id")
        boundaries = [
            'O23P12P34S56', 'P10P11P2', 'N0', 'N8O2P0', 'O6S0S1S2', 'Q'
        ]

        for boundary in boundaries:
            bds.add(Boundary(boundary_ID=BoundaryID(boundary)), Data(""))
        store.insert(bds)

        bds2 = BoundaryDataSet("id")
        boundaries2 = ['N0', 'N8O2P0', 'O6S0S1S2', 'Q']

        for boundary in boundaries2:
            bds2.add(Boundary(boundary_ID=BoundaryID(boundary)), Data(""))
        store.update_boundary_dataset(bds2)

        stored_bds = store.query_by_boundary_dataset_id("id")
        num_bds = 0
        num_boundaries = 0
        for bds in stored_bds:
            for boundary in bds.get_boundaries():
                assert boundaries2.__contains__(boundary.AUID_to_CUIDs())
                num_boundaries = num_boundaries + 1
            num_bds = num_bds + 1
        self.assertEqual(num_bds, 1)
        self.assertEqual(num_boundaries, len(boundaries2))
        store.dropAll()
Example #4
0
    def retrieve(self, request, bds=None, pk=None):
        if bds is not None:
            if not re.match(r'^[A-Za-z0-9]+$', pk):
                return Response({
                    'status': 'Bad request',
                },
                                status=status.HTTP_400_BAD_REQUEST)

            try:
                boundary_dataset = self.store.query_by_boundary_in_boundary_datasets(
                    bds, Boundary(boundary_ID=BoundaryID(pk)))
            except:
                return Response({
                    'status': 'Bad request',
                },
                                status=status.HTTP_500_INTERNAL_SERVER_ERROR)
            serializer = self.serializer_class(instance=boundary_dataset,
                                               many=True)
        else:
            try:
                boundary_dataset = self.store.query_by_boundary_dataset_id(pk)
            except:
                return Response({
                    'status': 'Bad request',
                },
                                status=status.HTTP_500_INTERNAL_SERVER_ERROR)
            serializer = self.serializer_class(instance=boundary_dataset,
                                               many=True)
        return Response(serializer.data)
Example #5
0
    def destroy(self, request, bds=None, pk=None):
        if bds is not None:
            if not re.match(r'^[A-Za-z0-9]+$', pk):
                return Response({
                    'status': 'Bad request',
                },
                                status=status.HTTP_400_BAD_REQUEST)

            try:
                result = self.store.delete_boundary_in_boundary_datasets(
                    bds, Boundary(boundary_ID=BoundaryID(pk)))
                if result == 0:
                    return Response(status=status.HTTP_404_NOT_FOUND)
                else:
                    return Response(status=status.HTTP_204_NO_CONTENT)
            except:
                return Response({
                    'status': 'Bad request',
                },
                                status=status.HTTP_500_INTERNAL_SERVER_ERROR)
        else:
            try:
                result = self.store.delete_boundary_dataset(pk)
                if result == 0:
                    return Response(status=status.HTTP_404_NOT_FOUND)
                else:
                    return Response(status=status.HTTP_204_NO_CONTENT)
            except:
                return Response({
                    'status': 'Bad request',
                },
                                status=status.HTTP_500_INTERNAL_SERVER_ERROR)
Example #6
0
 def to_internal_value(self, data):
     bds = BoundaryDataSet(id='')
     for item in data:
         if not re.match(r'^[A-Za-z0-9]+$', item['boundary']):
             raise ValidationError('Incorrect format: ' + item['boundary'])
         bds.add(Boundary(boundary_ID=BoundaryID(item['boundary'])),
                 Data(item['data']))
     return bds.boundary_data_set
Example #7
0
    def __init__(self,
                 boundary_ID=None,
                 cells=None,
                 dggs=rHEALPix(N_side=3, north_square=0, south_square=0)):
        """
        :param boundary_ID: boundary identifier, of type BoundaryID
        :param cells: list of identifiers of the cells that make up the boundary, [ CellID, CellID ... ]
        :param dggs: Discrete Global Grid System, rHEALPix by default
        """
        self.boundary_ID = boundary_ID
        self.cells = cells
        self.dggs = dggs

        assert boundary_ID is not None or cells is not None

        if cells is None:
            cells = []
            cell_ID = ''
            first = True
            for char in boundary_ID.value:
                if char in self.dggs.cells_R0:
                    if not first:
                        cells.append(CellID(cell_ID))
                    else:
                        first = False
                    cell_ID = char
                else:
                    cell_ID = cell_ID + char
            cells.append(CellID(cell_ID))
            cell_ids = sorted([cell.value for cell in cells])
            self.cells = [CellID(id) for id in cell_ids]

        if boundary_ID is None:
            cell_ids = sorted([cell.value for cell in cells])
            self.cells = [CellID(id) for id in cell_ids]
            boundary_ID = ''
            for cell_ID in self.cells:
                boundary_ID = boundary_ID + cell_ID.value
            self.boundary_ID = BoundaryID(boundary_ID)

        refinement_set = {}
        for cell in cells:
            if cell.get_refinement() in refinement_set:
                cell_list = refinement_set[cell.get_refinement()]
                cell_list.append(cell)
            else:
                refinement_set[cell.get_refinement()] = [cell]

        grids_list = []
        for refinement, cell_list in refinement_set.items():
            grids_list.append(Grid(refinement, cells=cell_list))

        def sort_by_refinement_level(grid):
            return grid.refinement_level

        grids_list.sort(key=sort_by_refinement_level)
        self.grids = grids_list
    def test_delete_boundary(self):
        store.dropAll()
        bds = BoundaryDataSet("id")
        boundaries = [
            'O23P12P34S56', 'P10P11P2', 'N0', 'N8O2P0', 'O6S0S1S2', 'Q'
        ]

        for boundary in boundaries:
            bds.add(Boundary(boundary_ID=BoundaryID(boundary)), Data(""))
        store.insert(bds)

        deleted_boundaries = store.delete_boundary(
            (Boundary(boundary_ID=BoundaryID('O23P12P34S56'))))
        self.assertEqual(deleted_boundaries, 1)

        stored_boundaries = store.query_by_boundary(
            (Boundary(boundary_ID=BoundaryID('O23P12P34S56'))))
        self.assertEqual(stored_boundaries.__len__(), 0)
        store.dropAll()
    def test_query_by_boundary(self):
        store.dropAll()
        bds = BoundaryDataSet("id")
        boundaries = [
            'O23P12P34S56', 'P10P11P2', 'N0', 'N8O2P0', 'O6S0S1S2', 'Q'
        ]

        for boundary in boundaries:
            bds.add(Boundary(boundary_ID=BoundaryID(boundary)), Data(""))
        store.insert(bds)

        stored_boundaries = store.query_by_boundary(
            (Boundary(boundary_ID=BoundaryID('O23P12P34S56'))))
        num_boundaries = 0
        for boundary in stored_boundaries:
            assert boundaries.__contains__(boundary[0].AUID_to_CUIDs())
            num_boundaries = num_boundaries + 1
        self.assertEqual(num_boundaries, 1)
        store.dropAll()
Example #10
0
 def test_boundary_from_boundary_ID(self):
     boundary = Boundary(boundary_ID=BoundaryID('N11N12N13N88O0P123S34567'))
     self.assertEqual(boundary.cells, [
         CellID('N11'),
         CellID('N12'),
         CellID('N13'),
         CellID('N88'),
         CellID('O0'),
         CellID('P123'),
         CellID('S34567')
     ])
Example #11
0
    def test_optimize_boundary(self):
        boundary = Boundary(boundary_ID=BoundaryID('N11N12N2N3'))
        optimal_boundary = boundary.optimize()
        self.assertEqual(optimal_boundary.boundary_ID.value,
                         "RN11$))2$)))2$))3$))))")
        self.assertEqual(optimal_boundary.is_optimal(), True)

        boundary = Boundary(
            boundary_ID=BoundaryID('N11N20N21N22N23N24N25N26N27N28'))
        self.assertEqual(boundary.boundary_ID.value,
                         "N11N20N21N22N23N24N25N26N27N28")
        self.assertEqual(boundary.is_optimal(), False)
        optimal_boundary = boundary.optimize()
        self.assertEqual(optimal_boundary.boundary_ID.value, "RN11$)))2$))))")
        self.assertEqual(optimal_boundary.is_optimal(), True)

        boundary = Boundary(boundary_ID=BoundaryID(
            'N7N00N01N02N03N04N05N06N07N08N11N21N22N23N24N25N26N27N28N200N201N202N203N204N205N206N207N208N9878'
        ))
        optimal_boundary = boundary.optimize()
        self.assertEqual(optimal_boundary.boundary_ID.value,
                         "RN0$))11$)))2$))7$))9878$)))))))")
        self.assertEqual(optimal_boundary.is_optimal(), True)
Example #12
0
    def get_boundary_dataset_from_shp_file(self,
                                           dir,
                                           id,
                                           with_ids,
                                           refinement=None,
                                           unic_data=False):
        import os
        import glob
        os.chdir(dir)
        boundaries = []
        for file in glob.glob('*.shp'):
            boundaries.append(fiona.open(file))

        bds = BoundaryDataSet(id=id)
        for boundary in boundaries:
            data = {}
            boundary_id = ''
            first = True
            for polygon in boundary:
                if with_ids:
                    boundary_id = boundary_id + polygon['properties']['id']
                else:
                    assert refinement is not None
                    cell = self.get_cell_ID(polygon, int(refinement))
                    boundary_id = boundary_id + cell.value

                if not unic_data:
                    if 'data' in polygon['properties']:
                        data[polygon['properties']
                             ['id']] = polygon['properties']['data']
                    else:
                        data[polygon['properties']
                             ['id']] = polygon['properties']
                elif unic_data and first:
                    if 'data' in polygon['properties']:
                        data = polygon['properties']['data']
                    else:
                        data = polygon['properties']
            bds.add(boundary=Boundary(boundary_ID=BoundaryID(boundary_id)),
                    data=Data(data))

        return bds
Example #13
0
    def __init__(self,
                 refinement_level,
                 boundary_ID=None,
                 cells=None,
                 dggs=rHEALPix(N_side=3, north_square=0, south_square=0)):
        """
        :param refinement_level
        :param boundary_ID: boundary identifier, of type BoundaryID
        :param cells: list of identifiers of the cells that make up the boundary, [ CellID, CellID ... ]
        :param dggs: Discrete Global Grid System, rHEALPix by default
        """
        self.boundary_ID = boundary_ID
        self.cells = cells
        self.dggs = dggs
        self.refinement_level = refinement_level

        assert boundary_ID is not None or cells is not None

        if cells is None:
            cells = []
            cell_ID = ''
            first = True
            for char in boundary_ID.value:
                if char in self.dggs.cells_R0:
                    if not first:
                        cells.append(CellID(cell_ID))
                    else:
                        first = False
                    cell_ID = char
                else:
                    cell_ID = cell_ID + char
            cells.append(CellID(cell_ID))
            cell_ids = sorted([cell.value for cell in cells])
            self.cells = [CellID(id) for id in cell_ids]

        if boundary_ID is None:
            cell_ids = sorted([cell.value for cell in cells])
            self.cells = [CellID(id) for id in cell_ids]
            boundary_ID = ''
            for cell_ID in self.cells:
                boundary_ID = boundary_ID + cell_ID.value
            self.boundary_ID = BoundaryID(boundary_ID)
Example #14
0
    def add_list(self, cell_data_list):
        """
        Add all pairs (CellID, Data) in a list
        :paramcell_data_list: list of cells and associated data tuples
        """
        for (cell_id, data) in cell_data_list:
            if cell_id not in self.cells:
                self.cells.append(cell_id)
                self.cell_data_set[cell_id.value] = (cell_id, data)
            else:
                print('Cell already exists in this dataset')
                return -1

        cell_ids = sorted([cell.value for cell in self.cells])
        self.cells = [CellID(id) for id in cell_ids]

        boundary_ID = ''
        for cell_ID in self.cells:
            boundary_ID = boundary_ID + cell_ID.value
        self.boundary_ID = BoundaryID(boundary_ID)
Example #15
0
    def add(self, cell_id, data):
        """
        Add a pair (CellID, Data)
        :param cell_id: object of type CellID.
        :param data: object of type Data.
        """
        if cell_id not in self.cells:
            self.cells.append(cell_id)
            cell_ids = sorted([cell.value for cell in self.cells])
            self.cells = [CellID(id) for id in cell_ids]

            boundary_ID = ''
            for cell_ID in self.cells:
                boundary_ID = boundary_ID + cell_ID.value
            self.boundary_ID = BoundaryID(boundary_ID)

            self.cell_data_set[cell_id.value] = (cell_id, data)
        else:
            print('Cell already exists in this dataset')
            return -1
Example #16
0
    def test_bbox(self):
        boundary = Boundary(boundary_ID=BoundaryID('O0O1O3O4'))
        bbox = [[[-179.9999997096064, -12.895312716341486],
                 [-120.00000018880363, -12.895312716341486],
                 [-120.00000018880363, 41.93785365811587],
                 [-179.9999997096064, 41.93785365811587],
                 [-179.9999997096064, -12.895312716341486]]]
        self.assertEqual(boundary.get_bbox(), bbox)

        boundary = Boundary(boundary_ID=BoundaryID('O0O1O3'))
        bbox = [[[-179.9999997096064, -12.895312716341486],
                 [-120.00000018880363, -12.895312716341486],
                 [-120.00000018880363, 41.93785365811587],
                 [-179.9999997096064, 41.93785365811587],
                 [-179.9999997096064, -12.895312716341486]]]
        self.assertEqual(boundary.get_bbox(), bbox)

        boundary = Boundary(boundary_ID=BoundaryID('O1O3O4'))
        bbox = [[[-179.9999997096064, -12.895312716341486],
                 [-120.00000018880363, -12.895312716341486],
                 [-120.00000018880363, 41.93785365811587],
                 [-179.9999997096064, 41.93785365811587],
                 [-179.9999997096064, -12.895312716341486]]]
        self.assertEqual(boundary.get_bbox(), bbox)

        boundary = Boundary(boundary_ID=BoundaryID('O0O4'))
        bbox = [[[-179.9999997096064, -12.895312716341486],
                 [-120.00000018880363, -12.895312716341486],
                 [-120.00000018880363, 41.93785365811587],
                 [-179.9999997096064, 41.93785365811587],
                 [-179.9999997096064, -12.895312716341486]]]
        self.assertEqual(boundary.get_bbox(), bbox)

        boundary = Boundary(boundary_ID=BoundaryID('N5P1P2'))
        bbox = [[[-89.99999763120867, 12.895313217732834],
                 [-5.735989944427416e-07, 12.895313217732834],
                 [-5.735989944427416e-07, 74.42400629900254],
                 [-89.99999763120867, 74.42400629900254],
                 [-89.99999763120867, 12.895313217732834]]]
        self.assertEqual(boundary.get_bbox(), bbox)

        boundary = Boundary(boundary_ID=BoundaryID('Q6Q7S7'))
        bbox = [[[1.9224187603958446e-06, -74.4240062287476],
                 [89.9999976312087, -74.4240062287476],
                 [89.9999976312087, -12.895313217732834],
                 [1.9224187603958446e-06, -12.895313217732834],
                 [1.9224187603958446e-06, -74.4240062287476]]]
        self.assertEqual(boundary.get_bbox(), bbox)
Example #17
0
    def __init__(self,
                 id,
                 dggs=rHEALPix(N_side=3, north_square=0, south_square=0),
                 cell_data_set=None):
        """
        :param boundary_ID: boundary identifier, of type BoundaryID
        :param cells: list of identifiers of the cells that make up the boundary, [ CellID, CellID ... ]
        :param dggs: Discrete Global Grid System, rHEALPix by default
        :param cell_data_set: dictionary with CellID.value as key and  (CellID, Data) as value:
        {
            CellID.value: (CellID, Data)
        }
        """
        assert id is not None
        self.id = id
        self.boundary_ID = ''
        self.cells = []
        self.dggs = dggs

        if cell_data_set is None:
            cell_data_set = {}
        else:
            cells = []
            for id, (cell_id, data) in cell_data_set.items():
                if cell_id not in self.cells:
                    cells.append(cell_id)
                else:
                    print('Cell already exists in this dataset')
            cell_ids = sorted([cell.value for cell in cells])
            self.cells = [CellID(id) for id in cell_ids]

            boundary_ID = ''
            for cell_ID in self.cells:
                boundary_ID = boundary_ID + cell_ID.value
            self.boundary_ID = BoundaryID(boundary_ID)
        self.cell_data_set = cell_data_set
    def test_API(self, n_person):

        print('TEST START')
        store = BoundaryStore()
        store.dropAll()

        boundary_dataset_test = {}
        all_bds_test = []
        all_boundaries = []
        boundary_test = []
        test_boundary_id = ''
        number_person = 0
        test_person_number = ''
        for person in self.bds[0:n_person]:
            number_person = number_person + 1
            bds = []
            bds_test = []
            for boundaries in person['boundaries']:
                data = {}
                boundary_id = ''
                for polygon in boundaries:
                    boundary_id = boundary_id + polygon['properties']['id']
                    data[polygon['properties']['id']] = polygon['properties']
                bds.append({'boundary': boundary_id, 'data': data})
                optB = Boundary(boundary_ID=BoundaryID(boundary_id)).optimize()
                bds_test.append({'AUID': optB.boundary_ID.value, 'boundary': optB.AUID_to_CUIDs(), 'data': data})
                all_boundaries.append({'AUID': optB.boundary_ID.value, 'boundary': optB.AUID_to_CUIDs(), 'data': data})
                test_boundary_id = boundary_id
                boundary_test = [{'AUID': optB.boundary_ID.value, 'boundary': optB.AUID_to_CUIDs(), 'data': data}]
            boundary_dataset = {"id": "persona" + str(number_person), 'boundary_data_set': bds}
            test_person_number = "persona" + str(number_person)
            boundary_dataset_test = {"id": "persona" + str(number_person), 'boundary_data_set': bds_test}
            all_bds_test.append(boundary_dataset_test)

            # POST BOUNDARY_DATASETS TEST
            r = requests.post('http://127.0.0.1:8000/bdatasets/', json=boundary_dataset)
            assert r.status_code == 201

        # GET ALL BOUNDARY_DATASETS TEST
        r = requests.get('http://127.0.0.1:8000/bdatasets/')
        assert r.status_code == 200
        json_test = json.dumps(all_bds_test)
        json_data = json.dumps(r.json())
        assert json_test == json_data

        # GET BOUNDARY_DATASET TEST
        r = requests.get('http://127.0.0.1:8000/bdatasets/' + test_person_number)
        assert r.status_code == 200
        json_test = json.dumps([boundary_dataset_test])
        json_data = json.dumps(r.json())
        assert json_test == json_data

        # GET BOUNDARY IN BOUNDARY_DATASET TEST
        r = requests.get('http://127.0.0.1:8000/bdatasets/' + test_person_number + "/" + test_boundary_id)
        assert r.status_code == 200
        boundary_in_boundary_dataset = {"id": test_person_number, 'boundary_data_set': boundary_test}
        json_test = json.dumps([boundary_in_boundary_dataset])
        json_data = json.dumps(r.json())
        assert json_test == json_data

        # GET ALL BOUNDARIES TEST
        r = requests.get('http://127.0.0.1:8000/boundaries/')
        assert r.status_code == 200
        json_test = json.dumps(all_boundaries)
        json_data = json.dumps(r.json())
        assert json_test == json_data

        # GET BOUNDARY TEST
        r = requests.get('http://127.0.0.1:8000/boundaries/' + test_boundary_id)
        assert r.status_code == 200
        json_test = json.dumps(boundary_test)
        json_data = json.dumps(r.json())
        assert json_test == json_data

        # DELETE BOUNDARY TEST
        r = requests.delete('http://127.0.0.1:8000/boundaries/' + test_boundary_id)
        assert r.status_code == 204

        r = requests.get('http://127.0.0.1:8000/boundaries/')
        assert r.status_code == 200
        all_boundaries.pop()
        json_test = json.dumps(all_boundaries)
        json_data = json.dumps(r.json())
        assert json_test == json_data

        store.dropAll()

        print('TEST FINISH')
Example #19
0
    def test_API_polygon_11(self):

        print('TEST START')
        store = BoundaryStore(MongoClient(port=27017).bds)
        store.dropAll()

        i = 0
        data = {}
        bds = []
        boundary_id = ''

        for polygon in self.shapes:
            if i != 0:
                bds.append({'boundary': boundary_id, 'data': data})
                optB = Boundary(boundary_ID=BoundaryID(boundary_id)).optimize()
                data = {}
                boundary_id = ''
            boundary_id = boundary_id + polygon['properties']['id']
            data[polygon['properties']['id']] = polygon['properties']
            i = i + 1
        boundary_dataset = {'boundary_data_set': bds}

        # POST BOUNDARY_DATASETS TEST
        r = requests.post('http://127.0.0.1:8000/bdatasets/',
                          json=boundary_dataset)
        assert r.status_code == 201

        # GET BOUNDARY (POLYGON) TEST
        params = {
            'dlx': '-0.903563',
            'dly': '41.644185',
            'urx': '-0.902558',
            'ury': '41.644762'
        }
        cells = [
            Boundary(boundary_ID=BoundaryID(
                'P22220720640')).optimize().boundary_ID.value,
            Boundary(boundary_ID=BoundaryID(
                'P22220720641')).optimize().boundary_ID.value,
            Boundary(boundary_ID=BoundaryID(
                'P22220720642')).optimize().boundary_ID.value,
            Boundary(boundary_ID=BoundaryID(
                'P22220720643')).optimize().boundary_ID.value,
            Boundary(boundary_ID=BoundaryID(
                'P22220720644')).optimize().boundary_ID.value,
            Boundary(boundary_ID=BoundaryID(
                'P22220720645')).optimize().boundary_ID.value
        ]

        r = requests.get('http://127.0.0.1:8000/boundaries/', params=params)
        assert r.status_code == 200

        num_cells = 0
        for boundary in r.json():
            assert cells.__contains__(boundary['AUID'])
            num_cells = num_cells + 1
        assert num_cells == len(cells)

        store.dropAll()

        print('TEST FINISH')
Example #20
0
    def test_API(self):

        print('TEST START')
        store = BoundaryStore(MongoClient(port=27017).bds)
        store.dropAll()

        i = 0
        data = {}
        bds = []
        boundary_id = ''
        bds_test = []
        boundary_test = []
        test_boundary_id = ''

        for polygon in self.shapes:
            if i % 10 == 0 and i != 0:
                bds.append({'boundary': boundary_id, 'data': data})
                optB = Boundary(boundary_ID=BoundaryID(boundary_id)).optimize()
                bds_test.append({
                    'AUID': optB.boundary_ID.value,
                    'boundary': optB.AUID_to_CUIDs(),
                    'data': data
                })
                test_boundary_id = boundary_id
                boundary_test = [{
                    'AUID': optB.boundary_ID.value,
                    'boundary': optB.AUID_to_CUIDs(),
                    'data': data
                }]
                data = {}
                boundary_id = ''
            boundary_id = boundary_id + polygon['properties']['id']
            data[polygon['properties']['id']] = polygon['properties']
            i = i + 1
        boundary_dataset = {'boundary_data_set': bds}
        boundary_dataset_test = {'boundary_data_set': bds_test}

        # POST BOUNDARY_DATASETS TEST
        r = requests.post('http://127.0.0.1:8000/bdatasets/',
                          json=boundary_dataset)
        assert r.status_code == 201

        # GET ALL BOUNDARY_DATASETS TEST
        r = requests.get('http://127.0.0.1:8000/bdatasets/')
        json_test = json.dumps([boundary_dataset_test])
        json_data = json.dumps(r.json())
        assert r.status_code == 200
        assert json_test == json_data

        # GET BOUNDARY IN BOUNDARY_DATASET TEST
        r = requests.get('http://127.0.0.1:8000/bdatasets/' + test_boundary_id)
        json_test = json.dumps([boundary_dataset_test])
        json_data = json.dumps(r.json())
        assert r.status_code == 200
        assert json_test == json_data

        # GET ALL BOUNDARIES TEST
        r = requests.get('http://127.0.0.1:8000/boundaries/')
        json_test = json.dumps(bds_test)
        json_data = json.dumps(r.json())
        assert r.status_code == 200
        assert json_test == json_data

        # GET BOUNDARY TEST
        r = requests.get('http://127.0.0.1:8000/boundaries/' +
                         test_boundary_id)
        json_test = json.dumps(boundary_test)
        json_data = json.dumps(r.json())
        assert r.status_code == 200
        assert json_test == json_data

        # DELETE BOUNDARY TEST
        r = requests.delete('http://127.0.0.1:8000/boundaries/' +
                            test_boundary_id)
        assert r.status_code == 204

        r = requests.get('http://127.0.0.1:8000/boundaries/')
        bds_test.pop()
        json_test = json.dumps(bds_test)
        json_data = json.dumps(r.json())
        assert r.status_code == 200
        assert json_test == json_data

        store.dropAll()

        print('TEST FINISH')
Example #21
0
 def shp_file_from_boundary_cli(self, boundary_file, out_shp, bbox):
     with open(boundary_file) as json_file:
         boundary = json.load(json_file)
         self.shp_file_from_boundary(Boundary(boundary_ID=BoundaryID(boundary['boundary'])), out_shp, bbox,
                                     data=Data(boundary['data']))
Example #22
0
 def save(self, store, bds_id, boundary_id):
     store.update_boundary_in_boundary_datasets(
         bds_id,
         Boundary(boundary_ID=BoundaryID(boundary_id)).optimize(),
         Data(self.validated_data['data']))