# ജിയോയിൻഫേസുകൾ ![ഈ പാഠത്തിന്റെ ഒരു സ്കെച്ച്നോട്ട് അവലോകനം](../../../../../translated_images/ml/lesson-14.63980c5150ae3c15.webp) > സ്കെച്ച്നോട്ട് നൽകിയിരിക്കുന്നത് [Nitya Narasimhan](https://github.com/nitya). വലിയ പതിപ്പ് കാണാൻ ചിത്രത്തിൽ ക്ലിക്കുചെയ്യുക. ഈ വീഡിയോ ജിയോയിൻഫേസുകളും അവയെ ആഴൂറ് മാപ്സിൽ എങ്ങനെ ഉപയോഗിക്കാമെന്ന് ഉള്ളൊരു അവലോകനം നൽകുന്നു, ഈ പാഠത്തിൽ ഉൾപ്പെടുന്ന വിഷയങ്ങൾ: [![Microsoft Developer IoT ഷോയിലെ Azure Maps ഉപയോഗിച്ച് Geofencing](https://img.youtube.com/vi/nsrgYhaYNVY/0.jpg)](https://www.youtube.com/watch?v=nsrgYhaYNVY) > 🎥 വീഡിയോ കാണാൻ മുകളില്‍ ഉള്ള ചിത്രത്തിൽ ക്ലിക്കുചെയ്യുക ## പ്രീ-ലെക്ചർ ക്വിസ് [പ്രീ-ലെക്ചർ ക്വിസ്](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/27) ## പരിചയം എന്നകം 3 പാഠങ്ങളിൽ, നിങ്ങൾ നിങ്ങളുടെ ഫാമിൽ നിന്നു പ്രോസസ്സിംഗ് ഹബിലേക്ക് നിങ്ങളുടെ ഉൽപ്പന്നം കൊണ്ടുപോകുന്ന ട്രക്കുകൾ കണ്ടെത്താൻ IoT ഉപകരണം ഉപയോഗിച്ചു. GPS ഡാറ്റ പിടിച്ചു, ക്ലൗഡിൽ സൂക്ഷിക്കാൻ അയച്ചു, അതും മാപ്പിൽ ദൃശ്യരൂപത്തിൽ കണ്ടു. നിങ്ങളുടെ സപ്ലൈ ചൈനിന്റെ കാര്യക്ഷമത കൂട്ടാൻ അടുത്തപടി, ട്രക്ക് പ്രോസസ്സിംഗ് ഹബിനെത്താൻ പോകുമ്പഴേ ഉടനെ അറിയിപ്പ് കിട്ടേണ്ടതാണ്, അതിനാൽ ലോഡ് അടുത്ത് വരുന്നപ്പോൾ അനുയോജ്യമായ ക്രൂ ഫോർക്ലിഫ്റ്റുകൾ പോലുള്ള ഉപകരണങ്ങളുമായി തയ്യാർ ആകാൻ കഴിയും. ഇപ്രകാരമുണ്ടെങ്കിൽ അവർക്ക് അസോസിയേറ്റ് ചെയ്യുക അതിവേഗം അൺലോഡ് ചെയ്യാൻ കഴിയും, കൂടാതെ ട്രക്കും ഡ്രൈവർക്കും കാത്തിരിക്കാൻ പണമൊടുക്കേണ്ടതില്ല. ഈ പാഠത്തിൽ നിങ്ങൾ ജിയോയിൻഫേസുകളെ കുറിച്ച് പഠിക്കും - പ്രോസസ്സിംഗ് ഹബിനോട് 2 കിലോമീറ്റർ മിനിറ്റ് ഡ്രൈവ് ദൂരത്തിലുള്ള പ്രദേശം പോലുള്ള നിർവചിച്ച ജിയോസ്പാറ്റിയൽ മേഖലകൾ, GPS കോഓർഡിനേറ്റുകൾ ജിയോയിൻഫേസിനകത്ത് അല്ലെങ്കിൽ പുറത്താണോ എന്ന പരിശോധന എങ്ങനെ നടത്താമെന്നതും, അതിലൂടെ നിങ്ങളുടെ GPS സെൻസർ ഒരു പ്രദേശം വന്നോ പോയോയെന്നും ചെക്ക് ചെയ്യാം. ഈ പാഠത്തിൽ ചർച്ച ചെയ്യാൻ പോകുന്നത്: * [ജിയോയിൻഫേസുകൾ എന്തൊക്കെയാണെന്ന്](../../../../../3-transport/lessons/4-geofences) * [ജിയോയിൻഫേസ് നിർവചിക്കൽ](../../../../../3-transport/lessons/4-geofences) * [ജിയോയിൻഫേസിനെതിരെ പോയിന്റുകൾ പരീക്ഷിക്കൽ](../../../../../3-transport/lessons/4-geofences) * [സെർവർലെസ് കോഡിൽ നിന്ന് ജിയോയിൻഫേസുകൾ ഉപയോഗിക്കൽ](../../../../../3-transport/lessons/4-geofences) > 🗑 ഈ പ്രോജക്ടിലെ соңല് പാഠമാണിത്, അതിനാൽ ഈ പാഠവും അസൈൻമെന്റും പൂർത്തിയാക്കിയ ശേഷം നിങ്ങളുടെ ക്ലൗഡ് സർവീസുകൾ ശുചീകരിക്കാൻ മറക്കണ്ട. അസൈൻമെന്റ് പൂർത്തിയാക്കാൻ സർവീസുകൾ ആവശ്യമുണ്ടാകും, അതിനാൽ ആദ്യം അത് പൂർത്തിയാക്കുക. > > ആവശ്യമെങ്കിൽ [താങ്കളുടെ പ്രോജക്ട് ശുചീകരിക്കൽ ഗൈഡ്](../../../clean-up.md) കാണുക. ## ജിയോയിൻഫേസുകൾ എന്താണ് ജിയോയിൻഫേസ് ആണ് യാഥാർത്ഥ്യ ഭൂമിശാസ്ത്ര മേഖലയ്ക്കുള്ള ഒരു മെരുമാലിനം (വിർച്വൽ പരിധി). ജിയോയിൻഫേസുകൾ സാധാരണയായി ഒരു പിണ്റെറും ഒരു വ്യാസവിലയുമുള്ള വൃത്താകൃതിയാകും (ഉദാഹരണത്തിന് ഒരു കെട്ടിടത്തിന്റെ ചുറ്റും 100 മീറ്റർ വ്യാസമുള്ള വൃത്തം), അല്ലെങ്കിൽ ഒരു സ്കൂൾ മേഖല, നഗര പരിധി, സർവകലാശാല അല്ലെങ്കിൽ ഓഫീസ് ക്യാമ്പസ് പോലുള്ള ഒരു പ്രദേശം മറക്കുന്ന പാളികൾ എന്ന തരത്തിലേക്കും പാളിയായിരിക്കും. ![Microsoft കമ്പനി സ്റ്റോർ ചുറ്റിവട്ട ജിയോയിൻഫേസ്, Microsoft വെസ്റ്റ് ക്യാമ്പസ് ചുറ്റിവട്ട പാളി ജിയോയിൻഫേസ് എന്നിവ കാണിക്കുന്ന ചില ജിയോയിൻഫേസ് ഉദാഹരണങ്ങൾ](../../../../../translated_images/ml/geofence-examples.172fbc534665769f.webp) > 💁 നിങ്ങൾ അറിയാതെ ജിയോയിൻഫേസുകൾ ഉപയോഗിച്ചിട്ടുണ്ടാവാം. iOS റിമൈൻഡേർസ് ആപ്പ് അല്ലെങ്കിൽ Google Keep-ൽ നിങ്ങൾ белгіліസ്ഥാനത്തെ അടിസ്ഥാനമാക്കി റിമൈൻഡർ സജ്ജമാക്കിയിട്ടുണ്ടെങ്കിൽ, ജിയോയിൻഫേസ് ഉപയോഗിച്ചിട്ടുള്ളതാണ്. ഈ ആപ്പുകൾ നൽകിയ ലൊക്കേഷൻ അടിസ്ഥാനമാക്കി ജിയോയിൻഫേസ് സജ്ജീകരിക്കുകയും നിങ്ങളുടെ ഫോൺ ആ ജിയോയിൻഫേസിൽ പ്രവേശിക്കുന്നപ്പോൾ അറിയിപ്പു നൽകുകയും ചെയ്യും. ഒരു വാഹനമോ മറ്റൊന്നോ ജിയോയിൻഫേസിനകത്തോ പുറത്തോ എന്നത് അറിയാൻ നിങ്ങൾക്ക് പല കാരണങ്ങൾ ഉണ്ടാകാം: * അൺലോഡിംഗിനുള്ള തയാറെടുപ്പ് - ഒരു വാഹന൯ സൈറ്റിൽ എത്തിയതായി അറിയിപ്പ് കിട്ടിയാൽ, ക്രൂ ആണ് ശരിയായ സമയത്ത് വാഹനം അൺലോഡ് ചെയ്യാൻ തയ്യാറാകുക. ഇത് വാഹനം കാത്തിരിക്കാനുള്ള സമയം കുറയ്ക്കുന്നു. ഇത് ഡ്രൈവർ മണിക്കൂറിൽ കൂടുതൽ ഡെലിവറികൾ നടത്താൻ സഹായിക്കുന്നു. * നികുതി അനുസരണം - ചില രാജ്യങ്ങൾ, ഉദാഹരണത്തിന് ന്യൂസിലാന്റ്, പബ്ലിക് റോഡുകൾ വഴി മാത്രം ഓടിക്കുന്ന ഡീസൽകാറുകൾക്ക് വാഹനംയുടെ ഭാരത്തെ അടിസ്ഥാനമാക്കി റോഡ് നികുതി ഈടാക്കുന്നു. ജിയോയിൻഫേസുകൾ ഉപയോഗിച്ച് സ്വകാര്യ സർവീസുകൾ (കൃഷി മേഖലയോ ഫോറസ്റ്റ് ഏരിയയോ) ഉപയോഗിച്ചുള്ള കിലോമീറ്ററുകൾ പ്രത്യേകം ട്രാക്ക് ചെയ്യാം. * മോഷണം നിരീക്ഷണം - ഒരു വാഹനം ദി-ഫിന് ചെയ്ത സ്ഥലത്ത് മാത്രം തുടർന്നിരിക്കണമെന്ന് വരുമ്പോൾ, ജിയോയിൻഫേസിന്റെ അതിർത്തി വിടുമ്പോൾ അത് മോഷണം പോയി എന്ന് സൂചിപ്പിക്കാം. * സ്ഥലം അനുസരണം - ചില ഫാക്ടറികളിൽ, ഫാമുകളിൽ അല്ലെങ്കിൽ തൊഴിലിടങ്ങളിൽ ചില വാഹനങ്ങൾക്ക് പ്രവേശനം അനനുവദിച്ചിരിക്കാം, ഉദാഹരണത്തിന് ഉത്പാദനം ചെയ്യുന്ന ഫീൽഡുകളിൽകൃത്രിമ രാസവളങ്ങൾ കൊണ്ടുപോകുന്ന വാഹനങ്ങൾ എത്താതിരിക്കാൻ. ജിയോയിൻഫേസ് കടന്നാൽ ഡ്രൈവറെ അറിയിക്കാം. ✅ ജിയോയിൻഫേസുകൾക്കായി മറ്റെന്തെങ്കിലും ഉപയോഗങ്ങൾ നിങ്ങൾക്ക് ചിന്തിക്കാൻ കഴിയും? അടുത്ത പാഠത്തിൽ ഉപയോഗിച്ച Azure Maps സേവനം ജിയോയിൻഫേസുകൾ നിർവചിക്കാൻ, തുടർന്ന് ഒരു പോയിന്റ് ജിയോയിൻഫേസിനകത്തോ പുറത്തോ എന്ന് പരീക്ഷിക്കാനുമുള്ള സൗകര്യം നൽകുന്നു. ## ജിയോയിൻഫേസ് നിർവചിക്കൽ ജിയോയിൻഫേസുകൾ GeoJSON ഉപയോഗിച്ച് നിർവചിക്കുന്നു, മുൻപത്തെ പാഠത്തിലെ മാപ്പിലിടപ്പെട്ട പോയിന്റുകൾ പോലെയാണ്. എന്നാൽ ഇവിടെ `FeatureCollection`-ലെ `Point` ആയി അല്ല, പകരം ഒരു `Polygon` ഉൾക്കൊള്ളുന്ന `FeatureCollection` ആകും. ```json { "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.13393688201903, 47.63829579223815 ], [ -122.13389128446579, 47.63782047131512 ], [ -122.13240802288054, 47.63783312249837 ], [ -122.13238388299942, 47.63829037035086 ], [ -122.13393688201903, 47.63829579223815 ] ] ] }, "properties": { "geometryId": "1" } } ] } ``` പാളിയിലെ ഓരോ പോയിന്റും ഒരു ലൊംഗിറ്റി്യൂഡ്, ലാറ്റിറ്റ്യൂഡ് കൂട്ടായി ഒരു അറേയായി നിർവചിക്കുന്നു, പാളിയുടെ എല്ലാ പോയിന്റുകളും ഉൾപ്പെട്ട അതിനുള്ള അറേ ആണ് ഇത്, ഇത് `coordinates` എന്നതായി നൽകിയിരിക്കുന്നു. മുൻപത്തെ പാഠത്തിലെ `Point`ൽ `coordinates`-ൽ 2 മൂല്യങ്ങൾ (ലാറ്റിറ്റ്യൂഡ്, ലൊംഗിറ്റ്യൂഡ്) ഉള്ള ഒരു അറേ ആയിരുന്നു, എന്നാൽ ഒരു `Polygon`-ന് `coordinates`-ൽ 2 മൂല്യങ്ങൾ ഉള്ള അറേകൾ ഉള്ള അറേ (അറേ ഓഫ് അറേസ) ആയിരിക്കും, ലൊംഗിറ്റ്യൂഡ്, ലാറ്റിറ്റ്യൂഡ എന്നാണ് ക്രമം. > 💁 ഓർക്കുക, GeoJSON ലൊംഗിറ്റ്യൂഡ്, ലാറ്റിറ്റ്യൂഡ് എന്ന ക്രമത്തിൽ പോയിന്റുകൾ കണക്കാക്കുന്നു, ലാറ്റിറ്റ്യൂഡ്, ലൊംഗിറ്റ്യൂഡ് അല്ല. പാളിയിലെ കോഓർഡിനേറ്റുകൾ ഉള്ള അറേ എന്നും പോയിന്റുകളുടെ എണ്ണം കണക്കിലെടുത്താൽ ഒന്ന് കൂടുതൽ എൻട്രി ഉണ്ടാകും, കാരണം അവസാന എൻട്രി ആദ്യ താരതമ്യമായി ഒരുപോലെ ഇരിക്കുന്നു, പോളിഗൺ അടയ്ക്കുന്നു. ഉദാഹരണത്തിന് ഒരു rettangle-ന് 5 പോയിന്റുകൾ ഉണ്ടായിരിക്കും. ![കോഓർഡിനേറ്റുകൾ ഉള്ള ഒരു rettangle](../../../../../translated_images/ml/polygon-points.302193da381cb415.webp) മുകളിലെ ചിത്രത്തിൽ rettangle കാണിക്കുന്നു. പോളിഗൺ കോഓർഡിനേറ്റുകൾ മുകളിൽ ഇടത്തുനിന്നാണ് തുടങ്ങുന്നത് (47,-122), പിന്നീട് വലത്തേക്ക് (47,-121), പിന്നെ താഴേക്ക് (46,-121), പിന്നെ വലത്തേക്ക് (46,-122), പിന്നെ തുടങ്ങുന്ന പോയിന്റിലേക്ക് മടങ്ങി (47,-122). ഇതുവഴി പോളിഗണിലായി 5 പോയിന്റുകൾ ഉണ്ടാകുന്നു - മുകൾ ഇടതു, മുകൾ വലതു, താഴെ വലതു, താഴെ ഇടതു, പിന്നെ ഇട്ട പാത അടയ്ക്കാൻ മുകളിൽ ഇടതു. ✅ നിങ്ങളുടെ വീട്ടോ സ്കൂളോ ചുറ്റും GeoJSON പോളിഗൺ നിർമ്മിക്കാൻ ശ്രമിക്കുക. [GeoJSON.io](https://geojson.io/) പോലുള്ള ഉപകരണം ഉപയോഗിക്കാം. ### ടാസ്ക് - ജിയോയിൻഫേസ് നിർവചിക്കുക Azure Maps-ൽ ജിയോയിൻഫേസ് ഉപയോഗിക്കാൻ, ആദ്യം അത് നിങ്ങളുടെ Azure Maps അക്കൗണ്ടിൽ അപ്ലോഡ് ചെയ്യണം. അപ്ലോഡ് ചെയ്തതിനു ശേഷം geofence-നോട് ബന്ധപ്പെട്ട് പരിശോധിക്കാൻ നിങ്ങൾക്ക് ഉപയോഗിക്കാവുന്ന уник ഐഡി ലഭിക്കും. ജിയോയിൻഫേസുകൾ Azure Maps-ൽ അപ്ലോഡുചെയ്യാൻ, maps വെബ് API ഉപയോഗിക്കണം. അതിനായി [curl](https://curl.se) എന്ന ഉപകരണമെന്ന് ഉപയോഗിക്കാം. > 🎓 Curl ഒരു കമാൻഡ് ലൈനിൽ വെബ് എൻപ്‌വോയിന്റുകൾക്ക് അഭ്യർത്ഥനകളി നടത്താനുള്ള ഉപകരണം ആണ് 1. നിങ്ങൾ ലിനക്സോ macOS ഒപ്പം അടിയന്തിര windows 10 എന്ന സംവരണ ചേർന്നതോ ആണെങ്കിൽ, നിങ്ങൾക്ക് ഇതിനകം curl ഇൻസ്റ്റാൾ ചെയ്തിരിക്കാം. നിങ്ങളുടെ ടെർമിനലിൽ താഴെ കൊടുത്തത് പ്രവർത്തിപ്പിച്ച് പരിശോധിക്കാം: ```sh curl --version ``` curl-ന്റെ പതിപ്പിന്റെ വിവരങ്ങൾ കാണിക്കാത്ത പക്ഷം, നിങ്ങൾക്ക് ഇത് ഇൻസ്റ്റാൾ ചെയ്യേണ്ടതുണ്ടാകും. [curl ഡൗൺലോഡുകൾ പേജ്](https://curl.se/download.html) സന്ദർശിച്ച് ഇൻസ്റ്റാൾ ചെയ്യുക. > 💁 നിങ്ങൾക്ക് Postman ഉപയോഗിക്കുന്ന പരിചയം ഉണ്ടെങ്കിൽ, അതും ഉപയോഗിക്കാം. 1. പൊളിഗൺ ഉള്ള GeoJSON ഫയൽ സൃഷ്ടിക്കുക. നിങ്ങൾ ഇത് GPS സെൻസർ ഉപയോഗിച്ച് പരീക്ഷിക്കും, അതിനാൽ നിങ്ങളുടെ നിലവിലെ സ്ഥലത്തിന്റെ ചുറ്റും പോളിഗൺ സൃഷ്ടിക്കുക. ഇത് മാൻവലായി മുകളിലുള്ള GeoJSON ഉദാഹരണം എഡിറ്റ് ചെയ്ത് സൃഷ്ടിക്കാം അല്ലെങ്കിൽ [GeoJSON.io](https://geojson.io/) പോലുള്ള ഉപകരണം ഉപയോഗിക്കാം. GeoJSON-ൽ `FeatureCollection` ഉണ്ടാകണം, അതിൽ `Feature` ഉൾക്കൊള്ളണം, അതിലും `geometry` എന്നതിന്റെ തരമായി `Polygon` ഉളളതായി ഉണ്ടാകണം. നിങ്ങൾ **അവശ്യമാണ്** `geometry`-യുടെ തലത്തിൽ തന്നെ ഉള്ള `properties` എന്ന ഒരു ഘടകവും ചേർക്കണം, അതിൽ ഒരു `geometryId` ഉണ്ടായിരിക്കണം: ```json "properties": { "geometryId": "1" } ``` [GeoJSON.io](https://geojson.io/) ഉപകരണം ഉപയോഗിച്ചാൽ, ഡൗൺലോഡ് ചെയ്ത ശേഷം `properties` എലമെന്റിൽ ഈ ഇനം manuvallayi ചേർക്കണം, അല്ലെങ്കിൽ ആപ്ലിക്കേഷന്റെ JSON എഡിറ്ററിൽ ചേർക്കുക. ഈ `geometryId` ഈ ഫയലിൽ ഏകദേശം വേർതിരിച്ചിരിക്കണം. ഒരേ `FeatureCollection` ഫയലിൽ പല ജിയോയിൻഫേസുകളും വേണമെങ്കിൽ വിവിധ `geometryId` ഉപയോഗിക്കാം. വേരിങ്ങാത്ത് ഫയലിൽ വേരിങ്ങായി അപ്ലോഡ് ചെയ്താൽ ഒരേ `geometryId` ഉള്ള പോളിഗണുകൾക്ക് പ്രശ്‌നം ഇല്ല. 1. ഈ ഫയൽ `geofence.json` എന്ന പേരിൽ സേവ് ചെയ്ത്, ടെർമിനലിൽ അന്ന് സ്ഥിതിചെയ്യുന്ന സ്ഥലത്ത് പോയി. 1. GeoFence സൃഷ്ടിക്കാൻ താഴെ കൊടുത്ത curl കമാൻഡ് chạy ചെയ്യുക: ```sh curl --request POST 'https://atlas.microsoft.com/mapData/upload?api-version=1.0&dataFormat=geojson&subscription-key=' \ --header 'Content-Type: application/json' \ --include \ --data @geofence.json ``` URL-ൽ `` എന്നത് നിങ്ങളുടെ Azure Maps‌ അക്കൗണ്ടിലെ API കി ഉപയോഗിച്ച് മാറ്റി വയ്ക്കുക. URL `https://atlas.microsoft.com/mapData/upload` API-യിലേക്ക് മാപ്പ് ഡാറ്റ അപ്ലോഡ് ചെയ്യാൻ ഉപയോഗിക്കുന്നു. `api-version` എന്ന പാരാമീറ്റർ ഉപയോഗിച്ച് API ഉദ്ദേശിച്ച പതിപ്പ് കാണിക്കുന്നു, ഇത് API പിൻവലിക്കാതെ ഭവനായി മാറ്റം നടത്താൻ സഹായിക്കുന്നു. ഡാറ്റ ഫോർമാറ്റ് `geojson` ആണെന്ന് പരാമർശിക്കുന്നു. ഇത് POST അഭ്യർത്ഥന നടത്തുകയും, റെസ്പോൺസ് ഹെഡറുകളുടെ പട്ടിക നൽകുകയും ചെയ്യുന്നു, അതിൽ `location` എന്ന ഹെഡർ അടങ്ങിയിരിക്കും. ```output content-type: application/json location: https://us.atlas.microsoft.com/mapData/operations/1560ced6-3a80-46f2-84b2-5b1531820eab?api-version=1.0 x-ms-azuremaps-region: West US 2 x-content-type-options: nosniff strict-transport-security: max-age=31536000; includeSubDomains x-cache: CONFIG_NOCACHE date: Sat, 22 May 2021 21:34:57 GMT content-length: 0 ``` > 🎓 വെബ് API-ക്ക് параметേഴ്സ് നൽകാൻ URL-യിൽ `?` ചേർത്ത് `key=value` ഫോർമാറ്റിൽ നൽകാം, വിവിധ കീയ-വാല്യൂ പോളുകൾ "&" ചിഹ്നം ഉപയോഗിച്ച് വേർതിരിക്കുന്നതാണ്. 1. Azure Maps പൂർത്തിയായി ഡാറ്റ പ്രോസസ് ചെയ്യുന്നത് തൽസമയമല്ല, അതിനാൽ `location` ഹെഡറിലുണ്ടാകുന്ന URL ഉപയോഗിച്ച് അപ്ലോഡ് സ്ഥിതി പരിശോധിക്കണം. ഇതിനായി GET അഭ്യർത്ഥന അയക്കണം. ഇത് `` നെറ്റിൽ subscription কী ചേർക്കാൻ `&subscription-key=` ചേർക്കണം. `` മാറ്റി നിങ്ങളുടെ Azure Maps API കീ നൽകുക. താഴെ വച്ച കമാൻഡ് പ്രവർത്തിപ്പിക്കുക: ```sh curl --request GET '&subscription-key=' ``` `` എന്നത് `location` ഹെഡറിലുള്ള മൂല്യമായിരിക്കണം, `` നിങ്ങളുടെ API കീ ആയിരിക്കും. 1. റെസ്പോൺസിലെ `status` മൂല്യം പരിശോധിക്കുക. അത് `Succeeded` അല്ലെങ്കിൽ എന്നാണ് മനസ്സിലാക്കണം. അല്ലെങ്കിൽ ഒരു മിനിറ്റ് കാത്തു വീണ്ടും പരിശുദ്ധികാം. 1. `Succeeded` ആയെന്നാണ് അറിയുന്നത്, റെസ്പോൺസിൽ നിന്നുള്ള `resourceLocation` പരിശോധിക്കുക. ഇത് GeoJSON ഒബ്ജക്റ്റിന്റെ unique ID (UDID എന്നാണ് അറിയപ്പെടുന്നത്) വിശദീകരിക്കുന്നു. UDID `metadata/`-ത്തോടുചേർന്ന് വരുന്ന നുംപിന് ശേഷമുള്ള ഭാഗമാണ്, `api-version` ഉൾപ്പെടാറില്ല. ഉദാഹരണത്തിന്, താഴെ നൽകിയിരിക്കുമ്പോഴുള്ള `resourceLocation`: ```json { "resourceLocation": "https://us.atlas.microsoft.com/mapData/metadata/7c3776eb-da87-4c52-ae83-caadf980323a?api-version=1.0" } ``` UDID ആയിരിക്കും `7c3776eb-da87-4c52-ae83-caadf980323a`. ഈ UDID ന്റെ ഒരു കൃതി വയ്ക്കുക; ഗിയോഫേസ് പരിശോധനയിൽ ഇതുവേണ്ടി ഉപയോഗിക്കും. ## ജിയോയിൻഫേസിനെതിരെ പോയിന്റുകൾ പരീക്ഷിക്കുക Azure Maps-ൽ പോളിഗൺ അപ്ലോഡ് ചെയ്ത ശേഷം, ഒരു പോയിന്റ് ജിയോയിൻഫേസിൽ ഉള്ളതോ അല്ലാത്തതോ പരിശോധിക്കാം. ഇത് നടത്താൻ, geofence-ന്റെ UDIDയും പരിശോധന നടത്തേണ്ട പോയിന്റിന്റെ latitude, longitude-യും പാസ്സാക്കിയാണ് വെബ് API അഭ്യർത്ഥന നടത്തുന്നത്. ഈ അഭ്യർത്ഥനയിൽ `searchBuffer` എന്ന മൂല്യം കൂടി നൽകാവുന്നതാണ്. ഇത് മാപ്പ് API-യെ എത്രത്തോളം കൃത്യമായി ഫലങ്ങൾ നൽകണമെന്ന് സൂചിപ്പിക്കുന്നു. കാരണം GPS പൂർണ്ണമായി കൃത്യമല്ല, ചിലപ്പോൾ ലൊക്കേഷനുകൾ ഒരു മീറ്റർ കൂടുതൽ വീറി കാണപ്പെടാം. ഡീഫോൾട്ട് സേർച്ച് ബഫർ 50m ആണ്, എന്നാൽ 0m മുതൽ 500m വരെയുള്ള മൂല്യങ്ങളും സെറ്റ് ചെയ്യാം. API-ൽ നിന്നുള്ള റെസ്പോൺസിൽ, ഫലങ്ങളിൽ geofence-ന്റെ അതിർത്തിയിലെ ഏറ്റവും അടുത്ത പോയിന്റ് വരെ അളക്കപ്പെട്ട `distance` എന്ന മൂല്യം ലഭിക്കും. പൊസിറ്റീവ് മൂല്യം വരുന്നത് പോയിന്റ് പുറത്ത് എന്നർത്ഥവും, നെഗറ്റീവ് മൂല്യം പോളിഗണിനകത്ത് എന്നർത്ഥവുമാണ്. ഈ distance സേർച്ച് ബഫറിന്റേതിൽ കുറവാണെങ്കിൽ, യഥാർഥ അകലം മീറ്ററുകളിൽ തിരിച്ചു നൽകും, അല്ലെങ്കിൽ 999 അല്ലെങ്കിൽ -999 എന്ന് കാണിക്കും. 999 പോയിന്റ് ജിയോയിൻഫേസിന് പുറത്താണെന്ന് ബഫറിലേക്കു മിക്ക അകലം ഉള്ളപ്പോൾ, -999 ജിയോയിൻഫേസിനകത്ത് അതേ പരിധിക്കപ്പുറത്താണ്. ![ഒരു ജിയോയിൻഫേസിനു ചുറ്റും 50m സേർച്ച് ബഫർ കാണിക്കുന്ന ചിത്രം](../../../../../translated_images/ml/search-buffer-and-distance.e6a79af3898183c7.webp) മുകളിലുള്ള ചിത്രത്തിൽ, ജിയോയിൻഫേസിനുവപ്പം 50m സേർച്ച് ബഫർ ഉണ്ട്. * ജിയോയിൻഫേസിന്റെ മദ്ധ്യത്തിൽ അന്തരീക്ഷത്തിൽ, സേർച്ച് ബഫറിനുള്ളിൽ ഉള്ള പോയിന്റ് `-999` അകലം കാണിക്കുന്നു * സേർച്ച് ബഫറിനുള്ളിൽ ഇല്ലാത്ത പോയിന്റ് `999` അകലം കാണിക്കുന്നു * ജിയോയിൻഫേസിനകത്തും സേർച്ച് ബഫറിനുമായുള്ള 6m അകലമുള്ള പോയിന്റിന് `6m` അകലം നൽകുന്നു * ജിയോയിൻഫേസിന് പുറത്തും സേർച്ച് ബഫറിനുള്ളിൽ 39m അകലമുള്ള പോയിന്റിന് `39m` അകലം നൽകുന്നു അകലം അറിയുന്നത് ജിയോയിൻഫേസിന്റെ അതിർത്തി നിശ്ചയിക്കാൻ ആവശ്യമാണ്, തുടക്കത്തിലും മറ്റും GPS വായനകൾ, വേഗത, റോഡ് ഡാറ്റ എന്നിവ ചേർത്ത് ട്രക്ക് സ്തിതിയെ മാനേജുചെയ്യാൻ സഹായിക്കുന്നു. ഉദാഹരണത്തിന്, ഒരു റോഡിൽ ഓടുന്ന വാഹനത്തിന് GPS വായന ചില തെറ്റുകൾ വരുത്തുകയും, വാഹനത്തെ ജിയോയിൻഫേസിനകത്ത് എന്ന് കാണിക്കുകയും ചെയ്തു എങ്കിൽ, എന്നാൽ ആ റോഡിൽ യാതൊരു ഗതാഗത പ്രവേശനവുമില്ലെങ്കിൽ അത് അവഗണിക്കാവുന്നതാണ്. ![Microsoft ക്യാമ്പസിന് സമീപം 520 റോഡിലെ GPS ട്രെയിൽ കാണിക്കുന്നവ, ക്യാമ്പസിനകത്ത് ജിയോയിൻഫേസിനുള്ളിൽ ഒന്ന് ഉൾപ്പെടെ](../../../../../translated_images/ml/geofence-crossing-inaccurate-gps.6a3ed911202ad9ca.webp) മുകളിൽ കാണുന്ന ചിത്രത്തിൽ, മൈക്രോസോഫ്റ്റ് ക്യാമ്പസിന്റെ ഒരു ഭാഗത്ത് ജിയோഫെൻസ് ഉണ്ട്. ചുവപ്പ് രേഖ 520 റോഡിൽ ട്രക്ക് ഓടുന്നതിനെ കാണിക്കുന്നു, GPS വായനകൾ കാണിക്കുന്ന വൃത്തങ്ങളോടുകൂടി. ഇവയിൽ പലതും ശരിയാകുകയും 520 റോഡിനോട് ചേർന്നിട്ടുള്ളതും ആണ്, എന്നാൽ ഒരു തെറ്റായ വായന ജിയോഫെൻസിനകത്ത് ഉണ്ടായി. അതു ശരിയായി സംഭവിക്കാനാകില്ല - ട്രക്ക് 520-ല് നിന്ന് ക്യാമ്പസിലേക്ക് കുഞ്ഞു വഴിയുണ്ടാകാതെ അപ്പോൾ തന്നെ തിരിഞ്ഞ് വീണ്ടും 520-ലേക്ക് തിരിച്ചുപോവാൻ വഴികളില്ല. ഈ ജിയോഫെൻസ് പരിശോധിക്കുന്ന കോഡ് ജിയോഫെൻസ് ടെസ്റ്റിന്റെ ഫലങ്ങളിൽ പ്രവർത്തിക്കുന്നതിന് മുമ്പ് മുൻവായനകൾ പരിഗണിക്കണം. ✅ GPS വായനം ശരിയായതായി കണക്കാക്കുന്നതിന് പരിശോധിക്കേണ്ട അധിക ഡാറ്റ എന്തെല്ലാമാണ്? ### ടാസ്‌ക് - ജിയോഫെൻസിനു എതിരെ പോയിന്റുകൾ പരിശോധിക്കുക 1. വെബ് API ക്വെറിയുടെ URL നിർമ്മിച്ച് തുടങ്ങുക. ഫോർമാറ്റ്: ```output https://atlas.microsoft.com/spatial/geofence/json?api-version=1.0&deviceId=gps-sensor&subscription-key=&udid=&lat=&lon= ``` `` നിങ്ങളുടെ Azure Maps അക്കൗണ്ടിന്റെ API കീ ആയി മാറ്റുക. `` മുൻ ടാസ്കിൽ നിന്നുള്ള ജിയോഫെൻസിന്റെ UDID ആയി മാറ്റുക. `` , `` പരീക്ഷിക്കേണ്ട അക്ഷാംശവും രേഖാംശവും ആയി മാറ്റുക. ഈ URL `https://atlas.microsoft.com/spatial/geofence/json` API ഉപയോഗിച്ച് ജിയോഫെൻസ്GeoJSON വഴി നിർവ്വചിച്ച ജിയോഫെൻസ് ചോദിക്കുന്നു. `1.0` api വേർഷൻ ലക്ഷ്യമിടുന്നു. `deviceId` പരാമീറ്റർ ആവശ്യമാണ്, Latitude , Longitude എത്തുന്ന ഉപകരണത്തിന്റെ പേരായിരിക്കണം. ഡിഫോള്ട് സേർച്ച്ബഫർ 50m ആണ്, നിങ്ങൾ ഇതു മാറ്റാൻ `searchBuffer=` എന്ന പാരാമീറ്റർ ചേർക്കാം. `` 0 മുതൽ 500 മീറ്ററിനിടയിൽ വേണം. 1. curl ഉപയോഗിച്ച് ഈ URL ന് GET അഭ്യർത്ഥന അയയ്ക്കുക: ```sh curl --request GET '' ``` > 💁 `BadRequest` എന്ന പ്രതികരണകോഡും താഴെ പറയുന്ന പിഴവ് വന്നാൽ: > > ```output > Invalid GeoJSON: All feature properties should contain a geometryId, which is used for identifying the geofence. > ``` > > നിങ്ങളുടെ GeoJSON ൽ `properties` വിഭാഗത്തിൽ `geometryId` ഇല്ല എന്നാണ് പ്രശ്നം. GeoJSON ശരിയാക്കാൻ പറ്റിയത് മാറിയ ശേഷം വീണ്ടും അപ്‌ലോഡ് ചെയ്തു പുതിയ UDID നേടേണ്ടതാണ്. 1. പ്രതികരണം GeoJSON ഉപയോഗിച്ച് ജിയോഫെൻസ് സൃഷ്ടിക്കപ്പെട്ട ഓരോ പൊളിഗണിനും ഒന്നായി `geometries` പട്ടിക ഉൾക്കൊള്ളും. ഓരോ ജിയോമെട്രിയിലും മൂന്ന് പ്രധാന ഫീൽഡുകൾ ഉണ്ട്: `distance`, `nearestLat`, `nearestLon`. ```output { "geometries": [ { "deviceId": "gps-sensor", "udId": "7c3776eb-da87-4c52-ae83-caadf980323a", "geometryId": "1", "distance": 999.0, "nearestLat": 47.645875, "nearestLon": -122.142713 } ], "expiredGeofenceGeometryId": [], "invalidPeriodGeofenceGeometryId": [] } ``` * `nearestLat` , `nearestLon` ജിയോഫെൻസിന്റെ അതിര്‍ത്തിയിലെ ലൊക്കേഷനിൽ നിന്ന് ഏറ്റവും അടുത്ത ബിന്ദുവിന്റെ അക്ഷാംശവും രേഖാംശവുമാണ്. * `distance` പരീക്ഷിക്കുന്ന സ്ഥലത്ത് നിന്ന് ജിയോഫെൻസ് അതിര്‍ത്തിയിലെ ഏറ്റവും അടുത്ത ബിന്ദുവിലേക്കുള്ള അകലം ആണ്. നെഗറ്റീവ് സംഖ്യകൾ ഭിത്തിയിനകത്തെ ബിന്ദുവിനെ, പോസിറ്റീവ് പുറത്തെ ഉദ്ദേശിക്കുന്നു. ഇത് ഡിഫോള്ട് സേർച്ച് ബഫറായ 50-ൽ കുറവോ 999 ആകാം. 1. ഇതു ജിയോഫെൻസിനകത്തും പുറത്തുമുള്ള സ്ഥലങ്ങളിൽ പല തവണ പരീക്ഷിക്കുക. ## സേർവർലെസ് കോഡിൽ നിന്ന് ജിയോഫെൻസുകൾ ഉപയോഗിക്കുക ഇപ്പോൾ നിങ്ങളുടെ Functions ആപ്പിലേക്ക് ഒരു പുതിയ ട്രിഗർ ചേർത്ത് IoT ഹബ് GPS ഇവന്റ് ഡാറ്റ ജിയോഫെൻസിനു എതിരെ പരിശോധിക്കാം. ### കൺസ്യൂമർ ഗ്രൂപ്പുകൾ മുൻപത്തെ പാഠങ്ങളിൽ നിങ്ങൾക്ക് ഓർമ്മയായിരിക്കും, IoT Hub ആയി സ്വീകരിച്ച പക്ഷിമുഖവുമായ ഇവന്റുകൾ വീണ്ടും പ്ലേബാക്ക് ചെയ്യാൻ അനുവദിക്കുന്നു. എന്നാൽ ഒരേ സമയം പല ട്രിഗറുകളും കണക്റ്റ് ചെയ്താൽ എന്താണ് സംഭവിക്കുക? ഓരോ ട്രിഗറും ഏത് ഇവന്റ് പ്രോസസ്സ് ചെയ്തു എന്നറിയാമോ? ഉത്തരമാണ്: അത് അറിയില്ല! പകരം, നിങ്ങൾക്ക് വ്യത്യസ്ത കണക്ഷനുകൾ നിർവ്വചിച്ച് ഇവന്റ് വായിക്കാം, ഓരോതാണ് പാഠഭാഗം വായിക്കാത്ത സന്ദേശങ്ങളുടെ റീപ്ലേ മാനേജ് ചെയ്യുന്നത്. ഇവയെ *consumer groups* എന്നു പറയും. നിങ്ങൾ എൻഡ്‌പോയിന്റ് കണക്റ്റ് ചെയ്യുമ്പോൾ ഏത് കൺസ്യൂമർ ഗ്രൂപ്പ് ഉപയോഗിക്കണം എന്നും രേഖപ്പെടുത്താം. നിങ്ങളുടെ ആപ്ലിക്കേഷൻയുടെ ഓരോ ഘടകം വ്യത്യസ്ത consumer group-ലിൽ കണക്റ്റ് ചെയ്യും. ![One IoT Hub with 3 consumer groups distributing the same messages to 3 different functions apps](../../../../../translated_images/ml/consumer-groups.a3262e26fc27ba20.webp) സിദ്ധാന്തത്തിൽ ഓരോ consumer group-ലും പരമാവധി 5 ആപ്ലിക്കേഷനുകൾ കണക്റ്റ് ചെയ്യാം, ഇവയുടെ എല്ലാം സന്ദേശങ്ങൾ ലഭിക്കും. ഓരോ consumer group-ൽ ഒരേ ആപ്ലിക്കേഷൻ മാത്രം ആക്സസ് ചെയ്യുന്നത് മികച്ച പ്രക്രിയയാണ്, എന്നൊട്ടെ സമാന്തര duplicate പ്രോസസ്സിംഗ് കുറയ്ക്കാനും റീസ്റ്റാർട്ട് ചെയ്താൽ എല്ലാ ക്യൂവിലുള്ള സന്ദേശങ്ങളും ശരിയായി പ്രോസസ്സ് ചെയ്യാൻ. ഉദാഹരണത്തിന്, നിങ്ങൾ ലൊക്കലായി കൂടാതെ ക്ലൗഡിലും Functions ആപ്പ് റൺ ചെയ്താൽ ഇര രണ്ടും സന്ദേശങ്ങൾ പ്രോസസ്സ് ചെയ്ത് സ്റ്റോറേജിൽ duplicate blobs ഉണ്ടാകും. നിലവിൽ നിങ്ങൾക്ക് മുൻപേതായി സൃഷ്ടിച്ച IoT Hub ട്രിഗർയുടെ `function.json` ഫയൽ പരിശോധിച്ചാൽ event hub trigger binding സെക്ഷനിൽ consumer group കാണാം: ```json "consumerGroup": "$Default" ``` നിങ്ങൾ ഒരു IoT Hub സൃഷ്ടിക്കുമ്പോൾ by default `$Default` consumer group ഉണ്ടാകും. പുതിയ ട്രിഗർ ചേർക്കാൻ പുതിയ consumer group നിർവ്വചിക്കാം. > 💁 ഈ പാഠത്തിൽ, GPS ഡാറ്റാ സ്റ്റോർ ചെയ്യുന്നതിനാവശ്യമുള്ള ട്രിഗറിൽനിന്ന് വ്യത്യസ്തമായ ട്രിഗർ ഉപയോഗിച്ച് ജിയോഫെൻസ് പരിശോധിക്കുന്നതിന് വ്യത്യസ്ത ഫംഗ്ഷൻ ഉപയോഗിക്കുന്നു. ഇത് consumer groups ഉപയോഗിക്കുകയും കോഡ് വിഭജിക്കുകയും ചെയ്യുന്നത് എളുപ്പമാണ് കാണിക്കുന്നതിന്. പ്രൊഡക്ഷൻ ആപ്ലിക്കേഷനിൽ ഇതിന് പല രീതികളുണ്ട് - ഒരേ ഫംഗ്ഷനിൽ രണ്ടും ചേർക്കുക, സ്റ്റോറേജ് അക്കൗണ്ടിൽ ട്രിഗർ ഉപയോഗിച്ച് ജിയോഫെൻസ് പരിശോധിക്കുക, ഒന്നിലധികം ഫംഗ്ഷനുകൾ ഉപയോഗിക്കുക. ശരി വഴി ഒന്നുമില്ല, നിങ്ങളുടെ ആപ്ലിക്കേഷനും ആവശ്യകതകളും അടിസ്ഥാനമാണ്. ### ടാസ്‌ക് - പുതിയ consumer group സൃഷ്ടിക്കുക 1. നിങ്ങളുടെ IoT Hub-നായി `geofence` എന്ന പുതിയ consumer group സൃഷ്ടിക്കാൻ താഴെയുള്ള കമാൻഡ് ഓടിക്കുക: ```sh az iot hub consumer-group create --name geofence \ --hub-name ``` `` നിങ്ങളുടെ IoT Hub നാമം ഉപയോഗിക്കുക. 1. ഒരു IoT Hub യിലെ എല്ലാ consumer group-കളും കാണാൻ പറ്റുന്ന കമാൻഡ്: ```sh az iot hub consumer-group list --output table \ --hub-name ``` `` നിങ്ങളുടെ IoT Hub നാമം മാറ്റുക. ഇതിൽ എല്ലാ consumer groups യും ലിസ്റ്റിന്. ```output Name ResourceGroup -------- --------------- $Default gps-sensor geofence gps-sensor ``` > 💁 മുൻപത്തെ പാഠത്തിൽ IoT Hub ഇവന്റ് മൊണിറ്റർ `$Default` consumer group ഉപയോഗിച്ചു കണക്റ്റ് ചെയ്തു. അതുകൊണ്ടുതന്നെ ഇവന്റ് മൊണിറ്ററും ഇവന്റ് ട്രിഗറും ഒരുമിച്ച് ഓടിക്കാൻ പറ്റാത്തതാണ്. രണ്ടും ഒരുമിച്ച് ഓടിക്കേണ്ടത് എങ്കിൽ function ആപ്പുകൾക്ക് വേറെ consumer groups ഉപയോഗിച്ച് `$Default` ഇവന്റ് മൊണിറ്ററിനായി മാറ്റി വയ്ക്കാം. ### ടാസ്‌ക് - പുതിയ IoT Hub ട്രിഗർ സൃഷ്ടിക്കുക 1. മുൻപത്തെ പാഠത്തിൽ സൃഷ്ടിച്ച `gps-trigger` function ആപ്പിൽ പുതിയ IoT Hub ഇവന്റ് ട്രിഗർ ചേർക്കുക. ഈ ഫംഗ്ഷനെ `geofence-trigger` എന്ന് പേര് നൽകുക. > ⚠️ ആവശ്യമായെങ്കിൽ [project 2, lesson 5 ൽ IoT Hub ഇവന്റ് ട്രിഗർ സൃഷ്ടിക്കുന്ന നിവേദനങ്ങൾ](../../../2-farm/lessons/5-migrate-application-to-the-cloud/README.md#create-an-iot-hub-event-trigger) കാണുക. 1. `function.json` ഫയലിൽ IoT Hub കണക്ഷൻ സ്ട്രിംഗ് ക്രമീകരിക്കുക. `local.settings.json` function ആപ്പിലെ എല്ലാ ട്രിഗറുകൾക്കും പങ്കിടുന്നു. 1. `function.json` ഫയലിൽ `consumerGroup` മൂല്യം പുതിയ `geofence` consumer group-നെ കാണിക്കുന്ന വിധം അപ്ഡേറ്റ് ചെയ്യുക: ```json "consumerGroup": "geofence" ``` 1. ഈ ട്രിഗറിൽ Azure Maps API കിയുടെ ആവശ്യകത ഉണ്ട്, അതുകൊണ്ട് `local.settings.json` ഫയലിൽ `MAPS_KEY` എന്ന പുതിയ എൻട്രി ചേർക്കുക. 1. Functions ആപ്പ് റൺ ചെയ്ത് കണക്റ്റുചെയ്യുകയും സന്ദേശങ്ങൾ പ്രോസസ് ചെയ്യുകയുമാക്കുക. മുൻപത്തെ പാഠത്തിലെ `iot-hub-trigger` കൂടി പ്രവർത്തിക്കുകയും blob സ്റ്റോറേജിൽ അപ്‌ലോഡ് ചെയ്യുകയും ചെയ്യും. > GPS വായനകൾ blob സ്റ്റോറേജിൽ ഡ്യുപ്ലിക്കേറ്റ് ഒഴിവാക്കാൻ ക്ലൗഡിൽ പ്രവർത്തിക്കുന്ന Functions ആപ്പ് നിർത്താം. ഇത് ചെയ്യാൻ താഴെ കമാൻഡ് ഉപയോഗിക്കുക: > > ```sh > az functionapp stop --resource-group gps-sensor \ > --name > ``` > > `` നിങ്ങളുടെ Functions ആപ്പ് നാമം ഉപയോഗിച്ച് മാറ്റുക. > > പിന്നീട് വീണ്ടും തുടങ്ങിയിക്കണ്ടെങ്കിൽ: > > ```sh > az functionapp start --resource-group gps-sensor \ > --name > ``` > > `` നിങ്ങളുടെ Functions ആപ്പ് നാമം ഉപയോഗിച്ച് മാറ്റുക. ### ടാസ്‌ക് - ട്രിഗറിൽ നിന്നുള്ള ജിയോഫെൻസ് പരിശോധന ഈ പാഠത്തിൽ മുമ്പ് curl ഉപയോഗിച്ച് ജിയോഫെൻസ് ഒരിടം ഉള്ളിലോ പുറത്തോ ആണോ പരിശോധിക്കാൻ ക്വറി ചെയ്‌തു. സമാനമായ വെബ് അഭ്യർത്ഥന ട്രിഗറിൽ നിന്നും നടത്താം. 1. ജിയോഫെൻസിന് ആവശ്യമുള്ള UDID `local.settings.json` ഫയലിൽ പുതിയ എൻട്രി `GEOFENCE_UDID` ആയി ചേർക്കുക. 1. പുതിയ `geofence-trigger` ട്രിഗറിലെ `__init__.py` ഫയൽ തുറക്കുക. 1. താഴെയുള്ള ഇംപോർട്ട് കോഡ് ഫയലിന്റെ മുകളിൽ ചേർക്കുക: ```python import json import os import requests ``` `requests` പാക്കേജ് വെബ് API കോളുകൾ ചെയ്യാൻ സഹായിക്കും. Azure Maps-ന് Python SDK ഇല്ല, അതിനാൽ Python കോഡിൽ നിന്ന് വെബ് API കോളുകൾ നടത്തണം. 1. `main` മെത്ത്‌ഡിന്റെ ആരംഭത്തിൽ താഴെ കാണുന്ന രണ്ട് വരികളും ചേർക്കുക, Maps സബ്‌സ്‌ക്രിപ്ഷൻ കീ നേടാൻ: ```python maps_key = os.environ['MAPS_KEY'] geofence_udid = os.environ['GEOFENCE_UDID'] ``` 1. `for event in events` ലൂപിൽപ്രത്യക്ഷപ്പെടുന്ന ഓരോ ഇവന്റിൽ നിന്നുമുള്ള അക്ഷാംശവും രേഖാംശവും നേടാൻ താഴെ കൊടുത്തത് ചേർക്കുക: ```python event_body = json.loads(event.get_body().decode('utf-8')) lat = event_body['gps']['lat'] lon = event_body['gps']['lon'] ``` ഈ കോഡ് ഇവന്റ് ബോഡിയിൽ നിന്നുള്ള JSON ഡിക്ഷണറിയായി മാറ്റി, അതിൽ നിന്ന് `gps` ഫീൽഡിൽ നിന്നും `lat` , `lon` എടുത്തു. 1. `requests` ഉപയോഗിക്കുമ്പോൾ curl പോലെയുള്ള URL നീണ്ട വരി പണിയുന്നത് ഒഴിവാക്കാം. URL പാലും പാരാമീറ്ററുകൾ ഡിക്ഷണറിയായി പാസ്സ് ചെയ്യാം. താഴെയുള്ള കോഡ് ചേർക്കുക URL നിർവ്വചിക്കാൻ, പാരാമീറ്ററുകൾ ക്രമീകരിക്കാൻ: ```python url = 'https://atlas.microsoft.com/spatial/geofence/json' params = { 'api-version': 1.0, 'deviceId': 'gps-sensor', 'subscription-key': maps_key, 'udid' : geofence_udid, 'lat' : lat, 'lon' : lon } ``` `params` ഡിക്ഷണറിയിലുള്ള പ്രാധാന സംഘടനകൾ curl ഉപയോഗിച്ചുള്ളവയുമായി പൊരുത്തപ്പെടും. 1. വെബ് API വിളിക്കാൻ താഴെ കൊടുത്ത ലൈനുകൾ ചേർക്കുക: ```python response = requests.get(url, params=params) response_body = json.loads(response.text) ``` ഇത് URL പാരാമീറ്ററുകളുമായി വിളിക്കുന്നു, ഒറ്റ മറുപടി ഓബ്ജക്റ്റ് കിട്ടും. 1. താഴെ കാണുന്ന കോഡ് ഈ ലൈനുകളുടെ താഴെ ചേർക്കുക: ```python distance = response_body['geometries'][0]['distance'] if distance == 999: logging.info('Point is outside geofence') elif distance > 0: logging.info(f'Point is just outside geofence by a distance of {distance}m') elif distance == -999: logging.info(f'Point is inside geofence') else: logging.info(f'Point is just inside geofence by a distance of {distance}m') ``` ഒരു ജിയോമെട്രി മാത്രമേ പ്രസിദ്ധീകരിക്കുകയുള്ളൂ എന്ന് കരുതുന്നു, അകലം ഇതിൽ നിന്ന് എടുക്കുന്നു. അകലം അനുസരിച്ച് വിധി രേഖപ്പെടുത്തുന്നു. 1. ഈ കോഡ് റൺ ചെയ്യുക. ലോഗിൽ GPS കോർഡിനേറ്റുകൾ ജിയോഫെൻസിനകത്തോ പുറത്തോ ആണെന്ന് കാണിക്കും, 50mയ്ക്ക് ഉള്ളിൽ അകലം കൂടി. GPS സെൻസറിന്റെ സ്ഥലം അനുസരിച്ച് വ്യത്യസ്ത ജിയോഫെൻസ് ഉപയോഗിച്ച് പരീക്ഷിച്ച് നോക്കൂ. സെൻസർ മാറ്റികൊണ്ടുപോകൂ (ഉദാ: മൊബൈൽ ഫോൺ വൈഫൈ വഴി ബന്ധിപ്പിച്ചിരിക്കുന്നു, അല്ലെങ്കിൽ നിജപ്പെട്ട coordinates വേറിട്ടു വിരിയിക്കുന്ന വെർച്വൽ IoT ഡിവൈസിൽ). 1. ഈ കോഡ് Functions ആപ്പിലേക്ക് ക്ലൗഡിൽ ഡിപ്ലോയ് ചെയ്യുക. പുതിയ Application Settings-ഉം മറക്കാതെ ഡിപ്ലോയ് ചെയ്യുക. > ⚠️ ആവശ്യപ്പെടുമ്പോൾ [project 2, lesson 5 ൽ നിന്നുള്ള Application Settings-അപ്‌ലോഡ് നിർദ്ദേശങ്ങൾ](../../../2-farm/lessons/5-migrate-application-to-the-cloud/README.md#task---upload-your-application-settings) കാണാം. > ⚠️ ആവശ്യപ്പെടുമ്പോൾ [project 2, lesson 5 ൽ നിന്നുള്ള Functions ആപ്പ് ക്ലൗഡിലേക്ക് ഡിപ്ലോയ്മെന്റ് നിർദ്ദേശങ്ങൾ](../../../2-farm/lessons/5-migrate-application-to-the-cloud/README.md#task---deploy-your-functions-app-to-the-cloud) കാണാം. > 💁 ഈ കോഡ് നിങ്ങൾക്ക് [code/functions](../../../../../3-transport/lessons/4-geofences/code/functions) ഫോൾഡറിൽ കണ്ടെത്താം. --- ## 🚀 ചലഞ്ച് ഈ പാഠത്തിൽ ഒരു പോളിഗൺ ഉണ്ടായ GeoJSON ഫയൽ ഉപയോഗിച്ച് ഒരു ജിയോഫെൻസ് ചേർത്തു. ഒന്നിലധികം പൊളിഗണുകൾ വിവിധ `geometryId` മൂല്യങ്ങളോടെ `properties` സക്ഷനിൽ ഉണ്ടെങ്കിൽ ഒരിക്കലും അപ്‌ലോഡ് ചെയ്യാം. GeoJSON-ൽ പല പൊളിഗണുകളും ചേർത്തു അപ്‌ലോഡ് ചെയ്ത്, GPS കോർഡിനേറ്റുകൾ ഏറ്റവും അടുത്തിട്ടുള്ള അല്ലെങ്കിൽ ഉൾപ്പെടുന്ന പൊളിഗൺ കണ്ടെത്താൻ കോഡ് ക്രമീകരിച്ച് കാണുക. ## പോസ്റ്റ്-ലെക്ചർ ക്വിസ് [Post-lecture quiz](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/28) ## അവലോകനം & സ്വയം പഠനം * ജിയോഫെൻസിംഗ് സംബന്ധിച്ച കൂടുതൽ പഠനം [വിക്കിപീഡിയയിലെ Geofencing പേജ്](https://en.wikipedia.org/wiki/Geo-fence) യിൽ വായിക്കുക. * Azure Maps ജിയോഫെൻസിംഗ് API-യെ കുറിച്ച് കൂടുതൽ [Microsoft Azure Maps Spatial - Get Geofence ഡോക്യുമെന്റേഷൻ](https://docs.microsoft.com/rest/api/maps/spatial/getgeofence?WT.mc_id=academic-17441-jabenn) കാണുക. * Azure Event Hubs ലെ consumer groups സംബന്ധിച്ച കൂടുതൽ [Microsoft docs-യിലെ Event consumers ഫീച്ചറുകളും പദവിഭാഗവും](https://docs.microsoft.com/azure/event-hubs/event-hubs-features?WT.mc_id=academic-17441-jabenn#event-consumers) വായിക്കുക. ## അസൈൻമെന്റ് [Twilio ഉപയോഗിച്ച് നോട്ടിഫിക്കേഷനുകൾ അയയ്ക്കുക](assignment.md) --- **ഡിസ്ക്ലെയ്മർ**: ഈ ഡോക്യുമെന്റ് AI തർജ്ജമാ സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് തർജ്ജമ ചെയ്തതാണ്. ഞങ്ങൾ യഥാർത്ഥതയ്ക്ക് ശ്രമിക്കുന്നുവെങ്കിലും, സ്വയമേറ്റു തർജ്ജമകളിൽ പിഴവുകൾ കൂടിയാകാമെന്ന് ദയവായി മനസ്സിലാക്കുക. ഒരു ദൃഢമായ ഉറവിടമായി, ദേശസമ്പ്രദായ ഭാഷയിൽ ഉള്ള മൊഴിമാറ്റം പരിഗണിക്കണം. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ തർജ്ജമ ശിപാർശ ചെയ്യപ്പെടുന്നു. ഈ തർജ്മയുടെ ഉപയോഗത്തിൽ ഉണ്ടാകാവുന്ന.any അന്വർത്ഥ തർക്കങ്ങൾക്കോ തെറ്റു വ്യാഖ്യാനങ്ങൾക്ക് ഞങ്ങൾ ഉത്തരവാദികളല്ല.