Skip to content

Commit 906dd72

Browse files
authored
Merge pull request #21 from IGNF/fix_different_las
Fix different las
2 parents 000ea0f + b3498a0 commit 906dd72

File tree

10 files changed

+145
-23
lines changed

10 files changed

+145
-23
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ coverage.xml
5353
.hypothesis/
5454
.pytest_cache/
5555
cover/
56+
.idea/
57+
.vscode/
5658

5759
# Translations
5860
*.mo

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# CHANGELOG
22

3+
## dev
4+
- fix lorsque les las donneurs ne sont pas de même version (1.2 et 1.4): on ne garde que les attributs communs
5+
36
## 1.4.0
47
- **Changement de comportement** :
58
Le champ "DONOR_CLASS_TRANSLATION" décrit maintenant l'association entre les classes du fichier donneur et les classes correspondantes dans le fichier de sortie. Au lieu de choisir entre ajouter une colonne et modifier les classes entre le fichier de donneur et le fichier de sortie, on applique maintenant les 2 traitements :

patchwork/patchwork.py

Lines changed: 39 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,22 @@ def get_type(new_column_size: int):
9595
raise ValueError(f"{new_column_size} is not a correct value for NEW_COLUMN_SIZE")
9696

9797

98+
def get_common_las_columns(las_files: List[str]) -> List[str]:
99+
"""Return the columns common to all las files (lowercase)."""
100+
with laspy.open(las_files[0]) as las_file:
101+
common_columns = set(get_field_from_header(las_file))
102+
for las_file_path in las_files[1:]:
103+
with laspy.open(las_file_path) as las_file:
104+
common_columns = common_columns & set(get_field_from_header(las_file))
105+
return list(common_columns)
106+
107+
108+
def get_common_donor_columns(df_donor_info: gpd.GeoDataFrame) -> List[str]:
109+
"""Return the columns common to all donor files (lowercase)."""
110+
las_files = [row["full_path"] for _, row in df_donor_info.iterrows()]
111+
return get_common_las_columns(las_files)
112+
113+
98114
def get_complementary_points(
99115
df_donor_info: gpd.GeoDataFrame, recipient_file_path: str, tile_origin: Tuple[int, int], config: DictConfig
100116
) -> pd.DataFrame:
@@ -120,31 +136,31 @@ def get_complementary_points(
120136
)
121137

