Voici la documentation : https://geoplateforme.pages.gpf-tech.ign.fr/documentation

Skip to content
Extraits de code Groupes Projets

Comparer les révisions

Les modifications sont affichées comme si la révision source était fusionnée avec la révision cible. En savoir plus sur la comparaison des révisions.

Source

Sélectionner le projet cible
No results found

Cible

Sélectionner le projet cible
  • geoplateforme/common-py/gpf-common-point-cloud
1 résultat
Afficher les modifications
Validations sur la source (4)
......@@ -19,6 +19,7 @@ include:
- "/ci/pre-commit-v1.yml"
- "/ci/sonarqube.yml"
- "/ci/package-py.yml"
- "/ci/versioning.yml"
# Change pip's cache directory to be inside the project directory since we can
# only cache local items.
......
# CHANGELOG
The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project adheres to [Semantic Versioning](https://semver.org/).
The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project adheres
to [Semantic Versioning](https://semver.org/).
<!--
Unreleased
## {version_tag} - YYYY-DD-mm
### Added
## [Unreleased]
## [1.3.0] - 2024-10-07
### Changed
- feat: IGNGPF-4319 Returns bbox when checking las laz consistency
### Removed
-->
## 1.2.1 - 2024-09-24
## Added
## [1.2.1] - 2024-09-24
### Added
- feat: IGNGPF-4300 Template checking function
## 1.2.0 - 2024-09-19
## Added
## [1.2.0] - 2024-09-19
### Added
- fix: IGNGPF-4264 fix get_name_from_template
## 1.1.4 - 2024-08-05
## Added
## [1.1.4] - 2024-08-05
### Added
- feat: IGNGPF-3686 add pdal utility functions merge, tile, convert to copc, build vpc
## 1.1.3 - 2024-07-31
## Added
## [1.1.3] - 2024-07-31
### Added
- chore: add tmp in entwine_param
## 1.1.2 - 2024-07-29
## Changed
## [1.1.2] - 2024-07-29
### Changed
- fix: set min result of determine_subsets_number at 4
## 1.1.1 - 2024-07-26
## Changed
## [1.1.1] - 2024-07-26
### Changed
- Entwine utils get extent return EPSG:4326
- fix: Dockerfile
## 1.1.0 - 2024-07-26
## Added
## [1.1.0] - 2024-07-26
### Added
- Vpc utils and models
- Entwine utils and models
## 1.0.0 - 2024-07-19
## Added
## [1.0.0] - 2024-07-19
### Added
- Init project
- Laslaz and pdal utils
[Unreleased]: https://gitlab.gpf-tech.ign.fr/geoplateforme/common-py/gpf-common-point-cloud/-/compare/v1.3.0...main
[1.3.0]: https://gitlab.gpf-tech.ign.fr/geoplateforme/common-py/gpf-common-point-cloud/-/compare/v1.2.1...v1.3.0
[1.2.1]: https://gitlab.gpf-tech.ign.fr/geoplateforme/common-py/gpf-common-point-cloud/-/compare/v1.2.0...v1.2.1
[1.2.0]: https://gitlab.gpf-tech.ign.fr/geoplateforme/common-py/gpf-common-point-cloud/-/compare/v1.1.4...v1.2.0
[1.1.4]: https://gitlab.gpf-tech.ign.fr/geoplateforme/common-py/gpf-common-point-cloud/-/compare/v1.1.3...v1.1.4
[1.1.3]: https://gitlab.gpf-tech.ign.fr/geoplateforme/common-py/gpf-common-point-cloud/-/compare/v1.1.2...v1.1.3
[1.1.2]: https://gitlab.gpf-tech.ign.fr/geoplateforme/common-py/gpf-common-point-cloud/-/compare/v1.1.1...v1.1.2
[1.1.1]: https://gitlab.gpf-tech.ign.fr/geoplateforme/common-py/gpf-common-point-cloud/-/compare/v1.1.0...v1.1.1
[1.1.0]: https://gitlab.gpf-tech.ign.fr/geoplateforme/common-py/gpf-common-point-cloud/-/compare/v1.0.0...v1.1.0
[1.0.0]: https://gitlab.gpf-tech.ign.fr/geoplateforme/common-py/gpf-common-point-cloud/-/tags/v1.0.0
......@@ -35,7 +35,7 @@ __uri_repository__ = (
__uri_tracker__ = f"{__uri_repository__}/issues/"
__uri__ = __uri_repository__
__version__ = "1.2.1"
__version__ = "1.3.1-beta"
__version_info__ = tuple(
[
int(num) if num.isdigit() else num
......
......@@ -9,6 +9,8 @@ import re
from pathlib import Path
from re import Match
from gpf_entrepot_toolbelt.orchestrator.models.bbox import GpfBbox
# 3rd party
from gpf_entrepot_toolbelt.orchestrator.status import Status
......@@ -37,7 +39,7 @@ def check_laslaz_file_consistency(
template: str | None = None,
origin: dict | None = None,
tile_size: float | None = None,
) -> Status:
) -> tuple[Status, GpfBbox | None]:
"""Check the consistency of the file.
Args:
......@@ -52,9 +54,17 @@ def check_laslaz_file_consistency(
"""
# Check the file with PDAL / also check and log Terrascan issue
metadata = pdal_info_from_las(file)
metadata: dict = pdal_info_from_las(file)
if metadata is None:
return Status.FAILURE
return Status.FAILURE, None
bbox: GpfBbox = GpfBbox(
[
metadata[READER_NAME][MAXX_FIELD],
metadata[READER_NAME][MINX_FIELD],
metadata[READER_NAME][MAXY_FIELD],
metadata[READER_NAME][MINY_FIELD],
]
)
# Print the version of the LAS file for debug
logger.user_info(f"Version du fichier: {_get_file_version(metadata)}")
......@@ -66,7 +76,7 @@ def check_laslaz_file_consistency(
logger.user_error(
f"Le SRS du fichier {srs} n'est pas celui attendu {expected_srs}"
)
return Status.FAILURE
return Status.FAILURE, bbox
# Check the Name
if template is not None:
......@@ -75,7 +85,7 @@ def check_laslaz_file_consistency(
logger.user_error(
f"Le nom du fichier ({file.name}) n'est pas celui attendu ({name})"
)
return Status.FAILURE
return Status.FAILURE, bbox
# Check concordance with tiling
if origin is not None and tile_size is not None:
......@@ -83,9 +93,9 @@ def check_laslaz_file_consistency(
logger.user_error(
f"Le fichier n'est pas aligné sur la dalle d'origine {origin} et de taille {tile_size}"
)
return Status.FAILURE
return Status.FAILURE, bbox
return Status.SUCCESS
return Status.SUCCESS, bbox
def _get_file_version(metadata: dict) -> str:
......
# change index-url for next lines
--extra-index-url https://gitlab.gpf-tech.ign.fr/api/v4/groups/55/-/packages/pypi/simple
gpf-entrepot-toolbelt>=1.11.0,<1.12.0
gpf-entrepot-toolbelt>=1.12.0,<1.13.0
......@@ -4,6 +4,8 @@ import unittest
from pathlib import Path
from unittest.mock import MagicMock
from gpf_entrepot_toolbelt.orchestrator.models.bbox import GpfBbox
# 3rd party
from gpf_entrepot_toolbelt.orchestrator.status import Status
from gpf_entrepot_toolbelt.utils.gpf_logger import gpf_logger_script
......@@ -40,6 +42,7 @@ class TestLaslazUtils(unittest.TestCase):
"maxy": 6732000,
}
}
BBOX: GpfBbox = GpfBbox([487000, 486000, 6732000, 6731000])
def test_check_laslaz_file_consistency_ok_minimal(self):
# Given
......@@ -48,15 +51,20 @@ class TestLaslazUtils(unittest.TestCase):
READER_NAME: {
"major_version": "X",
"minor_version": "X",
"minx": 486000,
"miny": 6731000,
"maxx": 487000,
"maxy": 6732000,
}
}
)
# When
result: Status = check_laslaz_file_consistency(self.FILE)
status, bbox = check_laslaz_file_consistency(self.FILE)
# Then
self.assertEqual(result, Status.SUCCESS)
self.assertEqual(status, Status.SUCCESS)
self.assertEqual(bbox, self.BBOX)
gpf_common_point_cloud.utils.laslaz_utils.pdal_info_from_las.assert_called_with(
self.FILE
......@@ -79,7 +87,7 @@ class TestLaslazUtils(unittest.TestCase):
)
# When
result: Status = check_laslaz_file_consistency(
status, bbox = check_laslaz_file_consistency(
self.FILE,
expected_srs=self.SRS,
template="tile_{x_min/100}_{y_max/100}.copc.laz",
......@@ -88,7 +96,8 @@ class TestLaslazUtils(unittest.TestCase):
)
# Then
self.assertEqual(result, Status.SUCCESS)
self.assertEqual(status, Status.SUCCESS)
self.assertEqual(bbox, self.BBOX)
gpf_common_point_cloud.utils.laslaz_utils.pdal_info_from_las.assert_called_with(
self.FILE
......@@ -102,10 +111,11 @@ class TestLaslazUtils(unittest.TestCase):
)
# When
result: Status = check_laslaz_file_consistency(self.FILE)
status, bbox = check_laslaz_file_consistency(self.FILE)
# Then
self.assertEqual(result, Status.FAILURE)
self.assertEqual(status, Status.FAILURE)
self.assertEqual(bbox, None)
gpf_common_point_cloud.utils.laslaz_utils.pdal_info_from_las.assert_called_with(
self.FILE
......@@ -119,18 +129,23 @@ class TestLaslazUtils(unittest.TestCase):
"major_version": "X",
"minor_version": "X",
"srs": {"json": {"id": {"code": self.SRS}}},
"minx": 486000,
"miny": 6731000,
"maxx": 487000,
"maxy": 6732000,
}
}
)
# When
result: Status = check_laslaz_file_consistency(
status, bbox = check_laslaz_file_consistency(
self.FILE,
expected_srs="EPSG:4326",
)
# Then
self.assertEqual(result, Status.FAILURE)
self.assertEqual(status, Status.FAILURE)
self.assertEqual(bbox, self.BBOX)
gpf_common_point_cloud.utils.laslaz_utils.pdal_info_from_las.assert_called_with(
self.FILE
......@@ -152,14 +167,15 @@ class TestLaslazUtils(unittest.TestCase):
)
# When
result: Status = check_laslaz_file_consistency(
status, bbox = check_laslaz_file_consistency(
self.FILE,
origin={"x": -5000, "y": 5000},
tile_size=1000,
)
# Then
self.assertEqual(result, Status.FAILURE)
self.assertEqual(status, Status.FAILURE)
self.assertEqual(bbox, self.BBOX)
gpf_common_point_cloud.utils.laslaz_utils.pdal_info_from_las.assert_called_with(
self.FILE
......@@ -181,14 +197,15 @@ class TestLaslazUtils(unittest.TestCase):
)
# When
result: Status = check_laslaz_file_consistency(
status, bbox = check_laslaz_file_consistency(
self.FILE,
origin={"x": -5000, "y": 5000},
tile_size=1000,
)
# Then
self.assertEqual(result, Status.FAILURE)
self.assertEqual(status, Status.FAILURE)
self.assertEqual(bbox, self.BBOX)
gpf_common_point_cloud.utils.laslaz_utils.pdal_info_from_las.assert_called_with(
self.FILE
......@@ -210,7 +227,7 @@ class TestLaslazUtils(unittest.TestCase):
)
# When
result: Status = check_laslaz_file_consistency(
status, bbox = check_laslaz_file_consistency(
self.FILE,
template="tile_{nope/100}_{y_max/100}.copc.laz",
origin={"x": 0, "y": 0},
......@@ -218,7 +235,8 @@ class TestLaslazUtils(unittest.TestCase):
)
# Then
self.assertEqual(result, Status.FAILURE)
self.assertEqual(status, Status.FAILURE)
self.assertEqual(bbox, self.BBOX)
gpf_common_point_cloud.utils.laslaz_utils.pdal_info_from_las.assert_called_with(
self.FILE
......