def create_new_tile(self, name, points, labels=None, features=None, polygon=None): """ :param polygon: :param features: :param labels: :param name: :param points: :return: """ if polygon is None: polygon = processing.boundary(points) tile = Tile(name, polygon, self.workspace, file_format=self.file_format, file_format_settings=self.file_format_settings) tile.store(points=points, labels=labels, features=features) self.add_tile(tile) return tile
def test_density(self): polygon = Polygon([(27620, 158050), (27630, 158050), (27630, 158060), (27620, 158060)]) tile_1 = Tile(name='test_data/test_tile_27620_158050', workspace='./', polygon=polygon, file_format='las') self.assertEqual(108.42, tile_1.get_density())
def test_workspace(self): tile_1 = Tile('test_data/test_tile_27620_158050', workspace='test_data/') tile_2 = Tile('tile_2') self.assertEqual(PosixPath('test_data/'), tile_1.get_workspace()) self.assertEqual(PosixPath('./'), tile_2.get_workspace())
def add_new_tile(self, name, polygon=None): """ :param polygon: :param name: :return: """ tile = Tile(name, polygon=polygon, workspace=self.workspace, file_format=self.file_format, file_format_settings=self.file_format_settings) self.add_tile(tile) return tile
def load_project(project_file_path): """ :param project_file_path: :return: """ with open(project_file_path, 'r') as read: p = json.load(read) project = Project(project_name=p['name'], epsg=p['epsg'], workspace=p['workspace'], stats=p['stats']) for c in p['pointclouds']: pointcloud = PointCloud(name=c['name'], epsg=c['epsg'], workspace=c['workspace'], file_format=c['file_format'], file_format_settings=c['file_format_settings'], labels_descriptions=c.get( 'labels_descriptions', None)) pointcloud.set_stats(c['stats']) project.add_pointcloud(pointcloud) for t in c['tiles']: polygon = None if t['polygon'] is not None: polygon = shapely.wkt.loads(t['polygon']) tile = Tile(name=t['name'], polygon=polygon, workspace=t['workspace'], file_format=t.get('file_format', c['file_format']), file_format_settings=t.get('file_format_settings', c['file_format_settings']), area=t.get('area', None), density=t.get('density', None), number_of_points=t.get('number_of_points', None)) pointcloud.add_tile(tile) return project
def test_create(self): tile = Tile('tile_1') self.assertEqual('tile_1', tile.get_name())
def test_number_of_points(self): tile_1 = Tile('test_data/test_tile_27620_158050') self.assertEqual(10842, tile_1.get_number_of_points())
def test_bbox(self): polygon = Polygon([(0, 0), (0, 1), (1, 1), (1, 0)]) tile_1 = Tile('tile_1', polygon=polygon) self.assertEqual((0.0, 0.0, 1.0, 1.0), tile_1.get_bbox())
def test_area_2(self): polygon = Polygon([(27620, 158050), (27630, 158050), (27630, 158060), (27620, 158060)]) tile_1 = Tile('test_data/test_tile_27620_158050', polygon=polygon) self.assertEqual(100, tile_1.get_area())
def test_area(self): polygon = Polygon([(0, 0), (0, 1), (1, 1), (1, 0)]) tile_1 = Tile('tile_1', polygon=polygon) self.assertEqual(1, tile_1.get_area())