Om te beginnen
Wilt u bij veldonderzoek tracking van locaties gebruiken?Locatie-tracking is een functie die beschikbaar is voor de gehele organisatie in ArcGIS Online (of ArcGIS Enterprise) en biedt gebruikers de mogelijkheid om hun huidige en historische locaties vast te leggen.
Als u het nog niet hebt gebruikt, wilt u weten wat locatie-tracking is en hoe u het in ArcGIS Field Maps kunt gebruiken? OnlangsArcGIS resource verzameling heeft een startapp-gids voor ArcGIS Field Maps toegevoegd, bekijk die alstublieft.
Aan de andere kant wordt in Help uitgelegd hoe u locatie-trackingfuncties beheert en toegang krijgt tot gegevens met de ArcGIS API for Python, onder de titel Managing ArcGIS applications - Configuring Location Tracking. Ook is er een notebook met dezelfde inhoud gepubliceerd als Configuring Location Tracking and Track Views For Your Organization, en wij hebben ook een vertaalde notebook gepubliceerd, dus als u wilt weten hoe u toegang krijgt via de API, bekijk die dan.In deze blog leggen we uit hoe we een voorbeeldnotebook implementeren dat we hebben gemaakt met ArcGIS Notebooks op ArcGIS Online, waarin we bewerkingen uitvoeren op trackinggegevens verkregen met Field Maps. De voorbeeldnotebook is
openbaar gemaakt op GitHub, dus als u meer details wilt zien, raadpleeg die dan.Toegankelijke voorbeeldnotebook op GitHub met trackinggegevens die zijn gestructureerd, bekijk die alstublieft.
- Toegang tot trackinggegevens verkregen met Field Maps
- Filteren en bevestigen van gegevens voor een specifieke datum en tijd
- Uitproberen van Spatially Enabled DataFrame
- Gearchiveerde gegevens als feature layer opslaan Let op: De vertaalde notebook hierboven vermeldt dit ook, maar de trackingsgegevens in ArcGIS Online worden slechts 30 dagen bewaard. Om de gegevens ook na deze periode te kunnen gebruiken, worden ze opgeslagen als feature layer op ArcGIS Online.
Let op, locatie-tracking is alleen beschikbaar met een betaaldeArcGIS Developer Subscription, waarbij het "ArcGIS Online organizational plan (development and test limited use)" wordt gebruikt om tracking uit te voeren in ArcGIS Field Maps.
Afbeelding: voorbeeldnotebook
Uitleg van de punten
Hier ligt de focus op uitleg van de code geschreven in de notebook. Als u onzeker bent over het gebruik van ArcGIS Notebooks op ArcGIS Online, raden wij aan eerst het volgende artikel te lezen.
0) Toegang tot GIS-module
Het volgende wordt automatisch gegenereerd bij het aanmaken van een nieuwe ArcGIS Notebook op ArcGIS Online en geeft toegang tot de GIS-module; we gebruiken dit zoals het is.
from arcgis.gis import GIS
gis = GIS("home")
1) Toegang tot trackinggegevens verkregen met Field Maps
Wanneer locatie-tracking in uw organisatie is ingeschakeld, wordt een nieuw item genaamd Locatie Tracking Service gemaakt, en trackinggegevens verkregen met Field Maps worden naar deze service geüpload.
De locatie-trackingservice bestaat uit twee lagen: Tracks, die het verloop van historische locatie-informatie per gebruiker opslaat, en Last Known Locations, die de meest recente locatie-informatie per gebruiker opslaat via Tracker mobiele apps zoals Field Maps.
Deze lagen kunnen eenvoudig worden benaderd via LocationTrackingManager, maar hier gebruiken we alleen de Tracks-laag (tracks_layer).
from arcgis.apps.tracker import TrackView
# Toegang tot LocationTrackingManager
location_tracking = gis.admin.location_tracking
# Toegang tot Tracks-laag vanuit property
tracks = location_tracking.tracks_layer
2) Filteren op datum en tijd met veld location_timestamp in Tracks-laag
De tijd geregistreerd in Tracks is UTC, dus let op bij het maken van queryvoorwaarden.
(Bij conversie van JST naar UTC stelt u UTC-tijd in door 9 uur af te trekken van JST-tijd.)
Deze keer werd tracking uitgevoerd in Field Maps tussen 15:30 en 19:00 JST op 10 januari 2022. Daarom stellen we in MapViewer een where-voorwaarde in waarbij we JST-tijd omzetten naar UTC-tijd door 9 uur af te trekken, zoals hieronder:
(location_timestamp BETWEEN timestamp '2022-01-10 06:30:00' AND timestamp '2022-01-10 10:00:00') AND (1=1)
Met bovenstaande voorwaarde voeren we een query uit met FeatureLayer.query() en zetten vervolgens de geretourneerde property om naar een FeatureLayer.query() om query uit te voeren en vervolgens de geretourneerde property om te zetten naar FeatureSet property sdf en maken daarvan een Spatially Enabled DataFrame (SEDF).
# Stel queryvoorwaarde in in UTC-tijd
wh = "(location_timestamp BETWEEN timestamp '2022-01-10 06:30:00' AND timestamp '2022-01-10 10:00:00') AND (1=1)"
# De geretourneerde waarde van FeatureLayer.query() is FeatureSet,
# en SEDF kan worden verkregen via FeatureSet.property.sdf
query_tracks = tracks.query(where = wh, out_fields='*').sdf
3) Gearchiveerde data opslaan als feature layer vanuit Spatially Enabled DataFrame (SEDF)
Spatially Enabled DataFrame (SEDF),to_featurelayer() is een handige methode waarmee u deze kunt opslaan als feature layer; we gebruiken dit om data als feature layer op te slaan.
# Sla track van 10 januari 2022 op als FeatureLayer
lyr = query_tracks.spatial.to_featurelayer(title='tracks_20220110', tags='tracks')
Zoals hierboven beschreven volstaat het om alleen als feature layer op te slaan; er zijn geen extra regels code nodig.
Dat alleen is misschien niet zo interessant, dus hier introduceren we een andere aanpak waarbij we Pandas DataFrame gebruiken voor filteren, opslaan en zelfs grafische of kaartweergave; dat demonstreren we ook met code.
2) Andere aanpak; filteren van Tracks-laag met Pandas DataFrame
Zoals vermeld in Help staat tracks_layer vermeld als tracks_layer is een FeatureLayer. Daarom lezen we eerst data in een DataFrame via Spatially Enabled DataFrame (SEDF) functie from_layer() 関数でDataFrame にデータを読み込みます。
# Spatially Enabled DataFrame (SEDF) にTracks レイヤー を読み込みますimport pandas as pdsdf = pd.DataFrame.spatial.from_layer(tracks)
次に、 location_timestamp フィールドで日付と時間を指定して、今回のField Maps で対象としているトラッキングデータのみを、別のDataFrame に読み込みます。
# 上記のFeature Layer の BETWEEN 相当の条件でDataFrame に読み込みしますimport datetime as dt#2022-01-10query_sdf = sdf[(sdf['location_timestamp'] >= dt.datetime(2022,1,10,6,30,0)) & (sdf['location_timestamp'] < dt.datetime(2022,1,10,10,0,0))]
2)'' Pandas のDataFrame でよく行う操作、グラフ表示や地図表示
「さわって覚える ArcGIS API for Python : Spatially Enabled DataFrame 編」で紹介したように、Spatially Enabled DataFrame (SEDF) は、一般的な Pandas の DataFrame に spatial というカスタムネームスペースを挿入して、空間的な機能を持たせているものです。そのため、Pandas のDataFrame でよく行う操作も行うことが可能です。GitHub で公開しているノートブック(リンク予定)では、次の操作を試したコードと結果を公開していますが、冗長になるため、ここではコードのみ記載します。
#要約統計量の算出query_sdf.describe()
#特定の列を指定した統計値の算出query_sdf['speed'].mean()
#query 関数を使って平均速度以上のレコードの抽出over_sdf = query_sdf.query('speed >= 1.503300')over_sdf.describe()
その他にも、matplotlib でのグラフ表示(UTC時間)、マップにTracks レイヤーを表示も行っております。同様に、冗長になるため、ここでは実現するまでのコードのみ記載します。
- matplotlib でのグラフ表示(UTC時間)
# UTC から JST に変換してx:時間、y:スピード でグラフに表示してみます# 警告の回避のため明示的にDataFrameをcopy()query_sdf = query_sdf.copy()query_sdf['location_timestamp_jst'] = pd.to_datetime(query_sdf['location_timestamp'], utc=True).dt.tz_convert('Asia/Tokyo')# JST 時間に変換済みのx軸でグラフ表示query_sdf.plot(x='location_timestamp_jst', y='speed')
my_map = gis.map('埼玉県川越市')my_map #セルに地図を表示# Tracks レイヤーを追加my_map.add_layer(tracks)
3)' 別のアプローチ ; 計算したlocation_timestamp_jst を含むフィーチャ レイヤー(Feature Layer)として保存
3) と同様、Spatially Enabled DataFrame(SEDF)に、to_featurelayer() という便利なメソッドがあるので、それを利用して、フィーチャ レイヤーとして保存します。
※これはDataFrame でいろいろ操作した結果でも、フィーチャ レイヤーとして保存可能かを確認している操作になります。そのため、3) で保存したフィーチャ レイヤーと本質的に変わりありません。
# FeatureLayer en het opslaan van de track van 10 januari 2022 lyr = query_sdf.spatial.to_featurelayer(title='tracks_20220110', tags='tracks')
Tot slot
In dit artikelArcGIS Developer Subscription gebruiken we de "ArcGIS Online organisatieplan (beperkt voor ontwikkeling en test)" die beschikbaar is via, en demonstreren we de punten bij het implementeren van een voorbeeldnotebook in ArcGIS Notebooks.
- Toegang tot trackgegevens verkregen met FieldMaps
- Controleer en bevestig gegevens van een specifieke datum en tijd
- Probeer Spatially Enabled DataFrame
- Sla gecontroleerde gegevens op als een feature layer
Voor diepgaandere analyse van trackgegevens, zie "Analyseer traceergegevens verkregen met ArcGIS Field Maps" op Learn ArcGIS. Dit artikel introduceert uitgebreide analyse en visualisatie met ArcGIS Pro voor het opslaan van gegevens lokaal, raadpleeg het als referentie.
Ook voor geavanceerdere analyse met code, zie "Tracker Scripts" op Esri's GitHub in de VS, waar uitgebreide analyse en visualisatie met ArcGIS API for Python worden geïntroduceerd, raadpleeg het als referentie.
* Vergeet niet ook een back-up te maken van uw eigen organisatie's trackgegevens wanneer u analyse uitvoert!
Lijst met inhoud opgenomen in "Analyseer traceergegevens verkregen met ArcGIS Field Maps" (stand maart 2022)
・Zoeken in traceergegevens om bewijzen te vinden(Engelstalig artikel)
・Maak lijnvormige heatmaps van traceergegevens(Engelstalig artikel)
・Maak animaties met traceergegevens over locaties(Engelstalig artikel)
・Visualiseer geaggregeerde traceergegevens(Engelstalig artikel)
Lijst van notebooks en scripts opgenomen in "Tracker Scripts" (stand maart 2022)
Notebook;
・Quickstart Guide
・Basic Track Analysis
・Basic Track Analysis - PySpark
・Status locatie-tracking
・Tracklijnen maken
・Visualiseer afwijkingen in routes
・Geïnspecteerde gebouwen identificeren
・Vind verblijftijden binnen polygonen
・Nabijheidstracering
・Maak een geaggregeerde kaartservice aan
Script;
・Controleer bewerkingslocatie - 'README' hier
・'Mirror LKL Layer' - 'README' hier
・'Polygon Cleanup Tracks' - 'README' hier
・ 'Generate Users Arcade Expression' - 'README' hier
・ 'Export Tracks From AGOL' - 'README' hier
Referenties
'Referentie-artikelen uit de blog'
'Gerelateerde referentie-informatie bij dit artikel'