ign-pdal-tools 1.15.2__tar.gz → 1.15.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/PKG-INFO +1 -1
  2. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/ign_pdal_tools.egg-info/PKG-INFO +1 -1
  3. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/pdaltools/_version.py +1 -1
  4. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/pdaltools/replace_area_in_pointcloud.py +19 -4
  5. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/LICENSE.md +0 -0
  6. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/README.md +0 -0
  7. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/ign_pdal_tools.egg-info/SOURCES.txt +0 -0
  8. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/ign_pdal_tools.egg-info/dependency_links.txt +0 -0
  9. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/ign_pdal_tools.egg-info/top_level.txt +0 -0
  10. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/pdaltools/add_points_in_pointcloud.py +0 -0
  11. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/pdaltools/color.py +0 -0
  12. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/pdaltools/create_random_laz.py +0 -0
  13. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/pdaltools/download_image.py +0 -0
  14. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/pdaltools/las_add_buffer.py +0 -0
  15. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/pdaltools/las_clip.py +0 -0
  16. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/pdaltools/las_comparison.py +0 -0
  17. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/pdaltools/las_info.py +0 -0
  18. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/pdaltools/las_merge.py +0 -0
  19. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/pdaltools/las_remove_dimensions.py +0 -0
  20. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/pdaltools/las_rename_dimension.py +0 -0
  21. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/pdaltools/pcd_info.py +0 -0
  22. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/pdaltools/replace_attribute_in_las.py +0 -0
  23. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/pdaltools/standardize_format.py +0 -0
  24. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/pdaltools/unlock_file.py +0 -0
  25. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/pyproject.toml +0 -0
  26. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/setup.cfg +0 -0
  27. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/test/test_add_points_in_pointcloud.py +0 -0
  28. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/test/test_color.py +0 -0
  29. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/test/test_create_random_laz.py +0 -0
  30. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/test/test_download_image.py +0 -0
  31. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/test/test_las_add_buffer.py +0 -0
  32. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/test/test_las_clip.py +0 -0
  33. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/test/test_las_comparison.py +0 -0
  34. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/test/test_las_info.py +0 -0
  35. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/test/test_las_merge.py +0 -0
  36. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/test/test_las_remove_dimensions.py +0 -0
  37. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/test/test_las_rename_dimension.py +0 -0
  38. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/test/test_pcd_info.py +0 -0
  39. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/test/test_pdal.py +0 -0
  40. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/test/test_replace_area_in_pointcloud.py +0 -0
  41. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/test/test_replace_attribute_in_las.py +0 -0
  42. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/test/test_standardize_format.py +0 -0
  43. {ign_pdal_tools-1.15.2 → ign_pdal_tools-1.15.4}/test/test_unlock.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ign-pdal-tools
3
- Version: 1.15.2
3
+ Version: 1.15.4
4
4
  Summary: Library for common LAS files manipulation with PDAL
5
5
  Author-email: Guillaume Liegard <guillaume.liegard@ign.fr>
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ign-pdal-tools
3
- Version: 1.15.2
3
+ Version: 1.15.4
4
4
  Summary: Library for common LAS files manipulation with PDAL
5
5
  Author-email: Guillaume Liegard <guillaume.liegard@ign.fr>
6
6
  Description-Content-Type: text/markdown
@@ -1,4 +1,4 @@
1
- __version__ = "1.15.2"
1
+ __version__ = "1.15.4"
2
2
 
3
3
 
4
4
  if __name__ == "__main__":
@@ -102,21 +102,29 @@ def get_writer_params(input_file):
102
102
 
103
103
 
104
104
  def pipeline_read_from_cloud(filename):
105
+ print("source cloud: ", filename)
105
106
  pipeline_source = pdal.Pipeline()
106
107
  pipeline_source |= pdal.Reader.las(filename=filename)
107
108
  return pipeline_source
108
109
 
109
110
 
110
111
  def pipeline_read_from_DSM(dsm, ground_mask, classification):
112
+ print("DSM: ", dsm)
113
+ print("ground_mask: ", ground_mask)
114
+ print("classification: ", classification)
115
+
111
116
  # get nodata value
112
117
  ds = gdal.Open(dsm)
113
118
  band = ds.GetRasterBand(1)
114
119
  nodata_value = band.GetNoDataValue()
120
+ print("DSM: nodata:", nodata_value)
115
121
  ds.Close()
116
122
 
117
123
  pipeline = pdal.Pipeline()
118
124
  pipeline |= pdal.Reader.gdal(filename=dsm, header="Z")
119
- pipeline |= pdal.Filter.expression(expression=f"Z != {nodata_value}")
125
+
126
+ if nodata_value is not None: # nodata_value may be None and cause bugs
127
+ pipeline |= pdal.Filter.expression(expression=f"Z != {nodata_value}")
120
128
 
121
129
  pipeline |= pdal.Filter.ferry(dimensions="=> ground")
122
130
  pipeline |= pdal.Filter.assign(assignment="ground[:]=-1")
@@ -134,6 +142,11 @@ def pipeline_read_from_DSM(dsm, ground_mask, classification):
134
142
  def replace_area(
135
143
  target_cloud, pipeline_source, replacement_area, output_cloud, source_pdal_filter="", target_pdal_filter=""
136
144
  ):
145
+ print("target cloud: ", target_cloud)
146
+ print("replacement area: ", replacement_area)
147
+ print("output cloud: ", output_cloud)
148
+ print("source pdal filter: ", source_pdal_filter)
149
+ print("target pdal filter: ", target_pdal_filter)
137
150
  crops = []
138
151
  # pipeline to read target_cloud and remove points inside the polygon
139
152
  pipeline_target = pdal.Pipeline()
@@ -146,7 +159,8 @@ def replace_area(
146
159
  pipeline_target |= pdal.Filter.overlay(column="fid", dimension="geometryFid", datasource=replacement_area)
147
160
  # Keep only points out of the area
148
161
  pipeline_target |= pdal.Filter.expression(expression="geometryFid==-1", tag="A")
149
- pipeline_target.execute()
162
+ target_count = pipeline_target.execute()
163
+ print("Step 1: target count: ", target_count)
150
164
 
151
165
  # get input dimensions dtype from target
152
166
  if pipeline_target.arrays:
@@ -177,10 +191,11 @@ def replace_area(
177
191
  pipeline_source |= pdal.Filter.overlay(column="fid", dimension="geometryFid", datasource=replacement_area)
178
192
  # Keep only points in the area
179
193
  pipeline_source |= pdal.Filter.expression(expression="geometryFid>=0", tag="B")
180
- pipeline_source.execute()
194
+ source_count = pipeline_source.execute()
195
+ print("Step 2: source count: ", source_count)
181
196
 
182
197
  # add source to the result
183
- if pipeline_source.arrays:
198
+ if source_count:
184
199
  # eventually add dimensions in source to have same dimensions as target cloud
185
200
  # we do that in numpy (instead of PDAL filter) to keep dimension types
186
201
  source_cloud_crop = pipeline_source.arrays[0]