28 KiB
Geoograde
Sketchnote od Nitya Narasimhan. Kliknite na sliku za veću verziju.
Ovaj video daje pregled geooograda i kako ih koristiti u Azure Maps, teme koje će biti obrađene u ovoj lekciji:
🎥 Kliknite na sliku iznad za gledanje videa
Kviz prije predavanja
Uvod
U posljednje tri lekcije koristili ste IoT za lociranje kamiona koji prevoze vaše proizvode s farme do centra za obradu. Prikupljali ste GPS podatke, slali ih u oblak za pohranu i vizualizirali ih na karti. Sljedeći korak u povećanju učinkovitosti vašeg lanca opskrbe je dobivanje obavijesti kada se kamion približava centru za obradu, kako bi ekipa za istovar bila spremna s viljuškarima i drugom opremom čim vozilo stigne. Na taj način istovar može biti brz, a vi ne plaćate kamion i vozača za čekanje.
U ovoj lekciji naučit ćete o geooogradama - definiranim geospacijalnim regijama, poput područja unutar 2 km vožnje od centra za obradu, i kako testirati jesu li GPS koordinate unutar ili izvan geooograde, kako biste mogli vidjeti je li vaš GPS senzor stigao ili napustio područje.
U ovoj lekciji obradit ćemo:
- Što su geoograde
- Definiranje geooograde
- Testiranje točaka u odnosu na geooogradu
- Korištenje geooograda iz serverless koda
🗑 Ovo je posljednja lekcija u ovom projektu, pa nakon završetka lekcije i zadatka, ne zaboravite očistiti svoje cloud usluge. Trebat će vam usluge za dovršetak zadatka, pa se pobrinite da prvo dovršite zadatak.
Ako je potrebno, pogledajte vodič za čišćenje projekta za upute kako to učiniti.
Što su geoograde
Geooograda je virtualni perimetar za stvarnu geografsku regiju. Geooograde mogu biti krugovi definirani kao točka i radijus (na primjer, krug širine 100m oko zgrade) ili poligon koji pokriva područje poput školske zone, granica grada, sveučilišnog ili uredskog kampusa.
💁 Možda ste već koristili geooograde, a da to niste znali. Ako ste postavili podsjetnik pomoću aplikacije iOS Reminders ili Google Keep na temelju lokacije, koristili ste geooogradu. Te aplikacije postavljaju geooogradu na temelju zadane lokacije i obavještavaju vas kada vaš telefon uđe u geooogradu.
Postoji mnogo razloga zašto biste željeli znati je li vozilo unutar ili izvan geooograde:
- Priprema za istovar - dobivanje obavijesti da je vozilo stiglo na lokaciju omogućuje ekipi da se pripremi za istovar vozila, smanjujući vrijeme čekanja vozila. To može omogućiti vozaču da obavi više dostava u danu s manje vremena čekanja.
- Porezna usklađenost - neke zemlje, poput Novog Zelanda, naplaćuju poreze na ceste za dizelska vozila na temelju težine vozila kada voze samo javnim cestama. Korištenje geooograda omogućuje praćenje kilometraže na javnim cestama u odnosu na privatne ceste na lokacijama poput farmi ili područja za sječu drva.
- Praćenje krađe - ako vozilo treba ostati samo u određenom području, poput farme, a napusti geooogradu, možda je ukradeno.
- Usklađenost lokacije - neki dijelovi radnog mjesta, farme ili tvornice mogu biti zabranjeni za određena vozila, poput držanja vozila koja prevoze umjetna gnojiva i pesticide dalje od polja na kojima se uzgajaju organski proizvodi. Ako se uđe u geooogradu, vozilo je izvan usklađenosti i vozač može biti obaviješten.
✅ Možete li smisliti druge primjene geooograda?
Azure Maps, usluga koju ste koristili u prethodnoj lekciji za vizualizaciju GPS podataka, omogućuje vam definiranje geooograda, a zatim testiranje je li točka unutar ili izvan geooograde.
Definiranje geooograde
Geooograde se definiraju pomoću GeoJSON-a, isto kao i točke koje su dodane na kartu u prethodnoj lekciji. U ovom slučaju, umjesto da budu FeatureCollection
vrijednosti Point
, to je FeatureCollection
koji sadrži Polygon
.
{
"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"
}
}
]
}
Svaka točka na poligonu definirana je kao par dužine i širine u nizu, a te točke su u nizu koji je postavljen kao coordinates
. U Point
u prethodnoj lekciji, coordinates
je bio niz koji sadrži 2 vrijednosti, širinu i dužinu, za Polygon
to je niz nizova koji sadrže 2 vrijednosti, dužinu i širinu.
💁 Zapamtite, GeoJSON koristi
dužinu, širinu
za točke, a neširinu, dužinu
Niz koordinata poligona uvijek ima 1 unos više od broja točaka na poligonu, pri čemu je posljednji unos isti kao i prvi, zatvarajući poligon. Na primjer, za pravokutnik bi bilo 5 točaka.
Na slici iznad nalazi se pravokutnik. Koordinate poligona počinju u gornjem lijevom kutu na 47,-122, zatim se pomiču desno na 47,-121, zatim dolje na 46,-121, zatim desno na 46,-122, zatim natrag gore na početnu točku na 47,-122. To daje poligonu 5 točaka - gornji lijevi, gornji desni, donji desni, donji lijevi, zatim gornji lijevi za zatvaranje.
✅ Pokušajte stvoriti GeoJSON poligon oko svog doma ili škole. Koristite alat poput GeoJSON.io.
Zadatak - definiranje geooograde
Kako biste koristili geooogradu u Azure Maps, prvo je morate učitati na svoj Azure Maps račun. Nakon učitavanja, dobit ćete jedinstveni ID koji možete koristiti za testiranje točke u odnosu na geooogradu. Za učitavanje geooograda u Azure Maps, morate koristiti web API za karte. Možete pozvati Azure Maps web API pomoću alata zvanog curl.
🎓 Curl je alat naredbenog retka za slanje zahtjeva web endpointima
-
Ako koristite Linux, macOS ili noviju verziju Windows 10, vjerojatno već imate curl instaliran. Pokrenite sljedeće iz svog terminala ili naredbenog retka za provjeru:
curl --version
Ako ne vidite informacije o verziji za curl, morat ćete ga instalirati s stranice za preuzimanje curl.
💁 Ako ste iskusni s Postmanom, možete ga koristiti umjesto toga ako želite.
-
Stvorite GeoJSON datoteku koja sadrži poligon. Testirat ćete ovo pomoću svog GPS senzora, pa stvorite poligon oko svoje trenutne lokacije. Možete ga ručno stvoriti uređivanjem GeoJSON primjera danog iznad ili koristiti alat poput GeoJSON.io.
GeoJSON mora sadržavati
FeatureCollection
, koji sadržiFeature
sgeometry
tipaPolygon
.Također MORATE dodati element
properties
na istoj razini kao i elementgeometry
, a ovaj mora sadržavatigeometryId
:"properties": { "geometryId": "1" }
Ako koristite GeoJSON.io, tada ćete ručno morati dodati ovaj element u prazni
properties
element, bilo nakon preuzimanja JSON datoteke ili u JSON uređivaču u aplikaciji.Ovaj
geometryId
mora biti jedinstven u ovoj datoteci. Možete učitati više geooograda kao višeFeatures
uFeatureCollection
u istoj GeoJSON datoteci, sve dok svaka ima različitigeometryId
. Poligoni mogu imati istigeometryId
ako su učitani iz različite datoteke u različito vrijeme. -
Spremite ovu datoteku kao
geofence.json
i navigirajte do mjesta gdje je spremljena u svom terminalu ili konzoli. -
Pokrenite sljedeću curl naredbu za stvaranje GeoFence:
curl --request POST 'https://atlas.microsoft.com/mapData/upload?api-version=1.0&dataFormat=geojson&subscription-key=<subscription_key>' \ --header 'Content-Type: application/json' \ --include \ --data @geofence.json
Zamijenite
<subscription_key>
u URL-u s API ključem za vaš Azure Maps račun.URL se koristi za učitavanje podataka o karti putem API-ja
https://atlas.microsoft.com/mapData/upload
. Poziv uključuje parametarapi-version
za određivanje koje Azure Maps API koristiti, kako bi se omogućilo da se API mijenja tijekom vremena, ali zadrži kompatibilnost unatrag. Format podataka koji se učitava postavljen je nageojson
.Ovo će pokrenuti POST zahtjev prema API-ju za učitavanje i vratiti popis zaglavlja odgovora koji uključuje zaglavlje nazvano
location
.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
🎓 Kada pozivate web endpoint, možete proslijediti parametre pozivu dodavanjem
?
nakon čega slijede parovi ključeva i vrijednosti kaokey=value
, odvajajući parove ključeva i vrijednosti s&
. -
Azure Maps ne obrađuje ovo odmah, pa ćete morati provjeriti je li zahtjev za učitavanje dovršen pomoću URL-a danog u zaglavlju
location
. Napravite GET zahtjev na ovu lokaciju kako biste vidjeli status. Morat ćete dodati svoj ključ pretplate na kraj URL-alocation
dodavanjem&subscription-key=<subscription_key>
na kraj, zamjenjujući<subscription_key>
s API ključem za vaš Azure Maps račun. Pokrenite sljedeću naredbu:curl --request GET '<location>&subscription-key=<subscription_key>'
Zamijenite
<location>
s vrijednošću zaglavljalocation
i<subscription_key>
s API ključem za vaš Azure Maps račun. -
Provjerite vrijednost
status
u odgovoru. Ako nijeSucceeded
, pričekajte minutu i pokušajte ponovno. -
Kada status vrati
Succeeded
, pogledajteresourceLocation
iz odgovora. Ovo sadrži detalje o jedinstvenom ID-u (poznatom kao UDID) za GeoJSON objekt. UDID je vrijednost nakonmetadata/
, a ne uključujućiapi-version
. Na primjer, ako jeresourceLocation
bio:{ "resourceLocation": "https://us.atlas.microsoft.com/mapData/metadata/7c3776eb-da87-4c52-ae83-caadf980323a?api-version=1.0" }
Tada bi UDID bio
7c3776eb-da87-4c52-ae83-caadf980323a
.Zadržite kopiju ovog UDID-a jer će vam trebati za testiranje geooograde.
Testiranje točaka u odnosu na geooogradu
Nakon što je poligon učitan u Azure Maps, možete testirati točku kako biste vidjeli je li unutar ili izvan geooograde. To radite slanjem zahtjeva web API-ju, prosljeđujući UDID geooograde i širinu i dužinu točke za testiranje.
Kada napravite ovaj zahtjev, možete također proslijediti vrijednost zvanu searchBuffer
. Ovo govori Maps API-ju koliko točno treba biti pri vraćanju rezultata. Razlog za to je što GPS nije savršeno točan, a ponekad lokacije mogu biti pogrešne za nekoliko metara ili više. Zadano za search buffer je 50m, ali možete postaviti vrijednosti od 0m do 500m.
Kada se rezultati vrate iz API poziva, jedan od dijelova rezultata je distance
izmjeren do najbliže točke na rubu geooograde, s pozitivnom vrijednošću ako je točka izvan geooograde, negativnom ako je unutar geooograde. Ako je ova udaljenost manja od search buffer-a, stvarna udaljenost se vraća u metrima, inače je vrijednost 999 ili -999. 999 znači da je točka izvan geooograde za više od search buffer-a, -999 znači da je unutar geooograde za više od search buffer-a.
Na slici iznad, geooograda ima 50m search buffer.
- Točka u središtu geooograde, dobro unutar search buffer-a ima udaljenost -999
- Točka dobro izvan search buffer-a ima udaljenost 999
- Točka unutar geooograde i unutar search buffer-a, 6m od geooograde, ima udaljenost 6m
- Točka izvan geooograde i unutar search buffer-a, 39m od geooograde, ima udaljenost 39m
Važno je znati udaljenost do ruba geooograde i kombinirati je s drugim informacijama poput drugih GPS očitanja, brzine i podataka o cestama pri donošenju odluka na temelju lokacije vozila.
Na primjer, zamislite GPS očitanja koja pokazuju da je vozilo vozilo cestom koja završava uz geooogradu. Ako jedno GPS očitanje nije točno i postavi vozilo unutar geooograde, unatoč tome što nema pristupa vozilima, tada se može zanemariti.
Na gornjoj slici prikazan je geofence preko dijela Microsoft kampusa. Crvena linija prikazuje kamion koji vozi duž autoceste 520, s krugovima koji označavaju GPS očitanja. Većina tih očitanja je točna i nalazi se duž autoceste 520, dok jedno netočno očitanje pokazuje lokaciju unutar geofencea. Nema načina da to očitanje bude ispravno - nema cesta koje bi omogućile kamionu da iznenada skrene s autoceste 520 na kampus, a zatim se vrati na autocestu 520. Kod koji provjerava ovaj geofence morat će uzeti u obzir prethodna očitanja prije nego što djeluje na rezultate testa geofencea.
✅ Koje dodatne podatke biste trebali provjeriti kako biste utvrdili može li se GPS očitanje smatrati točnim?
Zadatak - testiranje točaka u odnosu na geofence
-
Započnite izradom URL-a za upit web API-ja. Format je:
https://atlas.microsoft.com/spatial/geofence/json?api-version=1.0&deviceId=gps-sensor&subscription-key=<subscription-key>&udid=<UDID>&lat=<lat>&lon=<lon>
Zamijenite
<subscription_key>
API ključem za vaš Azure Maps račun.Zamijenite
<UDID>
UDID-om geofencea iz prethodnog zadatka.Zamijenite
<lat>
i<lon>
geografskom širinom i dužinom koje želite testirati.Ovaj URL koristi API
https://atlas.microsoft.com/spatial/geofence/json
za upit geofencea definiranog pomoću GeoJSON-a. Cilja verziju API-ja1.0
. ParametardeviceId
je obavezan i trebao bi biti naziv uređaja s kojeg dolaze geografska širina i dužina.Zadani pretraživački buffer je 50m, a možete ga promijeniti dodavanjem dodatnog parametra
searchBuffer=<distance>
, postavljajući<distance>
na udaljenost pretraživačkog buffer-a u metrima, od 0 do 500. -
Koristite curl za slanje GET zahtjeva na ovaj URL:
curl --request GET '<URL>'
💁 Ako dobijete odgovor s kodom
BadRequest
, s greškom:Invalid GeoJSON: All feature properties should contain a geometryId, which is used for identifying the geofence.
tada vaš GeoJSON nedostaje sekcija
properties
sgeometryId
. Morat ćete ispraviti svoj GeoJSON, a zatim ponoviti gore navedene korake za ponovno učitavanje i dobivanje novog UDID-a. -
Odgovor će sadržavati popis
geometries
, po jedan za svaki poligon definiran u GeoJSON-u korištenom za izradu geofencea. Svaka geometrija ima 3 polja od interesa:distance
,nearestLat
inearestLon
.{ "geometries": [ { "deviceId": "gps-sensor", "udId": "7c3776eb-da87-4c52-ae83-caadf980323a", "geometryId": "1", "distance": 999.0, "nearestLat": 47.645875, "nearestLon": -122.142713 } ], "expiredGeofenceGeometryId": [], "invalidPeriodGeofenceGeometryId": [] }
-
nearestLat
inearestLon
su geografska širina i dužina točke na rubu geofencea koja je najbliža lokaciji koja se testira. -
distance
je udaljenost od lokacije koja se testira do najbliže točke na rubu geofencea. Negativni brojevi znače unutar geofencea, pozitivni izvan. Ova vrijednost bit će manja od 50 (zadani pretraživački buffer) ili 999.
-
-
Ponovite ovo više puta s lokacijama unutar i izvan geofencea.
Korištenje geofencea iz serverless koda
Sada možete dodati novi okidač svojoj Functions aplikaciji za testiranje GPS podataka IoT Hub-a u odnosu na geofence.
Potrošačke grupe
Kao što se sjećate iz prethodnih lekcija, IoT Hub omogućuje ponovno reproduciranje događaja koji su primljeni od huba, ali nisu obrađeni. No, što bi se dogodilo ako se poveže više okidača? Kako će znati koji je obradio koje događaje?
Odgovor je da ne može! Umjesto toga, možete definirati više odvojenih veza za čitanje događaja, a svaka od njih može upravljati reprodukcijom nepročitanih poruka. To se zove potrošačke grupe. Kada se povežete s krajnjom točkom, možete odrediti koju potrošačku grupu želite koristiti. Svaka komponenta vaše aplikacije povezat će se s različitom potrošačkom grupom.
Teoretski, do 5 aplikacija može se povezati s svakom potrošačkom grupom, i sve će primati poruke kada stignu. Najbolja praksa je imati samo jednu aplikaciju koja pristupa svakoj potrošačkoj grupi kako bi se izbjeglo dupliciranje obrade poruka i osiguralo da se prilikom ponovnog pokretanja sve poruke u redu obrađuju ispravno. Na primjer, ako pokrenete svoju Functions aplikaciju lokalno, kao i u oblaku, obje bi obrađivale poruke, što bi dovelo do dupliciranja blobova pohranjenih u storage računu.
Ako pregledate datoteku function.json
za IoT Hub okidač koji ste kreirali u ranijoj lekciji, vidjet ćete potrošačku grupu u sekciji za povezivanje okidača event huba:
"consumerGroup": "$Default"
Kada kreirate IoT Hub, automatski se kreira $Default
potrošačka grupa. Ako želite dodati dodatni okidač, možete ga dodati koristeći novu potrošačku grupu.
💁 U ovoj lekciji koristit ćete drugačiju funkciju za testiranje geofencea od one koja se koristi za pohranu GPS podataka. Ovo je kako biste pokazali kako koristiti potrošačke grupe i odvojiti kod radi lakšeg čitanja i razumijevanja. U produkcijskoj aplikaciji postoji mnogo načina na koje biste mogli arhitektirati ovo - stavljanjem oba na jednu funkciju, korištenjem okidača na storage računu za pokretanje funkcije za provjeru geofencea ili korištenjem više funkcija. Ne postoji 'ispravan način', sve ovisi o ostatku vaše aplikacije i vašim potrebama.
Zadatak - kreiranje nove potrošačke grupe
-
Pokrenite sljedeću naredbu za kreiranje nove potrošačke grupe nazvane
geofence
za vaš IoT Hub:az iot hub consumer-group create --name geofence \ --hub-name <hub_name>
Zamijenite
<hub_name>
nazivom koji ste koristili za svoj IoT Hub. -
Ako želite vidjeti sve potrošačke grupe za IoT Hub, pokrenite sljedeću naredbu:
az iot hub consumer-group list --output table \ --hub-name <hub_name>
Zamijenite
<hub_name>
nazivom koji ste koristili za svoj IoT Hub. Ovo će prikazati sve potrošačke grupe.Name ResourceGroup -------- --------------- $Default gps-sensor geofence gps-sensor
💁 Kada ste ranije pokrenuli monitor događaja IoT Hub-a, povezao se s
$Default
potrošačkom grupom. Zbog toga ne možete pokrenuti monitor događaja i okidač događaja istovremeno. Ako želite pokrenuti oba, tada možete koristiti druge potrošačke grupe za sve svoje Functions aplikacije, a$Default
zadržati za monitor događaja.
Zadatak - kreiranje novog IoT Hub okidača
-
Dodajte novi IoT Hub okidač događaja svojoj
gps-trigger
Functions aplikaciji koju ste kreirali u ranijoj lekciji. Nazovite ovu funkcijugeofence-trigger
.⚠️ Možete se referirati na upute za kreiranje IoT Hub okidača događaja iz projekta 2, lekcija 5 ako je potrebno.
-
Konfigurirajte IoT Hub string za povezivanje u datoteci
function.json
. Datotekalocal.settings.json
dijeli se između svih okidača u Functions aplikaciji. -
Ažurirajte vrijednost
consumerGroup
u datotecifunction.json
kako biste referencirali novu potrošačku grupugeofence
:"consumerGroup": "geofence"
-
Trebat ćete koristiti ključ pretplate za svoj Azure Maps račun u ovom okidaču, pa dodajte novi unos u datoteku
local.settings.json
nazvanMAPS_KEY
. -
Pokrenite Functions aplikaciju kako biste osigurali da se povezuje i obrađuje poruke.
iot-hub-trigger
iz ranije lekcije također će se pokrenuti i učitati blobove u storage.Kako biste izbjegli dupliciranje GPS očitanja u blob storageu, možete zaustaviti Functions aplikaciju koju imate pokrenutu u oblaku. Za to koristite sljedeću naredbu:
az functionapp stop --resource-group gps-sensor \ --name <functions_app_name>
Zamijenite
<functions_app_name>
nazivom koji ste koristili za svoju Functions aplikaciju.Možete je kasnije ponovno pokrenuti sljedećom naredbom:
az functionapp start --resource-group gps-sensor \ --name <functions_app_name>
Zamijenite
<functions_app_name>
nazivom koji ste koristili za svoju Functions aplikaciju.
Zadatak - testiranje geofencea iz okidača
Ranije u ovoj lekciji koristili ste curl za upit geofencea kako biste vidjeli nalazi li se točka unutar ili izvan njega. Sličan web zahtjev možete napraviti iz svog okidača.
-
Za upit geofencea, potreban vam je njegov UDID. Dodajte novi unos u datoteku
local.settings.json
nazvanGEOFENCE_UDID
s ovom vrijednošću. -
Otvorite datoteku
__init__.py
iz novog okidačageofence-trigger
. -
Dodajte sljedeći import na vrh datoteke:
import json import os import requests
Paket
requests
omogućuje vam slanje web API poziva. Azure Maps nema Python SDK, pa morate koristiti web API pozive za korištenje iz Python koda. -
Dodajte sljedeće 2 linije na početak metode
main
kako biste dobili ključ pretplate za Maps:maps_key = os.environ['MAPS_KEY'] geofence_udid = os.environ['GEOFENCE_UDID']
-
Unutar petlje
for event in events
, dodajte sljedeće kako biste dobili geografsku širinu i dužinu iz svakog događaja:event_body = json.loads(event.get_body().decode('utf-8')) lat = event_body['gps']['lat'] lon = event_body['gps']['lon']
Ovaj kod pretvara JSON iz tijela događaja u rječnik, a zatim izdvaja
lat
ilon
iz poljagps
. -
Kada koristite
requests
, umjesto da gradite dugačak URL kao što ste to radili s curl-om, možete koristiti samo dio URL-a i proslijediti parametre kao rječnik. Dodajte sljedeći kod za definiranje URL-a za poziv i konfiguriranje parametara: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 }
Stavke u rječniku
params
odgovarat će parovima ključeva i vrijednosti koje ste koristili prilikom pozivanja web API-ja putem curl-a. -
Dodajte sljedeće linije koda za pozivanje web API-ja:
response = requests.get(url, params=params) response_body = json.loads(response.text)
Ovo poziva URL s parametrima i vraća objekt odgovora.
-
Dodajte sljedeći kod ispod ovoga:
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')
Ovaj kod pretpostavlja jednu geometriju i izdvaja udaljenost iz te jedne geometrije. Zatim bilježi različite poruke na temelju udaljenosti.
-
Pokrenite ovaj kod. Vidjet ćete u izlazu logova je li GPS koordinata unutar ili izvan geofencea, s udaljenosti ako je točka unutar 50m. Isprobajte ovaj kod s različitim geofenceima na temelju lokacije vašeg GPS senzora, pokušajte pomaknuti senzor (na primjer, povezan s WiFi-jem s mobilnog telefona ili s različitim koordinatama na virtualnom IoT uređaju) kako biste vidjeli ovu promjenu.
-
Kada budete spremni, implementirajte ovaj kod u svoju Functions aplikaciju u oblaku. Ne zaboravite implementirati nove postavke aplikacije.
⚠️ Možete se referirati na upute za učitavanje postavki aplikacije iz projekta 2, lekcija 5 ako je potrebno.
⚠️ Možete se referirati na upute za implementaciju vaše Functions aplikacije iz projekta 2, lekcija 5 ako je potrebno.
💁 Ovaj kod možete pronaći u mapi code/functions.
🚀 Izazov
U ovoj lekciji dodali ste jedan geofence koristeći GeoJSON datoteku s jednim poligonom. Možete učitati više poligona odjednom, sve dok imaju različite vrijednosti geometryId
u sekciji properties
.
Pokušajte učitati GeoJSON datoteku s više poligona i prilagodite svoj kod kako biste pronašli koji je poligon GPS koordinatama najbliži ili u kojem se nalaze.
Kviz nakon predavanja
Pregled i samostalno učenje
- Pročitajte više o geofenceima i nekim njihovim slučajevima upotrebe na stranici o geofencingu na Wikipediji.
- Pročitajte više o Azure Maps geofencing API-ju na Microsoft Azure Maps Spatial - Get Geofence dokumentaciji.
- Pročitajte više o potrošačkim grupama u Značajke i terminologija u Azure Event Hubs - dokumentacija o potrošačima događaja na Microsoft docs.
Zadatak
Slanje obavijesti pomoću Twilio
Odricanje od odgovornosti:
Ovaj dokument je preveden pomoću AI usluge za prevođenje Co-op Translator. Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane ljudskog prevoditelja. Ne preuzimamo odgovornost za nesporazume ili pogrešne interpretacije koje mogu proizaći iz korištenja ovog prijevoda.