லாஸ்பி மூலம் லாஸ் டேட்டாவை டவுன்சாம்ப்ளிங் செய்யும் செயல்முறையைப் புரிந்துகொள்வது
பைத்தானில் பெரிய LAS அல்லது LAZ கோப்புகளுடன் பணிபுரியும் போது, திறமையான செயலாக்கம் மற்றும் பகுப்பாய்விற்கு கீழிறக்கம் அவசியம். லாஸ்பி, LAS தரவைப் படிக்க, எழுத மற்றும் மாற்றுவதற்கான பைதான் தொகுப்பு, LAS தலைப்புகளை உருவாக்குதல் மற்றும் திருத்துதல் போன்ற புள்ளி கிளவுட் தரவைக் கையாள பல வழிகளை வழங்குகிறது.
ஒவ்வொரு பத்தாவது புள்ளியையும் a இலிருந்து பிரித்தெடுப்பதன் மூலம் தரவுத்தொகுப்பை எவ்வாறு குறைப்பது என்பதை இந்த எடுத்துக்காட்டு காட்டுகிறது சோம்பேறி கோப்பு மற்றும் ஏற்கனவே உள்ளதை மீண்டும் பயன்படுத்தவும் லாஸ்ஹேடர். தலைப்புகள் தரவுகளுடன் எவ்வாறு தொடர்பு கொள்கின்றன என்பதைப் புரிந்துகொள்வது இதற்குத் தேவை, குறிப்பாக வெவ்வேறு புள்ளி எண்ணிக்கைகளுடன் பணிபுரியும் போது.
புதிய ஒன்றை நிறுவும் போது லாஸ்டேட்டா ஏற்கனவே உள்ள தலைப்பிலிருந்து பொருள், பயனர்கள் அடிக்கடி பொருந்தாத வரிசை அளவை எதிர்கொள்கின்றனர். தலைப்பின் காரணமாக இந்த வேறுபாடு ஏற்படுகிறது புள்ளி_எண்ணிக்கை புதிய தரவுகளுடன் தானாக சீரமைக்காமல் இருக்கலாம்.
ஆஃப்செட்டுகள், அளவுகள் மற்றும் புள்ளி_கவுண்ட் போன்ற தலைப்பு பண்புக்கூறுகளை கைமுறையாக மாற்ற வேண்டுமா அல்லது இன்னும் தானியங்கி தீர்வு உள்ளதா என்பதை மதிப்பிடுவதே சவாலாகும். பயன்படுத்திக் குறைக்கும் போது இந்த மதிப்புகளை எவ்வாறு சரியாகப் புதுப்பிப்பது என்பதை இந்த இடுகை விளக்குகிறது லாஸ்பி, ஒரு பயனுள்ள செயல்முறை விளைவாக.
கட்டளை | பயன்பாட்டின் உதாரணம் |
---|---|
laspy.read() | இந்த கட்டளை ஒரு LAS அல்லது LAZ கோப்பை LasData பொருளாக மாற்றுகிறது. இது கோப்பில் இருந்து புள்ளி கிளவுட் தரவு மற்றும் தலைப்பு தகவலை பிரித்தெடுக்கிறது, இது பைத்தானில் மாற்றியமைக்கவும் செயலாக்கவும் அனுமதிக்கிறது. |
np.arange() | சீரான இடைவெளியில் குறியீடுகளின் வரிசையை உருவாக்குகிறது. இந்த சூழ்நிலையில், np.arange(0, len(las.points), 10) ஏற்றப்பட்ட புள்ளி கிளவுட் தரவிலிருந்து ஒவ்வொரு 10வது புள்ளியையும் தேர்ந்தெடுக்கிறது, இது மாதிரியை குறைக்க அவசியம். |
laspy.LasHeader() | இந்த கட்டளை LAS மற்றும் LAZ தரவுகளுக்கான புதிய தலைப்பை உருவாக்குகிறது. தலைப்பு வடிவம், பதிப்பு, ஆஃப்செட்டுகள் மற்றும் அளவீடுகள் உள்ளிட்ட முக்கிய மெட்டாடேட்டாவை வழங்குகிறது, அவை உருவாக்கும்போது அல்லது திருத்தும்போது முக்கியமானவை. லாஸ்டேட்டா. |
header.offsets | புள்ளி கிளவுட் தரவுக்கான குறைந்தபட்ச x, y மற்றும் z ஒருங்கிணைப்புகளை தீர்மானிக்கிறது. புள்ளி மேகக்கணிக்கான குறிப்புப் புள்ளியை மாற்றுவதற்கு இது உதவுகிறது, இதன் விளைவாகக் குறைத்த பிறகு சரியான தரவுப் பிரதிநிதித்துவம் கிடைக்கும். |
header.scales | அளவுக் காரணிகளை வரையறுப்பதன் மூலம் x, y மற்றும் z மதிப்புகளின் துல்லியத்தைக் குறிப்பிடுகிறது. மாதிரியைக் குறைத்த பிறகு, அளவுக் காரணிகளை மறுகணக்கீடு செய்தல் மற்றும் மாற்றியமைத்தல் ஆகியவை தரவு ஒருமைப்பாட்டைப் பேணுவதற்கு முக்கியமானதாக இருக்கும். |
copy() | ஒரு பொருளின் மேலோட்டமான நகலை உருவாக்குகிறது. இந்த வழக்கில், அசல் புள்ளி கிளவுட்டில் இருந்து ஏற்கனவே உள்ள தலைப்பை மாற்ற இது பயன்படுகிறது, புதிய தரவுத்தொகுப்பில் எந்த மாற்றமும் அசல் தரவை சேதப்படுத்தாது என்று உத்தரவாதம் அளிக்கிறது. |
downsampled_las.write() | இந்த கட்டளையானது மேம்படுத்தப்பட்ட அல்லது புதிதாக உருவாக்கப்பட்டதை எழுதுவதன் மூலம் குறைக்கப்பட்ட புள்ளி மேகத்தை புதிய LAS அல்லது LAZ கோப்பாக சேமிக்கிறது. லாஸ்டேட்டா ஒரு கோப்புக்கு பொருள். |
unittest.TestCase | இது பைத்தானின் யூனிட்டெஸ்ட் கட்டமைப்பிற்கான அடித்தள வகுப்பாகும், இது சோதனை நிகழ்வுகளை உருவாக்க பயன்படுகிறது. இந்த கட்டுரை சரியான அளவு புள்ளிகள் பராமரிக்கப்படுவதை உறுதி செய்வதன் மூலம் குறைத்தல் செயல்முறையை சோதிக்க இதைப் பயன்படுத்துகிறது. |
self.assertEqual() | ஒரு யூனிட் சோதனை இரண்டு மதிப்புகளை ஒப்பிட்டு அவை சமமாக இல்லாவிட்டால் பிழையை வழங்கும். எடுத்துக்காட்டில், குறைக்கப்பட்ட புள்ளிகளின் எண்ணிக்கை கணிக்கப்பட்ட எண்ணுடன் ஒத்திருப்பதை இது உறுதி செய்கிறது. |
லாஸ்பி மூலம் பாயிண்ட் கிளவுட் டவுன்சாம்ப்பிங்கை மேம்படுத்துதல்
இந்த இடுகையில் உள்ள முதல் ஸ்கிரிப்ட், a ஐக் குறைப்பதில் கவனம் செலுத்துகிறது லாஸ் பெரிய புள்ளி கிளவுட் தரவுத்தொகுப்புகளை நிர்வகிக்க தேவையான கோப்பு. ஐப் பயன்படுத்தி அசல் கோப்பை இறக்குமதி செய்வதன் மூலம் laspy.read() செயல்பாடு, புள்ளி மேகத்தைப் பற்றிய மெட்டாடேட்டாவைக் கொண்ட புள்ளி தரவு மற்றும் தலைப்பை நாம் அணுகலாம். டவுன்சாம்ப்ளிங் நுட்பம் ஒவ்வொரு பத்தாவது புள்ளியையும் எடுப்பதை உள்ளடக்குகிறது, இது முக்கியமான புவியியல் பண்புகளைத் தக்க வைத்துக் கொண்டு தரவுத்தொகுப்பின் அளவைக் குறைக்கிறது. இது பயன்படுத்தி செய்யப்படுகிறது np.arange() குறியீடுகளின் வரிசையை உருவாக்க. புள்ளிகளைத் தேர்ந்தெடுத்த பிறகு, மெட்டாடேட்டாவில் பொருந்தக்கூடிய தன்மையை உறுதிப்படுத்த அசல் கோப்பிலிருந்து தலைப்பை நகலெடுக்கவும் புள்ளி_வடிவம் மற்றும் பதிப்பு.
இருப்பினும், அசல் தலைப்பில் உள்ள புள்ளிகளின் எண்ணிக்கையானது குறைக்கப்பட்ட தரவுகளுடன் ஒத்துப்போகாதபோது ஒரு பொதுவான சிக்கல் ஏற்படுகிறது. இதை சரிசெய்ய, நாங்கள் பயன்படுத்துகிறோம் நகல் () அசல் தலைப்பின் ஆழமற்ற நகலை உருவாக்கி கைமுறையாக மாற்றியமைக்கும் செயல்பாடு புள்ளி_எண்ணிக்கை குறைக்கப்பட்ட புள்ளிகளின் எண்ணிக்கையை பிரதிபலிக்கும் புலம். புதிய தலைப்பை உருவாக்கிய பிறகு, குறைக்கப்பட்ட புள்ளிகள் புதியதாக ஒதுக்கப்படும் லாஸ்டேட்டா உண்மையான x, y மற்றும் z ஆயத்தொகுதிகளைக் கொண்ட பொருள். இறுதியாக, தி லாஸ்டேட்டா ஐப் பயன்படுத்தி புதிய LAZ கோப்பாகச் சேமிக்கப்படுகிறது எழுது() முறை. பெரிய புள்ளி மேகங்களிலிருந்து சிறிய தரவுத்தொகுப்புகளைப் பிரித்தெடுக்க வேண்டிய பயனர்களுக்கு இந்த ஸ்கிரிப்ட் பயனுள்ளதாக இருக்கும்.
இரண்டாவது ஸ்கிரிப்ட், கீழேயுள்ள தரவுகளுக்கான ஆஃப்செட்கள் மற்றும் அளவுகளை தானாக மீண்டும் கணக்கிடுவதன் மூலம் முதல் ஸ்கிரிப்டை நீட்டிக்கிறது. புள்ளி மேகங்களுடன் பணிபுரியும் போது, துல்லியமான ஆஃப்செட்களைக் கொண்டிருப்பது மிகவும் முக்கியமானது, ஏனெனில் அவை 3D இடத்தில் தரவின் தோற்றத்தைக் குறிப்பிடுகின்றன. தி header.offsets பண்புக்கூறு குறைந்தபட்சம் x, y, மற்றும் z ஆயத்தொலைவுகளுடன் குறைக்கப்பட்ட புள்ளிகளிலிருந்து புதுப்பிக்கப்படுகிறது. இதேபோல், புள்ளி தரவின் துல்லியத்தை பாதிக்கும் அளவு காரணிகள் ஐப் பயன்படுத்தி அமைக்கப்படுகின்றன தலைப்பு.அளவுகள் பண்பு. இந்த ஸ்கிரிப்ட் புள்ளி கிளவுட்டின் அளவைக் குறைப்பது மட்டுமல்லாமல், தரவு துல்லியமாகவும் சீரமைக்கப்படுவதையும் உறுதிசெய்கிறது, இது நடைமுறை பயன்பாட்டிற்கு மிகவும் பொருத்தமானது.
இறுதியாக, இறுதி ஸ்கிரிப்ட் பைத்தானின் அலகு சோதனையை நிரூபிக்கிறது அலகு சோதனை கட்டமைப்பு. இந்த ஸ்கிரிப்ட்டில், ஒரு சோதனை கேஸ், குறைக்கப்பட்ட புள்ளி எண்ணிக்கை கணிக்கப்பட்ட மதிப்புடன் ஒத்துப்போகிறதா என்பதை தீர்மானிக்கிறது. சூழல்கள் மற்றும் தரவுத்தொகுப்புகள் முழுவதும் தரமிறக்குதல் செயல்முறை தொடர்ந்து செயல்படுவதை உறுதிசெய்வதற்கு இது மிகவும் முக்கியமானது. சோதனை வழக்கு ஐப் பயன்படுத்தி வரையறுக்கப்படுகிறது டெஸ்ட்கேஸ் வகுப்பு, மற்றும் ஒப்பீடு ஐப் பயன்படுத்தி நடத்தப்படுகிறது self.assertEqual() முறை. பணிப்பாய்வு சோதனையைச் சேர்ப்பதன் மூலம், பெரிய திட்டங்கள் அல்லது பைப்லைன்களுக்குப் பயன்படுத்துவதற்கு முன், டவுன்சாம்ப்ளிங் செயல்முறை சரியாகச் செயல்படுகிறதா என்பதை உறுதிப்படுத்திக் கொள்ளலாம். இந்த ஸ்கிரிப்ட் பயனர்கள் பல புள்ளி கிளவுட் கோப்புகளுடன் பணிபுரியும் போது சிக்கல்கள் மற்றும் முரண்பாடுகளைத் தவிர்க்க உதவுகிறது.
லாஸ்பியைப் பயன்படுத்தி LAZ கோப்புகளை இறக்குதல்: புள்ளி கிளவுட் தரவைக் கையாளுதல்
பழைய LAZ கோப்பிலிருந்து ஒவ்வொரு பத்தாவது புள்ளியையும் பிரித்தெடுக்கவும் புதிய தரவுத்தொகுப்பிற்கான தலைப்பு மாற்றங்களை நிர்வகிக்கவும் இந்த முறை பைதான் மற்றும் லாஸ்பி தொகுப்பைப் பயன்படுத்துகிறது.
import laspy
import numpy as np
from copy import copy
# Load the existing LAZ file
las = laspy.read("input_file.laz")
# Downsample by taking every 10th point
indices = np.arange(0, len(las.points), 10)
downsampled_points = las.points[indices]
# Copy the header and adjust the point count
header = copy(las.header)
header.point_count = len(downsampled_points)
# Create new LasData with downsampled points
d_las = laspy.LasData(header)
d_las.points = downsampled_points
# Write to a new LAZ file
d_las.write("downsampled_output.laz")
LAZ கோப்புகளை இறக்கும் போது ஆஃப்செட் மற்றும் ஸ்கேல் சரிசெய்தலை தானியக்கமாக்குகிறது
Python இன் இந்தப் பதிப்பு தானாகக் குறைக்கப்பட்ட தரவுகளின் அடிப்படையில் ஆஃப்செட்கள் மற்றும் அளவுகளை மீண்டும் கணக்கிடுகிறது.
import laspy
import numpy as np
# Load the original LAZ file
las = laspy.read("input_file.laz")
# Downsample by taking every 10th point
indices = np.arange(0, len(las.points), 10)
downsampled_points = las.points[indices]
# Create new header and adjust offsets/scales
header = laspy.LasHeader(point_format=las.header.point_format, version=las.header.version)
header.offsets = np.min([las.x[indices], las.y[indices], las.z[indices]], axis=1)
header.scales = np.array([0.01, 0.01, 0.01]) # Set new scales
# Create new LasData and write to file
downsampled_las = laspy.LasData(header)
downsampled_las.points = downsampled_points
downsampled_las.write("downsampled_with_scales.laz")
LAS/LAZ கோப்புகளை டவுன்சாம்ப்ளிங்கிற்கான அலகு சோதனை
இந்த பைதான் ஸ்கிரிப்ட் பல சூழல்களில் டவுன்சாம்ப்ளிங் செயல்முறை சரியாக வேலை செய்கிறது என்பதை உறுதிப்படுத்த ஒரு யூனிட் சோதனையை உள்ளடக்கியது.
import unittest
import laspy
import numpy as np
class TestDownsampling(unittest.TestCase):
def test_downsample_point_count(self):
las = laspy.read("input_file.laz")
indices = np.arange(0, len(las.points), 10)
downsampled_points = las.points[indices]
self.assertEqual(len(downsampled_points), len(indices))
if __name__ == "__main__":
unittest.main()
LAS கோப்பு மெட்டாடேட்டா மற்றும் மேம்பட்ட டவுன்சாம்ப்ளிங் நுட்பங்களைக் கையாளுதல்
பெரிய தரவுத்தொகுப்புகளுடன் பணிபுரியும் போது கோழைத்தனமான, உண்மையான புள்ளி கிளவுட் தரவை நிர்வகிப்பதைப் போலவே மெட்டாடேட்டாவை நிர்வகிப்பது மிகவும் முக்கியமானது. துல்லியத்தை பராமரித்தல் லாஸ்ஹேடர் மாதிரியை குறைத்த பிறகு மதிப்புகள் ஒரு குறிப்பிடத்தக்க சிரமம். புள்ளி கிளவுட் தரவின் ஆயத்தொலைவுகள் (x, y மற்றும் z) மாறுவதால், தலைப்பு இந்த மாற்றங்களை பிரதிபலிக்க வேண்டும். மீண்டும் கணக்கிடுதல் ஆஃப்செட்டுகள் ஒவ்வொரு பரிமாணத்திற்கும் குறைந்தபட்ச மதிப்புகளை மீண்டும் கணக்கிட வேண்டும், அதேசமயம் செதில்கள் புள்ளி தரவின் துல்லியத்தை தீர்மானிக்கவும், குறிப்பாக சேமிப்பிற்காக.
லாஸ் கோப்பில் உள்ள கூடுதல் பரிமாணங்களின் நேர்மையை மதிப்பிடுவதற்கான மற்றொரு காரணியாகும். தீவிரம் அல்லது GPS நேரம் போன்ற சாதாரண x, y மற்றும் z ஆயத்தொலைவுகளைத் தவிர மற்ற தகவல்களை வைத்திருக்க கூடுதல் பைட்டுகள் பொதுவாகப் பயன்படுத்தப்படுகின்றன. தரவுத்தொகுப்பில் இந்த கூடுதல் பரிமாணங்கள் இருந்தால், அவற்றைக் குறைக்கும் போது கையாள வேண்டும். கூடுதல் பரிமாணங்களில் உள்ள புள்ளிகளின் எண்ணிக்கையானது முதன்மைத் தரவில் குறைக்கப்பட்ட புள்ளி எண்ணிக்கையுடன் ஒத்துப்போகிறது என்பதை நீங்கள் உத்தரவாதம் செய்ய வேண்டும். தி add_extra_dim உள்ள செயல்பாடு கோழைத்தனமான LAS தலைப்பில் தனிப்பயன் பரிமாணங்களைச் சேர்ப்பதை செயல்படுத்துகிறது.
இறுதியாக, புள்ளி மேகங்களைக் குறைக்கும் போது வேக உகப்பாக்கம் ஒரு முக்கியமான காரணியாகும். தலைப்பில் மனித மாற்றங்கள் பொதுவாக தேவைப்படும் போது, திறமையான அட்டவணைப்படுத்தலை மேம்படுத்துவதன் மூலமும், வரிசை செயல்பாடுகளைப் பயன்படுத்துவதன் மூலமும் செயல்முறையை தானியக்கமாக்குகிறது உணர்ச்சியற்ற செயல்முறையை கணிசமாக துரிதப்படுத்த முடியும். சக்தியைப் பயன்படுத்துவதன் மூலம் உணர்ச்சியற்ற, நீங்கள் செயல்திறனை தியாகம் செய்யாமல் மகத்தான தரவுத்தொகுப்புகளை விரைவாக நிர்வகிக்கலாம். இது பெரிய திட்டங்களுக்கு தீர்வுகளை விரிவுபடுத்த அல்லது பல LAZ கோப்புகளை செயலாக்க பைப்லைன்களை தானியக்கமாக்க உங்களை அனுமதிக்கிறது.
லாஸ்பியுடன் டவுன்சாம்ப்லிங் பற்றிய பொதுவான கேள்விகள்
- பொருந்தாத வரிசை பரிமாணங்களை எவ்வாறு கையாள்வது LasData?
- இதை சரிசெய்ய, உறுதி செய்ய வேண்டும் point_count ஹெடரில் உள்ள தரவுகள் குறைக்கப்பட்ட தரவுகளில் உள்ள புள்ளிகளின் உண்மையான எண்ணிக்கையை ஒத்துள்ளது. தேவைக்கேற்ப எண்ணிக்கையை கைமுறையாக மாற்றவும்.
- நான் எப்போதும் மீண்டும் கணக்கிட வேண்டும் offsets மற்றும் scales மாதிரியை குறைத்த பிறகு?
- ஆம், இந்த மதிப்புகளை மீண்டும் கணக்கிடுவது அவசியம், குறிப்பாக பெரிய தரவுத்தொகுப்புகளுக்கு. தி offsets புதிய குறைந்தபட்ச மதிப்புகளைக் குறிக்கிறது scales தரவு துல்லியத்தை உறுதி செய்கிறது.
- முடியும் laspy LAS கோப்புகளில் கூடுதல் பரிமாணங்களைக் கையாளவா?
- ஆம், மேலும் பரிமாணங்களைப் பயன்படுத்தி நிர்வகிக்கலாம் add_extra_dim அம்சம் LasHeader, இது தீவிரம் அல்லது ஜிபிஎஸ் நேரம் போன்ற தனிப்பயன் பரிமாணங்களை அமைக்க உங்களை அனுமதிக்கிறது.
- உள்ளது numpy உடன் இறக்கம் தேவை laspy?
- அவசியமில்லை என்றாலும், numpy குறியீடுகளை திறமையாக உருவாக்கி வரிசைகளை கையாள்வதன் மூலம் பாரிய தரவுத்தொகுப்புகளை கையாள உதவுகிறது.
- நான் எப்படி குறைப்பு செயல்முறையை விரைவுபடுத்துவது?
- பயன்படுத்தவும் numpy வரிசை செயல்பாடுகள் மற்றும் திறமையாக குறியீட்டு செய்ய. பெரிய புள்ளி மேகங்களுடன் பணிபுரியும் போது இது செயல்திறனை மேம்படுத்துகிறது.
பயனுள்ள டவுன்சாம்ப்ளிங்கிற்கான முக்கிய குறிப்புகள்
சாம்பிள் செய்யும்போது பரிமாணப் பொருத்தமின்மையைத் தவிர்க்க லாஸ் உடன் கோப்புகள் கோழைத்தனமான, தி புள்ளி_எண்ணிக்கை சொத்து தலைப்பில் கைமுறையாக சரிசெய்யப்பட வேண்டும். ஆஃப்செட்டுகள் மற்றும் அளவீடுகளை மீண்டும் கணக்கிடுவது புதிய தரவின் சரியான பிரதிநிதித்துவத்திற்கு உத்தரவாதம் அளிக்கிறது.
தலைப்பு மாற்றங்கள் போன்ற சில கூறுகளுக்கு கைமுறையான தலையீடு தேவைப்படுகிறது, மற்றவற்றைப் பயன்படுத்தி தானியங்கு செய்ய முடியும் உணர்ச்சியற்ற வேகத்தை அதிகரிக்க மற்றும் பெரிய தரவுத்தொகுப்புகளை நிர்வகிக்க. யூனிட் சோதனையானது, உங்களின் தரமிறக்குதல் பணிப்பாய்வுகளின் வலிமையை மேம்படுத்துகிறது, இது உண்மையான சூழ்நிலைகளில் மிகவும் திறமையானதாக ஆக்குகிறது.