122138
dfs_donor_points = []
123-
124-
for index, row in df_donor_info.iterrows():
125-
with laspy.open(row["full_path"]) as donor_file:
126-
raw_donor_points = donor_file.read().points
127-
points_loc_gdf = gpd.GeoDataFrame(
128-
geometry=gpd.points_from_xy(raw_donor_points.x, raw_donor_points.y, raw_donor_points.z, crs=config.CRS)
129-
)
130-
footprint_gdf = gpd.GeoDataFrame(geometry=[row["geometry"]], crs=config.CRS)
131-
points_in_footprint_gdf = points_loc_gdf.sjoin(footprint_gdf, how="inner", predicate="intersects")
132-
donor_points = raw_donor_points[points_in_footprint_gdf.index.values]
133-
134-
donor_columns = get_field_from_header(donor_file)
135-
dfs_donor_points.append(
136-
get_selected_classes_points(
137-
tile_origin,
138-
donor_points,
139-
config.DONOR_CLASS_LIST,
140-
config.DONOR_USE_SYNTHETIC_POINTS,
141-
donor_columns,
142-
patch_size=config.PATCH_SIZE,
143-
tile_size=config.TILE_SIZE,
139+
140+
if len(df_donor_info.index):
141+
donor_common_columns = get_common_donor_columns(df_donor_info)
142+
for index, row in df_donor_info.iterrows():
143+
with laspy.open(row["full_path"]) as donor_file:
144+
raw_donor_points = donor_file.read().points
145+
points_loc_gdf = gpd.GeoDataFrame(
146+
geometry=gpd.points_from_xy(raw_donor_points.x, raw_donor_points.y, raw_donor_points.z, crs=config.CRS)
147+
)
148+
footprint_gdf = gpd.GeoDataFrame(geometry=[row["geometry"]], crs=config.CRS)
149+
points_in_footprint_gdf = points_loc_gdf.sjoin(footprint_gdf, how="inner", predicate="intersects")
150+
donor_points = raw_donor_points[points_in_footprint_gdf.index.values]
151+
152+
dfs_donor_points.append(
153+
get_selected_classes_points(
154+
tile_origin,
155+
donor_points,
156+
config.DONOR_CLASS_LIST,
157+
config.DONOR_USE_SYNTHETIC_POINTS,
158+
donor_common_columns,
159+
patch_size=config.PATCH_SIZE,
160+
tile_size=config.TILE_SIZE,
161+
)
144162
)
145-
)
146163

147-
if len(df_donor_info.index):
148164
df_donor_points = pd.concat(dfs_donor_points)
149165

150166
else:
23.1 MB
Binary file not shown.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"type": "FeatureCollection",
3+
"name": "zones",
4+
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:EPSG::2154" } },
5+
"features": [
6+
{ "type": "Feature", "properties": { "NAME": "Object", "ALTITUDE": 0.0, "x": "0963", "Format_nua": "fbi", "Code": "QK", "id": 213, "y": 6543, "Nuage_LHD": "./test/data/grand_geneve/grand_geneve_BD/data", "nom_coord": "oui", "nuage_mixa": "./test/data/grand_geneve/grand_geneve_BD/data", "Chant_DGPR": "MC-Est", "attributio": 2 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 963451.432107000029646, 6542722.056231999769807, 1.0 ], [ 963439.130614000023343, 6542718.448168000206351, 1.0 ], [ 963380.6346, 6542807.320198000408709, 1.0 ], [ 963350.571229, 6542900.249169999733567, 1.0 ], [ 963349.298465, 6543000.002213999629021, 1.0 ], [ 963409.089970999979414, 6543000.002213999629021, 1.0 ], [ 963401.601116999983788, 6542938.244648000225425, 1.0 ], [ 963401.538614999968559, 6542936.540051000192761, 1.0 ], [ 963401.771577000035904, 6542934.85249900072813, 1.0 ], [ 963402.282954999944195, 6542933.233131000772119, 1.0 ], [ 963448.545659999945201, 6542820.928568, 1.0 ], [ 963449.875244, 6542818.627360999584198, 1.0 ], [ 963513.411176000023261, 6542736.283939000219107, 1.0 ], [ 963511.070198999950662, 6542735.244135000742972, 1.0 ], [ 963500.882404000032693, 6542733.880456999875605, 1.0 ], [ 963500.780127999954857, 6542733.857729, 1.0 ], [ 963451.432107000029646, 6542722.056231999769807, 1.0 ] ] ] ] } },
7+
{ "type": "Feature", "properties": { "NAME": "Object", "ALTITUDE": 0.0, "x": "0963", "Format_nua": "laz", "Code": "QK", "id": 213, "y": 6543, "Nuage_LHD": "./test/data/grand_geneve/grand_geneve_BD/data2", "nom_coord": "oui", "nuage_mixa": "./test/data/grand_geneve/grand_geneve_BD/data2", "Chant_DGPR": "MC-Est", "attributio": 2 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 963999.999143, 6542545.442888, 1.0 ], [ 963999.999143, 6542259.206880999729037, 1.0 ], [ 963985.385082999942824, 6542263.888841999694705, 1.0 ], [ 963978.788301000022329, 6542266.985527000389993, 1.0 ], [ 963959.759339999989606, 6542278.679065999574959, 1.0 ], [ 963943.798650000011548, 6542294.304543000645936, 1.0 ], [ 963938.497360000037588, 6542300.804740999825299, 1.0 ], [ 963930.548266, 6542312.060766000300646, 1.0 ], [ 963924.349223, 6542322.259940999560058, 1.0 ], [ 963916.502405000035651, 6542338.203609, 1.0 ], [ 963911.604536000057124, 6542350.902861, 1.0 ], [ 963909.257877000025474, 6542358.800828999839723, 1.0 ], [ 963903.502027999958955, 6542362.397529999725521, 1.0 ], [ 963902.286084000021219, 6542363.170280000194907, 1.0 ], [ 963874.387547999969684, 6542381.170830000191927, 1.0 ], [ 963871.927248999942094, 6542382.807243000715971, 1.0 ], [ 963853.028974000015296, 6542395.807640000246465, 1.0 ], [ 963847.898143999977037, 6542399.796397998929024, 1.0 ], [ 963847.312899000011384, 6542399.665711999870837, 1.0 ], [ 963836.812595000024885, 6542397.665651000104845, 1.0 ], [ 963819.516639000037685, 6542395.909916000440717, 1.0 ], [ 963802.175227000028826, 6542397.177000000141561, 1.0 ], [ 963799.078546999953687, 6542397.677015, 1.0 ], [ 963794.396593000041321, 6542398.54636, 1.0 ], [ 963788.69756400003098, 6542399.745260000228882, 1.0 ], [ 963768.14015, 6542406.467055999673903, 1.0 ], [ 963749.503246000036597, 6542417.45034599956125, 1.0 ], [ 963746.048600999987684, 6542420.024287999607623, 1.0 ], [ 963740.11092899995856, 6542420.4106639996171, 1.0 ], [ 963717.439816999947652, 6542424.547152999788523, 1.0 ], [ 963709.235034000012092, 6542427.047229999676347, 1.0 ], [ 963708.655471, 6542427.229053, 1.0 ], [ 963688.757166999974288, 6542433.428105999715626, 1.0 ], [ 963673.393086, 6542439.649887000210583, 1.0 ], [ 963654.989142999984324, 6542448.951306998729706, 1.0 ], [ 963639.556878000032157, 6542458.610692999325693, 1.0 ], [ 963628.187230000039563, 6542467.258684, 1.0 ], [ 963608.771895000012591, 6542478.543119000270963, 1.0 ], [ 963578.003956999978982, 6542493.748129, 1.0 ], [ 963573.009494, 6542496.390255000442266, 1.0 ], [ 963555.7135390000185, 6542506.191689999774098, 1.0 ], [ 963546.258719000034034, 6542512.271421001292765, 1.0 ], [ 963527.661589000024833, 6542525.771832999773324, 1.0 ], [ 963518.848833999945782, 6542532.965234998613596, 1.0 ], [ 963502.149485999951139, 6542548.266838001087308, 1.0 ], [ 963497.04706500004977, 6542553.284036999568343, 1.0 ], [ 963477.847644999972545, 6542573.585792999714613, 1.0 ], [ 963474.500956999952905, 6542577.307497001253068, 1.0 ], [ 963467.097334000049159, 6542585.961170000955462, 1.0 ], [ 963460.949428000021726, 6542589.648783000186086, 1.0 ], [ 963455.994738999987021, 6542592.825016000308096, 1.0 ], [ 963437.698754000011832, 6542605.325396999716759, 1.0 ], [ 963428.8178149999585, 6542612.149468999356031, 1.0 ], [ 963413.794652999960817, 6542625.098728000186384, 1.0 ], [ 963393.475882000057027, 6542642.445848000235856, 1.0 ], [ 963378.55499500001315, 6542658.292923000641167, 1.0 ], [ 963364.452312999987043, 6542676.998039000667632, 1.0 ], [ 963357.935078999958932, 6542686.788111000321805, 1.0 ], [ 963345.735862000030465, 6542707.686475999653339, 1.0 ], [ 963344.099450999987312, 6542710.607019000686705, 1.0 ], [ 963333.90029100002721, 6542729.505323000252247, 1.0 ], [ 963329.604712, 6542738.516962001100183, 1.0 ], [ 963318.303247999981977, 6542765.614380000159144, 1.0 ], [ 963313.024685999960639, 6542782.205795000307262, 1.0 ], [ 963311.433731000055559, 6542789.30260300077498, 1.0 ], [ 963305.388100999989547, 6542798.814256999641657, 1.0 ], [ 963297.814018000033684, 6542809.820274000987411, 1.0 ], [ 963289.643326999968849, 6542824.076391000300646, 1.0 ], [ 963284.44431299995631, 6542835.179003000259399, 1.0 ], [ 963276.915685000014491, 6542858.134248999878764, 1.0 ], [ 963274.313336999970488, 6542871.231239000335336, 1.0 ], [ 963273.068983, 6542879.140572000294924, 1.0 ], [ 963270.370040999958292, 6542902.34014300070703, 1.0 ], [ 963269.756386999972165, 6542910.579031, 1.0 ], [ 963268.756357999984175, 6542940.682222000323236, 1.0 ], [ 963268.722266, 6542941.767483000643551, 1.0 ], [ 963268.125658, 6542968.671712999232113, 1.0 ], [ 963268.108612000010908, 6542972.046815999783576, 1.0 ], [ 963268.307480999967083, 6542989.450756000354886, 1.0 ], [ 963269.409786000032909, 6543000.002213999629021, 1.0 ], [ 963349.298465, 6543000.002213999629021, 1.0 ], [ 963350.571229, 6542900.249169999733567, 1.0 ], [ 963380.6346, 6542807.320198000408709, 1.0 ], [ 963439.130614000023343, 6542718.448168000206351, 1.0 ], [ 963451.432107000029646, 6542722.056231999769807, 1.0 ], [ 963500.780127999954857, 6542733.857729, 1.0 ], [ 963500.882404000032693, 6542733.880456999875605, 1.0 ], [ 963511.070198999950662, 6542735.244135000742972, 1.0 ], [ 963513.411176000023261, 6542736.283939000219107, 1.0 ], [ 963449.875244, 6542818.627360999584198, 1.0 ], [ 963448.545659999945201, 6542820.928568, 1.0 ], [ 963402.282954999944195, 6542933.233131000772119, 1.0 ], [ 963401.771577000035904, 6542934.85249900072813, 1.0 ], [ 963401.538614999968559, 6542936.540051000192761, 1.0 ], [ 963401.601116999983788, 6542938.244648000225425, 1.0 ], [ 963409.089970999979414, 6543000.002213999629021, 1.0 ], [ 963486.950181999942288, 6543000.002213999629021, 1.0 ], [ 963486.660400999942794, 6542989.814403999596834, 1.0 ], [ 963485.20013100001961, 6542975.433283000253141, 1.0 ], [ 963482.495507000014186, 6542960.029404000379145, 1.0 ], [ 963479.648834, 6542948.131312999874353, 1.0 ], [ 963479.398827000055462, 6542947.307424999773502, 1.0 ], [ 963479.398827000055462, 6542944.926669999025762, 1.0 ], [ 963479.853385000023991, 6542936.648008000105619, 1.0 ], [ 963479.893158999970183, 6542935.772982000373304, 1.0 ], [ 963480.495449000038207, 6542922.675990998744965, 1.0 ], [ 963480.50681299995631, 6542922.414619000628591, 1.0 ], [ 963480.688637000042945, 6542918.198582001030445, 1.0 ], [ 963482.489825000055134, 6542915.243946000933647, 1.0 ], [ 963483.671678000013344, 6542913.255248999223113, 1.0 ], [ 963492.171924000023864, 6542898.555936999619007, 1.0 ], [ 963497.450486000045203, 6542888.038569998927414, 1.0 ], [ 963502.251762000028975, 6542876.890502998605371, 1.0 ], [ 963509.013321000034921, 6542864.282164, 1.0 ], [ 963512.041818000026979, 6542858.145612999796867, 1.0 ], [ 963519.945456000044942, 6542840.645079, 1.0 ], [ 963521.53073, 6542836.934737998992205, 1.0 ], [ 963527.92296, 6542821.099027999676764, 1.0 ], [ 963530.729859999963082, 6542814.252228000201285, 1.0 ], [ 963532.894695000024512, 6542810.8941710004583, 1.0 ], [ 963541.900638, 6542798.547203000634909, 1.0 ], [ 963550.895217000041157, 6542788.183249999769032, 1.0 ], [ 963559.543195000034757, 6542779.381844999268651, 1.0 ], [ 963565.549051000038162, 6542775.086260000243783, 1.0 ], [ 963582.754094999982044, 6542764.034785998985171, 1.0 ], [ 963587.049674, 6542761.108560999855399, 1.0 ], [ 963600.436425999971107, 6542751.494630999863148, 1.0 ], [ 963610.823089999961667, 6542744.073950001038611, 1.0 ], [ 963621.016567999962717, 6542735.727103999815881, 1.0 ], [ 963633.414653999963775, 6542724.124477, 1.0 ], [ 963641.267155, 6542715.896953999064863, 1.0 ], [ 963652.665212000021711, 6542702.498816999606788, 1.0 ], [ 963654.210712000029162, 6542700.640805999748409, 1.0 ], [ 963663.824627000023611, 6542688.765444000251591, 1.0 ], [ 963668.415669, 6542683.168681999668479, 1.0 ], [ 963677.950036, 6542678.986735999584198, 1.0 ], [ 963681.563776999944821, 6542677.316231000237167, 1.0 ], [ 963711.763516, 6542662.611236999742687, 1.0 ], [ 963720.831960999988951, 6542657.605402000248432, 1.0 ], [ 963738.832482, 6542646.406196999363601, 1.0 ], [ 963741.349600999965332, 6542644.786829001270235, 1.0 ], [ 963753.30449300003238, 6542636.843405, 1.0 ], [ 963763.390011999988928, 6542631.405739, 1.0 ], [ 963773.270981000037864, 6542627.149926998652518, 1.0 ], [ 963778.918871999951079, 6542626.916965001262724, 1.0 ], [ 963784.953136999974959, 6542626.485133999027312, 1.0 ], [ 963799.652427, 6542624.985088, 1.0 ], [ 963807.28333, 6542623.905509999021888, 1.0 ], [ 963815.584706999943592, 6542622.405464, 1.0 ], [ 963835.443237000028603, 6542616.643925, 1.0 ], [ 963836.886460999958217, 6542615.876856000162661, 1.0 ], [ 963841.369545000023209, 6542616.490511000156403, 1.0 ], [ 963855.364269000012428, 6542617.592817000113428, 1.0 ], [ 963868.870342000038363, 6542617.740549, 1.0 ], [ 963877.671733999974094, 6542617.240534001030028, 1.0 ], [ 963894.905187999946065, 6542614.740458000451326, 1.0 ], [ 963906.803259999956936, 6542611.939236000180244, 1.0 ], [ 963925.19583900005091, 6542605.677681, 1.0 ], [ 963942.025872000027448, 6542595.972839000634849, 1.0 ], [ 963947.179430000018328, 6542592.290908999741077, 1.0 ], [ 963954.622828, 6542587.648722000420094, 1.0 ], [ 963969.532351, 6542576.279056999832392, 1.0 ], [ 963982.05544100003317, 6542562.324085, 1.0 ], [ 963987.532873000018299, 6542554.931814000941813, 1.0 ], [ 963988.578357000020333, 6542553.744277999736369, 1.0 ], [ 963995.033090000040829, 6542548.352067999541759, 1.0 ], [ 963999.027524000033736, 6542545.584937999024987, 1.0 ], [ 963999.999143, 6542545.442888, 1.0 ] ] ] ] } }
8+
]
9+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
2+
<qgis version="3.34.3-Prizren">
3+
<identifier></identifier>
4+
<parentidentifier></parentidentifier>
5+
<language></language>
6+
<type>dataset</type>
7+
<title></title>
8+
<abstract></abstract>
9+
<links/>
10+
<dates/>
11+
<fees></fees>
12+
<encoding></encoding>
13+
<crs>
14+
<spatialrefsys nativeFormat="Wkt">
15+
<wkt>PROJCRS["RGF93 / Lambert-93",BASEGEOGCRS["RGF93",DATUM["Reseau Geodesique Francais 1993",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]</wkt>
16+
<proj4>+proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs</proj4>
17+
<srsid>145</srsid>
18+
<srid>2154</srid>
19+
<authid>EPSG:2154</authid>
20+
<description>RGF93 / Lambert-93</description>
21+
<projectionacronym>lcc</projectionacronym>
22+
<ellipsoidacronym>EPSG:7019</ellipsoidacronym>
23+
<geographicflag>false</geographicflag>
24+
</spatialrefsys>
25+
</crs>
26+
<extent/>
27+
</qgis>
6.18 MB
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)