மோங்கோடிபி ஜியோஸ்பேஷியல் அம்சங்களை எவ்வாறு செயல்படுத்துவது

Monkotipi Jiyospesiyal Amcankalai Evvaru Ceyalpatuttuvatu



மோங்கோடிபியின் புவியியல் அம்சம் புவியியல் தரவை தரவுத்தளத்தில் சேமிப்பதற்கான நேரடியான வழியை வழங்குகிறது. முக்கியமாக, மோங்கோடிபியில் உள்ள புவிசார் தரவை ஜியோஜசன் பொருள்களாக சேமிக்க முடியும். GeoJSON என்பது ஒரு இலவச மற்றும் திறந்த மூல வடிவமாகும், இது எளிமையான புவியியல் தரவுகளுடன் ஜாவாஸ்கிரிப்ட் ஆப்ஜெக்ட் நோட்டேஷனைச் சார்ந்துள்ளது. மேப்பிங் செயல்முறை, இருப்பிடத் தேடல் மற்றும் பிற இருப்பிடத்தின் அடிப்படையில் சேவைகள் தேவைப்படும் பயன்பாடுகளுக்கு இந்த செயல்பாடு முக்கியமானது. இந்த கட்டுரை புவியியல் அம்சத்தை எடுத்துக்காட்டு செயல்படுத்தலுடன் உள்ளடக்கியது.

புவியியல் அம்சங்களுக்கான சேகரிப்பில் ஆவணங்களைச் சேர்த்தல்

மோங்கோடிபி ஜியோஸ்பேஷியல் அம்சத்தின் செயல்பாட்டைக் காட்ட, குறிப்பிட்ட சேகரிப்புக்கான ஆவணங்கள் நமக்குத் தேவை. பின்வருவனவற்றில் காட்டப்பட்டுள்ளபடி 'பகுதி' சேகரிப்பில் சில ஆவணங்களைச் செருகுவோம்:

db.area.insertMany( [
{
பெயர்: 'குழந்தைகள் பூங்கா' ,
இடம்: {வகை: 'புள்ளி' , ஒருங்கிணைப்புகள்: [ - 60.97 , 30.77 ] },
வகை: 'தோட்டம்'
},
{
பெயர்: 'மாணவர் பகுதி' ,
இடம்: {வகை: 'புள்ளி' , ஒருங்கிணைப்புகள்: [ - 60.9928 , 30.7193 ] },
வகை: 'தோட்டம்'
},
{
பெயர்: 'கால்பந்து மைதானம்' ,
இடம்: {வகை: 'புள்ளி' , ஒருங்கிணைப்புகள்: [ - 60.9375 , 30.8303 ] },
வகை: 'ஸ்டேடியம்'
}
])

ஆயத்தொலைவுகள் போன்ற இருப்பிடத் தரவைக் கொண்ட ஆவணங்கள் எங்களிடம் உள்ளன. கூடுதலாக, ஜியோஸ்பேஷியல் வினவல்களின் செயல்திறனை மேம்படுத்த, களத்தில் ஒரு புவிசார் குறியீட்டை உருவாக்குகிறோம்.









எடுத்துக்காட்டு 1: $geoIntersects வினவல் ஆபரேட்டரைப் பயன்படுத்துதல்

முதலில், எங்களிடம் ஜியோஸ்பேஷியல் அம்சத்தின் $geoIntersects ஆபரேட்டர் உள்ளது, இது வழங்கப்பட்ட பொருளுடன் வெட்டுகிறது. $geoIntersects ஆபரேட்டரின் பின்வரும் செயல்படுத்தலைக் கவனியுங்கள்:



