feat: add lidar course
@@ -0,0 +1 @@
|
||||
PROJCS["ETRS89_UTM_Zone33_7",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",3500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "ec3ee3e3-5965-47ba-b90a-3eab16ba501d",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3 (ipykernel)",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.14.3"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"golm": 2.454589545833545,
|
||||
"palais": 2.4076303262425336
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"id": "3ef1d31d-b8d2-4a13-916b-819868ec6df2",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Jupyter environment detected. Enabling Open3D WebVisualizer.\n",
|
||||
"[Open3D INFO] WebRTC GUI backend enabled.\n",
|
||||
"[Open3D INFO] WebRTCWindowSystem: HTTP handshake server disabled.\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import laspy\n",
|
||||
"import numpy as np\n",
|
||||
"import open3d as o3d"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"id": "82ee9b51-c12b-49b1-a9b0-68d11b1fabdb",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"data_2012 = laspy.read(\"2012/golm_364806_fp.las\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"id": "85d67e00-3749-4bbf-a1a9-fa8a700b894d",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"points = np.vstack((data_2012.x, data_2012.y, data_2012.z)).T"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"id": "da00e8e7-ae4a-449c-b5bc-2f08939903e9",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"\u001b[1;33m[Open3D WARNING] GLFW Error: Wayland: The platform does not support setting the window position\u001b[0;m\n",
|
||||
"\u001b[1;33m[Open3D WARNING] Failed to initialize GLEW.\u001b[0;m\n",
|
||||
"\u001b[1;33m[Open3D WARNING] [DrawGeometries] Failed creating OpenGL window.\u001b[0;m\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"libdecor-gtk-WARNING: Failed to initialize GTK\n",
|
||||
"Failed to load plugin 'libdecor-gtk.so': failed to init\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"pcd = o3d.geometry.PointCloud()\n",
|
||||
"pcd.points = o3d.utility.Vector3dVector(points)\n",
|
||||
"o3d.visualization.draw_geometries([pcd])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "f1b92eec-b6a1-4c51-ba2e-c7432f9cd2c9",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3 (ipykernel)",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.12.13"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
import json
|
||||
import laspy
|
||||
import numpy as np
|
||||
import open3d as o3d
|
||||
|
||||
def density(data):
|
||||
min_x, max_x = np.min(data.x), np.max(data.x)
|
||||
min_y, max_y = np.min(data.y), np.max(data.y)
|
||||
|
||||
area = (max_x - min_x) * (max_y - min_y)
|
||||
n_points = len(data.x)
|
||||
|
||||
density = n_points / area
|
||||
return density
|
||||
|
||||
def data2np(data):
|
||||
points = np.vstack((data.x, data.y, data.z)).transpose()
|
||||
return points
|
||||
|
||||
def plot_o3d(points):
|
||||
pcd = o3d.geometry.PointCloud()
|
||||
pcd.points = o3d.utility.Vector3dVector(points)
|
||||
o3d.visualization.draw_geometries([pcd])
|
||||
|
||||
|
||||
def main():
|
||||
data_golm = laspy.read("2012/golm_364806_fp.las")
|
||||
data_palais = laspy.read("2012/neuespalais362808_fp.las")
|
||||
|
||||
density_golm = density(data_golm)
|
||||
density_palais = density(data_palais)
|
||||
|
||||
output_density = {
|
||||
"golm": density_golm,
|
||||
"palais": density_palais
|
||||
}
|
||||
|
||||
with open("density.json", "w") as f:
|
||||
json.dump(output_density, f, indent=4)
|
||||
|
||||
#points_golm = data2np(data_golm)
|
||||
#points_palais = data2np(data_golm)
|
||||
|
||||
#plot_o3d(points_golm)
|
||||
#plot_o3d(points_palais)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,79 @@
|
||||
= Lab 1
|
||||
|
||||
Joaquin Gottlebe
|
||||
|
||||
== Question 1
|
||||
|
||||
#figure(
|
||||
image("q1.png", width: 80%),
|
||||
caption: [...],
|
||||
)
|
||||
|
||||
== Question 2
|
||||
|
||||
#figure(
|
||||
image("q2_return.png", width: 80%),
|
||||
caption: [...],
|
||||
)
|
||||
|
||||
#figure(
|
||||
image("q2_flight.png", width: 80%),
|
||||
caption: [...],
|
||||
)
|
||||
|
||||
== Question 3
|
||||
|
||||
#figure(
|
||||
image("q3_golm.png", width: 80%),
|
||||
caption: [...],
|
||||
)
|
||||
|
||||
#figure(
|
||||
image("q3_golm_2018.png", width: 80%),
|
||||
caption: [...],
|
||||
)
|
||||
|
||||
#figure(
|
||||
image("q3_neuespalais.png", width: 80%),
|
||||
caption: [...],
|
||||
)
|
||||
|
||||
#figure(
|
||||
image("q3_neuespalais_2018.png", width: 80%),
|
||||
caption: [...],
|
||||
)
|
||||
== Question 4
|
||||
|
||||
#figure(
|
||||
image("q4_golm.png", width: 80%),
|
||||
caption: [...],
|
||||
)
|
||||
|
||||
#figure(
|
||||
image("q4_palais.png", width: 80%),
|
||||
caption: [...],
|
||||
)
|
||||
|
||||
== Question 5
|
||||
|
||||
#let density = json("density.json")
|
||||
|
||||
Golm: #density.golm \
|
||||
Neues Palais: #density.palais
|
||||
|
||||
== Question 6
|
||||
|
||||
== Question 7
|
||||
|
||||
== Question 8
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 724 KiB |
|
After Width: | Height: | Size: 437 KiB |
|
After Width: | Height: | Size: 357 KiB |
|
After Width: | Height: | Size: 252 KiB |
|
After Width: | Height: | Size: 531 KiB |
|
After Width: | Height: | Size: 164 KiB |
|
After Width: | Height: | Size: 633 KiB |
|
After Width: | Height: | Size: 861 KiB |
|
After Width: | Height: | Size: 1016 KiB |
@@ -0,0 +1,7 @@
|
||||
open3d
|
||||
PDAL
|
||||
GDAL==3.11.5
|
||||
scipy
|
||||
numpy
|
||||
pandas
|
||||
laspy
|
||||