db.area.find({ இருப்பிடம்: { $geoIntersects: { $geometry: { type: 'புள்ளி' ,

ஒருங்கிணைப்புகள்: [- 60.97 , 30.77 ] } } })

எடுத்துக்காட்டில், 'கண்டுபிடி' செயல்பாடுடன் 'பகுதி' சேகரிப்பை அழைக்கிறோம். கண்டுபிடி() முறைக்கு, புவிசார் அம்சத்தின் $geoIntersects வினவல் ஆபரேட்டருக்கு “இருப்பிடம்” புலத் தொகுப்புகளை அனுப்புகிறோம். குறிப்பிட்ட புள்ளி வடிவியல் புலத்தில் சேமிக்கப்பட்டுள்ள வடிவவியலுடன் வெட்டுகிறதா என்பதைச் சரிபார்க்க இது பயன்படுகிறது.





பின்னர், $geoIntesects ஆபரேட்டர் $ஜியோமெட்ரி ஆபரேட்டரை எடுத்துக்கொள்கிறார், அங்கு வகை புலம் 'புள்ளி' மதிப்புடன் அமைக்கப்பட்டிருக்கும் மற்றும் ஆயப் புலமானது 'ஆயத்தொகைகள்' மதிப்புகளுடன் கொடுக்கப்படும். இங்கே, புவியியல் ஒப்பீட்டுக்கு $ வடிவியல் வரையறுக்கப்படுகிறது.

பின்வரும் வெளியீடு எதிர்பார்க்கப்படும் ஆவணம் மீட்டெடுக்கப்படும் இடமாகும் மற்றும் வடிவியல் புலத்தில் குறிப்பிட்ட புள்ளியுடன் வெட்டும் வடிவியல் பொருள் உள்ளது:



எடுத்துக்காட்டு 2: $ அருகில் உள்ள வினவல் ஆபரேட்டரைப் பயன்படுத்துதல்

$near ஆபரேட்டர் என்பது புவியியல் அம்சமாகும், இது புவியியல் ரீதியாக கொடுக்கப்பட்ட இடத்திற்கு அருகில் உள்ள ஆவணங்களை அடையாளம் காண புவியியல் வினவல்களைச் செய்யப் பயன்படுகிறது. இது குறிப்பிட்ட இடத்திற்கு அருகாமையில் உள்ள ஆவணங்களை மீட்டெடுக்கிறது. இங்கே, $near ஆபரேட்டரை செயல்படுத்துவதை நாங்கள் வழங்குகிறோம்:

db.area.find(
{
இடம்:
{$அருகில்:
{
$ வடிவியல்: { வகை: 'புள்ளி' ,  ஒருங்கிணைப்புகள்: [ - 60.9667 , 30.78 ] },
$minDistance: 1000 ,
$maxDistance: 5000
}
}
}
)

எடுத்துக்காட்டில், 'கண்டுபிடி' செயல்பாட்டின் உள்ளே 'பகுதி' சேகரிப்பின் 'இருப்பிடம்' புலத்தை வரையறுக்கிறோம். பின்னர், ஜியோஸ்பேஷியல் அம்சத்தின் $ அருகில் உள்ள வினவல் ஆபரேட்டரை அந்த 'இருப்பிடம்' புலத்திற்கு அமைத்துள்ளோம். $near ஆபரேட்டர் கொடுக்கப்பட்ட ஆயப் புள்ளியுடன் அருகிலுள்ள புள்ளியைத் தேடுகிறது. அடுத்து, $minDistance மற்றும் $maxDistance அளவுருக்களைப் பயன்படுத்துகிறோம், $நியர் ஆபரேட்டரில் கொடுக்கப்பட்ட புள்ளியிலிருந்து குறிப்பிட்ட தொலைவு வரம்பிற்குள் ஆவணங்களை மீட்டெடுக்க சில மதிப்புகள் வழங்கப்பட்டுள்ளன.

புவியியல் “பகுதி” சேகரிப்பில் குறிப்பிட்ட இடங்கள் அல்லது ஆர்வமுள்ள இடங்களுக்கு அருகில் இருக்கும் வெளியீட்டில் ஆவணம் மீட்டெடுக்கப்படுகிறது:

எடுத்துக்காட்டு 3: $nearsphere வினவல் ஆபரேட்டரைப் பயன்படுத்துதல்

மாற்றாக, எங்களிடம் $nearsphere ஆபரேட்டர் உள்ளது, இது $near operator ஐப் போன்றது, ஆனால் $nearSphere தொலைவைக் கணக்கிடும் போது பூமியின் கோள வடிவத்தை கணக்கில் எடுத்துக்கொள்கிறது.

db.area.find(
{
இடம்: {
$nearSphere: {
$ வடிவியல்: {
வகை: 'புள்ளி' ,
ஒருங்கிணைப்புகள்: [- 60.9667 , 30.78 ]
},
$minDistance: 1000 ,
$maxDistance: 5000
}
}
}
)

எடுத்துக்காட்டில், ஜியோஸ்பேஷியல் வினவலின் $nearsphere ஆபரேட்டரைப் பயன்படுத்துகிறோம். $nearspehere ஆபரேட்டர், வினவலில் குறிப்பிடப்பட்டுள்ள புள்ளிகளுக்கு அருகாமையில் உள்ள புள்ளிகளின் ஆவணத்தைத் தேடுகிறது, மேலும் புள்ளிகள் ஒருங்கிணைப்பு புல வரிசையில் அமைக்கப்பட்டுள்ளன.

அதன் பிறகு, $minDistance மற்றும் $maxDistance அளவுருக்களை நிறுவுவதன் மூலம் முடிவுகளை மேம்படுத்துவோம். $minDistance அளவுருவானது குறிப்பிட்ட புள்ளியிலிருந்து குறைந்தபட்சம் 1000 மீட்டர் தொலைவில் திரும்பிய ஆவணங்கள் இருப்பதை உறுதிசெய்கிறது, $maxDistance அளவுருவானது 5000 மீட்டருக்கு மேல் இல்லாத இடங்களுக்கு முடிவுகளை வரம்பிடுகிறது.

கொடுக்கப்பட்ட ஆயங்களைக் கொண்ட புள்ளியிலிருந்து ஒரு குறிப்பிட்ட மீட்டருக்குள் ஒரு இருப்பிடத்துடன் ஆவணம் வெளியீட்டில் காட்டப்படும்:

எடுத்துக்காட்டு 4: $geoWithin Query Operator ஐப் பயன்படுத்துதல்

அடுத்து, எங்களிடம் மோங்கோடிபியில் $geoWithin ஆபரேட்டர் உள்ளது, இது ஒரு வட்டம் போன்ற ஒரு குறிப்பிட்ட வடிவத்தில் முழுமையாக இருக்கும் ஆவணங்களைக் கண்டறிய புவியியல் வினவல்களுக்குப் பயன்படுத்தப்படுகிறது. $geoWithin வினவலின் பின்வரும் செயல்விளக்கத்தைக் காண்போம்:

db.area.find({இடம்:

{$geoWithin:

{ $centerSphere: [ [ - 60.93414657 , 30.82302903 ], 3 / 3963.2 ] } })

எடுத்துக்காட்டில், 2D கோளத்தில் ஒரு குறிப்பிட்ட வட்டப் பகுதிக்குள் 'ஏரியா' சேகரிப்பின் ஆவணங்களைக் கண்டறிய $geoWithin ஆபரேட்டரைப் பயன்படுத்துகிறோம். இதற்காக, $geoWithin ஆபரேட்டருக்குள் இருக்கும் $centerSphere ஆபரேட்டரைக் குறிப்பிடுகிறோம், இது இரண்டு வாதங்களை மையப் புள்ளியாக எடுத்துக்கொள்கிறது, இது இங்குள்ள ஆயப் புள்ளியையும், மைல்களில் உள்ள தூர மதிப்பைக் குறிக்கும் வட்டத்தின் ஆரத்தையும் குறிக்கும்.

கொடுக்கப்பட்ட மையப் புள்ளி மற்றும் தோராயமாக 3 மைல்களின் ஆரம் ஆகியவற்றால் வரையறுக்கப்பட்ட வட்டத்திற்குள் வரும் புவியியல் புள்ளியைக் குறிக்கும் பின்வரும் ஆவணத்தில் பெறப்பட்டது:

எடுத்துக்காட்டு 5: $geoNear வினவல் ஆபரேட்டரைப் பயன்படுத்துதல்

மேலும், $geoNear ஆபரேட்டர் ஒரு புவிசார் ஆபரேட்டர் ஆகும், இது திரட்டல் குழாய்க்கு பயன்படுத்தப்படுகிறது. இது ஒரு புவிசார் வினவலைச் செய்கிறது மற்றும் ஒரு குறிப்பிட்ட புள்ளியில் அவற்றின் அருகாமையால் வரிசைப்படுத்தப்பட்ட ஆவணங்களைத் திருப்பித் தருகிறது. இங்கே, நாங்கள் $geoNear ஆபரேட்டரைக் கொடுத்துள்ளோம், இது திரட்டல் பைப்லைனுக்குள் அழைக்கப்படுகிறது.

db.area.aggregate([
{
$geoNear: {
அருகில்: {வகை: 'புள்ளி' , ஒருங்கிணைப்புகள்: [ - 60.99279 , 30.719296 ] },
தூரக் களம்: 'dist.calculated' ,
அதிகபட்ச தூரம்: 2 ,
வினவல்: {வகை: 'தோட்டம்' },
இடங்கள் அடங்கும்: 'dist.location' ,
கோளமானது: உண்மை
}
}
])

எடுத்துக்காட்டில், நாம் MongoDB இன் மொத்த முறையை அழைக்கிறோம் மற்றும் அதன் உள்ளே $geoNear ஆபரேட்டரை வரையறுக்கிறோம். $geoNear ஆபரேட்டர் வினவல் நடத்தையைக் குறிப்பிட பல அளவுருக்களுடன் அமைக்கப்பட்டுள்ளது. முதலில், தேடலுக்கான குறிப்பு புள்ளியாக 'ஆயத்தொகை' மதிப்புகளை வழங்கும் 'அருகில்' அளவுருவை அமைக்கிறோம்.

பின்னர், 'distanceField' அளவுருவைப் பயன்படுத்தி, வழங்கப்பட்ட புலத்தை விளைவு புலமாகக் குறிப்பிடுவோம். இந்த தொகுப்பு விளைவு புலம் ஒவ்வொரு ஆவணத்திற்கும் குறிப்பு புள்ளிக்கும் இடையிலான தூரத்தை சேமிக்கிறது. அடுத்து, '2″ மதிப்புடன் 'maxDistance' அளவுருவை வரையறுக்கிறோம், இது மீட்டர்களில் அதிகபட்ச தூரத்தைக் குறிக்கிறது.

அதன் பிறகு, எங்களிடம் 'வினவல்' அளவுரு உள்ளது, இது 'வகை' புலத்தின் மூலம் ஆவணங்களை வடிகட்டுகிறது மற்றும் 'வகை' 'பூங்காக்கள்' என்று இருக்கும் ஆவணங்களை மட்டுமே கருதுகிறது. இருப்பிடத் தகவலைக் கொண்டிருக்க “includeLocs” அளவுருவை அழைக்கிறோம். 2D கோள ஒருங்கிணைப்பு அமைப்பைப் பயன்படுத்தி தூரங்களைக் கணக்கிடும் 'உண்மை' மதிப்புடன் 'கோள' அளவுருவை இறுதியாகக் குறிப்பிடுகிறோம்.

திரட்டல் பைப்லைன் வெளியீட்டில் உள்ள ஆவணத்தைக் குறிக்கிறது, அதற்கேற்ப அளவுருவுக்கு எதிரான தகவலைக் காட்டுகிறது. பின்வரும் 'dist.calculated' புலம் ஒவ்வொரு ஆவணத்தின் குறிப்பு புள்ளியிலிருந்து தூரத்தைக் காட்டுகிறது:

முடிவுரை

மோங்கோடிபியின் புவிசார் திறன்கள், இருப்பிடம் சார்ந்த தகவல்களைத் திறமையாகக் கையாளவும் வினவவும் உதவுகின்றன என்பதை நாங்கள் அறிந்தோம். புவியியல் அம்சத்தை அதன் பல்வேறு ஆபரேட்டர்களைப் பயன்படுத்தி செயல்படுத்துவதை எடுத்துக்காட்டு நிரலுடன் கற்றுக்கொண்டோம். எங்களிடம் இன்னும் பல செயல்பாடுகள் மற்றும் முறைகள் உள்ளன, அவை பரந்த அளவிலான பயன்பாடுகளுக்கும் பயனுள்ளதாக இருக்கும்.